diff --git a/.gitignore b/.gitignore index 2beb2f21a82d0571e708a5d61e62670a2932ecc8..b093c811abd589a002769ea8576847f60759d82a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ gen/ .vscode/ *.code-workspace +.gradle/ diff --git a/AconfigFlags.bp b/AconfigFlags.bp new file mode 100644 index 0000000000000000000000000000000000000000..3abaa69270ef5fe7a4e17c215a780f74b39ce325 --- /dev/null +++ b/AconfigFlags.bp @@ -0,0 +1,279 @@ +// Copyright (C) 2023 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. + +aconfig_srcjars = [ + ":android.app.usage.flags-aconfig-java{.generated_srcjars}", + ":android.content.pm.flags-aconfig-java{.generated_srcjars}", + ":android.os.flags-aconfig-java{.generated_srcjars}", + ":android.os.vibrator.flags-aconfig-java{.generated_srcjars}", + ":android.security.flags-aconfig-java{.generated_srcjars}", + ":android.view.flags-aconfig-java{.generated_srcjars}", + ":camera_platform_flags_core_java_lib{.generated_srcjars}", + ":com.android.window.flags.window-aconfig-java{.generated_srcjars}", + ":com.android.hardware.input-aconfig-java{.generated_srcjars}", + ":com.android.text.flags-aconfig-java{.generated_srcjars}", + ":telecom_flags_core_java_lib{.generated_srcjars}", + ":telephony_flags_core_java_lib{.generated_srcjars}", + ":android.companion.virtual.flags-aconfig-java{.generated_srcjars}", + ":android.view.inputmethod.flags-aconfig-java{.generated_srcjars}", + ":android.widget.flags-aconfig-java{.generated_srcjars}", + ":com.android.media.flags.bettertogether-aconfig-java{.generated_srcjars}", + ":sdk_sandbox_flags_lib{.generated_srcjars}", + ":android.permission.flags-aconfig-java{.generated_srcjars}", + ":hwui_flags_java_lib{.generated_srcjars}", +] + +filegroup { + name: "framework-minus-apex-aconfig-srcjars", + srcs: aconfig_srcjars, +} + +// Aconfig declarations and libraries for the core framework +java_defaults { + name: "framework-minus-apex-aconfig-libraries", + // Add java_aconfig_libraries to here to add them to the core framework + srcs: aconfig_srcjars, + // Add aconfig-annotations-lib as a dependency for the optimization + libs: ["aconfig-annotations-lib"], +} + +// Default flags for java_aconfig_libraries that go into framework-minus-apex +// These libraries will not work standalone +java_defaults { + name: "framework-minus-apex-aconfig-java-defaults", + sdk_version: "core_platform", + libs: ["fake_device_config"], +} + +// Camera +java_aconfig_library { + name: "camera_platform_flags_core_java_lib", + aconfig_declarations: "camera_platform_flags", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Telecom +java_aconfig_library { + name: "telecom_flags_core_java_lib", + aconfig_declarations: "telecom_flags", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Telephony +java_aconfig_library { + name: "telephony_flags_core_java_lib", + aconfig_declarations: "telephony_flags", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Window +aconfig_declarations { + name: "com.android.window.flags.window-aconfig", + package: "com.android.window.flags", + srcs: ["core/java/android/window/flags/*.aconfig"], +} + +java_aconfig_library { + name: "com.android.window.flags.window-aconfig-java", + aconfig_declarations: "com.android.window.flags.window-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Input +aconfig_declarations { + name: "com.android.hardware.input.input-aconfig", + package: "com.android.hardware.input", + srcs: ["core/java/android/hardware/input/*.aconfig"], +} + +java_aconfig_library { + name: "com.android.hardware.input-aconfig-java", + aconfig_declarations: "com.android.hardware.input.input-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Text +aconfig_declarations { + name: "com.android.text.flags-aconfig", + package: "com.android.text.flags", + srcs: ["core/java/android/text/flags/*.aconfig"], +} + +java_aconfig_library { + name: "com.android.text.flags-aconfig-java", + aconfig_declarations: "com.android.text.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +cc_aconfig_library { + name: "aconfig_text_flags_c_lib", + aconfig_declarations: "com.android.text.flags-aconfig", +} + +// Security +aconfig_declarations { + name: "android.security.flags-aconfig", + package: "android.security", + srcs: ["core/java/android/security/*.aconfig"], +} + +java_aconfig_library { + name: "android.security.flags-aconfig-java", + aconfig_declarations: "android.security.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +java_aconfig_library { + name: "android.security.flags-aconfig-java-host", + aconfig_declarations: "android.security.flags-aconfig", + host_supported: true, + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// UsageStats +aconfig_declarations { + name: "android.app.usage.flags-aconfig", + package: "android.app.usage", + srcs: ["core/java/android/app/usage/*.aconfig"], +} + +java_aconfig_library { + name: "android.app.usage.flags-aconfig-java", + aconfig_declarations: "android.app.usage.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// OS +aconfig_declarations { + name: "android.os.flags-aconfig", + package: "android.os", + srcs: ["core/java/android/os/*.aconfig"], +} + +java_aconfig_library { + name: "android.os.flags-aconfig-java", + aconfig_declarations: "android.os.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// VirtualDeviceManager +java_aconfig_library { + name: "android.companion.virtual.flags-aconfig-java", + aconfig_declarations: "android.companion.virtual.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +aconfig_declarations { + name: "android.companion.virtual.flags-aconfig", + package: "android.companion.virtual.flags", + srcs: ["core/java/android/companion/virtual/*.aconfig"], +} + +// InputMethod +aconfig_declarations { + name: "android.view.inputmethod.flags-aconfig", + package: "android.view.inputmethod", + srcs: ["core/java/android/view/inputmethod/flags.aconfig"], +} + +java_aconfig_library { + name: "android.view.inputmethod.flags-aconfig-java", + aconfig_declarations: "android.view.inputmethod.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Vibrator +aconfig_declarations { + name: "android.os.vibrator.flags-aconfig", + package: "android.os.vibrator", + srcs: ["core/java/android/os/vibrator/*.aconfig"], +} + +java_aconfig_library { + name: "android.os.vibrator.flags-aconfig-java", + aconfig_declarations: "android.os.vibrator.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// View +aconfig_declarations { + name: "android.view.flags-aconfig", + package: "android.view.flags", + srcs: ["core/java/android/view/flags/*.aconfig"], +} + +java_aconfig_library { + name: "android.view.flags-aconfig-java", + aconfig_declarations: "android.view.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Widget +aconfig_declarations { + name: "android.widget.flags-aconfig", + package: "android.widget.flags", + srcs: ["core/java/android/widget/flags/*.aconfig"], +} + +java_aconfig_library { + name: "android.widget.flags-aconfig-java", + aconfig_declarations: "android.widget.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Package Manager +aconfig_declarations { + name: "android.content.pm.flags-aconfig", + package: "android.content.pm", + srcs: ["core/java/android/content/pm/*.aconfig"], +} + +java_aconfig_library { + name: "android.content.pm.flags-aconfig-java", + aconfig_declarations: "android.content.pm.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Media BetterTogether +aconfig_declarations { + name: "com.android.media.flags.bettertogether-aconfig", + package: "com.android.media.flags", + srcs: ["media/java/android/media/flags/media_better_together.aconfig"], +} + +java_aconfig_library { + name: "com.android.media.flags.bettertogether-aconfig-java", + aconfig_declarations: "com.android.media.flags.bettertogether-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Permissions +aconfig_declarations { + name: "android.permission.flags-aconfig", + package: "android.permission.flags", + srcs: ["core/java/android/permission/flags.aconfig"], +} + +java_aconfig_library { + name: "android.permission.flags-aconfig-java", + aconfig_declarations: "android.permission.flags-aconfig", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} + +// Graphics +java_aconfig_library { + name: "hwui_flags_java_lib", + aconfig_declarations: "hwui_flags", + defaults: ["framework-minus-apex-aconfig-java-defaults"], +} diff --git a/Android.bp b/Android.bp index be589b2857b40999d7c7c10f32ebdbf5090cd6c0..f1a3af27a63319db4bdd64fb75404c6a9bd3a6c9 100644 --- a/Android.bp +++ b/Android.bp @@ -71,7 +71,6 @@ filegroup { ":framework-jobscheduler-sources", // jobscheduler is not a module for R ":framework-keystore-sources", ":framework-identity-sources", - ":framework-location-sources", ":framework-mca-effect-sources", ":framework-mca-filterfw-sources", ":framework-mca-filterpacks-sources", @@ -163,6 +162,12 @@ java_library { //same purpose. "//external/robolectric:__subpackages__", "//frameworks/layoutlib:__subpackages__", + + // This is for the same purpose as robolectric -- to build "framework.jar" for host-side + // testing. + // TODO: Once Ravenwood is stable, move the host side jar targets to this directory, + // and remove this line. + "//frameworks/base/tools/hoststubgen:__subpackages__", ], } @@ -177,7 +182,6 @@ java_defaults { "graphics/java", "identity/java", "keystore/java", - "location/java", "media/java", "media/mca/effect/java", "media/mca/filterfw/java", @@ -267,6 +271,7 @@ java_defaults { defaults: [ "framework-aidl-export-defaults", "latest_android_hardware_soundtrigger3_java_static", + "framework-minus-apex-aconfig-libraries", ], srcs: [ ":framework-non-updatable-sources", @@ -286,7 +291,6 @@ java_defaults { ":framework-jobscheduler-sources", ":framework-keystore-sources", ":framework-identity-sources", - ":framework-location-sources", ":framework-mca-effect-sources", ":framework-mca-filterfw-sources", ":framework-mca-filterpacks-sources", @@ -404,24 +408,22 @@ java_defaults { "audiopolicy-aidl-java", "sounddose-aidl-java", "modules-utils-expresslog", + "hoststubgen-annotations", ], } -java_library { - name: "framework-minus-apex", +// Separated so framework-minus-apex-defaults can be used without the libs dependency +java_defaults { + name: "framework-minus-apex-with-libs-defaults", defaults: ["framework-minus-apex-defaults"], - installable: true, - // For backwards compatibility. - stem: "framework", - apex_available: ["//apex_available:platform"], - visibility: [ - "//frameworks/base", - // TODO(b/147128803) remove the below lines - "//frameworks/base/apex/blobstore/framework", - "//frameworks/base/apex/jobscheduler/framework", - "//frameworks/base/packages/Tethering/tests/unit", - "//packages/modules/Connectivity/Tethering/tests/unit", + libs: [ + "framework-virtualization.stubs.module_lib", + "framework-location.impl", ], +} + +java_defaults { + name: "framework-non-updatable-lint-defaults", lint: { extra_check_modules: ["AndroidFrameworkLintChecker"], disabled_checks: ["ApiMightLeakAppVisibility"], @@ -435,6 +437,43 @@ java_library { "UseOfCallerAwareMethodsWithClearedIdentity", ], }, +} + +// we are unfortunately building the turbine jar twice, but more efficient and less complex +// than generating a similar set of stubs with metalava +java_library { + name: "framework-minus-apex-headers", + defaults: ["framework-minus-apex-defaults"], + installable: false, + // For backwards compatibility. + stem: "framework", + apex_available: ["//apex_available:platform"], + visibility: [ + "//frameworks/base/location", + ], + compile_dex: false, + headers_only: true, +} + +java_library { + name: "framework-minus-apex", + defaults: [ + "framework-minus-apex-with-libs-defaults", + "framework-non-updatable-lint-defaults", + ], + installable: true, + // For backwards compatibility. + stem: "framework", + apex_available: ["//apex_available:platform"], + visibility: [ + "//frameworks/base", + "//frameworks/base/location", + // TODO(b/147128803) remove the below lines + "//frameworks/base/apex/blobstore/framework", + "//frameworks/base/apex/jobscheduler/framework", + "//frameworks/base/packages/Tethering/tests/unit", + "//packages/modules/Connectivity/Tethering/tests/unit", + ], errorprone: { javacflags: [ "-Xep:AndroidFrameworkCompatChange:ERROR", @@ -445,7 +484,7 @@ java_library { java_library { name: "framework-minus-apex-intdefs", - defaults: ["framework-minus-apex-defaults"], + defaults: ["framework-minus-apex-with-libs-defaults"], plugins: ["intdef-annotation-processor"], // Errorprone and android lint will already run on framework-minus-apex, don't rerun them on @@ -473,6 +512,7 @@ java_library { installable: false, // this lib is a build-only library static_libs: [ "app-compat-annotations", + "framework-location.impl", "framework-minus-apex", "framework-updatable-stubs-module_libs_api", ], @@ -581,6 +621,7 @@ metalava_framework_docs_args = "" + "--api-lint-ignore-prefix org. " + "--error NoSettingsProvider " + "--error UnhiddenSystemApi " + + "--error UnflaggedApi " + "--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.* " + "--hide BroadcastBehavior " + "--hide CallbackInterface " + @@ -700,7 +741,99 @@ stubs_defaults { ], } +// Defaults for the java_sdk_libraries of unbundled jars from framework. +// java_sdk_libraries using these defaults should also add themselves to the +// non_updatable_modules list in frameworks/base/api/api.go +java_defaults { + name: "framework-non-updatable-unbundled-defaults", + defaults: ["framework-non-updatable-lint-defaults"], + + sdk_version: "core_platform", + + // Api scope settings + public: { + enabled: true, + sdk_version: "module_current", + libs: ["android_module_lib_stubs_current"], + }, + system: { + enabled: true, + sdk_version: "module_current", + libs: ["android_module_lib_stubs_current"], + }, + module_lib: { + enabled: true, + sdk_version: "module_current", + libs: ["android_module_lib_stubs_current"], + }, + test: { + enabled: true, + sdk_version: "test_frameworks_core_current", + libs: ["android_test_frameworks_core_stubs_current"], + }, + + stub_only_libs: [ + "framework-protos", + ], + impl_only_libs: [ + "framework-minus-apex-headers", // full access to framework-minus-apex including hidden API + "framework-annotations-lib", + ], + visibility: ["//visibility:public"], + stubs_library_visibility: ["//visibility:public"], + stubs_source_visibility: ["//visibility:private"], + impl_library_visibility: [ + ":__pkg__", + "//frameworks/base", + "//frameworks/base/api", // For framework-all + ], + defaults_visibility: [ + "//frameworks/base/location", + ], + plugins: [ + "error_prone_android_framework", + ], + errorprone: { + javacflags: [ + "-Xep:AndroidFrameworkCompatChange:ERROR", + "-Xep:AndroidFrameworkUid:ERROR", + ], + }, + + // Include manual annotations in API txt files + merge_annotations_dirs: ["metalava-manual"], + + // Use the source of annotations that affect metalava doc generation, since + // the relevant generation instructions are themselves in javadoc, which is + // not present in class files. + api_srcs: [":framework-metalava-annotations"], + + // Framework modules are not generally shared libraries, i.e. they are not + // intended, and must not be allowed, to be used in a manifest + // entry. + shared_library: false, + + // Prevent dependencies that do not specify an sdk_version from accessing the + // implementation library by default and force them to use stubs instead. + default_to_stubs: true, + + // Subdirectory for the artifacts that are copied to the dist directory + dist_group: "android", + + droiddoc_options: [ + "--error UnhiddenSystemApi " + + "--hide CallbackInterface " + + "--hide HiddenTypedefConstant " + + "--hide RequiresPermission " + + "--enhance-documentation " + + "--hide-package com.android.server ", + ], + + annotations_enabled: true, +} + build = [ + "AconfigFlags.bp", "ProtoLibraries.bp", "TestProtoLibraries.bp", ] diff --git a/OWNERS b/OWNERS index 8ee488dcb7a285362007f0a88ad8c513178c2418..4e5c7d8eacbf255496ed908c07501ead1a30db59 100644 --- a/OWNERS +++ b/OWNERS @@ -16,8 +16,6 @@ narayan@google.com #{LAST_RESORT_SUGGESTION} ogunwale@google.com #{LAST_RESORT_SUGGESTION} roosa@google.com #{LAST_RESORT_SUGGESTION} smoreland@google.com #{LAST_RESORT_SUGGESTION} -svetoslavganov@android.com #{LAST_RESORT_SUGGESTION} -svetoslavganov@google.com #{LAST_RESORT_SUGGESTION} yamasani@google.com #{LAST_RESORT_SUGGESTION} # API changes are already covered by API-Review+1 (http://mdb/android-api-council) @@ -30,7 +28,7 @@ per-file */TEST_MAPPING = * # Support bulk translation updates per-file */res*/values*/*.xml = byi@google.com, delphij@google.com -per-file **.bp,**.mk = hansson@google.com +per-file **.bp,**.mk = hansson@google.com, joeo@google.com, lamontjones@google.com per-file TestProtoLibraries.bp = file:platform/platform_testing:/libraries/health/OWNERS per-file TestProtoLibraries.bp = file:platform/tools/tradefederation:/OWNERS diff --git a/apct-tests/perftests/autofill/src/android/view/autofill/LoginTest.java b/apct-tests/perftests/autofill/src/android/view/autofill/LoginTest.java index a5d1e00139b5d2de02580126dcccce3902c6fc28..59f08f645defa7decb62951d3552265ba4895aa4 100644 --- a/apct-tests/perftests/autofill/src/android/view/autofill/LoginTest.java +++ b/apct-tests/perftests/autofill/src/android/view/autofill/LoginTest.java @@ -140,7 +140,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { state.resumeTiming(); } - // Sanity check + // Check for no errors callback.assertNoAsyncErrors(); } finally { mAfm.unregisterCallback(callback); @@ -190,7 +190,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { state.resumeTiming(); } - // Sanity check + // Check for no errors callback.assertNoAsyncErrors(); } finally { mAfm.unregisterCallback(callback); @@ -303,7 +303,7 @@ public class LoginTest extends AbstractAutofillPerfTestCase { callback.expectEvent(mPassword, EVENT_INPUT_SHOWN); } - // Sanity check + // Check for no errors callback.assertNoAsyncErrors(); } finally { mAfm.unregisterCallback(callback); diff --git a/apct-tests/perftests/core/src/android/input/MotionPredictorBenchmark.kt b/apct-tests/perftests/core/src/android/input/MotionPredictorBenchmark.kt index 9482591c65b5557fd26c153c6441b051a06b7928..aadbc2319a6244329abc34403556956f856a57a5 100644 --- a/apct-tests/perftests/core/src/android/input/MotionPredictorBenchmark.kt +++ b/apct-tests/perftests/core/src/android/input/MotionPredictorBenchmark.kt @@ -130,7 +130,7 @@ class MotionPredictorBenchmark { eventTime, ACTION_MOVE, /*x=*/eventPosition, /*y=*/eventPosition) predictor.record(moveEvent) val predictionTime = eventTime + eventInterval - val predicted = predictor.predict(predictionTime.toNanos()) + val predicted = checkNotNull(predictor.predict(predictionTime.toNanos())) assertTrue(predicted.eventTime <= (predictionTime + offset).toMillis()) } } diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java index da700aaca0473c931b7c8ef82fffea3a67221d63..68717623d05dafc457ddba2e3a9738dc6cbd0dc6 100644 --- a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java +++ b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java @@ -104,16 +104,16 @@ public class UserLifecycleTests { /** Name of users/profiles in the test. Users with this name may be freely removed. */ private static final String TEST_USER_NAME = "UserLifecycleTests_test_user"; - /** Name of dummy package used when timing how long app launches take. */ + /** Name of placeholder package used when timing how long app launches take. */ private static final String DUMMY_PACKAGE_NAME = "perftests.multiuser.apps.dummyapp"; - // Copy of UserSystemPackageInstaller whitelist mode constants. - private static final String PACKAGE_WHITELIST_MODE_PROP = + // Copy of UserSystemPackageInstaller allowlist mode constants. + private static final String PACKAGE_ALLOWLIST_MODE_PROP = "persist.debug.user.package_whitelist_mode"; - private static final int USER_TYPE_PACKAGE_WHITELIST_MODE_DISABLE = 0; - private static final int USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE = 0b001; - private static final int USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST = 0b100; - private static final int USER_TYPE_PACKAGE_WHITELIST_MODE_DEVICE_DEFAULT = -1; + private static final int USER_TYPE_PACKAGE_ALLOWLIST_MODE_DISABLE = 0; + private static final int USER_TYPE_PACKAGE_ALLOWLIST_MODE_ENFORCE = 0b001; + private static final int USER_TYPE_PACKAGE_ALLOWLIST_MODE_IMPLICIT_ALLOWLIST = 0b100; + private static final int USER_TYPE_PACKAGE_ALLOWLIST_MODE_DEVICE_DEFAULT = -1; private UserManager mUm; private ActivityManager mAm; @@ -1178,13 +1178,13 @@ public class UserLifecycleTests { } // TODO: This is just a POC. Do this properly and add more. - /** Tests starting (unlocking) a newly-created profile using the user-type-pkg-whitelist. */ + /** Tests starting (unlocking) a newly-created profile using the user-type-pkg-allowlist. */ @Test(timeout = TIMEOUT_MAX_TEST_TIME_MS) public void managedProfileUnlock_usingWhitelist() throws RemoteException { assumeTrue(mHasManagedUserFeature); - final int origMode = getUserTypePackageWhitelistMode(); - setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_ENFORCE - | USER_TYPE_PACKAGE_WHITELIST_MODE_IMPLICIT_WHITELIST); + final int origMode = getUserTypePackageAllowlistMode(); + setUserTypePackageAllowlistMode(USER_TYPE_PACKAGE_ALLOWLIST_MODE_ENFORCE + | USER_TYPE_PACKAGE_ALLOWLIST_MODE_IMPLICIT_ALLOWLIST); try { while (mRunner.keepRunning()) { @@ -1201,15 +1201,15 @@ public class UserLifecycleTests { mRunner.resumeTimingForNextIteration(); } } finally { - setUserTypePackageWhitelistMode(origMode); + setUserTypePackageAllowlistMode(origMode); } } - /** Tests starting (unlocking) a newly-created profile NOT using the user-type-pkg-whitelist. */ + /** Tests starting (unlocking) a newly-created profile NOT using the user-type-pkg-allowlist. */ @Test(timeout = TIMEOUT_MAX_TEST_TIME_MS) public void managedProfileUnlock_notUsingWhitelist() throws RemoteException { assumeTrue(mHasManagedUserFeature); - final int origMode = getUserTypePackageWhitelistMode(); - setUserTypePackageWhitelistMode(USER_TYPE_PACKAGE_WHITELIST_MODE_DISABLE); + final int origMode = getUserTypePackageAllowlistMode(); + setUserTypePackageAllowlistMode(USER_TYPE_PACKAGE_ALLOWLIST_MODE_DISABLE); try { while (mRunner.keepRunning()) { @@ -1226,7 +1226,7 @@ public class UserLifecycleTests { mRunner.resumeTimingForNextIteration(); } } finally { - setUserTypePackageWhitelistMode(origMode); + setUserTypePackageAllowlistMode(origMode); } } @@ -1456,17 +1456,17 @@ public class UserLifecycleTests { attestTrue(errMsg, success); } - /** Gets the PACKAGE_WHITELIST_MODE_PROP System Property. */ - private int getUserTypePackageWhitelistMode() { - return SystemProperties.getInt(PACKAGE_WHITELIST_MODE_PROP, - USER_TYPE_PACKAGE_WHITELIST_MODE_DEVICE_DEFAULT); + /** Gets the PACKAGE_ALLOWLIST_MODE_PROP System Property. */ + private int getUserTypePackageAllowlistMode() { + return SystemProperties.getInt(PACKAGE_ALLOWLIST_MODE_PROP, + USER_TYPE_PACKAGE_ALLOWLIST_MODE_DEVICE_DEFAULT); } - /** Sets the PACKAGE_WHITELIST_MODE_PROP System Property to the given value. */ - private void setUserTypePackageWhitelistMode(int mode) { + /** Sets the PACKAGE_ALLOWLIST_MODE_PROP System Property to the given value. */ + private void setUserTypePackageAllowlistMode(int mode) { String result = ShellHelper.runShellCommand( - String.format("setprop %s %d", PACKAGE_WHITELIST_MODE_PROP, mode)); - attestFalse("Failed to set sysprop " + PACKAGE_WHITELIST_MODE_PROP + ": " + result, + String.format("setprop %s %d", PACKAGE_ALLOWLIST_MODE_PROP, mode)); + attestFalse("Failed to set sysprop " + PACKAGE_ALLOWLIST_MODE_PROP + ": " + result, result != null && result.contains("Failed")); } diff --git a/apct-tests/perftests/windowmanager/src/android/wm/RelayoutPerfTest.java b/apct-tests/perftests/windowmanager/src/android/wm/RelayoutPerfTest.java index b0da7d1e287065860c514990d940a2e6f8f1ad78..c42c7ca25133e6b79b65f32b32f0c5aa32e869bc 100644 --- a/apct-tests/perftests/windowmanager/src/android/wm/RelayoutPerfTest.java +++ b/apct-tests/perftests/windowmanager/src/android/wm/RelayoutPerfTest.java @@ -111,7 +111,7 @@ public class RelayoutPerfTest extends WindowManagerPerfTestBase stopProfiling(); } - /** A dummy view to get IWindow. */ + /** A placeholder view to get IWindow. */ private static class ContentView extends LinearLayout { ContentView(Context context) { super(context); diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java index 9d363c806f5faefb828ec9f68e1e81e801f0a52f..3af36ebb08ca5c307963527ffc25bfcab548f5d7 100644 --- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java +++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java @@ -28,6 +28,7 @@ import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES; import static android.os.UserHandle.USER_CURRENT; import static android.os.UserHandle.USER_NULL; +import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR; import static com.android.server.blob.BlobStoreConfig.INVALID_BLOB_ID; import static com.android.server.blob.BlobStoreConfig.INVALID_BLOB_SIZE; import static com.android.server.blob.BlobStoreConfig.LOGV; @@ -1915,7 +1916,7 @@ public class BlobStoreManagerService extends SystemService { mStatsManager.setPullAtomCallback( FrameworkStatsLog.BLOB_INFO, null, // use default PullAtomMetadata values - BackgroundThread.getExecutor(), + DIRECT_EXECUTOR, mStatsCallbackImpl ); } diff --git a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java index 3a05323122ba281d3117f5a2e7152c0e59f51dee..5dc994edd63528a63c7781de4e801d2a45e2f0f5 100644 --- a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java +++ b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java @@ -371,7 +371,7 @@ public class JobInfo implements Parcelable { /** * Allows this job to run despite doze restrictions as long as the app is in the foreground - * or on the temporary whitelist + * or on the temporary allowlist * @hide */ public static final int FLAG_IMPORTANT_WHILE_FOREGROUND = 1 << 1; @@ -2044,13 +2044,13 @@ public class JobInfo implements Parcelable { /** * Setting this to true indicates that this job is important while the scheduling app - * is in the foreground or on the temporary whitelist for background restrictions. + * is in the foreground or on the temporary allowlist for background restrictions. * This means that the system will relax doze restrictions on this job during this time. * * Apps should use this flag only for short jobs that are essential for the app to function * properly in the foreground. * - * Note that once the scheduling app is no longer whitelisted from background restrictions + * Note that once the scheduling app is no longer allowlisted from background restrictions * and in the background, or the job failed due to unsatisfied constraints, * this job should be expected to behave like other jobs without this flag. * diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java index 17076bc4eea45c8a6b8653803b590d9353371e9b..24d815f2964b3d7dbd157388bda893d651215125 100644 --- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java +++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java @@ -419,6 +419,14 @@ public class PowerExemptionManager { */ public static final int REASON_SYSTEM_EXEMPT_APP_OP = 327; + /** + * Granted by {@link com.android.server.pm.PackageArchiver} to the installer responsible + * for unarchiving an app. + * + * @hide + */ + public static final int REASON_PACKAGE_UNARCHIVE = 328; + /** @hide The app requests out-out. */ public static final int REASON_OPT_OUT_REQUESTED = 1000; @@ -502,6 +510,7 @@ public class PowerExemptionManager { REASON_ACTIVE_DEVICE_ADMIN, REASON_MEDIA_NOTIFICATION_TRANSFER, REASON_PACKAGE_INSTALLER, + REASON_PACKAGE_UNARCHIVE, }) @Retention(RetentionPolicy.SOURCE) public @interface ReasonCode {} diff --git a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java index 4ce31e96208c32020eb1975c21362e3c0d1c5074..20da1718abb0ad2212878194936331d62eda443c 100644 --- a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java +++ b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java @@ -29,10 +29,10 @@ import java.lang.annotation.RetentionPolicy; import java.util.List; /** - * Interface to access and modify the permanent and temporary power save whitelist. The two lists - * are kept separately. Apps placed on the permanent whitelist are only removed via an explicit - * removeFromWhitelist call. Apps whitelisted by default by the system cannot be removed. Apps - * placed on the temporary whitelist are removed from that whitelist after a predetermined amount of + * Interface to access and modify the permanent and temporary power save allowlist. The two lists + * are kept separately. Apps placed on the permanent allowlist are only removed via an explicit + * removeFromAllowlist call. Apps whitelisted by default by the system cannot be removed. Apps + * placed on the temporary allowlist are removed from that allowlist after a predetermined amount of * time. * * @deprecated Use {@link PowerExemptionManager} instead @@ -50,18 +50,18 @@ public class PowerWhitelistManager { private final PowerExemptionManager mPowerExemptionManager; /** - * Indicates that an unforeseen event has occurred and the app should be whitelisted to handle + * Indicates that an unforeseen event has occurred and the app should be allowlisted to handle * it. */ public static final int EVENT_UNSPECIFIED = PowerExemptionManager.EVENT_UNSPECIFIED; /** - * Indicates that an SMS event has occurred and the app should be whitelisted to handle it. + * Indicates that an SMS event has occurred and the app should be allowlisted to handle it. */ public static final int EVENT_SMS = PowerExemptionManager.EVENT_SMS; /** - * Indicates that an MMS event has occurred and the app should be whitelisted to handle it. + * Indicates that an MMS event has occurred and the app should be allowlisted to handle it. */ public static final int EVENT_MMS = PowerExemptionManager.EVENT_MMS; @@ -381,7 +381,7 @@ public class PowerWhitelistManager { } /** - * Add the specified package to the permanent power save whitelist. + * Add the specified package to the permanent power save allowlist. * * @deprecated Use {@link PowerExemptionManager#addToPermanentAllowList(String)} instead */ @@ -392,7 +392,7 @@ public class PowerWhitelistManager { } /** - * Add the specified packages to the permanent power save whitelist. + * Add the specified packages to the permanent power save allowlist. * * @deprecated Use {@link PowerExemptionManager#addToPermanentAllowList(List)} instead */ @@ -403,10 +403,10 @@ public class PowerWhitelistManager { } /** - * Get a list of app IDs of app that are whitelisted. This does not include temporarily - * whitelisted apps. + * Get a list of app IDs of app that are allowlisted. This does not include temporarily + * allowlisted apps. * - * @param includingIdle Set to true if the app should be whitelisted from device idle as well + * @param includingIdle Set to true if the app should be allowlisted from device idle as well * as other power save restrictions * @deprecated Use {@link PowerExemptionManager#getAllowListedAppIds(boolean)} instead * @hide @@ -418,10 +418,10 @@ public class PowerWhitelistManager { } /** - * Returns true if the app is whitelisted from power save restrictions. This does not include - * temporarily whitelisted apps. + * Returns true if the app is allowlisted from power save restrictions. This does not include + * temporarily allowlisted apps. * - * @param includingIdle Set to true if the app should be whitelisted from device + * @param includingIdle Set to true if the app should be allowlisted from device * idle as well as other power save restrictions * @deprecated Use {@link PowerExemptionManager#isAllowListed(String, boolean)} instead * @hide @@ -432,11 +432,11 @@ public class PowerWhitelistManager { } /** - * Remove an app from the permanent power save whitelist. Only apps that were added via + * Remove an app from the permanent power save allowlist. Only apps that were added via * {@link #addToWhitelist(String)} or {@link #addToWhitelist(List)} will be removed. Apps - * whitelisted by default by the system cannot be removed. + * allowlisted by default by the system cannot be removed. * - * @param packageName The app to remove from the whitelist + * @param packageName The app to remove from the allowlist * @deprecated Use {@link PowerExemptionManager#removeFromPermanentAllowList(String)} instead */ @Deprecated @@ -446,10 +446,10 @@ public class PowerWhitelistManager { } /** - * Add an app to the temporary whitelist for a short amount of time. + * Add an app to the temporary allowlist for a short amount of time. * - * @param packageName The package to add to the temp whitelist - * @param durationMs How long to keep the app on the temp whitelist for (in milliseconds) + * @param packageName The package to add to the temp allowlist + * @param durationMs How long to keep the app on the temp allowlist for (in milliseconds) * @param reasonCode one of {@link ReasonCode}, use {@link #REASON_UNKNOWN} if not sure. * @param reason a optional human readable reason string, could be null or empty string. * @deprecated Use {@link PowerExemptionManager#addToTemporaryAllowList( @@ -463,10 +463,10 @@ public class PowerWhitelistManager { } /** - * Add an app to the temporary whitelist for a short amount of time. + * Add an app to the temporary allowlist for a short amount of time. * - * @param packageName The package to add to the temp whitelist - * @param durationMs How long to keep the app on the temp whitelist for (in milliseconds) + * @param packageName The package to add to the temp allowlist + * @param durationMs How long to keep the app on the temp allowlist for (in milliseconds) * @deprecated Use {@link PowerExemptionManager#addToTemporaryAllowList( * String, int, String, long)} instead */ @@ -478,15 +478,15 @@ public class PowerWhitelistManager { } /** - * Add an app to the temporary whitelist for a short amount of time for a specific reason. The - * temporary whitelist is kept separately from the permanent whitelist and apps are - * automatically removed from the temporary whitelist after a predetermined amount of time. + * Add an app to the temporary allowlist for a short amount of time for a specific reason. The + * temporary allowlist is kept separately from the permanent allowlist and apps are + * automatically removed from the temporary allowlist after a predetermined amount of time. * - * @param packageName The package to add to the temp whitelist - * @param event The reason to add the app to the temp whitelist - * @param reason A human-readable reason explaining why the app is temp whitelisted. Only + * @param packageName The package to add to the temp allowlist + * @param event The reason to add the app to the temp allowlist + * @param reason A human-readable reason explaining why the app is temp allowlisted. Only * used for logging purposes. Could be null or empty string. - * @return The duration (in milliseconds) that the app is whitelisted for + * @return The duration (in milliseconds) that the app is allowlisted for * @deprecated Use {@link PowerExemptionManager#addToTemporaryAllowListForEvent( * String, int, String, int)} instead */ @@ -499,16 +499,16 @@ public class PowerWhitelistManager { } /** - * Add an app to the temporary whitelist for a short amount of time for a specific reason. The - * temporary whitelist is kept separately from the permanent whitelist and apps are - * automatically removed from the temporary whitelist after a predetermined amount of time. + * Add an app to the temporary allowlist for a short amount of time for a specific reason. The + * temporary allowlist is kept separately from the permanent allowlist and apps are + * automatically removed from the temporary allowlist after a predetermined amount of time. * - * @param packageName The package to add to the temp whitelist - * @param event The reason to add the app to the temp whitelist + * @param packageName The package to add to the temp allowlist + * @param event The reason to add the app to the temp allowlist * @param reasonCode one of {@link ReasonCode}, use {@link #REASON_UNKNOWN} if not sure. - * @param reason A human-readable reason explaining why the app is temp whitelisted. Only + * @param reason A human-readable reason explaining why the app is temp allowlisted. Only * used for logging purposes. Could be null or empty string. - * @return The duration (in milliseconds) that the app is whitelisted for + * @return The duration (in milliseconds) that the app is allowlisted for * @deprecated Use {@link PowerExemptionManager#addToTemporaryAllowListForEvent( * String, int, String, int)} instead */ diff --git a/apex/jobscheduler/framework/java/android/os/WearModeManagerInternal.java b/apex/jobscheduler/framework/java/android/os/WearModeManagerInternal.java index 969975762c91f98f036c947a3d4766885fa75ca5..75838c213eb6ccd7af258aa2af6bdb84a4717b84 100644 --- a/apex/jobscheduler/framework/java/android/os/WearModeManagerInternal.java +++ b/apex/jobscheduler/framework/java/android/os/WearModeManagerInternal.java @@ -48,6 +48,17 @@ public interface WearModeManagerInternal { */ String QUICK_DOZE_REQUEST_IDENTIFIER = "quick_doze_request"; + /** + * Mode manager off body state identifier. + * + *

Unique identifier that can be used as identifier parameter in + * registerInternalStateObserver + * to listen to changes in quick doze request state from mode manager. + * + * TODO(b/288276510): convert to int constant + */ + String OFFBODY_STATE_ID = "off_body"; + /** * StringDef for Mode manager identifiers. * @@ -55,7 +66,8 @@ public interface WearModeManagerInternal { */ @Retention(RetentionPolicy.SOURCE) @StringDef({ - QUICK_DOZE_REQUEST_IDENTIFIER + QUICK_DOZE_REQUEST_IDENTIFIER, + OFFBODY_STATE_ID }) @Target(ElementType.TYPE_USE) @interface Identifier { diff --git a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java index 1be07fdfcceb5a8c4f3eb065ede15e93e9088260..f252a0ba48cf7d35c1a5d48393d1135e28adfbce 100644 --- a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java +++ b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java @@ -377,7 +377,11 @@ public class DeviceIdleController extends SystemService @GuardedBy("this") private boolean mModeManagerRequestedQuickDoze; @GuardedBy("this") + private boolean mIsOffBody; + @GuardedBy("this") private boolean mForceModeManagerQuickDozeRequest; + @GuardedBy("this") + private boolean mForceModeManagerOffBodyState; /** Time in the elapsed realtime timebase when this listener last received a motion event. */ @GuardedBy("this") @@ -437,6 +441,7 @@ public class DeviceIdleController extends SystemService private static final int ACTIVE_REASON_ALARM = 7; private static final int ACTIVE_REASON_EMERGENCY_CALL = 8; private static final int ACTIVE_REASON_MODE_MANAGER = 9; + private static final int ACTIVE_REASON_ONBODY = 10; @VisibleForTesting static String stateToString(int state) { @@ -538,7 +543,7 @@ public class DeviceIdleController extends SystemService /** * Package names the system has white-listed to opt out of power save restrictions, - * except for device idle mode. + * except for device idle modes (light and full doze). */ private final ArrayMap mPowerSaveWhitelistAppsExceptIdle = new ArrayMap<>(); @@ -837,7 +842,7 @@ public class DeviceIdleController extends SystemService class ModeManagerQuickDozeRequestConsumer implements Consumer { @Override public void accept(Boolean enabled) { - Slog.d(TAG, "Mode manager quick doze request: " + enabled); + Slog.i(TAG, "Mode manager quick doze request: " + enabled); synchronized (DeviceIdleController.this) { if (!mForceModeManagerQuickDozeRequest && mModeManagerRequestedQuickDoze != enabled) { @@ -848,13 +853,46 @@ public class DeviceIdleController extends SystemService } @GuardedBy("DeviceIdleController.this") - public void onModeManagerRequestChangedLocked() { + private void onModeManagerRequestChangedLocked() { // Get into quick doze faster when mode manager requests instead of taking // traditional multi-stage approach. + maybeBecomeActiveOnModeManagerEventsLocked(); updateQuickDozeFlagLocked(); - if (!mModeManagerRequestedQuickDoze && !mBatterySaverEnabled) { - mActiveReason = ACTIVE_REASON_MODE_MANAGER; - becomeActiveLocked("mode_manager", Process.myUid()); + } + } + + @VisibleForTesting + class ModeManagerOffBodyStateConsumer implements Consumer { + @Override + public void accept(Boolean isOffBody) { + Slog.i(TAG, "Offbody event from mode manager: " + isOffBody); + synchronized (DeviceIdleController.this) { + if (!mForceModeManagerOffBodyState && mIsOffBody != isOffBody) { + mIsOffBody = isOffBody; + onModeManagerOffBodyChangedLocked(); + } + } + } + + @GuardedBy("DeviceIdleController.this") + private void onModeManagerOffBodyChangedLocked() { + maybeBecomeActiveOnModeManagerEventsLocked(); + } + } + + @GuardedBy("DeviceIdleController.this") + private void maybeBecomeActiveOnModeManagerEventsLocked() { + synchronized (DeviceIdleController.this) { + if (mQuickDozeActivated) { + // Quick doze is enabled so don't turn the device active. + return; + } + // Fall through when quick doze is not requested. + + if (!mIsOffBody) { + // Quick doze was not requested and device is on body so turn the device active. + mActiveReason = ACTIVE_REASON_ONBODY; + becomeActiveLocked("on_body", Process.myUid()); } } } @@ -863,6 +901,10 @@ public class DeviceIdleController extends SystemService final ModeManagerQuickDozeRequestConsumer mModeManagerQuickDozeRequestConsumer = new ModeManagerQuickDozeRequestConsumer(); + @VisibleForTesting + final ModeManagerOffBodyStateConsumer mModeManagerOffBodyStateConsumer = + new ModeManagerOffBodyStateConsumer(); + @VisibleForTesting final class MotionListener extends TriggerEventListener implements SensorEventListener { @@ -2648,6 +2690,12 @@ public class DeviceIdleController extends SystemService WearModeManagerInternal.QUICK_DOZE_REQUEST_IDENTIFIER, AppSchedulingModuleThread.getExecutor(), mModeManagerQuickDozeRequestConsumer); + + modeManagerInternal.addActiveStateChangeListener( + WearModeManagerInternal.OFFBODY_STATE_ID, + AppSchedulingModuleThread.getExecutor(), + mModeManagerOffBodyStateConsumer + ); } } mLocalPowerManager.registerLowPowerModeObserver(ServiceType.QUICK_DOZE, @@ -4463,7 +4511,7 @@ public class DeviceIdleController extends SystemService pw.println( " Resume normal functioning after force-idle or force-inactive or " + "force-modemanager-quickdoze."); - pw.println(" get [light|deep|force|screen|charging|network|offbody|forcebodystate]"); + pw.println(" get [light|deep|force|screen|charging|network|offbody|forceoffbody]"); pw.println(" Retrieve the current given state."); pw.println(" disable [light|deep|all]"); pw.println(" Completely disable device idle mode."); @@ -4500,6 +4548,10 @@ public class DeviceIdleController extends SystemService pw.println(" force-modemanager-quickdoze [true|false]"); pw.println(" Simulate mode manager request to enable (true) or disable (false) " + "quick doze. Mode manager changes will be ignored until unforce is called."); + pw.println(" force-modemanager-offbody [true|false]"); + pw.println(" Force mode manager offbody state, this can be used to simulate " + + "device being off-body (true) or on-body (false). Mode manager changes " + + "will be ignored until unforce is called."); } class Shell extends ShellCommand { @@ -4634,6 +4686,9 @@ public class DeviceIdleController extends SystemService mForceModeManagerQuickDozeRequest = false; pw.println("mForceModeManagerQuickDozeRequest: " + mForceModeManagerQuickDozeRequest); + mForceModeManagerOffBodyState = false; + pw.println("mForceModeManagerOffBodyState: " + + mForceModeManagerOffBodyState); } finally { Binder.restoreCallingIdentity(token); } @@ -4660,6 +4715,8 @@ public class DeviceIdleController extends SystemService case "forcemodemanagerquick": pw.println(mForceModeManagerQuickDozeRequest); break; + case "offbody": pw.println(mIsOffBody); break; + case "forceoffbody": pw.println(mForceModeManagerOffBodyState); break; default: pw.println("Unknown get option: " + arg); break; } } finally { @@ -4982,6 +5039,31 @@ public class DeviceIdleController extends SystemService pw.println("Provide true or false argument after force-modemanager-quickdoze"); return -1; } + } else if ("force-modemanager-offbody".equals(cmd)) { + getContext().enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER, + null); + String arg = shell.getNextArg(); + + if ("true".equalsIgnoreCase(arg) || "false".equalsIgnoreCase(arg)) { + boolean isOffBody = Boolean.parseBoolean(arg); + + synchronized (DeviceIdleController.this) { + final long token = Binder.clearCallingIdentity(); + try { + mForceModeManagerOffBodyState = true; + pw.println("mForceModeManagerOffBodyState: " + + mForceModeManagerOffBodyState); + mIsOffBody = isOffBody; + pw.println("mIsOffBody: " + mIsOffBody); + mModeManagerOffBodyStateConsumer.onModeManagerOffBodyChangedLocked(); + } finally { + Binder.restoreCallingIdentity(token); + } + } + } else { + pw.println("Provide true or false argument after force-modemanager-offbody"); + return -1; + } } else { return shell.handleDefaultCommands(cmd); } @@ -5233,6 +5315,12 @@ public class DeviceIdleController extends SystemService if (mAlarmsActive) { pw.print(" mAlarmsActive="); pw.println(mAlarmsActive); } + if (mConstants.USE_MODE_MANAGER) { + pw.print(" mModeManagerRequestedQuickDoze="); + pw.println(mModeManagerRequestedQuickDoze); + pw.print(" mIsOffBody="); + pw.println(mIsOffBody); + } } } diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java index 2557c6a31ca09fe243c008bc13c4a8b68c59cd28..3cbee5d07bb923dae2e7588d51b31f92beb5aff3 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/AlarmManagerService.java @@ -741,7 +741,7 @@ public class AlarmManagerService extends SystemService { private static final long DEFAULT_MIN_INTERVAL = 60 * 1000; private static final long DEFAULT_MAX_INTERVAL = 365 * INTERVAL_DAY; private static final long DEFAULT_MIN_WINDOW = 10 * 60 * 1000; - private static final long DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION = 10 * 1000; + private static final long DEFAULT_ALLOW_WHILE_IDLE_ALLOWLIST_DURATION = 10 * 1000; private static final long DEFAULT_LISTENER_TIMEOUT = 5 * 1000; private static final int DEFAULT_MAX_ALARMS_PER_UID = 500; private static final long DEFAULT_APP_STANDBY_WINDOW = 60 * 60 * 1000; // 1 hr @@ -795,7 +795,7 @@ public class AlarmManagerService extends SystemService { // BroadcastOptions.setTemporaryAppWhitelistDuration() to use for FLAG_ALLOW_WHILE_IDLE. public long ALLOW_WHILE_IDLE_WHITELIST_DURATION - = DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION; + = DEFAULT_ALLOW_WHILE_IDLE_ALLOWLIST_DURATION; // Direct alarm listener callback timeout public long LISTENER_TIMEOUT = DEFAULT_LISTENER_TIMEOUT; @@ -996,7 +996,7 @@ public class AlarmManagerService extends SystemService { case KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION: ALLOW_WHILE_IDLE_WHITELIST_DURATION = properties.getLong( KEY_ALLOW_WHILE_IDLE_WHITELIST_DURATION, - DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION); + DEFAULT_ALLOW_WHILE_IDLE_ALLOWLIST_DURATION); updateAllowWhileIdleWhitelistDurationLocked(); break; case KEY_LISTENER_TIMEOUT: @@ -1608,7 +1608,7 @@ public class AlarmManagerService extends SystemService { * Check all alarms in {@link #mPendingBackgroundAlarms} and send the ones that are not * restricted. * - * This is only called when the power save whitelist changes, so it's okay to be slow. + * This is only called when the power save allowlist changes, so it's okay to be slow. */ @GuardedBy("mLock") void sendAllUnrestrictedPendingBackgroundAlarmsLocked() { @@ -2241,7 +2241,7 @@ public class AlarmManagerService extends SystemService { } } - // Sanity check the recurrence interval. This will catch people who supply + // Validate the recurrence interval. This will catch people who supply // seconds when the API expects milliseconds, or apps trying shenanigans // around intentional period overflow, etc. final long minInterval = mConstants.MIN_INTERVAL; diff --git a/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java b/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java index 90a6455a4a8bc07d4fc12f96ade790a8966a870c..adb4d85101a306a3345091fdfdecbf648860c531 100644 --- a/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java +++ b/apex/jobscheduler/service/java/com/android/server/alarm/MetricsHelper.java @@ -16,6 +16,7 @@ package com.android.server.alarm; +import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR; import static com.android.internal.util.FrameworkStatsLog.ALARM_SCHEDULED__EXACT_ALARM_ALLOWED_REASON__ALLOW_LIST; import static com.android.internal.util.FrameworkStatsLog.ALARM_SCHEDULED__EXACT_ALARM_ALLOWED_REASON__CHANGE_DISABLED; import static com.android.internal.util.FrameworkStatsLog.ALARM_SCHEDULED__EXACT_ALARM_ALLOWED_REASON__LISTENER; @@ -31,7 +32,6 @@ import android.app.StatsManager; import android.content.Context; import android.os.SystemClock; -import com.android.internal.os.BackgroundThread; import com.android.internal.util.FrameworkStatsLog; import java.util.function.Supplier; @@ -51,7 +51,7 @@ class MetricsHelper { void registerPuller(Supplier alarmStoreSupplier) { final StatsManager statsManager = mContext.getSystemService(StatsManager.class); statsManager.setPullAtomCallback(FrameworkStatsLog.PENDING_ALARM_INFO, null, - BackgroundThread.getExecutor(), (atomTag, data) -> { + DIRECT_EXECUTOR, (atomTag, data) -> { if (atomTag != FrameworkStatsLog.PENDING_ALARM_INFO) { throw new UnsupportedOperationException("Unknown tag" + atomTag); } diff --git a/apex/jobscheduler/service/java/com/android/server/job/GrantedUriPermissions.java b/apex/jobscheduler/service/java/com/android/server/job/GrantedUriPermissions.java index 7f191d4a306a720524766bb3000a9ca9a0162cb2..60837cb13d3012a48717ebab9177dc0c7e9ae4e3 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/GrantedUriPermissions.java +++ b/apex/jobscheduler/service/java/com/android/server/job/GrantedUriPermissions.java @@ -38,6 +38,7 @@ public final class GrantedUriPermissions { private final int mSourceUserId; private final String mTag; private final IBinder mPermissionOwner; + private final UriGrantsManagerInternal mUriGrantsManagerInternal; private final ArrayList mUris = new ArrayList<>(); private GrantedUriPermissions(int grantFlags, int uid, String tag) @@ -45,13 +46,13 @@ public final class GrantedUriPermissions { mGrantFlags = grantFlags; mSourceUserId = UserHandle.getUserId(uid); mTag = tag; - mPermissionOwner = LocalServices - .getService(UriGrantsManagerInternal.class).newUriPermissionOwner("job: " + tag); + mUriGrantsManagerInternal = LocalServices.getService(UriGrantsManagerInternal.class); + mPermissionOwner = mUriGrantsManagerInternal.newUriPermissionOwner("job: " + tag); } public void revoke() { for (int i = mUris.size()-1; i >= 0; i--) { - LocalServices.getService(UriGrantsManagerInternal.class).revokeUriPermissionFromOwner( + mUriGrantsManagerInternal.revokeUriPermissionFromOwner( mPermissionOwner, mUris.get(i), mGrantFlags, mSourceUserId); } mUris.clear(); 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 dc608e7fddfdcf059f9a1ff9e0211fa2172472a9..5bf2eb942a6b142c11d48f95f1c497cded51e566 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java @@ -235,7 +235,9 @@ class JobConcurrencyManager { private final Handler mHandler; private final Injector mInjector; + private final ActivityManagerInternal mActivityManagerInternal; private PowerManager mPowerManager; + private final UserManagerInternal mUserManagerInternal; private boolean mCurrentInteractiveState; private boolean mEffectiveInteractiveState; @@ -507,6 +509,9 @@ class JobConcurrencyManager { mInjector = injector; mNotificationCoordinator = new JobNotificationCoordinator(); + mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class); + mUserManagerInternal = LocalServices.getService(UserManagerInternal.class); + mHandler = AppSchedulingModuleThread.getHandler(); mGracePeriodObserver = new GracePeriodObserver(mContext); @@ -1253,9 +1258,7 @@ class JobConcurrencyManager { return false; case PRIVILEGED_STATE_UNDEFINED: default: - final ActivityManagerInternal activityManagerInternal = - LocalServices.getService(ActivityManagerInternal.class); - final int procState = activityManagerInternal.getUidProcessState(uid); + final int procState = mActivityManagerInternal.getUidProcessState(uid); if (procState == ActivityManager.PROCESS_STATE_TOP) { cachedPrivilegedState.put(uid, PRIVILEGED_STATE_TOP); return true; @@ -1266,7 +1269,7 @@ class JobConcurrencyManager { } final BackgroundStartPrivileges bsp = - activityManagerInternal.getBackgroundStartPrivileges(uid); + mActivityManagerInternal.getBackgroundStartPrivileges(uid); if (DEBUG) { Slog.d(TAG, "Job " + job.toShortString() + " bsp state: " + bsp); } @@ -2213,19 +2216,17 @@ class JobConcurrencyManager { boolean shouldRunAsFgUserJob(JobStatus job) { if (!mShouldRestrictBgUser) return true; int userId = job.getSourceUserId(); - UserManagerInternal um = LocalServices.getService(UserManagerInternal.class); - UserInfo userInfo = um.getUserInfo(userId); + UserInfo userInfo = mUserManagerInternal.getUserInfo(userId); // If the user has a parent user (e.g. a work profile of another user), the user should be // treated equivalent as its parent user. if (userInfo.profileGroupId != UserInfo.NO_PROFILE_GROUP_ID && userInfo.profileGroupId != userId) { userId = userInfo.profileGroupId; - userInfo = um.getUserInfo(userId); + userInfo = mUserManagerInternal.getUserInfo(userId); } - int currentUser = LocalServices.getService(ActivityManagerInternal.class) - .getCurrentUserId(); + int currentUser = mActivityManagerInternal.getCurrentUserId(); // A user is treated as foreground user if any of the followings is true: // 1. The user is current user // 2. The user is primary user 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 f99bcf144b9168ae6421996aa14f144aef255803..e7ea7c2dbcbed34677183e903063e77af7b05700 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java @@ -251,6 +251,9 @@ public class JobSchedulerService extends com.android.server.SystemService } }; + @VisibleForTesting + public static UsageStatsManagerInternal sUsageStatsManagerInternal; + /** Global local for all job scheduler state. */ final Object mLock = new Object(); /** Master list of jobs. */ @@ -358,8 +361,8 @@ public class JobSchedulerService extends com.android.server.SystemService DeviceIdleInternal mLocalDeviceIdleController; @VisibleForTesting AppStateTrackerImpl mAppStateTracker; - final UsageStatsManagerInternal mUsageStats; private final AppStandbyInternal mAppStandbyInternal; + private final BatteryStatsInternal mBatteryStatsInternal; /** * Set to true once we are allowed to run third party apps. @@ -2416,7 +2419,7 @@ public class JobSchedulerService extends com.android.server.SystemService // Set up the app standby bucketing tracker mStandbyTracker = new StandbyTracker(); - mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class); + sUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); final Categorizer quotaCategorizer = (userId, packageName, tag) -> { if (QUOTA_TRACKER_TIMEOUT_UIJ_TAG.equals(tag)) { @@ -2467,6 +2470,8 @@ public class JobSchedulerService extends com.android.server.SystemService mAppStandbyInternal = LocalServices.getService(AppStandbyInternal.class); mAppStandbyInternal.addListener(mStandbyTracker); + mBatteryStatsInternal = LocalServices.getService(BatteryStatsInternal.class); + // The job store needs to call back publishLocalService(JobSchedulerInternal.class, new LocalService()); @@ -4127,7 +4132,7 @@ public class JobSchedulerService extends com.android.server.SystemService return; } - long sinceLast = mUsageStats.getTimeSinceLastJobRun(packageName, userId); + long sinceLast = sUsageStatsManagerInternal.getTimeSinceLastJobRun(packageName, userId); if (sinceLast > 2 * DateUtils.DAY_IN_MILLIS) { // Too long ago, not worth logging sinceLast = 0L; @@ -4137,8 +4142,6 @@ public class JobSchedulerService extends com.android.server.SystemService mJobs.forEachJobForSourceUid(uid, counter); } if (counter.numDeferred() > 0 || sinceLast > 0) { - BatteryStatsInternal mBatteryStatsInternal = LocalServices.getService - (BatteryStatsInternal.class); mBatteryStatsInternal.noteJobsDeferred(uid, counter.numDeferred(), sinceLast); FrameworkStatsLog.write_non_chained( FrameworkStatsLog.DEFERRED_JOB_STATS_REPORTED, uid, null, @@ -4183,10 +4186,8 @@ public class JobSchedulerService extends com.android.server.SystemService // Static to support external callers public static int standbyBucketForPackage(String packageName, int userId, long elapsedNow) { - UsageStatsManagerInternal usageStats = LocalServices.getService( - UsageStatsManagerInternal.class); - int bucket = usageStats != null - ? usageStats.getAppStandbyBucket(packageName, userId, elapsedNow) + int bucket = sUsageStatsManagerInternal != null + ? sUsageStatsManagerInternal.getAppStandbyBucket(packageName, userId, elapsedNow) : 0; bucket = standbyBucketToBucketIndex(bucket); diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java index 109686d76b2ffd0a4568e643b4a78fcf6b38cb31..b737041f838e3d602cbc6ffc06227aa84db7bbf1 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java @@ -161,6 +161,7 @@ public final class JobServiceContext implements ServiceConnection { private final EconomyManagerInternal mEconomyManagerInternal; private final JobPackageTracker mJobPackageTracker; private final PowerManager mPowerManager; + private final UsageStatsManagerInternal mUsageStatsManagerInternal; private PowerManager.WakeLock mWakeLock; // Execution state. @@ -321,6 +322,7 @@ public final class JobServiceContext implements ServiceConnection { mNotificationCoordinator = notificationCoordinator; mCompletedListener = service; mPowerManager = mContext.getSystemService(PowerManager.class); + mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class); mAvailable = true; mVerb = VERB_FINISHED; mPreferredUid = NO_PREFERRED_UID; @@ -456,6 +458,7 @@ public final class JobServiceContext implements ServiceConnection { if (DEBUG) { Slog.d(TAG, job.getServiceComponent().getShortClassName() + " unavailable."); } + mContext.unbindService(this); mRunningJob = null; mRunningJobWorkType = WORK_TYPE_NONE; mRunningCallback = null; @@ -535,9 +538,8 @@ public final class JobServiceContext implements ServiceConnection { // Whatever. } final int jobUserId = job.getSourceUserId(); - UsageStatsManagerInternal usageStats = - LocalServices.getService(UsageStatsManagerInternal.class); - usageStats.setLastJobRunTime(sourcePackage, jobUserId, mExecutionStartTimeElapsed); + mUsageStatsManagerInternal + .setLastJobRunTime(sourcePackage, jobUserId, mExecutionStartTimeElapsed); mAvailable = false; mStoppedReason = null; mStoppedTime = 0; diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java index 098b2fb6736036ab114121fe06c1829646225e8f..d48d84ba6980e8ae4239364718b1360e7a564c01 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobStore.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobStore.java @@ -1118,6 +1118,7 @@ public final class JobStore { } boolean needFileMigration = false; long nowElapsed = sElapsedRealtimeClock.millis(); + int numDuplicates = 0; synchronized (mLock) { for (File file : files) { final AtomicFile aFile = createJobFile(file); @@ -1126,6 +1127,16 @@ public final class JobStore { if (jobs != null) { for (int i = 0; i < jobs.size(); i++) { JobStatus js = jobs.get(i); + final JobStatus existingJob = this.jobSet.get( + js.getUid(), js.getNamespace(), js.getJobId()); + if (existingJob != null) { + numDuplicates++; + // Jobs are meant to have unique uid-namespace-jobId + // combinations, but we've somehow read multiple jobs with the + // combination. Drop the latter one since keeping both will + // result in other issues. + continue; + } js.prepareLocked(); js.enqueueTime = nowElapsed; this.jobSet.add(js); @@ -1174,6 +1185,10 @@ public final class JobStore { migrateJobFilesAsync(); } + if (numDuplicates > 0) { + Slog.wtf(TAG, "Encountered " + numDuplicates + " duplicate persisted jobs"); + } + // Log the count immediately after loading from boot. mCurrentJobSetSize = numJobs; mScheduledJob30MinHighWaterMark = mCurrentJobSetSize; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java index f429966e042a37ddae2cf6f6ea29932d643a3807..e0c766f9c7679e2bdc65421601cddd8b86260941 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java @@ -228,6 +228,8 @@ public final class JobStatus { /** The minimum possible update delay is 1 second. */ public static final long MIN_TRIGGER_MAX_DELAY = 1000; + private JobSchedulerInternal mJobSchedulerInternal; + final JobInfo job; /** * Uid of the package requesting this job. This can differ from the "source" @@ -1152,8 +1154,10 @@ public final class JobStatus { * exemptions. */ public int getEffectiveStandbyBucket() { - final JobSchedulerInternal jsi = LocalServices.getService(JobSchedulerInternal.class); - final boolean isBuggy = jsi.isAppConsideredBuggy( + if (mJobSchedulerInternal == null) { + mJobSchedulerInternal = LocalServices.getService(JobSchedulerInternal.class); + } + final boolean isBuggy = mJobSchedulerInternal.isAppConsideredBuggy( getUserId(), getServiceComponent().getPackageName(), getTimeoutBlameUserId(), getTimeoutBlamePackageName()); @@ -1262,12 +1266,15 @@ public final class JobStatus { * @return true if the exemption status changed */ public boolean updateMediaBackupExemptionStatus() { - final JobSchedulerInternal jsi = LocalServices.getService(JobSchedulerInternal.class); + if (mJobSchedulerInternal == null) { + mJobSchedulerInternal = LocalServices.getService(JobSchedulerInternal.class); + } boolean hasMediaExemption = mHasExemptedMediaUrisOnly && !job.hasLateConstraint() && job.getRequiredNetwork() != null && getEffectivePriority() >= JobInfo.PRIORITY_DEFAULT - && sourcePackageName.equals(jsi.getCloudMediaProviderPackage(sourceUserId)); + && sourcePackageName.equals( + mJobSchedulerInternal.getCloudMediaProviderPackage(sourceUserId)); if (mHasMediaBackupExemption == hasMediaExemption) { return false; } diff --git a/apex/jobscheduler/service/java/com/android/server/tare/Agent.java b/apex/jobscheduler/service/java/com/android/server/tare/Agent.java index dcc324deaac61163a165d17132113ebf564e56a4..5c60562398eef3e3f142579214178dca0e0e2d9e 100644 --- a/apex/jobscheduler/service/java/com/android/server/tare/Agent.java +++ b/apex/jobscheduler/service/java/com/android/server/tare/Agent.java @@ -75,7 +75,7 @@ class Agent { private static final String ALARM_TAG_AFFORDABILITY_CHECK = "*tare.affordability_check*"; private final Object mLock; - private final Handler mHandler; + private final AgentHandler mHandler; private final Analyst mAnalyst; private final InternalResourceService mIrs; private final Scribe mScribe; @@ -992,6 +992,7 @@ class Agent { void tearDownLocked() { mCurrentOngoingEvents.clear(); mBalanceThresholdAlarmQueue.removeAllAlarms(); + mHandler.removeAllMessages(); } @VisibleForTesting @@ -1290,6 +1291,11 @@ class Agent { break; } } + + void removeAllMessages() { + removeMessages(MSG_CHECK_ALL_AFFORDABILITY); + removeMessages(MSG_CHECK_INDIVIDUAL_AFFORDABILITY); + } } @GuardedBy("mLock") diff --git a/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java b/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java index f5487dc7114969bda168bc6fc62404607311cee7..b8397d2cd1b47fab0410b7ee7d536648ebc11e98 100644 --- a/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java +++ b/apex/jobscheduler/service/java/com/android/server/tare/InternalResourceService.java @@ -151,6 +151,7 @@ public class InternalResourceService extends SystemService { private final BatteryManagerInternal mBatteryManagerInternal; private final PackageManager mPackageManager; private final PackageManagerInternal mPackageManagerInternal; + private final UserManagerInternal mUserManagerInternal; private IAppOpsService mAppOpsService; private IDeviceIdleController mDeviceIdleController; @@ -357,6 +358,7 @@ public class InternalResourceService extends SystemService { mBatteryManagerInternal = LocalServices.getService(BatteryManagerInternal.class); mPackageManager = context.getPackageManager(); mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class); + mUserManagerInternal = LocalServices.getService(UserManagerInternal.class); mEconomyManagerStub = new EconomyManagerStub(); mAnalyst = new Analyst(); mScribe = new Scribe(this, mAnalyst); @@ -589,7 +591,7 @@ public class InternalResourceService extends SystemService { } void onExemptionListChanged() { - final int[] userIds = LocalServices.getService(UserManagerInternal.class).getUserIds(); + final int[] userIds = mUserManagerInternal.getUserIds(); synchronized (mLock) { final ArraySet removed = mExemptedApps; final ArraySet added = new ArraySet<>(); @@ -979,9 +981,7 @@ public class InternalResourceService extends SystemService { @GuardedBy("mLock") private void loadInstalledPackageListLocked() { mPkgCache.clear(); - final UserManagerInternal userManagerInternal = - LocalServices.getService(UserManagerInternal.class); - final int[] userIds = userManagerInternal.getUserIds(); + final int[] userIds = mUserManagerInternal.getUserIds(); for (int userId : userIds) { final List pkgs = mPackageManager.getInstalledPackagesAsUser(PACKAGE_QUERY_FLAGS, userId); @@ -1097,7 +1097,7 @@ public class InternalResourceService extends SystemService { timeSinceUsersAdded = mScribe.getRealtimeSinceUsersAddedLocked(nowElapsed); } - final int[] userIds = LocalServices.getService(UserManagerInternal.class).getUserIds(); + final int[] userIds = mUserManagerInternal.getUserIds(); for (int userId : userIds) { final long timeSinceUserAddedMs = timeSinceUsersAdded.get(userId, 0); // Temporarily mark installers as VIPs so they aren't subject to credit diff --git a/api/Android.bp b/api/Android.bp index c16bce5a1aea11a78d1a8fed157225c48b4a3f06..6986ac09f89eadabd14754f19ff82feda355fa80 100644 --- a/api/Android.bp +++ b/api/Android.bp @@ -83,9 +83,11 @@ combined_apis { "framework-configinfrastructure", "framework-connectivity", "framework-connectivity-t", + "framework-crashrecovery", "framework-devicelock", "framework-graphics", "framework-healthfitness", + "framework-location", "framework-media", "framework-mediaprovider", "framework-ondevicepersonalization", @@ -104,6 +106,7 @@ combined_apis { system_server_classpath: [ "service-art", "service-configinfrastructure", + "service-crashrecovery", "service-healthfitness", "service-media-s", "service-permission", diff --git a/api/StubLibraries.bp b/api/StubLibraries.bp index 22cc0593bc47796f3264dd9061f2f009b743937d..8989b10675d335f64fca963a5a8f4b14846df9cd 100644 --- a/api/StubLibraries.bp +++ b/api/StubLibraries.bp @@ -29,6 +29,9 @@ droidstubs { name: "api-stubs-docs-non-updatable", + srcs: [ + ":framework-minus-apex-aconfig-srcjars", + ], defaults: [ "android-non-updatable-stubs-defaults", "module-classpath-stubs-defaults", @@ -47,6 +50,7 @@ droidstubs { api_lint: { enabled: true, new_since: ":android.api.public.latest", + baseline_file: ":non-updatable-lint-baseline.txt", }, }, dists: [ @@ -132,6 +136,7 @@ droidstubs { }, api_lint: { enabled: true, + new_since: ":android.api.test.latest", baseline_file: ":non-updatable-test-lint-baseline.txt", }, }, @@ -487,7 +492,6 @@ java_library { static_libs: [ "all-updatable-modules-system-stubs", "android-non-updatable.stubs.test", - "private-stub-annotations-jar", ], defaults: [ "android.jar_defaults", @@ -588,6 +592,171 @@ java_genrule { }, } +// +// Java API defaults and libraries for single tree build +// + +java_defaults { + name: "stub-annotation-defaults", + libs: [ + "stub-annotations", + ], + static_libs: [ + // stub annotations do not contribute to the API surfaces but are statically + // linked in the stubs for API surfaces (see frameworks/base/StubLibraries.bp). + // This is because annotation processors insist on loading the classes for any + // annotations found, thus should exist inside android.jar. + "private-stub-annotations-jar", + ], +} + +// Listing of API domains contribution and dependencies per API surfaces +java_defaults { + name: "android_test_stubs_current_contributions", + api_surface: "test", + api_contributions: [ + "test-api-stubs-docs-non-updatable.api.contribution", + "framework-virtualization.stubs.source.test.api.contribution", + "framework-location.stubs.source.test.api.contribution", + ], +} + +java_defaults { + name: "android_test_frameworks_core_stubs_current_contributions", + api_surface: "test", + api_contributions: [ + "test-api-stubs-docs-non-updatable.api.contribution", + ], +} + +java_defaults { + name: "android_module_lib_stubs_current_contributions", + api_surface: "module-lib", + api_contributions: [ + "api-stubs-docs-non-updatable.api.contribution", + "system-api-stubs-docs-non-updatable.api.contribution", + "module-lib-api-stubs-docs-non-updatable.api.contribution", + "art.module.public.api.stubs.source.api.contribution", + "art.module.public.api.stubs.source.system.api.contribution", + "art.module.public.api.stubs.source.module_lib.api.contribution", + "i18n.module.public.api.stubs.source.api.contribution", + "i18n.module.public.api.stubs.source.system.api.contribution", + "i18n.module.public.api.stubs.source.module_lib.api.contribution", + ], +} + +// Java API library definitions per API surface +java_api_library { + name: "android_stubs_current.from-text", + api_surface: "public", + defaults: [ + // This module is dynamically created at frameworks/base/api/api.go + // instead of being written out, in order to minimize edits in the codebase + // when there is a change in the list of modules. + // that contributes to an api surface. + "android_stubs_current_contributions", + "stub-annotation-defaults", + ], + api_contributions: [ + "api-stubs-docs-non-updatable.api.contribution", + ], + visibility: ["//visibility:public"], +} + +java_api_library { + name: "android_system_stubs_current.from-text", + api_surface: "system", + defaults: [ + "android_stubs_current_contributions", + "android_system_stubs_current_contributions", + "stub-annotation-defaults", + ], + api_contributions: [ + "api-stubs-docs-non-updatable.api.contribution", + "system-api-stubs-docs-non-updatable.api.contribution", + ], + visibility: ["//visibility:public"], +} + +java_api_library { + name: "android_test_stubs_current.from-text", + api_surface: "test", + defaults: [ + "android_stubs_current_contributions", + "android_system_stubs_current_contributions", + "android_test_stubs_current_contributions", + "stub-annotation-defaults", + ], + api_contributions: [ + "api-stubs-docs-non-updatable.api.contribution", + "system-api-stubs-docs-non-updatable.api.contribution", + ], + visibility: ["//visibility:public"], +} + +java_api_library { + name: "android_test_frameworks_core_stubs_current.from-text", + api_surface: "test", + defaults: [ + "android_stubs_current_contributions", + "android_system_stubs_current_contributions", + "android_test_frameworks_core_stubs_current_contributions", + "stub-annotation-defaults", + ], + api_contributions: [ + "api-stubs-docs-non-updatable.api.contribution", + "system-api-stubs-docs-non-updatable.api.contribution", + ], +} + +java_api_library { + name: "android_module_lib_stubs_current_full.from-text", + api_surface: "module-lib", + defaults: [ + "android_stubs_current_contributions", + "android_system_stubs_current_contributions", + "android_module_lib_stubs_current_contributions_full", + ], + libs: [ + "stub-annotations", + ], + api_contributions: [ + "api-stubs-docs-non-updatable.api.contribution", + "system-api-stubs-docs-non-updatable.api.contribution", + "module-lib-api-stubs-docs-non-updatable.api.contribution", + ], + visibility: ["//visibility:public"], +} + +java_api_library { + name: "android_module_lib_stubs_current.from-text", + api_surface: "module-lib", + defaults: [ + "android_module_lib_stubs_current_contributions", + ], + libs: [ + "android_module_lib_stubs_current_full.from-text", + "stub-annotations", + ], + visibility: ["//visibility:public"], +} + +java_api_library { + name: "android_system_server_stubs_current.from-text", + api_surface: "system-server", + api_contributions: [ + "services-non-updatable-stubs.api.contribution", + ], + libs: [ + "android_module_lib_stubs_current.from-text", + "stub-annotations", + ], + static_libs: [ + "android_module_lib_stubs_current.from-text", + ], + visibility: ["//visibility:public"], +} + //////////////////////////////////////////////////////////////////////// // api-versions.xml generation, for public and system. This API database // also contains the android.test.* APIs. diff --git a/api/api.go b/api/api.go index d5c6145ba062bab0970c12c3382ff1b24c79f34c..83804c65d81ff6e6aab097869b17582a6111e3c7 100644 --- a/api/api.go +++ b/api/api.go @@ -31,6 +31,7 @@ const art = "art.module.public.api" const conscrypt = "conscrypt.module.public.api" const i18n = "i18n.module.public.api" const virtualization = "framework-virtualization" +const location = "framework-location" var core_libraries_modules = []string{art, conscrypt, i18n} @@ -42,7 +43,7 @@ var core_libraries_modules = []string{art, conscrypt, i18n} // APIs. // In addition, the modules in this list are allowed to contribute to test APIs // stubs. -var non_updatable_modules = []string{virtualization} +var non_updatable_modules = []string{virtualization, location} // The intention behind this soong plugin is to generate a number of "merged" // API-related modules that would otherwise require a large amount of very @@ -278,8 +279,10 @@ func createMergedFrameworkImpl(ctx android.LoadHookContext, modules []string) { } func createMergedFrameworkModuleLibStubs(ctx android.LoadHookContext, modules []string) { - // The user of this module compiles against the "core" SDK, so remove core libraries to avoid dupes. + // The user of this module compiles against the "core" SDK and against non-updatable modules, + // so remove to avoid dupes. modules = removeAll(modules, core_libraries_modules) + modules = removeAll(modules, non_updatable_modules) props := libraryProps{} props.Name = proptools.StringPtr("framework-updatable-stubs-module_libs_api") props.Static_libs = transformArray(modules, "", ".stubs.module_lib") @@ -430,7 +433,7 @@ type bazelCombinedApisAttributes struct { } // combined_apis bp2build converter -func (a *CombinedApis) ConvertWithBp2build(ctx android.TopDownMutatorContext) { +func (a *CombinedApis) ConvertWithBp2build(ctx android.Bp2buildMutatorContext) { basePrefix := "non-updatable" scopeToSuffix := map[string]string{ "public": "-current.txt", diff --git a/api/gen_combined_removed_dex.sh b/api/gen_combined_removed_dex.sh index 9225fe8dfe85c980d0e6a5cf34a5d4304db5e20a..71f366a6aae21e5ce621e69be05a2d135694e24b 100755 --- a/api/gen_combined_removed_dex.sh +++ b/api/gen_combined_removed_dex.sh @@ -6,6 +6,6 @@ shift 2 # Convert each removed.txt to the "dex format" equivalent, and print all output. for f in "$@"; do - "$metalava_path" --no-banner "$f" --dex-api "${tmp_dir}/tmp" + "$metalava_path" "$f" --dex-api "${tmp_dir}/tmp" cat "${tmp_dir}/tmp" done diff --git a/boot/Android.bp b/boot/Android.bp index 83a46c522317511e404b198364c50a8f6c2b0001..93d425e439a9353cb57ede40e809a8944239f0d5 100644 --- a/boot/Android.bp +++ b/boot/Android.bp @@ -83,6 +83,10 @@ custom_platform_bootclasspath { apex: "com.android.conscrypt", module: "com.android.conscrypt-bootclasspath-fragment", }, + { + apex: "com.android.crashrecovery", + module: "com.android.crashrecovery-bootclasspath-fragment", + }, { apex: "com.android.devicelock", module: "com.android.devicelock-bootclasspath-fragment", diff --git a/boot/boot-image-profile.txt b/boot/boot-image-profile.txt index 74fbd4a325584885e38479a1badb240d563e13e1..c0fb9abcc476174bdf85cca0e65a4a2188ea3fca 100644 --- a/boot/boot-image-profile.txt +++ b/boot/boot-image-profile.txt @@ -123,15 +123,15 @@ HSPLandroid/accounts/IAccountManagerResponse$Stub;->onTransact(ILandroid/os/Parc HSPLandroid/animation/AnimationHandler$$ExternalSyntheticLambda0;->(Landroid/animation/AnimationHandler;)V HSPLandroid/animation/AnimationHandler$$ExternalSyntheticLambda0;->doFrame(J)V HSPLandroid/animation/AnimationHandler$1;->(Landroid/animation/AnimationHandler;)V -HSPLandroid/animation/AnimationHandler$1;->doFrame(J)V +HSPLandroid/animation/AnimationHandler$1;->doFrame(J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;Landroid/animation/AnimationHandler$MyFrameCallbackProvider;,Lcom/android/internal/graphics/SfVsyncFrameCallbackProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->(Landroid/animation/AnimationHandler;)V -HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J +HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J+]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V HSPLandroid/animation/AnimationHandler;->()V HSPLandroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V HSPLandroid/animation/AnimationHandler;->autoCancelBasedOn(Landroid/animation/ObjectAnimator;)V HSPLandroid/animation/AnimationHandler;->cleanUpList()V -HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V +HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallback;Landroid/animation/ValueAnimator;,Landroid/animation/ObjectAnimator;,Lcom/android/internal/dynamicanimation/animation/SpringAnimation;,Landroid/animation/AnimatorSet;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/animation/AnimationHandler;->getAnimationCount()I HSPLandroid/animation/AnimationHandler;->getInstance()Landroid/animation/AnimationHandler; HSPLandroid/animation/AnimationHandler;->getProvider()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider; @@ -163,7 +163,7 @@ HSPLandroid/animation/Animator$AnimatorConstantState;->getChangingConfigurations HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Landroid/animation/Animator; HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Ljava/lang/Object; HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types -HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types +HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types HSPLandroid/animation/Animator;->()V HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V HSPLandroid/animation/Animator;->addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V @@ -231,7 +231,7 @@ HSPLandroid/animation/AnimatorSet;->cancel()V HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/Animator; HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/AnimatorSet; HSPLandroid/animation/AnimatorSet;->createDependencyGraph()V -HSPLandroid/animation/AnimatorSet;->doAnimationFrame(J)Z +HSPLandroid/animation/AnimatorSet;->doAnimationFrame(J)Z+]Landroid/animation/AnimatorSet$SeekState;Landroid/animation/AnimatorSet$SeekState;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/animation/AnimatorSet;->end()V HSPLandroid/animation/AnimatorSet;->endAnimation()V HSPLandroid/animation/AnimatorSet;->ensureChildStartAndEndTimes()[J @@ -274,12 +274,12 @@ HSPLandroid/animation/AnimatorSet;->startWithoutPulsing(Z)V HSPLandroid/animation/AnimatorSet;->updateAnimatorsDuration()V HSPLandroid/animation/AnimatorSet;->updatePlayTime(Landroid/animation/AnimatorSet$Node;Ljava/util/ArrayList;)V HSPLandroid/animation/ArgbEvaluator;->()V -HSPLandroid/animation/ArgbEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/animation/ArgbEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Integer;Ljava/lang/Integer; HSPLandroid/animation/ArgbEvaluator;->getInstance()Landroid/animation/ArgbEvaluator; HSPLandroid/animation/FloatKeyframeSet;->([Landroid/animation/Keyframe$FloatKeyframe;)V HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/FloatKeyframeSet; HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/Keyframes; -HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F +HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F+]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Landroid/animation/Keyframe$FloatKeyframe;Landroid/animation/Keyframe$FloatKeyframe; HSPLandroid/animation/FloatKeyframeSet;->getValue(F)Ljava/lang/Object; HSPLandroid/animation/IntKeyframeSet;->([Landroid/animation/Keyframe$IntKeyframe;)V HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/IntKeyframeSet; @@ -313,11 +313,11 @@ HSPLandroid/animation/Keyframe;->ofObject(FLjava/lang/Object;)Landroid/animation HSPLandroid/animation/Keyframe;->setInterpolator(Landroid/animation/TimeInterpolator;)V HSPLandroid/animation/Keyframe;->setValueWasSetOnStart(Z)V HSPLandroid/animation/Keyframe;->valueWasSetOnStart()Z -HSPLandroid/animation/KeyframeSet;->([Landroid/animation/Keyframe;)V +HSPLandroid/animation/KeyframeSet;->([Landroid/animation/Keyframe;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$ObjectKeyframe;,Landroid/animation/Keyframe$IntKeyframe;,Landroid/animation/Keyframe$FloatKeyframe; HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/KeyframeSet; HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/Keyframes; HSPLandroid/animation/KeyframeSet;->getKeyframes()Ljava/util/List; -HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object;+]Landroid/animation/TypeEvaluator;Landroid/animation/ArgbEvaluator;]Landroid/animation/Keyframe;Landroid/animation/Keyframe$ObjectKeyframe; HSPLandroid/animation/KeyframeSet;->ofFloat([F)Landroid/animation/KeyframeSet; HSPLandroid/animation/KeyframeSet;->ofInt([I)Landroid/animation/KeyframeSet; HSPLandroid/animation/KeyframeSet;->ofObject([Ljava/lang/Object;)Landroid/animation/KeyframeSet; @@ -357,7 +357,7 @@ HSPLandroid/animation/LayoutTransition;->startChangingAnimations()V HSPLandroid/animation/ObjectAnimator;->()V HSPLandroid/animation/ObjectAnimator;->(Ljava/lang/Object;Landroid/util/Property;)V HSPLandroid/animation/ObjectAnimator;->(Ljava/lang/Object;Ljava/lang/String;)V -HSPLandroid/animation/ObjectAnimator;->animateValue(F)V +HSPLandroid/animation/ObjectAnimator;->animateValue(F)V+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/Animator; HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/ObjectAnimator; HSPLandroid/animation/ObjectAnimator;->getNameForTrace()Ljava/lang/String; @@ -399,7 +399,7 @@ HSPLandroid/animation/PathKeyframes;->interpolateInRange(FII)Landroid/graphics/P HSPLandroid/animation/PropertyValuesHolder$1;->getValueAtFraction(F)Ljava/lang/Object; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->(Landroid/util/Property;[F)V HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->(Ljava/lang/String;[F)V -HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->calculateValue(F)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->calculateValue(F)V+]Landroid/animation/Keyframes$FloatKeyframes;Landroid/animation/FloatKeyframeSet; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object; @@ -417,7 +417,6 @@ HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setIntValue HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V HSPLandroid/animation/PropertyValuesHolder$PropertyValues;->()V HSPLandroid/animation/PropertyValuesHolder;->(Landroid/util/Property;)V -HSPLandroid/animation/PropertyValuesHolder;->(Landroid/util/Property;Landroid/animation/PropertyValuesHolder-IA;)V HSPLandroid/animation/PropertyValuesHolder;->(Ljava/lang/String;)V HSPLandroid/animation/PropertyValuesHolder;->(Ljava/lang/String;Landroid/animation/PropertyValuesHolder-IA;)V HSPLandroid/animation/PropertyValuesHolder;->calculateValue(F)V @@ -473,18 +472,18 @@ HSPLandroid/animation/TimeAnimator;->setTimeListener(Landroid/animation/TimeAnim HSPLandroid/animation/ValueAnimator;->()V HSPLandroid/animation/ValueAnimator;->addAnimationCallback(J)V HSPLandroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V -HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z -HSPLandroid/animation/ValueAnimator;->animateValue(F)V +HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;,Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ValueAnimator;->animateValue(F)V+]Landroid/animation/TimeInterpolator;megamorphic_types]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;,Landroid/animation/ObjectAnimator; HSPLandroid/animation/ValueAnimator;->areAnimatorsEnabled()Z HSPLandroid/animation/ValueAnimator;->cancel()V HSPLandroid/animation/ValueAnimator;->clampFraction(F)F HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/Animator; HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator; -HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z +HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;,Landroid/animation/ObjectAnimator; HSPLandroid/animation/ValueAnimator;->end()V -HSPLandroid/animation/ValueAnimator;->endAnimation()V +HSPLandroid/animation/ValueAnimator;->endAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator; HSPLandroid/animation/ValueAnimator;->getAnimatedFraction()F -HSPLandroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object; +HSPLandroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object;+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; HSPLandroid/animation/ValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler; HSPLandroid/animation/ValueAnimator;->getCurrentAnimationsCount()I HSPLandroid/animation/ValueAnimator;->getCurrentIteration(F)I @@ -532,7 +531,7 @@ HSPLandroid/animation/ValueAnimator;->setValues([Landroid/animation/PropertyValu HSPLandroid/animation/ValueAnimator;->shouldPlayBackward(IZ)Z HSPLandroid/animation/ValueAnimator;->skipToEndValue(Z)V HSPLandroid/animation/ValueAnimator;->start()V -HSPLandroid/animation/ValueAnimator;->start(Z)V +HSPLandroid/animation/ValueAnimator;->start(Z)V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator; HSPLandroid/animation/ValueAnimator;->startAnimation()V HSPLandroid/animation/ValueAnimator;->startWithoutPulsing(Z)V HSPLandroid/app/Activity$1;->(Landroid/app/Activity;)V @@ -583,7 +582,7 @@ HSPLandroid/app/Activity;->getNextAutofillId()I HSPLandroid/app/Activity;->getOnBackInvokedDispatcher()Landroid/window/OnBackInvokedDispatcher; HSPLandroid/app/Activity;->getReferrer()Landroid/net/Uri; HSPLandroid/app/Activity;->getRequestedOrientation()I -HSPLandroid/app/Activity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/app/Activity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/app/Activity;->getTaskId()I HSPLandroid/app/Activity;->getTitle()Ljava/lang/CharSequence; HSPLandroid/app/Activity;->getTitleColor()I @@ -821,7 +820,7 @@ HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPersistable()Z HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPreHoneycomb()Z HSPLandroid/app/ActivityThread$ActivityClientRecord;->setState(I)V HSPLandroid/app/ActivityThread$AndroidOs;->(Llibcore/io/Os;)V -HSPLandroid/app/ActivityThread$AndroidOs;->access(Ljava/lang/String;I)Z +HSPLandroid/app/ActivityThread$AndroidOs;->access(Ljava/lang/String;I)Z+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/app/ActivityThread$AndroidOs;->install()V HSPLandroid/app/ActivityThread$AndroidOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor; HSPLandroid/app/ActivityThread$AndroidOs;->remove(Ljava/lang/String;)V @@ -868,11 +867,11 @@ HSPLandroid/app/ActivityThread$ApplicationThread;->setProcessState(I)V HSPLandroid/app/ActivityThread$ApplicationThread;->unstableProviderDied(Landroid/os/IBinder;)V HSPLandroid/app/ActivityThread$ApplicationThread;->updateCompatOverrideScale(Landroid/content/res/CompatibilityInfo;)V HSPLandroid/app/ActivityThread$BindServiceData;->()V -HSPLandroid/app/ActivityThread$BindServiceData;->toString()Ljava/lang/String; +HSPLandroid/app/ActivityThread$BindServiceData;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/app/ActivityThread$ContextCleanupInfo;->()V HSPLandroid/app/ActivityThread$CreateBackupAgentData;->()V HSPLandroid/app/ActivityThread$CreateServiceData;->()V -HSPLandroid/app/ActivityThread$CreateServiceData;->toString()Ljava/lang/String; +HSPLandroid/app/ActivityThread$CreateServiceData;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/app/ActivityThread$DumpResourcesData;->()V HSPLandroid/app/ActivityThread$GcIdler;->(Landroid/app/ActivityThread;)V HSPLandroid/app/ActivityThread$GcIdler;->queueIdle()Z @@ -884,16 +883,15 @@ HSPLandroid/app/ActivityThread$Idler;->queueIdle()Z HSPLandroid/app/ActivityThread$Profiler;->()V HSPLandroid/app/ActivityThread$ProviderKey;->(Ljava/lang/String;I)V HSPLandroid/app/ActivityThread$ProviderKey;->equals(Ljava/lang/Object;)Z -HSPLandroid/app/ActivityThread$ProviderKey;->hashCode()I +HSPLandroid/app/ActivityThread$ProviderKey;->hashCode()I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/app/ActivityThread$ProviderRefCount;->(Landroid/app/ContentProviderHolder;Landroid/app/ActivityThread$ProviderClientRecord;II)V HSPLandroid/app/ActivityThread$PurgeIdler;->(Landroid/app/ActivityThread;)V HSPLandroid/app/ActivityThread$PurgeIdler;->queueIdle()Z HSPLandroid/app/ActivityThread$ReceiverData;->(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZLandroid/os/IBinder;IILjava/lang/String;)V HSPLandroid/app/ActivityThread$RequestAssistContextExtras;->()V HSPLandroid/app/ActivityThread$ServiceArgsData;->()V -HSPLandroid/app/ActivityThread$ServiceArgsData;->toString()Ljava/lang/String; +HSPLandroid/app/ActivityThread$ServiceArgsData;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/app/ActivityThread;->-$$Nest$fgetmTransactionExecutor(Landroid/app/ActivityThread;)Landroid/app/servertransaction/TransactionExecutor; -HSPLandroid/app/ActivityThread;->-$$Nest$mgetGetProviderKey(Landroid/app/ActivityThread;Ljava/lang/String;I)Landroid/app/ActivityThread$ProviderKey; HSPLandroid/app/ActivityThread;->-$$Nest$mhandleBindApplication(Landroid/app/ActivityThread;Landroid/app/ActivityThread$AppBindData;)V HSPLandroid/app/ActivityThread;->-$$Nest$mhandleBindService(Landroid/app/ActivityThread;Landroid/app/ActivityThread$BindServiceData;)V HSPLandroid/app/ActivityThread;->-$$Nest$mhandleCreateBackupAgent(Landroid/app/ActivityThread;Landroid/app/ActivityThread$CreateBackupAgentData;)V @@ -913,8 +911,8 @@ HSPLandroid/app/ActivityThread;->-$$Nest$mhandleUnbindService(Landroid/app/Activ HSPLandroid/app/ActivityThread;->-$$Nest$mpurgePendingResources(Landroid/app/ActivityThread;)V HSPLandroid/app/ActivityThread;->-$$Nest$msendMessage(Landroid/app/ActivityThread;ILjava/lang/Object;IIZ)V HSPLandroid/app/ActivityThread;->()V -HSPLandroid/app/ActivityThread;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider; -HSPLandroid/app/ActivityThread;->acquireProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider; +HSPLandroid/app/ActivityThread;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;,Landroid/content/ContentProvider$Transport;]Landroid/os/IBinder;Landroid/content/ContentProvider$Transport;,Landroid/os/BinderProxy; +HSPLandroid/app/ActivityThread;->acquireProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider;+]Landroid/app/ActivityThread;Landroid/app/ActivityThread;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy; HSPLandroid/app/ActivityThread;->attach(ZJ)V HSPLandroid/app/ActivityThread;->callActivityOnSaveInstanceState(Landroid/app/ActivityThread$ActivityClientRecord;)V HSPLandroid/app/ActivityThread;->callActivityOnStop(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;)V @@ -985,13 +983,13 @@ HSPLandroid/app/ActivityThread;->handleLaunchActivity(Landroid/app/ActivityThrea HSPLandroid/app/ActivityThread;->handleLowMemory()V HSPLandroid/app/ActivityThread;->handleNewIntent(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/util/List;)V HSPLandroid/app/ActivityThread;->handlePauseActivity(Landroid/app/ActivityThread$ActivityClientRecord;ZZIZLandroid/app/servertransaction/PendingTransactionActions;Ljava/lang/String;)V -HSPLandroid/app/ActivityThread;->handleReceiver(Landroid/app/ActivityThread$ReceiverData;)V +HSPLandroid/app/ActivityThread;->handleReceiver(Landroid/app/ActivityThread$ReceiverData;)V+]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ActivityThread;Landroid/app/ActivityThread;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/app/ActivityThread$ReceiverData;Landroid/app/ActivityThread$ReceiverData;]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/app/ActivityThread;->handleRelaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;)V HSPLandroid/app/ActivityThread;->handleRelaunchActivityInner(Landroid/app/ActivityThread$ActivityClientRecord;ILjava/util/List;Ljava/util/List;Landroid/app/servertransaction/PendingTransactionActions;ZLandroid/content/res/Configuration;Ljava/lang/String;)V HSPLandroid/app/ActivityThread;->handleRequestAssistContextExtras(Landroid/app/ActivityThread$RequestAssistContextExtras;)V HSPLandroid/app/ActivityThread;->handleResumeActivity(Landroid/app/ActivityThread$ActivityClientRecord;ZZZLjava/lang/String;)V HSPLandroid/app/ActivityThread;->handleSendResult(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/util/List;Ljava/lang/String;)V -HSPLandroid/app/ActivityThread;->handleServiceArgs(Landroid/app/ActivityThread$ServiceArgsData;)V +HSPLandroid/app/ActivityThread;->handleServiceArgs(Landroid/app/ActivityThread$ServiceArgsData;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/app/ActivityThread;->handleSetContentCaptureOptionsCallback(Ljava/lang/String;)V HSPLandroid/app/ActivityThread;->handleSetCoreSettings(Landroid/os/Bundle;)V HSPLandroid/app/ActivityThread;->handleStartActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;Landroid/app/ActivityOptions;)V @@ -1031,7 +1029,7 @@ HSPLandroid/app/ActivityThread;->prepareRelaunchActivity(Landroid/os/IBinder;Lja HSPLandroid/app/ActivityThread;->printRow(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/app/ActivityThread;->purgePendingResources()V HSPLandroid/app/ActivityThread;->relaunchAllActivities(ZLjava/lang/String;)V -HSPLandroid/app/ActivityThread;->releaseProvider(Landroid/content/IContentProvider;Z)Z +HSPLandroid/app/ActivityThread;->releaseProvider(Landroid/content/IContentProvider;Z)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;,Landroid/content/ContentProvider$Transport;]Landroid/app/ActivityThread$H;Landroid/app/ActivityThread$H;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy; HSPLandroid/app/ActivityThread;->reportSizeConfigurations(Landroid/app/ActivityThread$ActivityClientRecord;)V HSPLandroid/app/ActivityThread;->reportStop(Landroid/app/servertransaction/PendingTransactionActions;)V HSPLandroid/app/ActivityThread;->reportTopResumedActivityChanged(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;)V @@ -1087,7 +1085,7 @@ HSPLandroid/app/AlertDialog;->resolveDialogTheme(Landroid/content/Context;I)I HSPLandroid/app/AppCompatCallbacks;->([J)V HSPLandroid/app/AppCompatCallbacks;->install([J)V HSPLandroid/app/AppCompatCallbacks;->isChangeEnabled(J)Z -HSPLandroid/app/AppCompatCallbacks;->reportChange(JI)V +HSPLandroid/app/AppCompatCallbacks;->reportChange(JI)V+]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter; HSPLandroid/app/AppComponentFactory;->()V HSPLandroid/app/AppComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity; HSPLandroid/app/AppComponentFactory;->instantiateApplication(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/app/Application; @@ -1138,7 +1136,7 @@ HSPLandroid/app/AppOpsManager;->getNotedOpCollectionMode(ILjava/lang/String;I)I HSPLandroid/app/AppOpsManager;->getPackagesForOps([I)Ljava/util/List; HSPLandroid/app/AppOpsManager;->getService()Lcom/android/internal/app/IAppOpsService; HSPLandroid/app/AppOpsManager;->getToken(Lcom/android/internal/app/IAppOpsService;)Landroid/os/IBinder; -HSPLandroid/app/AppOpsManager;->isCollectingStackTraces()Z +HSPLandroid/app/AppOpsManager;->isCollectingStackTraces()Z+]Lcom/android/internal/app/MessageSamplingConfig;Lcom/android/internal/app/MessageSamplingConfig; HSPLandroid/app/AppOpsManager;->isListeningForOpNoted()Z HSPLandroid/app/AppOpsManager;->lambda$new$0(Landroid/provider/DeviceConfig$Properties;)V HSPLandroid/app/AppOpsManager;->leftCircularDistance(III)I @@ -1154,7 +1152,7 @@ HSPLandroid/app/AppOpsManager;->opToDefaultMode(I)I HSPLandroid/app/AppOpsManager;->opToPermission(I)Ljava/lang/String; HSPLandroid/app/AppOpsManager;->opToPublicName(I)Ljava/lang/String; HSPLandroid/app/AppOpsManager;->opToSwitch(I)I -HSPLandroid/app/AppOpsManager;->pauseNotedAppOpsCollection()Landroid/app/AppOpsManager$PausedNotedAppOpsCollection; +HSPLandroid/app/AppOpsManager;->pauseNotedAppOpsCollection()Landroid/app/AppOpsManager$PausedNotedAppOpsCollection;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/app/AppOpsManager;->permissionToOp(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/app/AppOpsManager;->permissionToOpCode(Ljava/lang/String;)I HSPLandroid/app/AppOpsManager;->prefixParcelWithAppOpsIfNeeded(Landroid/os/Parcel;)V @@ -1316,7 +1314,7 @@ HSPLandroid/app/ApplicationPackageManager;->getProviderInfo(Landroid/content/Com HSPLandroid/app/ApplicationPackageManager;->getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; HSPLandroid/app/ApplicationPackageManager;->getReceiverInfo(Landroid/content/ComponentName;Landroid/content/pm/PackageManager$ComponentInfoFlags;)Landroid/content/pm/ActivityInfo; HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources; -HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;Landroid/content/res/Configuration;)Landroid/content/res/Resources; +HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;Landroid/content/res/Configuration;)Landroid/content/res/Resources;+]Ljava/lang/String;Ljava/lang/String;]Landroid/app/ActivityThread;Landroid/app/ActivityThread; HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources; HSPLandroid/app/ApplicationPackageManager;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo; HSPLandroid/app/ApplicationPackageManager;->getServiceInfo(Landroid/content/ComponentName;Landroid/content/pm/PackageManager$ComponentInfoFlags;)Landroid/content/pm/ServiceInfo; @@ -1333,7 +1331,6 @@ HSPLandroid/app/ApplicationPackageManager;->handlePackageBroadcast(I[Ljava/lang/ HSPLandroid/app/ApplicationPackageManager;->hasSystemFeature(Ljava/lang/String;)Z HSPLandroid/app/ApplicationPackageManager;->hasSystemFeature(Ljava/lang/String;I)Z HSPLandroid/app/ApplicationPackageManager;->hasUserBadge(I)Z -HSPLandroid/app/ApplicationPackageManager;->isDeviceUpgrading()Z HSPLandroid/app/ApplicationPackageManager;->isInstantApp()Z HSPLandroid/app/ApplicationPackageManager;->isInstantApp(Ljava/lang/String;)Z HSPLandroid/app/ApplicationPackageManager;->isPackageSuspended(Ljava/lang/String;)Z @@ -1405,13 +1402,10 @@ HSPLandroid/app/BackStackRecord;->runOnCommitRunnables()V HSPLandroid/app/BroadcastOptions;->()V HSPLandroid/app/BroadcastOptions;->isTemporaryAppAllowlistSet()Z HSPLandroid/app/BroadcastOptions;->makeBasic()Landroid/app/BroadcastOptions; -HSPLandroid/app/BroadcastOptions;->resetTemporaryAppAllowlist()V HSPLandroid/app/BroadcastOptions;->setTemporaryAppWhitelistDuration(J)V HSPLandroid/app/BroadcastOptions;->toBundle()Landroid/os/Bundle; HSPLandroid/app/ClientTransactionHandler;->()V HSPLandroid/app/ClientTransactionHandler;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V -HSPLandroid/app/ComponentOptions;->()V -HSPLandroid/app/ComponentOptions;->toBundle()Landroid/os/Bundle;+]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLandroid/app/ConfigurationController;->(Landroid/app/ActivityThreadInternal;)V HSPLandroid/app/ConfigurationController;->applyCompatConfiguration()Landroid/content/res/Configuration; HSPLandroid/app/ConfigurationController;->createNewConfigAndUpdateIfNotNull(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration; @@ -1440,7 +1434,7 @@ HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireProvider(Landroi HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireUnstableProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseProvider(Landroid/content/IContentProvider;)Z HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z -HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I+]Landroid/app/ContextImpl$ApplicationContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/app/ContextImpl$ApplicationContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V HSPLandroid/app/ContextImpl;->(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/ContextParams;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;)V+]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/content/ContextParams;Landroid/content/ContextParams; HSPLandroid/app/ContextImpl;->bindIsolatedService(Landroid/content/Intent;ILjava/lang/String;Ljava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z @@ -1448,7 +1442,7 @@ HSPLandroid/app/ContextImpl;->bindService(Landroid/content/Intent;Landroid/conte HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z HSPLandroid/app/ContextImpl;->bindServiceCommon(Landroid/content/Intent;Landroid/content/ServiceConnection;JLjava/lang/String;Landroid/os/Handler;Ljava/util/concurrent/Executor;Landroid/os/UserHandle;)Z -HSPLandroid/app/ContextImpl;->canLoadUnsafeResources()Z +HSPLandroid/app/ContextImpl;->canLoadUnsafeResources()Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->checkCallingOrSelfPermission(Ljava/lang/String;)I+]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->checkCallingPermission(Ljava/lang/String;)I HSPLandroid/app/ContextImpl;->checkMode(I)V @@ -1462,7 +1456,6 @@ HSPLandroid/app/ContextImpl;->createAppContext(Landroid/app/ActivityThread;Landr HSPLandroid/app/ContextImpl;->createAppContext(Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;)Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context; HSPLandroid/app/ContextImpl;->createAttributionContext(Ljava/lang/String;)Landroid/content/Context; -HSPLandroid/app/ContextImpl;->createAttributionSource(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;)Landroid/content/AttributionSource; HSPLandroid/app/ContextImpl;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context; HSPLandroid/app/ContextImpl;->createContext(Landroid/content/ContextParams;)Landroid/content/Context; HSPLandroid/app/ContextImpl;->createContextAsUser(Landroid/os/UserHandle;I)Landroid/content/Context; @@ -1489,19 +1482,19 @@ HSPLandroid/app/ContextImpl;->enforce(Ljava/lang/String;IZILjava/lang/String;)V HSPLandroid/app/ContextImpl;->enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/app/ContextImpl;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/app/ContextImpl;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V -HSPLandroid/app/ContextImpl;->ensureExternalDirsExistOrFilter([Ljava/io/File;Z)[Ljava/io/File; +HSPLandroid/app/ContextImpl;->ensureExternalDirsExistOrFilter([Ljava/io/File;Z)[Ljava/io/File;+]Ljava/io/File;Ljava/io/File;]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->ensurePrivateCacheDirExists(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->ensurePrivateDirExists(Ljava/io/File;)Ljava/io/File; HSPLandroid/app/ContextImpl;->ensurePrivateDirExists(Ljava/io/File;IILjava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->fileList()[Ljava/lang/String; HSPLandroid/app/ContextImpl;->finalize()V HSPLandroid/app/ContextImpl;->getActivityToken()Landroid/os/IBinder; -HSPLandroid/app/ContextImpl;->getApplicationContext()Landroid/content/Context; +HSPLandroid/app/ContextImpl;->getApplicationContext()Landroid/content/Context;+]Landroid/app/LoadedApk;Landroid/app/LoadedApk; HSPLandroid/app/ContextImpl;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;+]Landroid/app/LoadedApk;Landroid/app/LoadedApk; HSPLandroid/app/ContextImpl;->getAssets()Landroid/content/res/AssetManager; HSPLandroid/app/ContextImpl;->getAssociatedDisplayId()I HSPLandroid/app/ContextImpl;->getAttributionSource()Landroid/content/AttributionSource; -HSPLandroid/app/ContextImpl;->getAttributionTag()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getAttributionTag()Ljava/lang/String;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource; HSPLandroid/app/ContextImpl;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient; HSPLandroid/app/ContextImpl;->getAutofillOptions()Landroid/content/AutofillOptions; HSPLandroid/app/ContextImpl;->getBasePackageName()Ljava/lang/String; @@ -1511,19 +1504,19 @@ HSPLandroid/app/ContextImpl;->getCodeCacheDir()Ljava/io/File; HSPLandroid/app/ContextImpl;->getCodeCacheDirBeforeBind(Ljava/io/File;)Ljava/io/File; HSPLandroid/app/ContextImpl;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions; HSPLandroid/app/ContextImpl;->getContentResolver()Landroid/content/ContentResolver; -HSPLandroid/app/ContextImpl;->getDataDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getDataDir()Ljava/io/File;+]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Ljava/io/File;Ljava/io/File;]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->getDatabasePath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->getDatabasesDir()Ljava/io/File; HSPLandroid/app/ContextImpl;->getDeviceId()I HSPLandroid/app/ContextImpl;->getDir(Ljava/lang/String;I)Ljava/io/File; HSPLandroid/app/ContextImpl;->getDisplay()Landroid/view/Display; HSPLandroid/app/ContextImpl;->getDisplayAdjustments(I)Landroid/view/DisplayAdjustments; -HSPLandroid/app/ContextImpl;->getDisplayId()I -HSPLandroid/app/ContextImpl;->getDisplayNoVerify()Landroid/view/Display; +HSPLandroid/app/ContextImpl;->getDisplayId()I+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/view/Display;Landroid/view/Display; +HSPLandroid/app/ContextImpl;->getDisplayNoVerify()Landroid/view/Display;+]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager; HSPLandroid/app/ContextImpl;->getExternalCacheDir()Ljava/io/File; HSPLandroid/app/ContextImpl;->getExternalCacheDirs()[Ljava/io/File; HSPLandroid/app/ContextImpl;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File; -HSPLandroid/app/ContextImpl;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/app/ContextImpl;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File;+]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->getExternalMediaDirs()[Ljava/io/File; HSPLandroid/app/ContextImpl;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->getFilesDir()Ljava/io/File;+]Landroid/app/ContextImpl;Landroid/app/ContextImpl; @@ -1532,17 +1525,17 @@ HSPLandroid/app/ContextImpl;->getMainExecutor()Ljava/util/concurrent/Executor; HSPLandroid/app/ContextImpl;->getMainLooper()Landroid/os/Looper; HSPLandroid/app/ContextImpl;->getMainThreadHandler()Landroid/os/Handler; HSPLandroid/app/ContextImpl;->getNoBackupFilesDir()Ljava/io/File; -HSPLandroid/app/ContextImpl;->getOpPackageName()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getOpPackageName()Ljava/lang/String;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource; HSPLandroid/app/ContextImpl;->getOuterContext()Landroid/content/Context; HSPLandroid/app/ContextImpl;->getPackageCodePath()Ljava/lang/String; HSPLandroid/app/ContextImpl;->getPackageManager()Landroid/content/pm/PackageManager; -HSPLandroid/app/ContextImpl;->getPackageName()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getPackageName()Ljava/lang/String;+]Landroid/app/LoadedApk;Landroid/app/LoadedApk; HSPLandroid/app/ContextImpl;->getPackageResourcePath()Ljava/lang/String; HSPLandroid/app/ContextImpl;->getPreferencesDir()Ljava/io/File; HSPLandroid/app/ContextImpl;->getReceiverRestrictedContext()Landroid/content/Context; HSPLandroid/app/ContextImpl;->getResources()Landroid/content/res/Resources; HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences; -HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; +HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->getSharedPreferencesCacheLocked()Landroid/util/ArrayMap; HSPLandroid/app/ContextImpl;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; @@ -1550,7 +1543,7 @@ HSPLandroid/app/ContextImpl;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/ HSPLandroid/app/ContextImpl;->getTheme()Landroid/content/res/Resources$Theme; HSPLandroid/app/ContextImpl;->getThemeResId()I HSPLandroid/app/ContextImpl;->getUser()Landroid/os/UserHandle; -HSPLandroid/app/ContextImpl;->getUserId()I +HSPLandroid/app/ContextImpl;->getUserId()I+]Landroid/os/UserHandle;Landroid/os/UserHandle; HSPLandroid/app/ContextImpl;->getWindowContextToken()Landroid/os/IBinder; HSPLandroid/app/ContextImpl;->grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V HSPLandroid/app/ContextImpl;->initializeTheme()V @@ -1763,7 +1756,7 @@ HSPLandroid/app/FragmentManagerImpl;->addAddedFragments(Landroid/util/ArraySet;) HSPLandroid/app/FragmentManagerImpl;->addFragment(Landroid/app/Fragment;Z)V HSPLandroid/app/FragmentManagerImpl;->attachController(Landroid/app/FragmentHostCallback;Landroid/app/FragmentContainer;Landroid/app/Fragment;)V HSPLandroid/app/FragmentManagerImpl;->beginTransaction()Landroid/app/FragmentTransaction; -HSPLandroid/app/FragmentManagerImpl;->burpActive()V +HSPLandroid/app/FragmentManagerImpl;->burpActive()V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/app/FragmentManagerImpl;->checkStateLoss()V HSPLandroid/app/FragmentManagerImpl;->cleanupExec()V HSPLandroid/app/FragmentManagerImpl;->dispatchActivityCreated()V @@ -1802,7 +1795,7 @@ HSPLandroid/app/FragmentManagerImpl;->executePostponedTransaction(Ljava/util/Arr HSPLandroid/app/FragmentManagerImpl;->findFragmentByTag(Ljava/lang/String;)Landroid/app/Fragment; HSPLandroid/app/FragmentManagerImpl;->findFragmentUnder(Landroid/app/Fragment;)Landroid/app/Fragment; HSPLandroid/app/FragmentManagerImpl;->forcePostponedTransactions()V -HSPLandroid/app/FragmentManagerImpl;->generateOpsForPendingActions(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +HSPLandroid/app/FragmentManagerImpl;->generateOpsForPendingActions(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/app/FragmentHostCallback;Landroid/app/Activity$HostCallbacks;]Landroid/app/FragmentManagerImpl$OpGenerator;Landroid/app/BackStackRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/app/FragmentManagerImpl;->getLayoutInflaterFactory()Landroid/view/LayoutInflater$Factory2; HSPLandroid/app/FragmentManagerImpl;->getPrimaryNavigationFragment()Landroid/app/Fragment; HSPLandroid/app/FragmentManagerImpl;->getTargetSdk()I @@ -1812,7 +1805,7 @@ HSPLandroid/app/FragmentManagerImpl;->makeActive(Landroid/app/Fragment;)V HSPLandroid/app/FragmentManagerImpl;->makeInactive(Landroid/app/Fragment;)V HSPLandroid/app/FragmentManagerImpl;->makeRemovedFragmentsInvisible(Landroid/util/ArraySet;)V HSPLandroid/app/FragmentManagerImpl;->moveFragmentToExpectedState(Landroid/app/Fragment;)V -HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V +HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V+]Landroid/app/FragmentManagerImpl;Landroid/app/FragmentManagerImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/app/FragmentManagerImpl;->moveToState(Landroid/app/Fragment;IIIZ)V HSPLandroid/app/FragmentManagerImpl;->noteStateNotSaved()V HSPLandroid/app/FragmentManagerImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; @@ -1871,7 +1864,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/app/IActivityManager$Stub$Proxy;->attachApplication(Landroid/app/IApplicationThread;J)V HSPLandroid/app/IActivityManager$Stub$Proxy;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;I)V HSPLandroid/app/IActivityManager$Stub$Proxy;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I -HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->cancelIntentSender(Landroid/content/IIntentSender;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermission(Ljava/lang/String;II)I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I @@ -1882,7 +1875,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->getCurrentUser()Landroid/content/p HSPLandroid/app/IActivityManager$Stub$Proxy;->getCurrentUserId()I HSPLandroid/app/IActivityManager$Stub$Proxy;->getHistoricalProcessExitReasons(Ljava/lang/String;III)Landroid/content/pm/ParceledListSlice; HSPLandroid/app/IActivityManager$Stub$Proxy;->getInfoForIntentSender(Landroid/content/IIntentSender;)Landroid/app/ActivityManager$PendingIntentInfo; -HSPLandroid/app/IActivityManager$Stub$Proxy;->getIntentSenderWithFeature(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getIntentSenderWithFeature(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; @@ -1896,9 +1889,9 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->isIntentSenderAnActivity(Landroid/ HSPLandroid/app/IActivityManager$Stub$Proxy;->isUserAMonkey()Z HSPLandroid/app/IActivityManager$Stub$Proxy;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/app/IActivityManager$Stub$Proxy;->refContentProvider(Landroid/os/IBinder;II)Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->refContentProvider(Landroid/os/IBinder;II)Z+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/app/IActivityManager$Stub$Proxy;->registerStrictModeCallback(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerStrictModeCallback(Landroid/os/IBinder;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->removeContentProvider(Landroid/os/IBinder;Z)V HSPLandroid/app/IActivityManager$Stub$Proxy;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V @@ -1961,15 +1954,15 @@ HSPLandroid/app/INotificationManager$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/app/INotificationManager$Stub$Proxy;->areNotificationsEnabled(Ljava/lang/String;)Z HSPLandroid/app/INotificationManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelAllNotifications(Ljava/lang/String;I)V -HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V+]Landroid/app/INotificationManager$Stub$Proxy;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V HSPLandroid/app/INotificationManager$Stub$Proxy;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V -HSPLandroid/app/INotificationManager$Stub$Proxy;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V+]Landroid/app/INotificationManager$Stub$Proxy;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/INotificationManager$Stub$Proxy;->finishToken(Ljava/lang/String;Landroid/os/IBinder;)V HSPLandroid/app/INotificationManager$Stub$Proxy;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; HSPLandroid/app/INotificationManager$Stub$Proxy;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; -HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;+]Landroid/app/INotificationManager$Stub$Proxy;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup; HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; @@ -2009,9 +2002,6 @@ HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaperInfo(I)Landroid/app/W HSPLandroid/app/IWallpaperManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IWallpaperManager; HSPLandroid/app/IWallpaperManagerCallback$Stub;->()V HSPLandroid/app/IWallpaperManagerCallback$Stub;->asBinder()Landroid/os/IBinder; -HSPLandroid/app/IWindowToken$Stub;->()V -HSPLandroid/app/IWindowToken$Stub;->getMaxTransactionId()I -HSPLandroid/app/IWindowToken$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/Instrumentation;->()V HSPLandroid/app/Instrumentation;->basicInit(Landroid/app/ActivityThread;)V HSPLandroid/app/Instrumentation;->callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;)V @@ -2170,13 +2160,13 @@ HSPLandroid/app/Notification$Action$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/app/Notification$Action$Builder;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V HSPLandroid/app/Notification$Action$Builder;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZ)V HSPLandroid/app/Notification$Action$Builder;->addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Action$Builder; -HSPLandroid/app/Notification$Action$Builder;->build()Landroid/app/Notification$Action; +HSPLandroid/app/Notification$Action$Builder;->build()Landroid/app/Notification$Action;+]Landroid/app/RemoteInput;Landroid/app/RemoteInput;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/app/Notification$Action$Builder;->setAllowGeneratedReplies(Z)Landroid/app/Notification$Action$Builder; HSPLandroid/app/Notification$Action$Builder;->setAuthenticationRequired(Z)Landroid/app/Notification$Action$Builder; HSPLandroid/app/Notification$Action$Builder;->setContextual(Z)Landroid/app/Notification$Action$Builder; HSPLandroid/app/Notification$Action$Builder;->setSemanticAction(I)Landroid/app/Notification$Action$Builder; -HSPLandroid/app/Notification$Action;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZZ)V -HSPLandroid/app/Notification$Action;->(Landroid/os/Parcel;)V +HSPLandroid/app/Notification$Action;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZZ)V+]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon; +HSPLandroid/app/Notification$Action;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/app/PendingIntent$1;,Landroid/text/TextUtils$1;,Landroid/graphics/drawable/Icon$1;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon; HSPLandroid/app/Notification$Action;->getAllowGeneratedReplies()Z HSPLandroid/app/Notification$Action;->getIcon()Landroid/graphics/drawable/Icon; HSPLandroid/app/Notification$Action;->getRemoteInputs()[Landroid/app/RemoteInput; @@ -2197,16 +2187,16 @@ HSPLandroid/app/Notification$BubbleMetadata$1;->createFromParcel(Landroid/os/Par HSPLandroid/app/Notification$BubbleMetadata$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/Notification$BubbleMetadata;->(Landroid/os/Parcel;)V HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;)V -HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;Landroid/app/Notification;)V +HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;Landroid/app/Notification;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;Ljava/lang/String;)V HSPLandroid/app/Notification$Builder;->addAction(Landroid/app/Notification$Action;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->addPerson(Landroid/app/Person;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->addPerson(Ljava/lang/String;)Landroid/app/Notification$Builder; -HSPLandroid/app/Notification$Builder;->build()Landroid/app/Notification; -HSPLandroid/app/Notification$Builder;->buildUnstyled()Landroid/app/Notification; +HSPLandroid/app/Notification$Builder;->build()Landroid/app/Notification;+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;]Landroid/app/Notification$BubbleMetadata;Landroid/app/Notification$BubbleMetadata;]Landroid/app/Notification$Style;Landroid/app/Notification$InboxStyle;,Landroid/app/Notification$MessagingStyle;,Landroid/app/Notification$BigTextStyle; +HSPLandroid/app/Notification$Builder;->buildUnstyled()Landroid/app/Notification;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/app/Notification$Builder;->getStyle()Landroid/app/Notification$Style; -HSPLandroid/app/Notification$Builder;->maybeCloneStrippedForDelivery(Landroid/app/Notification;)Landroid/app/Notification; +HSPLandroid/app/Notification$Builder;->maybeCloneStrippedForDelivery(Landroid/app/Notification;)Landroid/app/Notification;+]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/app/Notification$Builder;->recoverBuilder(Landroid/content/Context;Landroid/app/Notification;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->sanitizeColor()V HSPLandroid/app/Notification$Builder;->setAllowSystemGeneratedContextualActions(Z)Landroid/app/Notification$Builder; @@ -2219,7 +2209,7 @@ HSPLandroid/app/Notification$Builder;->setContent(Landroid/widget/RemoteViews;)L HSPLandroid/app/Notification$Builder;->setContentInfo(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setContentText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; -HSPLandroid/app/Notification$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;+]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/app/Notification$Builder;->setCustomContentView(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setDefaults(I)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setDeleteIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder; @@ -2245,7 +2235,7 @@ HSPLandroid/app/Notification$Builder;->setShortcutId(Ljava/lang/String;)Landroid HSPLandroid/app/Notification$Builder;->setShowWhen(Z)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setSmallIcon(I)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setSmallIcon(II)Landroid/app/Notification$Builder; -HSPLandroid/app/Notification$Builder;->setSmallIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setSmallIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$Builder;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon; HSPLandroid/app/Notification$Builder;->setSortKey(Ljava/lang/String;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setSound(Landroid/net/Uri;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setSound(Landroid/net/Uri;Landroid/media/AudioAttributes;)Landroid/app/Notification$Builder; @@ -2299,7 +2289,7 @@ HSPLandroid/app/Notification$Style;->restoreFromExtras(Landroid/os/Bundle;)V HSPLandroid/app/Notification$Style;->setBuilder(Landroid/app/Notification$Builder;)V HSPLandroid/app/Notification$Style;->validate(Landroid/content/Context;)V HSPLandroid/app/Notification;->()V -HSPLandroid/app/Notification;->(Landroid/os/Parcel;)V +HSPLandroid/app/Notification;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/Notification;->addFieldsFromContext(Landroid/content/Context;Landroid/app/Notification;)V HSPLandroid/app/Notification;->addFieldsFromContext(Landroid/content/pm/ApplicationInfo;Landroid/app/Notification;)V HSPLandroid/app/Notification;->areStyledNotificationsVisiblyDifferent(Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;)Z @@ -2324,8 +2314,8 @@ HSPLandroid/app/Notification;->isForegroundService()Z HSPLandroid/app/Notification;->isGroupChild()Z HSPLandroid/app/Notification;->isGroupSummary()Z HSPLandroid/app/Notification;->isMediaNotification()Z -HSPLandroid/app/Notification;->readFromParcelImpl(Landroid/os/Parcel;)V -HSPLandroid/app/Notification;->reduceImageSizes(Landroid/content/Context;)V +HSPLandroid/app/Notification;->readFromParcelImpl(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/app/Notification$1;,Landroid/graphics/drawable/Icon$1;,Landroid/app/PendingIntent$1;,Landroid/media/AudioAttributes$1;,Landroid/text/TextUtils$1;,Landroid/app/Notification$BubbleMetadata$1;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/Notification;->reduceImageSizes(Landroid/content/Context;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/app/Notification;->reduceImageSizesForRemoteView(Landroid/widget/RemoteViews;Landroid/content/Context;Z)V HSPLandroid/app/Notification;->removeTextSizeSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/app/Notification;->safeCharSequence(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; @@ -2333,10 +2323,10 @@ HSPLandroid/app/Notification;->setSmallIcon(Landroid/graphics/drawable/Icon;)V HSPLandroid/app/Notification;->suppressAlertingDueToGrouping()Z HSPLandroid/app/Notification;->toString()Ljava/lang/String; HSPLandroid/app/Notification;->visibilityToString(I)Ljava/lang/String; -HSPLandroid/app/Notification;->writeToParcel(Landroid/os/Parcel;I)V -HSPLandroid/app/Notification;->writeToParcelImpl(Landroid/os/Parcel;I)V +HSPLandroid/app/Notification;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/Notification;->writeToParcelImpl(Landroid/os/Parcel;I)V+]Landroid/media/AudioAttributes;Landroid/media/AudioAttributes;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Landroid/app/Notification$BubbleMetadata;Landroid/app/Notification$BubbleMetadata; HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationChannel; -HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/app/NotificationChannel$1;Landroid/app/NotificationChannel$1; HSPLandroid/app/NotificationChannel;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/net/Uri$1;,Landroid/media/AudioAttributes$1;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/app/NotificationChannel;->(Ljava/lang/String;Ljava/lang/CharSequence;I)V HSPLandroid/app/NotificationChannel;->canBubble()Z @@ -2406,12 +2396,12 @@ HSPLandroid/app/NotificationManager;->createNotificationChannelGroups(Ljava/util HSPLandroid/app/NotificationManager;->createNotificationChannels(Ljava/util/List;)V HSPLandroid/app/NotificationManager;->deleteNotificationChannel(Ljava/lang/String;)V HSPLandroid/app/NotificationManager;->fixLegacySmallIcon(Landroid/app/Notification;Ljava/lang/String;)V -HSPLandroid/app/NotificationManager;->fixNotification(Landroid/app/Notification;)Landroid/app/Notification; +HSPLandroid/app/NotificationManager;->fixNotification(Landroid/app/Notification;)Landroid/app/Notification;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/Context;Landroid/view/ContextThemeWrapper; HSPLandroid/app/NotificationManager;->getActiveNotifications()[Landroid/service/notification/StatusBarNotification; HSPLandroid/app/NotificationManager;->getAutomaticZenRules()Ljava/util/Map; HSPLandroid/app/NotificationManager;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy; HSPLandroid/app/NotificationManager;->getCurrentInterruptionFilter()I -HSPLandroid/app/NotificationManager;->getNotificationChannel(Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroid/app/NotificationManager;->getNotificationChannel(Ljava/lang/String;)Landroid/app/NotificationChannel;+]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/app/INotificationManager;Landroid/app/INotificationManager$Stub$Proxy; HSPLandroid/app/NotificationManager;->getNotificationChannelGroup(Ljava/lang/String;)Landroid/app/NotificationChannelGroup; HSPLandroid/app/NotificationManager;->getNotificationChannelGroups()Ljava/util/List; HSPLandroid/app/NotificationManager;->getNotificationChannels()Ljava/util/List; @@ -2420,7 +2410,7 @@ HSPLandroid/app/NotificationManager;->getService()Landroid/app/INotificationMana HSPLandroid/app/NotificationManager;->isNotificationPolicyAccessGranted()Z HSPLandroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V HSPLandroid/app/NotificationManager;->notify(Ljava/lang/String;ILandroid/app/Notification;)V -HSPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V +HSPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V+]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/app/INotificationManager;Landroid/app/INotificationManager$Stub$Proxy; HSPLandroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -2431,22 +2421,22 @@ HSPLandroid/app/PendingIntent;->(Landroid/content/IIntentSender;)V HSPLandroid/app/PendingIntent;->(Landroid/os/IBinder;Ljava/lang/Object;)V HSPLandroid/app/PendingIntent;->buildServicePendingIntent(Landroid/content/Context;ILandroid/content/Intent;II)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->cancel()V -HSPLandroid/app/PendingIntent;->checkPendingIntent(ILandroid/content/Intent;Landroid/content/Context;Z)V+]Landroid/content/Context;missing_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Intent;Landroid/content/Intent; -HSPLandroid/app/PendingIntent;->equals(Ljava/lang/Object;)Z +HSPLandroid/app/PendingIntent;->checkPendingIntent(ILandroid/content/Intent;Landroid/content/Context;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/Context;missing_types +HSPLandroid/app/PendingIntent;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/os/BinderProxy;]Landroid/content/IIntentSender;Landroid/content/IIntentSender$Stub$Proxy; HSPLandroid/app/PendingIntent;->getActivities(Landroid/content/Context;I[Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getActivitiesAsUser(Landroid/content/Context;I[Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getActivityAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; -HSPLandroid/app/PendingIntent;->getBroadcastAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/UserHandle;)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent;->getBroadcastAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/UserHandle;)Landroid/app/PendingIntent;+]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy; HSPLandroid/app/PendingIntent;->getCachedInfo()Landroid/app/ActivityManager$PendingIntentInfo; HSPLandroid/app/PendingIntent;->getCreatorPackage()Ljava/lang/String; HSPLandroid/app/PendingIntent;->getCreatorUid()I HSPLandroid/app/PendingIntent;->getIntent()Landroid/content/Intent; HSPLandroid/app/PendingIntent;->getIntentSender()Landroid/content/IntentSender; HSPLandroid/app/PendingIntent;->getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; -HSPLandroid/app/PendingIntent;->hashCode()I +HSPLandroid/app/PendingIntent;->hashCode()I+]Ljava/lang/Object;Landroid/os/BinderProxy;]Landroid/content/IIntentSender;Landroid/content/IIntentSender$Stub$Proxy; HSPLandroid/app/PendingIntent;->isActivity()Z HSPLandroid/app/PendingIntent;->isNewMutableDisallowedImplicitPendingIntent(ILandroid/content/Intent;Z)Z+]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/app/PendingIntent;->send()V @@ -2456,7 +2446,7 @@ HSPLandroid/app/PendingIntent;->sendAndReturnResult(Landroid/content/Context;ILa HSPLandroid/app/PendingIntent;->setOnMarshaledListener(Landroid/app/PendingIntent$OnMarshaledListener;)V HSPLandroid/app/PendingIntent;->toString()Ljava/lang/String; HSPLandroid/app/PendingIntent;->writePendingIntentOrNullToParcel(Landroid/app/PendingIntent;Landroid/os/Parcel;)V -HSPLandroid/app/PendingIntent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/PendingIntent;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/app/PendingIntent$OnMarshaledListener;Landroid/app/Notification$$ExternalSyntheticLambda0;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Landroid/content/IIntentSender;Landroid/content/IIntentSender$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/Person$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/Person; HSPLandroid/app/Person$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/Person$Builder;->()V @@ -2479,7 +2469,7 @@ HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;) HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/PictureInPictureParams;->(Landroid/os/Parcel;)V HSPLandroid/app/PropertyInvalidatedCache$1;->(Landroid/app/PropertyInvalidatedCache;IFZ)V -HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z+]Landroid/app/PropertyInvalidatedCache$1;Landroid/app/PropertyInvalidatedCache$1; +HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z HSPLandroid/app/PropertyInvalidatedCache$DefaultComputer;->(Landroid/app/PropertyInvalidatedCache;)V HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;->()V HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;->next()J @@ -2506,7 +2496,7 @@ HSPLandroid/app/PropertyInvalidatedCache;->invalidateCacheLocked(Ljava/lang/Stri HSPLandroid/app/PropertyInvalidatedCache;->isDisabled()Z HSPLandroid/app/PropertyInvalidatedCache;->isReservedNonce(J)Z HSPLandroid/app/PropertyInvalidatedCache;->maybeCheckConsistency(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Landroid/app/PropertyInvalidatedCache$1;]Landroid/app/PropertyInvalidatedCache;megamorphic_types HSPLandroid/app/PropertyInvalidatedCache;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/PropertyInvalidatedCache;->refresh(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/PropertyInvalidatedCache;->registerCache()V+]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; @@ -2637,10 +2627,7 @@ HSPLandroid/app/ServiceConnectionLeaked;->(Ljava/lang/String;)V HSPLandroid/app/ServiceStartArgs$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ServiceStartArgs; HSPLandroid/app/ServiceStartArgs$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/ServiceStartArgs;->(Landroid/os/Parcel;)V -HSPLandroid/app/SharedPreferencesImpl$1;->(Landroid/app/SharedPreferencesImpl;Ljava/lang/String;)V HSPLandroid/app/SharedPreferencesImpl$1;->run()V -HSPLandroid/app/SharedPreferencesImpl$2;->(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;ZLjava/lang/Runnable;)V -HSPLandroid/app/SharedPreferencesImpl$2;->run()V HSPLandroid/app/SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0;->(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V HSPLandroid/app/SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0;->run()V HSPLandroid/app/SharedPreferencesImpl$EditorImpl$1;->(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;J)V @@ -2651,9 +2638,9 @@ HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->(Landroid/app/SharedPre HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->apply()V HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->clear()Landroid/content/SharedPreferences$Editor; HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commit()Z -HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commitToMemory()Landroid/app/SharedPreferencesImpl$MemoryCommitResult;+]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Boolean;,Ljava/lang/Long;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/List;Ljava/util/ArrayList; -HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->notifyListeners(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V+]Landroid/os/Handler;Landroid/app/ActivityThread$H;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Ljava/util/HashSet; -HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commitToMemory()Landroid/app/SharedPreferencesImpl$MemoryCommitResult;+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/lang/Object;Ljava/lang/String;,Ljava/util/HashSet;,Ljava/lang/Long;,Ljava/lang/Boolean;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->notifyListeners(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V+]Landroid/os/Handler;Landroid/app/ActivityThread$H;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;+]Ljava/util/Map;Ljava/util/HashMap; HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putFloat(Ljava/lang/String;F)Landroid/content/SharedPreferences$Editor; HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor; HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor; @@ -2673,10 +2660,9 @@ HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmCurrentMemoryStateGeneratio HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmDiskWritesInFlight(Landroid/app/SharedPreferencesImpl;I)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmMap(Landroid/app/SharedPreferencesImpl;Ljava/util/Map;)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$menqueueDiskWrite(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Ljava/lang/Runnable;)V -HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$mloadFromDisk(Landroid/app/SharedPreferencesImpl;)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$mwriteToFile(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V HSPLandroid/app/SharedPreferencesImpl;->(Ljava/io/File;I)V -HSPLandroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V +HSPLandroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V+]Ljava/lang/Object;Ljava/lang/Object;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLandroid/app/SharedPreferencesImpl;->contains(Ljava/lang/String;)Z HSPLandroid/app/SharedPreferencesImpl;->createFileOutputStream(Ljava/io/File;)Ljava/io/FileOutputStream; HSPLandroid/app/SharedPreferencesImpl;->edit()Landroid/content/SharedPreferences$Editor; @@ -2695,7 +2681,7 @@ HSPLandroid/app/SharedPreferencesImpl;->registerOnSharedPreferenceChangeListener HSPLandroid/app/SharedPreferencesImpl;->startLoadFromDisk()V HSPLandroid/app/SharedPreferencesImpl;->startReloadIfChangedUnexpectedly()V HSPLandroid/app/SharedPreferencesImpl;->unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V -HSPLandroid/app/SharedPreferencesImpl;->writeToFile(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V+]Ljava/io/File;Ljava/io/File;]Lcom/android/internal/util/ExponentiallyBucketedHistogram;Lcom/android/internal/util/ExponentiallyBucketedHistogram;]Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream; +HSPLandroid/app/SharedPreferencesImpl;->writeToFile(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V HSPLandroid/app/StackTrace;->(Ljava/lang/String;)V HSPLandroid/app/StatusBarManager;->(Landroid/content/Context;)V HSPLandroid/app/SyncNotedAppOp$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/SyncNotedAppOp; @@ -2714,19 +2700,15 @@ HSPLandroid/app/SystemServiceRegistry$104;->createService(Landroid/app/ContextIm HSPLandroid/app/SystemServiceRegistry$105;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$106;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$107;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$108;->createService(Landroid/app/ContextImpl;)Landroid/app/slice/SliceManager; HSPLandroid/app/SystemServiceRegistry$108;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$109;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$10;->createService(Landroid/app/ContextImpl;)Landroid/media/MediaRouter; HSPLandroid/app/SystemServiceRegistry$10;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$110;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$111;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$112;->createService(Landroid/app/ContextImpl;)Landroid/permission/PermissionManager; HSPLandroid/app/SystemServiceRegistry$112;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$113;->createService(Landroid/app/ContextImpl;)Landroid/permission/LegacyPermissionManager; HSPLandroid/app/SystemServiceRegistry$113;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$114;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$115;->createService(Landroid/app/ContextImpl;)Landroid/permission/PermissionCheckerManager; HSPLandroid/app/SystemServiceRegistry$115;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$116;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$117;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2736,146 +2718,99 @@ HSPLandroid/app/SystemServiceRegistry$124;->createService(Landroid/app/ContextIm HSPLandroid/app/SystemServiceRegistry$125;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$126;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$127;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$128;->createService(Landroid/app/ContextImpl;)Landroid/hardware/devicestate/DeviceStateManager; HSPLandroid/app/SystemServiceRegistry$128;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$129;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Landroid/view/textclassifier/TextClassificationManager; HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Landroid/app/GameManager; HSPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$131;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$139;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$13;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$140;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$14;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$15;->createService(Landroid/app/ContextImpl;)Landroid/content/ClipboardManager; HSPLandroid/app/SystemServiceRegistry$15;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$18$$ExternalSyntheticLambda0;->()V -HSPLandroid/app/SystemServiceRegistry$18$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$18;->createService(Landroid/app/ContextImpl;)Landroid/net/TetheringManager; HSPLandroid/app/SystemServiceRegistry$18;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$18;->lambda$createService$0()Landroid/os/IBinder; HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/AccessibilityManager; HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager; HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Landroid/app/DownloadManager; HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager; HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$25;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Landroid/hardware/input/InputManager; HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/DisplayManager; HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$29;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/CaptioningManager; HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$30;->getService(Landroid/app/ContextImpl;)Landroid/view/inputmethod/InputMethodManager; -HSPLandroid/app/SystemServiceRegistry$30;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Landroid/view/textservice/TextServicesManager; -HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Landroid/app/KeyguardManager; HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Landroid/view/LayoutInflater; HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager; HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager; HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager; HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Landroid/accounts/AccountManager; HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorManager; HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Landroid/app/StatusBarManager; HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager; HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$47;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Landroid/telephony/TelephonyRegistryManager; HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Landroid/app/ActivityManager; HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Landroid/telecom/TelecomManager; HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Landroid/app/UiModeManager; HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Landroid/hardware/usb/UsbManager; HSPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$54;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$55;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Landroid/os/VibratorManager; HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Landroid/os/Vibrator; HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$58;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager; HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager; HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager; HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Landroid/hardware/camera2/CameraManager; HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$64;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$65;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$66;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$67;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$68;->createService(Landroid/app/ContextImpl;)Landroid/companion/virtual/VirtualDeviceManager; HSPLandroid/app/SystemServiceRegistry$68;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$69;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$71;->createService(Landroid/app/ContextImpl;)Landroid/hardware/fingerprint/FingerprintManager; HSPLandroid/app/SystemServiceRegistry$71;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$74;->createService(Landroid/app/ContextImpl;)Landroid/hardware/biometrics/BiometricManager; HSPLandroid/app/SystemServiceRegistry$74;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$75;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$77;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$78;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$79;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/UsageStatsManager; -HSPLandroid/app/SystemServiceRegistry$79;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Landroid/app/AlarmManager; HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Landroid/appwidget/AppWidgetManager; HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$84;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$85;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$86;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/ShortcutManager; HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$89;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Landroid/media/AudioManager; HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$90;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$91;->createService(Landroid/app/ContextImpl;)Landroid/os/health/SystemHealthManager; HSPLandroid/app/SystemServiceRegistry$91;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$92;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$93;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$94;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Landroid/view/autofill/AutofillManager; HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$96;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$97;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Landroid/view/contentcapture/ContentCaptureManager; HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$99;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$9;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$CachedServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$StaticServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry;->createServiceCache()[Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry;->getSystemService(Landroid/app/ContextImpl;Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String; +HSPLandroid/app/SystemServiceRegistry;->getSystemService(Landroid/app/ContextImpl;Ljava/lang/String;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$ServiceFetcher;megamorphic_types]Ljava/util/Map;Landroid/util/ArrayMap; +HSPLandroid/app/SystemServiceRegistry;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;+]Ljava/util/Map;Landroid/util/ArrayMap; HSPLandroid/app/TaskInfo;->()V HSPLandroid/app/TaskInfo;->getWindowingMode()I HSPLandroid/app/TaskInfo;->readFromParcel(Landroid/os/Parcel;)V @@ -2898,7 +2833,6 @@ HSPLandroid/app/UiModeManager$OnProjectionStateChangedListenerResourceManager;-> HSPLandroid/app/UiModeManager;->(Landroid/content/Context;)V HSPLandroid/app/UiModeManager;->getActiveProjectionTypes()I HSPLandroid/app/UiModeManager;->getCurrentModeType()I -HSPLandroid/app/UidObserver;->()V HSPLandroid/app/UriGrantsManager$1;->create()Landroid/app/IUriGrantsManager; HSPLandroid/app/UriGrantsManager$1;->create()Ljava/lang/Object; HSPLandroid/app/UriGrantsManager;->getService()Landroid/app/IUriGrantsManager; @@ -2920,7 +2854,7 @@ HSPLandroid/app/WallpaperManager;->initGlobals(Landroid/app/IWallpaperManager;La HSPLandroid/app/WallpaperManager;->setWallpaperZoomOut(Landroid/os/IBinder;F)V HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/app/WindowConfiguration;->()V +HSPLandroid/app/WindowConfiguration;->()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->(Landroid/os/Parcel;)V HSPLandroid/app/WindowConfiguration;->activityTypeToString(I)Ljava/lang/String; HSPLandroid/app/WindowConfiguration;->canReceiveKeys()Z @@ -2942,19 +2876,19 @@ HSPLandroid/app/WindowConfiguration;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/app/WindowConfiguration;->setActivityType(I)V HSPLandroid/app/WindowConfiguration;->setAlwaysOnTop(I)V HSPLandroid/app/WindowConfiguration;->setAppBounds(IIII)V -HSPLandroid/app/WindowConfiguration;->setAppBounds(Landroid/graphics/Rect;)V -HSPLandroid/app/WindowConfiguration;->setBounds(Landroid/graphics/Rect;)V +HSPLandroid/app/WindowConfiguration;->setAppBounds(Landroid/graphics/Rect;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; +HSPLandroid/app/WindowConfiguration;->setBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/app/WindowConfiguration;->setDisplayRotation(I)V HSPLandroid/app/WindowConfiguration;->setDisplayWindowingMode(I)V -HSPLandroid/app/WindowConfiguration;->setMaxBounds(Landroid/graphics/Rect;)V +HSPLandroid/app/WindowConfiguration;->setMaxBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/app/WindowConfiguration;->setRotation(I)V HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;I)V -HSPLandroid/app/WindowConfiguration;->setToDefaults()V +HSPLandroid/app/WindowConfiguration;->setToDefaults()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->setWindowingMode(I)V HSPLandroid/app/WindowConfiguration;->tasksAreFloating()Z HSPLandroid/app/WindowConfiguration;->toString()Ljava/lang/String; -HSPLandroid/app/WindowConfiguration;->unset()V +HSPLandroid/app/WindowConfiguration;->unset()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->updateFrom(Landroid/app/WindowConfiguration;)I+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->windowingModeToString(I)Ljava/lang/String; HSPLandroid/app/WindowConfiguration;->writeToParcel(Landroid/os/Parcel;I)V @@ -3156,10 +3090,10 @@ HSPLandroid/app/job/IJobCallback$Stub$Proxy;->jobFinished(IZ)V HSPLandroid/app/job/IJobCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobCallback; HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->asBinder()Landroid/os/IBinder; -HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->cancel(Ljava/lang/String;I)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/job/IJobScheduler$Stub$Proxy;Landroid/app/job/IJobScheduler$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->cancel(Ljava/lang/String;I)V HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->enqueue(Ljava/lang/String;Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getAllPendingJobsInNamespace(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; -HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getPendingJob(Ljava/lang/String;I)Landroid/app/job/JobInfo; +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getPendingJob(Ljava/lang/String;I)Landroid/app/job/JobInfo;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/job/IJobScheduler$Stub$Proxy;Landroid/app/job/IJobScheduler$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->schedule(Ljava/lang/String;Landroid/app/job/JobInfo;)I HSPLandroid/app/job/IJobScheduler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobScheduler; HSPLandroid/app/job/IJobService$Stub;->()V @@ -3227,7 +3161,7 @@ HSPLandroid/app/job/JobInfo$TriggerContentUri;->(Landroid/net/Uri;I)V HSPLandroid/app/job/JobInfo$TriggerContentUri;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/job/JobInfo;->(Landroid/app/job/JobInfo$Builder;)V+]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/app/job/JobInfo;->(Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo-IA;)V -HSPLandroid/app/job/JobInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/job/JobInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/net/NetworkRequest$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/job/JobInfo;->enforceValidity(ZZ)V HSPLandroid/app/job/JobInfo;->getExtras()Landroid/os/PersistableBundle; HSPLandroid/app/job/JobInfo;->getFlags()I @@ -3269,19 +3203,16 @@ HSPLandroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda3;- HSPLandroid/app/job/JobSchedulerFrameworkInitializer;->lambda$registerServiceWrappers$0(Landroid/content/Context;Landroid/os/IBinder;)Landroid/app/job/JobScheduler; HSPLandroid/app/job/JobSchedulerFrameworkInitializer;->lambda$registerServiceWrappers$1(Landroid/content/Context;Landroid/os/IBinder;)Landroid/os/DeviceIdleManager; HSPLandroid/app/job/JobService$1;->(Landroid/app/job/JobService;Landroid/app/Service;)V -HSPLandroid/app/job/JobService$1;->onNetworkChanged(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobService$1;->onStartJob(Landroid/app/job/JobParameters;)Z HSPLandroid/app/job/JobService$1;->onStopJob(Landroid/app/job/JobParameters;)Z HSPLandroid/app/job/JobService;->()V HSPLandroid/app/job/JobService;->jobFinished(Landroid/app/job/JobParameters;Z)V HSPLandroid/app/job/JobService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; -HSPLandroid/app/job/JobService;->onNetworkChanged(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobServiceEngine$JobHandler;->(Landroid/app/job/JobServiceEngine;Landroid/os/Looper;)V HSPLandroid/app/job/JobServiceEngine$JobHandler;->ackStartMessage(Landroid/app/job/JobParameters;Z)V HSPLandroid/app/job/JobServiceEngine$JobHandler;->ackStopMessage(Landroid/app/job/JobParameters;Z)V HSPLandroid/app/job/JobServiceEngine$JobHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/app/job/JobServiceEngine$JobInterface;->(Landroid/app/job/JobServiceEngine;)V -HSPLandroid/app/job/JobServiceEngine$JobInterface;->onNetworkChanged(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobServiceEngine$JobInterface;->startJob(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobServiceEngine$JobInterface;->stopJob(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobServiceEngine;->(Landroid/app/Service;)V @@ -3444,7 +3375,6 @@ HSPLandroid/app/slice/SliceManager;->(Landroid/content/Context;Landroid/os HSPLandroid/app/slice/SliceManager;->bindSlice(Landroid/net/Uri;Ljava/util/Set;)Landroid/app/slice/Slice; HSPLandroid/app/slice/SliceManager;->getPinnedSlices()Ljava/util/List; HSPLandroid/app/slice/SliceManager;->grantSlicePermission(Ljava/lang/String;Landroid/net/Uri;)V -HSPLandroid/app/slice/SliceProvider$$ExternalSyntheticLambda0;->(Landroid/app/slice/SliceProvider;)V HSPLandroid/app/slice/SliceProvider;->([Ljava/lang/String;)V HSPLandroid/app/slice/SliceProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V HSPLandroid/app/slice/SliceProvider;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; @@ -3464,7 +3394,6 @@ HSPLandroid/app/smartspace/SmartspaceConfig$1;->()V HSPLandroid/app/smartspace/SmartspaceConfig;->()V HSPLandroid/app/smartspace/SmartspaceSessionId$1;->()V HSPLandroid/app/smartspace/SmartspaceSessionId;->()V -HSPLandroid/app/smartspace/SmartspaceSessionId;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/smartspace/SmartspaceTarget$1;->()V HSPLandroid/app/smartspace/SmartspaceTarget;->()V HSPLandroid/app/smartspace/SmartspaceTargetEvent$1;->()V @@ -3523,25 +3452,16 @@ HSPLandroid/app/usage/UsageEvents;->(Landroid/os/Parcel;)V HSPLandroid/app/usage/UsageEvents;->getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z HSPLandroid/app/usage/UsageEvents;->hasNextEvent()Z HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V+]Landroid/os/Parcelable$Creator;Landroid/content/res/Configuration$1;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; +HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;+]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/usage/UsageStats$1;->readBundleToEventMap(Landroid/os/Bundle;Landroid/util/ArrayMap;)V HSPLandroid/app/usage/UsageStats;->()V HSPLandroid/app/usage/UsageStats;->getPackageName()Ljava/lang/String; HSPLandroid/app/usage/UsageStats;->update(Ljava/lang/String;JII)V HSPLandroid/app/usage/UsageStatsManager;->(Landroid/content/Context;Landroid/app/usage/IUsageStatsManager;)V -HSPLandroid/app/usage/UsageStatsManager;->getAppStandbyBucket()I HSPLandroid/app/usage/UsageStatsManager;->queryEvents(JJ)Landroid/app/usage/UsageEvents; HSPLandroid/app/usage/UsageStatsManager;->queryUsageStats(IJJ)Ljava/util/List; -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda0;->()V -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda1;->()V -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object; -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda2;->()V -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda3;->()V -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda3;->apply(I)Ljava/lang/Object; -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda4;->run()V HSPLandroid/appwidget/AppWidgetManager;->(Landroid/content/Context;Lcom/android/internal/appwidget/IAppWidgetService;)V HSPLandroid/appwidget/AppWidgetManager;->getAppWidgetIds(Landroid/content/ComponentName;)[I HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForPackage(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; @@ -3556,7 +3476,7 @@ HSPLandroid/appwidget/AppWidgetProvider;->()V HSPLandroid/appwidget/AppWidgetProvider;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V HSPLandroid/appwidget/AppWidgetProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/appwidget/AppWidgetProviderInfo; HSPLandroid/appwidget/AppWidgetProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/appwidget/AppWidgetProviderInfo;->(Landroid/os/Parcel;)V +HSPLandroid/appwidget/AppWidgetProviderInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/appwidget/AppWidgetProviderInfo;->getProfile()Landroid/os/UserHandle; HSPLandroid/appwidget/AppWidgetProviderInfo;->updateDimensions(Landroid/util/DisplayMetrics;)V HSPLandroid/appwidget/AppWidgetProviderInfo;->writeToParcel(Landroid/os/Parcel;I)V @@ -3611,7 +3531,6 @@ HSPLandroid/content/AttributionSource;->getPackageName()Ljava/lang/String; HSPLandroid/content/AttributionSource;->getRenouncedPermissions()Ljava/util/Set; HSPLandroid/content/AttributionSource;->getToken()Landroid/os/IBinder; HSPLandroid/content/AttributionSource;->getUid()I -HSPLandroid/content/AttributionSource;->hashCode()I+]Landroid/content/AttributionSource;Landroid/content/AttributionSource; HSPLandroid/content/AttributionSource;->myAttributionSource()Landroid/content/AttributionSource; HSPLandroid/content/AttributionSource;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/AttributionSourceState$1;->()V @@ -3622,7 +3541,7 @@ HSPLandroid/content/AttributionSourceState$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/content/AttributionSourceState;->()V HSPLandroid/content/AttributionSourceState;->()V HSPLandroid/content/AttributionSourceState;->readFromParcel(Landroid/os/Parcel;)V -HSPLandroid/content/AttributionSourceState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/AttributionSourceState;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/AutofillOptions$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/AutofillOptions; HSPLandroid/content/AutofillOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/AutofillOptions;->(IZ)V @@ -3688,7 +3607,7 @@ HSPLandroid/content/ComponentName$1;->createFromParcel(Landroid/os/Parcel;)Landr HSPLandroid/content/ComponentName$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/ComponentName$1;->newArray(I)[Landroid/content/ComponentName; HSPLandroid/content/ComponentName$1;->newArray(I)[Ljava/lang/Object; -HSPLandroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/Class;)V +HSPLandroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/Class;)V+]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/String;)V HSPLandroid/content/ComponentName;->(Landroid/os/Parcel;)V HSPLandroid/content/ComponentName;->(Ljava/lang/String;Landroid/os/Parcel;)V @@ -3714,7 +3633,7 @@ HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parce HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/ContentCaptureOptions;->(IIIIILandroid/util/ArraySet;)V HSPLandroid/content/ContentCaptureOptions;->isWhitelisted(Landroid/content/Context;)Z -HSPLandroid/content/ContentCaptureOptions;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/ContentCaptureOptions;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/ContentProvider$Transport;->(Landroid/content/ContentProvider;)V HSPLandroid/content/ContentProvider$Transport;->call(Landroid/content/AttributionSource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; HSPLandroid/content/ContentProvider$Transport;->createCancellationSignal()Landroid/os/ICancellationSignal; @@ -3725,7 +3644,7 @@ HSPLandroid/content/ContentProvider$Transport;->enforceWritePermission(Landroid/ HSPLandroid/content/ContentProvider$Transport;->getContentProvider()Landroid/content/ContentProvider; HSPLandroid/content/ContentProvider$Transport;->getProviderName()Ljava/lang/String; HSPLandroid/content/ContentProvider$Transport;->insert(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri; -HSPLandroid/content/ContentProvider$Transport;->openTypedAssetFile(Landroid/content/AttributionSource;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/ContentProvider$Transport;->openTypedAssetFile(Landroid/content/AttributionSource;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor;+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri; HSPLandroid/content/ContentProvider$Transport;->query(Landroid/content/AttributionSource;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor; HSPLandroid/content/ContentProvider$Transport;->update(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I HSPLandroid/content/ContentProvider;->-$$Nest$fgetmTransport(Landroid/content/ContentProvider;)Landroid/content/ContentProvider$Transport; @@ -3746,7 +3665,7 @@ HSPLandroid/content/ContentProvider;->delete(Landroid/net/Uri;Landroid/os/Bundle HSPLandroid/content/ContentProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V HSPLandroid/content/ContentProvider;->enforceReadPermissionInner(Landroid/net/Uri;Landroid/content/AttributionSource;)I HSPLandroid/content/ContentProvider;->enforceWritePermissionInner(Landroid/net/Uri;Landroid/content/AttributionSource;)I -HSPLandroid/content/ContentProvider;->getAuthorityWithoutUserId(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/ContentProvider;->getAuthorityWithoutUserId(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/content/ContentProvider;->getCallingAttributionSource()Landroid/content/AttributionSource; HSPLandroid/content/ContentProvider;->getCallingPackage()Ljava/lang/String; HSPLandroid/content/ContentProvider;->getContext()Landroid/content/Context; @@ -3754,7 +3673,7 @@ HSPLandroid/content/ContentProvider;->getIContentProvider()Landroid/content/ICon HSPLandroid/content/ContentProvider;->getPathPermissions()[Landroid/content/pm/PathPermission; HSPLandroid/content/ContentProvider;->getReadPermission()Ljava/lang/String; HSPLandroid/content/ContentProvider;->getUriWithoutUserId(Landroid/net/Uri;)Landroid/net/Uri;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; -HSPLandroid/content/ContentProvider;->getUserIdFromAuthority(Ljava/lang/String;I)I +HSPLandroid/content/ContentProvider;->getUserIdFromAuthority(Ljava/lang/String;I)I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;)I HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;I)I HSPLandroid/content/ContentProvider;->getWritePermission()Ljava/lang/String; @@ -3774,7 +3693,7 @@ HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String; HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/content/ContentProvider;->restoreCallingIdentity(Landroid/content/ContentProvider$CallingIdentity;)V HSPLandroid/content/ContentProvider;->setAuthorities(Ljava/lang/String;)V -HSPLandroid/content/ContentProvider;->setCallingAttributionSource(Landroid/content/AttributionSource;)Landroid/content/AttributionSource; +HSPLandroid/content/ContentProvider;->setCallingAttributionSource(Landroid/content/AttributionSource;)Landroid/content/AttributionSource;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/content/ContentProvider;->setPathPermissions([Landroid/content/pm/PathPermission;)V HSPLandroid/content/ContentProvider;->setReadPermission(Ljava/lang/String;)V HSPLandroid/content/ContentProvider;->setTransportLoggingEnabled(Z)V @@ -3809,10 +3728,10 @@ HSPLandroid/content/ContentProviderNative;->asInterface(Landroid/os/IBinder;)Lan HSPLandroid/content/ContentProviderNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/content/ContentProviderOperation$Builder;->assertSelectionAllowed()V HSPLandroid/content/ContentProviderOperation$Builder;->assertValuesAllowed()V -HSPLandroid/content/ContentProviderOperation$Builder;->build()Landroid/content/ContentProviderOperation; +HSPLandroid/content/ContentProviderOperation$Builder;->build()Landroid/content/ContentProviderOperation;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/content/ContentProviderOperation$Builder;->ensureSelectionArgs()V HSPLandroid/content/ContentProviderOperation$Builder;->setSelectionArg(ILjava/lang/Object;)V -HSPLandroid/content/ContentProviderOperation$Builder;->setValue(Ljava/lang/String;Ljava/lang/Object;)V +HSPLandroid/content/ContentProviderOperation$Builder;->setValue(Ljava/lang/String;Ljava/lang/Object;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/content/ContentProviderOperation$Builder;->withExpectedCount(I)Landroid/content/ContentProviderOperation$Builder; HSPLandroid/content/ContentProviderOperation$Builder;->withSelection(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/ContentProviderOperation$Builder; HSPLandroid/content/ContentProviderOperation$Builder;->withValue(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/ContentProviderOperation$Builder; @@ -3835,12 +3754,12 @@ HSPLandroid/content/ContentProviderOperation;->resolveValueBackReferences([Landr HSPLandroid/content/ContentProviderOperation;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/ContentProviderProxy;->(Landroid/os/IBinder;)V HSPLandroid/content/ContentProviderProxy;->asBinder()Landroid/os/IBinder; -HSPLandroid/content/ContentProviderProxy;->call(Landroid/content/AttributionSource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/content/ContentProviderProxy;->call(Landroid/content/AttributionSource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/ContentProviderProxy;->createCancellationSignal()Landroid/os/ICancellationSignal; HSPLandroid/content/ContentProviderProxy;->delete(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/os/Bundle;)I HSPLandroid/content/ContentProviderProxy;->insert(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/os/Parcelable$Creator;Landroid/net/Uri$1;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/content/ContentValues;Landroid/content/ContentValues;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/content/ContentProviderProxy;->openTypedAssetFile(Landroid/content/AttributionSource;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor; -HSPLandroid/content/ContentProviderProxy;->query(Landroid/content/AttributionSource;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/os/Parcelable$Creator;Landroid/database/BulkCursorDescriptor$1;]Landroid/database/IBulkCursor;Landroid/database/BulkCursorProxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/ICancellationSignal;Landroid/os/ICancellationSignal$Stub$Proxy;]Landroid/database/BulkCursorToCursorAdaptor;Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; +HSPLandroid/content/ContentProviderProxy;->query(Landroid/content/AttributionSource;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/os/Parcelable$Creator;Landroid/database/BulkCursorDescriptor$1;]Landroid/database/IBulkCursor;Landroid/database/BulkCursorProxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/database/BulkCursorToCursorAdaptor;Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Landroid/os/ICancellationSignal;Landroid/os/ICancellationSignal$Stub$Proxy; HSPLandroid/content/ContentProviderProxy;->update(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I HSPLandroid/content/ContentProviderResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentProviderResult; HSPLandroid/content/ContentProviderResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -3849,8 +3768,8 @@ HSPLandroid/content/ContentProviderResult$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/content/ContentProviderResult;->(Landroid/os/Parcel;)V HSPLandroid/content/ContentResolver$2;->(Landroid/content/SyncStatusObserver;)V HSPLandroid/content/ContentResolver$2;->onStatusChanged(I)V -HSPLandroid/content/ContentResolver$CursorWrapperInner;->(Landroid/content/ContentResolver;Landroid/database/Cursor;Landroid/content/IContentProvider;)V -HSPLandroid/content/ContentResolver$CursorWrapperInner;->close()V +HSPLandroid/content/ContentResolver$CursorWrapperInner;->(Landroid/content/ContentResolver;Landroid/database/Cursor;Landroid/content/IContentProvider;)V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; +HSPLandroid/content/ContentResolver$CursorWrapperInner;->close()V+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLandroid/content/ContentResolver$CursorWrapperInner;->finalize()V HSPLandroid/content/ContentResolver$ParcelFileDescriptorInner;->(Landroid/content/ContentResolver;Landroid/os/ParcelFileDescriptor;Landroid/content/IContentProvider;)V HSPLandroid/content/ContentResolver$ParcelFileDescriptorInner;->releaseResources()V @@ -3860,14 +3779,14 @@ HSPLandroid/content/ContentResolver$ResultListener;->waitForResult(J)V HSPLandroid/content/ContentResolver$StringResultListener;->getResultFromBundle(Landroid/os/Bundle;)Ljava/lang/Object; HSPLandroid/content/ContentResolver$StringResultListener;->getResultFromBundle(Landroid/os/Bundle;)Ljava/lang/String; HSPLandroid/content/ContentResolver;->(Landroid/content/Context;)V -HSPLandroid/content/ContentResolver;->(Landroid/content/Context;Landroid/content/ContentInterface;)V +HSPLandroid/content/ContentResolver;->(Landroid/content/Context;Landroid/content/ContentInterface;)V+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContentResolver;->acquireContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient; HSPLandroid/content/ContentResolver;->acquireContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient; HSPLandroid/content/ContentResolver;->acquireExistingProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; HSPLandroid/content/ContentResolver;->acquireProvider(Landroid/net/Uri;)Landroid/content/IContentProvider;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HSPLandroid/content/ContentResolver;->acquireProvider(Ljava/lang/String;)Landroid/content/IContentProvider; HSPLandroid/content/ContentResolver;->acquireUnstableContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient; -HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Landroid/net/Uri;)Landroid/content/IContentProvider;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HSPLandroid/content/ContentResolver;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V HSPLandroid/content/ContentResolver;->addStatusChangeListener(ILandroid/content/SyncStatusObserver;)Ljava/lang/Object; HSPLandroid/content/ContentResolver;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult; @@ -3889,7 +3808,7 @@ HSPLandroid/content/ContentResolver;->getPeriodicSyncs(Landroid/accounts/Account HSPLandroid/content/ContentResolver;->getResourceId(Landroid/net/Uri;)Landroid/content/ContentResolver$OpenResourceIdResult; HSPLandroid/content/ContentResolver;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z HSPLandroid/content/ContentResolver;->getType(Landroid/net/Uri;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/ContentResolver$StringResultListener;Landroid/content/ContentResolver$StringResultListener;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/net/Uri;Landroid/net/Uri$StringUri; -HSPLandroid/content/ContentResolver;->getUserId()I +HSPLandroid/content/ContentResolver;->getUserId()I+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; HSPLandroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri;+]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/content/ContentResolver;->invalidPeriodicExtras(Landroid/os/Bundle;)Z @@ -3908,7 +3827,7 @@ HSPLandroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/ HSPLandroid/content/ContentResolver;->openInputStream(Landroid/net/Uri;)Ljava/io/InputStream; HSPLandroid/content/ContentResolver;->openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor; HSPLandroid/content/ContentResolver;->openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor; -HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;+]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/database/Cursor;Landroid/database/BulkCursorToCursorAdaptor;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V @@ -3920,13 +3839,13 @@ HSPLandroid/content/ContentResolver;->resolveUserId(Landroid/net/Uri;)I HSPLandroid/content/ContentResolver;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V HSPLandroid/content/ContentResolver;->setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V HSPLandroid/content/ContentResolver;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V -HSPLandroid/content/ContentResolver;->unregisterContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/content/ContentResolver;->unregisterContentObserver(Landroid/database/ContentObserver;)V+]Landroid/database/ContentObserver;Landroid/database/AbstractCursor$SelfContentObserver;]Landroid/content/IContentService;Landroid/content/IContentService$Stub$Proxy; HSPLandroid/content/ContentResolver;->update(Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I HSPLandroid/content/ContentResolver;->update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/content/ContentResolver;->validateSyncExtrasBundle(Landroid/os/Bundle;)V -HSPLandroid/content/ContentUris;->appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder; +HSPLandroid/content/ContentUris;->appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder; HSPLandroid/content/ContentUris;->parseId(Landroid/net/Uri;)J -HSPLandroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri; +HSPLandroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HSPLandroid/content/ContentValues$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentValues; HSPLandroid/content/ContentValues$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/ContentValues;->()V @@ -3940,7 +3859,7 @@ HSPLandroid/content/ContentValues;->getAsBoolean(Ljava/lang/String;)Ljava/lang/B HSPLandroid/content/ContentValues;->getAsByteArray(Ljava/lang/String;)[B HSPLandroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer; HSPLandroid/content/ContentValues;->getAsLong(Ljava/lang/String;)Ljava/lang/Long;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Number;Ljava/lang/Long; -HSPLandroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Long; HSPLandroid/content/ContentValues;->getValues()Landroid/util/ArrayMap; HSPLandroid/content/ContentValues;->isEmpty()Z HSPLandroid/content/ContentValues;->isSupportedValue(Ljava/lang/Object;)Z @@ -3963,19 +3882,19 @@ HSPLandroid/content/ContentValues;->writeToParcel(Landroid/os/Parcel;I)V+]Landro HSPLandroid/content/Context;->()V HSPLandroid/content/Context;->getColor(I)I HSPLandroid/content/Context;->getColorStateList(I)Landroid/content/res/ColorStateList; -HSPLandroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/Context;->getNextAutofillId()I HSPLandroid/content/Context;->getSharedPrefsFile(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/Context;->getString(I)Ljava/lang/String; HSPLandroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; -HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/content/Context;missing_types HSPLandroid/content/Context;->getText(I)Ljava/lang/CharSequence; HSPLandroid/content/Context;->getToken(Landroid/content/Context;)Landroid/os/IBinder; -HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z +HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z+]Landroid/content/Context;missing_types HSPLandroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray; -HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; -HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; -HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray; +HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/Context;missing_types +HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/Context;missing_types +HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/Context;missing_types HSPLandroid/content/Context;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V HSPLandroid/content/Context;->unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V HSPLandroid/content/ContextParams$Builder;->()V @@ -3986,8 +3905,6 @@ HSPLandroid/content/ContextParams;->-$$Nest$fgetmAttributionTag(Landroid/content HSPLandroid/content/ContextParams;->-$$Nest$fgetmNext(Landroid/content/ContextParams;)Landroid/content/AttributionSource; HSPLandroid/content/ContextParams;->-$$Nest$fgetmRenouncedPermissions(Landroid/content/ContextParams;)Ljava/util/Set; HSPLandroid/content/ContextParams;->()V -HSPLandroid/content/ContextParams;->(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;)V -HSPLandroid/content/ContextParams;->(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;Landroid/content/ContextParams-IA;)V HSPLandroid/content/ContextParams;->getAttributionTag()Ljava/lang/String; HSPLandroid/content/ContextParams;->getNextAttributionSource()Landroid/content/AttributionSource; HSPLandroid/content/ContextParams;->getRenouncedPermissions()Ljava/util/Set; @@ -4010,7 +3927,7 @@ HSPLandroid/content/ContextWrapper;->createAttributionContext(Ljava/lang/String; HSPLandroid/content/ContextWrapper;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context; HSPLandroid/content/ContextWrapper;->createContextAsUser(Landroid/os/UserHandle;I)Landroid/content/Context; HSPLandroid/content/ContextWrapper;->createCredentialProtectedStorageContext()Landroid/content/Context; -HSPLandroid/content/ContextWrapper;->createDeviceProtectedStorageContext()Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->createDeviceProtectedStorageContext()Landroid/content/Context;+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContextWrapper;->createDisplayContext(Landroid/view/Display;)Landroid/content/Context; HSPLandroid/content/ContextWrapper;->createPackageContext(Ljava/lang/String;I)Landroid/content/Context; HSPLandroid/content/ContextWrapper;->createPackageContextAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/Context; @@ -4029,49 +3946,49 @@ HSPLandroid/content/ContextWrapper;->getAssets()Landroid/content/res/AssetManage HSPLandroid/content/ContextWrapper;->getAttributionSource()Landroid/content/AttributionSource; HSPLandroid/content/ContextWrapper;->getAttributionTag()Ljava/lang/String; HSPLandroid/content/ContextWrapper;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient; -HSPLandroid/content/ContextWrapper;->getAutofillOptions()Landroid/content/AutofillOptions; +HSPLandroid/content/ContextWrapper;->getAutofillOptions()Landroid/content/AutofillOptions;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getBaseContext()Landroid/content/Context; HSPLandroid/content/ContextWrapper;->getBasePackageName()Ljava/lang/String; HSPLandroid/content/ContextWrapper;->getCacheDir()Ljava/io/File; HSPLandroid/content/ContextWrapper;->getClassLoader()Ljava/lang/ClassLoader; -HSPLandroid/content/ContextWrapper;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions; -HSPLandroid/content/ContextWrapper;->getContentResolver()Landroid/content/ContentResolver; +HSPLandroid/content/ContextWrapper;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions;+]Landroid/content/Context;missing_types +HSPLandroid/content/ContextWrapper;->getContentResolver()Landroid/content/ContentResolver;+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContextWrapper;->getDataDir()Ljava/io/File; HSPLandroid/content/ContextWrapper;->getDatabasePath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/ContextWrapper;->getDeviceId()I HSPLandroid/content/ContextWrapper;->getDir(Ljava/lang/String;I)Ljava/io/File; HSPLandroid/content/ContextWrapper;->getDisplay()Landroid/view/Display; -HSPLandroid/content/ContextWrapper;->getDisplayId()I +HSPLandroid/content/ContextWrapper;->getDisplayId()I+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getDisplayNoVerify()Landroid/view/Display; HSPLandroid/content/ContextWrapper;->getExternalCacheDir()Ljava/io/File; HSPLandroid/content/ContextWrapper;->getExternalCacheDirs()[Ljava/io/File; -HSPLandroid/content/ContextWrapper;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContextWrapper;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/content/ContextWrapper;->getExternalMediaDirs()[Ljava/io/File; HSPLandroid/content/ContextWrapper;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File; -HSPLandroid/content/ContextWrapper;->getFilesDir()Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getFilesDir()Ljava/io/File;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getMainExecutor()Ljava/util/concurrent/Executor; HSPLandroid/content/ContextWrapper;->getMainLooper()Landroid/os/Looper; HSPLandroid/content/ContextWrapper;->getMainThreadHandler()Landroid/os/Handler; HSPLandroid/content/ContextWrapper;->getNextAutofillId()I HSPLandroid/content/ContextWrapper;->getNoBackupFilesDir()Ljava/io/File; -HSPLandroid/content/ContextWrapper;->getOpPackageName()Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getOpPackageName()Ljava/lang/String;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getPackageCodePath()Ljava/lang/String; -HSPLandroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager; -HSPLandroid/content/ContextWrapper;->getPackageName()Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager;+]Landroid/content/Context;missing_types +HSPLandroid/content/ContextWrapper;->getPackageName()Ljava/lang/String;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getPackageResourcePath()Ljava/lang/String; -HSPLandroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; +HSPLandroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/ContextWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/content/ContextWrapper;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getTheme()Landroid/content/res/Resources$Theme; HSPLandroid/content/ContextWrapper;->getUser()Landroid/os/UserHandle; HSPLandroid/content/ContextWrapper;->getUserId()I HSPLandroid/content/ContextWrapper;->getWindowContextToken()Landroid/os/IBinder; HSPLandroid/content/ContextWrapper;->grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V HSPLandroid/content/ContextWrapper;->isDeviceProtectedStorage()Z -HSPLandroid/content/ContextWrapper;->isRestricted()Z +HSPLandroid/content/ContextWrapper;->isRestricted()Z+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->isUiContext()Z HSPLandroid/content/ContextWrapper;->openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream; HSPLandroid/content/ContextWrapper;->openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream; @@ -4115,7 +4032,7 @@ HSPLandroid/content/IContentService$Stub$Proxy;->getMasterSyncAutomatically()Z HSPLandroid/content/IContentService$Stub$Proxy;->getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Ljava/util/List; HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType; HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z -HSPLandroid/content/IContentService$Stub$Proxy;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V +HSPLandroid/content/IContentService$Stub$Proxy;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V+]Landroid/content/IContentService$Stub$Proxy;Landroid/content/IContentService$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/IContentService$Stub$Proxy;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V HSPLandroid/content/IContentService$Stub$Proxy;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V HSPLandroid/content/IContentService$Stub$Proxy;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V @@ -4203,8 +4120,8 @@ HSPLandroid/content/Intent;->parseUri(Ljava/lang/String;I)Landroid/content/Inten HSPLandroid/content/Intent;->parseUriInternal(Ljava/lang/String;I)Landroid/content/Intent;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/content/Intent;->prepareToEnterProcess(ILandroid/content/AttributionSource;)V HSPLandroid/content/Intent;->prepareToEnterProcess(ZLandroid/content/AttributionSource;)V -HSPLandroid/content/Intent;->prepareToLeaveProcess(Landroid/content/Context;)V -HSPLandroid/content/Intent;->prepareToLeaveProcess(Z)V +HSPLandroid/content/Intent;->prepareToLeaveProcess(Landroid/content/Context;)V+]Landroid/content/Context;missing_types]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent; +HSPLandroid/content/Intent;->prepareToLeaveProcess(Z)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent; HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;J)Landroid/content/Intent; HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent; @@ -4230,7 +4147,7 @@ HSPLandroid/content/Intent;->resolveActivity(Landroid/content/pm/PackageManager; HSPLandroid/content/Intent;->resolveActivityInfo(Landroid/content/pm/PackageManager;I)Landroid/content/pm/ActivityInfo; HSPLandroid/content/Intent;->resolveSystemService(Landroid/content/pm/PackageManager;I)Landroid/content/ComponentName; HSPLandroid/content/Intent;->resolveType(Landroid/content/ContentResolver;)Ljava/lang/String; -HSPLandroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; +HSPLandroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; HSPLandroid/content/Intent;->setAllowFds(Z)V HSPLandroid/content/Intent;->setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent; @@ -4254,7 +4171,7 @@ HSPLandroid/content/Intent;->toString(Ljava/lang/StringBuilder;)V+]Ljava/lang/St HSPLandroid/content/Intent;->toUri(I)Ljava/lang/String; HSPLandroid/content/Intent;->toUriFragment(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V HSPLandroid/content/Intent;->toUriInner(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V -HSPLandroid/content/Intent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/Intent;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/IntentFilter$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/content/IntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/IntentFilter; HSPLandroid/content/IntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -4318,7 +4235,7 @@ HSPLandroid/content/IntentFilter;->setOrder(I)V HSPLandroid/content/IntentFilter;->setPriority(I)V HSPLandroid/content/IntentFilter;->setVisibilityToInstantApp(I)V HSPLandroid/content/IntentFilter;->typesIterator()Ljava/util/Iterator; -HSPLandroid/content/IntentFilter;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/PatternMatcher;Landroid/os/PatternMatcher;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/IntentFilter$AuthorityEntry;Landroid/content/IntentFilter$AuthorityEntry;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/content/IntentFilter;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/PatternMatcher;Landroid/os/PatternMatcher;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/IntentFilter$AuthorityEntry;Landroid/content/IntentFilter$AuthorityEntry; HSPLandroid/content/IntentSender;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/LocusId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/LocusId; HSPLandroid/content/LocusId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -4394,7 +4311,7 @@ HSPLandroid/content/UriMatcher;->(I)V HSPLandroid/content/UriMatcher;->(ILjava/lang/String;)V HSPLandroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V HSPLandroid/content/UriMatcher;->createChild(Ljava/lang/String;)Landroid/content/UriMatcher; -HSPLandroid/content/UriMatcher;->match(Landroid/net/Uri;)I +HSPLandroid/content/UriMatcher;->match(Landroid/net/Uri;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Landroid/net/Uri$PathSegments;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri; HSPLandroid/content/om/OverlayInfo;->ensureValidState()V HSPLandroid/content/om/OverlayInfo;->isEnabled()Z HSPLandroid/content/pm/ActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ActivityInfo; @@ -4402,7 +4319,7 @@ HSPLandroid/content/pm/ActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Lja HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Landroid/content/pm/ActivityInfo; HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/content/pm/ActivityInfo$WindowLayout;->(Landroid/os/Parcel;)V -HSPLandroid/content/pm/ActivityInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ActivityInfo;->(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Landroid/util/ArraySet; HSPLandroid/content/pm/ActivityInfo;->activityInfoConfigNativeToJava(I)I HSPLandroid/content/pm/ActivityInfo;->getRealConfigChanged()I HSPLandroid/content/pm/ActivityInfo;->getThemeResource()I @@ -4421,8 +4338,8 @@ HSPLandroid/content/pm/ApplicationInfo$1;->$r8$lambda$PfZYudEWwKf_A2QDLQ4dHD9-bO HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ApplicationInfo; HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/ApplicationInfo;->()V -HSPLandroid/content/pm/ApplicationInfo;->(Landroid/content/pm/ApplicationInfo;)V -HSPLandroid/content/pm/ApplicationInfo;->(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/content/pm/ApplicationInfo;->(Landroid/content/pm/ApplicationInfo;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/ApplicationInfo;->(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Ljava/util/Collections$EmptySet; HSPLandroid/content/pm/ApplicationInfo;->(Landroid/os/Parcel;Landroid/content/pm/ApplicationInfo-IA;)V HSPLandroid/content/pm/ApplicationInfo;->getAllApkPaths()[Ljava/lang/String; HSPLandroid/content/pm/ApplicationInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; @@ -4433,7 +4350,7 @@ HSPLandroid/content/pm/ApplicationInfo;->getCustomApplicationClassNameForProcess HSPLandroid/content/pm/ApplicationInfo;->getResourcePath()Ljava/lang/String; HSPLandroid/content/pm/ApplicationInfo;->hasRequestedLegacyExternalStorage()Z HSPLandroid/content/pm/ApplicationInfo;->hasRtlSupport()Z -HSPLandroid/content/pm/ApplicationInfo;->initForUser(I)V +HSPLandroid/content/pm/ApplicationInfo;->initForUser(I)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;Ljava/io/File; HSPLandroid/content/pm/ApplicationInfo;->isDirectBootAware()Z HSPLandroid/content/pm/ApplicationInfo;->isEncryptionAware()Z HSPLandroid/content/pm/ApplicationInfo;->isExternal()Z @@ -4459,7 +4376,7 @@ HSPLandroid/content/pm/ApplicationInfo;->setSplitCodePaths([Ljava/lang/String;)V HSPLandroid/content/pm/ApplicationInfo;->setSplitResourcePaths([Ljava/lang/String;)V HSPLandroid/content/pm/ApplicationInfo;->setVersionCode(J)V HSPLandroid/content/pm/ApplicationInfo;->toString()Ljava/lang/String; -HSPLandroid/content/pm/ApplicationInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ApplicationInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/UUID;Ljava/util/UUID; HSPLandroid/content/pm/Attribution$1;->()V HSPLandroid/content/pm/Attribution;->()V HSPLandroid/content/pm/BaseParceledListSlice$1;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -4469,7 +4386,7 @@ HSPLandroid/content/pm/BaseParceledListSlice;->getList()Ljava/util/List; HSPLandroid/content/pm/BaseParceledListSlice;->readCreator(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object; HSPLandroid/content/pm/BaseParceledListSlice;->readVerifyAndAddElement(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class; HSPLandroid/content/pm/BaseParceledListSlice;->verifySameType(Ljava/lang/Class;Ljava/lang/Class;)V -HSPLandroid/content/pm/BaseParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/BaseParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/content/pm/BaseParceledListSlice;Landroid/content/pm/ParceledListSlice;]Ljava/lang/Object;Landroid/app/NotificationChannel;,Landroid/view/contentcapture/ContentCaptureEvent;]Ljava/util/List;Ljava/util/Arrays$ArrayList;,Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/Checksum$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/Checksum; HSPLandroid/content/pm/Checksum$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/Checksum;->(Landroid/os/Parcel;)V @@ -4520,7 +4437,7 @@ HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getHomeActivities(Ljava/util HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledApplications(JI)Landroid/content/pm/ParceledListSlice; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInstaller()Landroid/content/pm/IPackageInstaller; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageUid(Ljava/lang/String;JI)I @@ -4532,7 +4449,6 @@ HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getServiceInfo(Landroid/cont HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemSharedLibraryNames()[Ljava/lang/String; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->hasSystemFeature(Ljava/lang/String;I)Z -HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isDeviceUpgrading()Z HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isInstantApp(Ljava/lang/String;I)Z HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isPackageSuspendedForUser(Ljava/lang/String;I)Z HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isProtectedBroadcast(Ljava/lang/String;)Z+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -4615,14 +4531,14 @@ HSPLandroid/content/pm/PackageInstaller;->getSessionInfo(I)Landroid/content/pm/P HSPLandroid/content/pm/PackageInstaller;->registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;Landroid/os/Handler;)V HSPLandroid/content/pm/PackageItemInfo;->()V HSPLandroid/content/pm/PackageItemInfo;->(Landroid/content/pm/PackageItemInfo;)V -HSPLandroid/content/pm/PackageItemInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageItemInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/text/TextUtils$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/PackageItemInfo;->forceSafeLabels()V HSPLandroid/content/pm/PackageItemInfo;->loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; HSPLandroid/content/pm/PackageItemInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; HSPLandroid/content/pm/PackageItemInfo;->loadSafeLabel(Landroid/content/pm/PackageManager;FI)Ljava/lang/CharSequence; HSPLandroid/content/pm/PackageItemInfo;->loadUnsafeLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; HSPLandroid/content/pm/PackageItemInfo;->loadXmlMetaData(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/res/XmlResourceParser; -HSPLandroid/content/pm/PackageItemInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/PackageItemInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/PackageManager$1;->recompute(Landroid/content/pm/PackageManager$ApplicationInfoQuery;)Landroid/content/pm/ApplicationInfo; HSPLandroid/content/pm/PackageManager$1;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/content/pm/PackageManager$2;->recompute(Landroid/content/pm/PackageManager$PackageInfoQuery;)Landroid/content/pm/PackageInfo; @@ -4773,7 +4689,7 @@ HSPLandroid/content/pm/RegisteredServicesCache;->containsType(Ljava/util/ArrayLi HSPLandroid/content/pm/ResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ResolveInfo; HSPLandroid/content/pm/ResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/ResolveInfo;->()V -HSPLandroid/content/pm/ResolveInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ResolveInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/content/pm/ActivityInfo$1;,Landroid/text/TextUtils$1;,Landroid/content/pm/ServiceInfo$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/ResolveInfo;->(Landroid/os/Parcel;Landroid/content/pm/ResolveInfo-IA;)V HSPLandroid/content/pm/ResolveInfo;->getComponentInfo()Landroid/content/pm/ComponentInfo; HSPLandroid/content/pm/ResolveInfo;->loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; @@ -4786,8 +4702,8 @@ HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/content/pm/ServiceInfo;->(Landroid/os/Parcel;)V HSPLandroid/content/pm/ServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SharedLibraryInfo; -HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/content/pm/SharedLibraryInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/content/pm/SharedLibraryInfo$1;Landroid/content/pm/SharedLibraryInfo$1; +HSPLandroid/content/pm/SharedLibraryInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/SharedLibraryInfo;->(Landroid/os/Parcel;Landroid/content/pm/SharedLibraryInfo-IA;)V HSPLandroid/content/pm/SharedLibraryInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;JILandroid/content/pm/VersionedPackage;Ljava/util/List;Ljava/util/List;Z)V HSPLandroid/content/pm/SharedLibraryInfo;->addDependency(Landroid/content/pm/SharedLibraryInfo;)V @@ -4797,7 +4713,7 @@ HSPLandroid/content/pm/SharedLibraryInfo;->getName()Ljava/lang/String; HSPLandroid/content/pm/SharedLibraryInfo;->getPath()Ljava/lang/String; HSPLandroid/content/pm/SharedLibraryInfo;->isNative()Z HSPLandroid/content/pm/SharedLibraryInfo;->isSdk()Z -HSPLandroid/content/pm/SharedLibraryInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/SharedLibraryInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ShortcutInfo; HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/ShortcutInfo$Builder;->(Landroid/content/Context;Ljava/lang/String;)V @@ -4811,7 +4727,7 @@ HSPLandroid/content/pm/ShortcutInfo$Builder;->setLongLived(Z)Landroid/content/pm HSPLandroid/content/pm/ShortcutInfo$Builder;->setRank(I)Landroid/content/pm/ShortcutInfo$Builder; HSPLandroid/content/pm/ShortcutInfo$Builder;->setShortLabel(Ljava/lang/CharSequence;)Landroid/content/pm/ShortcutInfo$Builder; HSPLandroid/content/pm/ShortcutInfo;->(Landroid/content/pm/ShortcutInfo$Builder;)V -HSPLandroid/content/pm/ShortcutInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ShortcutInfo;->(Landroid/os/Parcel;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Object;Landroid/content/pm/ShortcutInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/ShortcutInfo;->addFlags(I)V HSPLandroid/content/pm/ShortcutInfo;->cloneCapabilityBindings(Ljava/util/Map;)Ljava/util/Map; HSPLandroid/content/pm/ShortcutInfo;->cloneCategories(Ljava/util/Set;)Landroid/util/ArraySet; @@ -4876,12 +4792,11 @@ HSPLandroid/content/pm/Signature;->toCharsString()Ljava/lang/String; HSPLandroid/content/pm/SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SigningDetails; HSPLandroid/content/pm/SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/SigningDetails;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/content/pm/SigningDetails;->getPastSigningCertificates()[Landroid/content/pm/Signature; HSPLandroid/content/pm/SigningDetails;->getSignatures()[Landroid/content/pm/Signature; HSPLandroid/content/pm/SigningInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SigningInfo; HSPLandroid/content/pm/SigningInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/SigningInfo;->(Landroid/os/Parcel;)V -HSPLandroid/content/pm/SigningInfo;->getApkContentsSigners()[Landroid/content/pm/Signature; +HSPLandroid/content/pm/SigningInfo;->getApkContentsSigners()[Landroid/content/pm/Signature;+]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails; HSPLandroid/content/pm/SigningInfo;->getSigningCertificateHistory()[Landroid/content/pm/Signature; HSPLandroid/content/pm/SigningInfo;->hasMultipleSigners()Z HSPLandroid/content/pm/SigningInfo;->hasPastSigningCertificates()Z @@ -4907,13 +4822,12 @@ HSPLandroid/content/pm/UserPackage;->(ILjava/lang/String;)V HSPLandroid/content/pm/UserPackage;->equals(Ljava/lang/Object;)Z HSPLandroid/content/pm/UserPackage;->hashCode()I HSPLandroid/content/pm/UserPackage;->of(ILjava/lang/String;)Landroid/content/pm/UserPackage; -HSPLandroid/content/pm/UserProperties;->isCredentialShareableWithParent()Z HSPLandroid/content/pm/UserProperties;->isPresent(J)Z HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/VersionedPackage; -HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/content/pm/VersionedPackage;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/content/pm/VersionedPackage$1;Landroid/content/pm/VersionedPackage$1; +HSPLandroid/content/pm/VersionedPackage;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/VersionedPackage;->(Landroid/os/Parcel;Landroid/content/pm/VersionedPackage-IA;)V -HSPLandroid/content/pm/VersionedPackage;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/VersionedPackage;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/dex/ArtManager;->getCurrentProfilePath(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; HSPLandroid/content/pm/dex/ArtManager;->getProfileName(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/content/pm/dex/ArtManager;->getReferenceProfilePath(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; @@ -4945,7 +4859,7 @@ HSPLandroid/content/res/ApkAssets;->dump(Ljava/io/PrintWriter;Ljava/lang/String; HSPLandroid/content/res/ApkAssets;->finalize()V HSPLandroid/content/res/ApkAssets;->getAssetPath()Ljava/lang/String; HSPLandroid/content/res/ApkAssets;->getDebugName()Ljava/lang/String; -HSPLandroid/content/res/ApkAssets;->getStringFromPool(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/ApkAssets;->getStringFromPool(I)Ljava/lang/CharSequence;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock; HSPLandroid/content/res/ApkAssets;->isUpToDate()Z HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;)Landroid/content/res/ApkAssets; HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;I)Landroid/content/res/ApkAssets; @@ -4990,7 +4904,7 @@ HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetGetLength(J)J HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetGetRemainingLength(J)J HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetRead(J[BII)I HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeSetApkAssets(J[Landroid/content/res/ApkAssets;Z)V -HSPLandroid/content/res/AssetManager;->()V +HSPLandroid/content/res/AssetManager;->()V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->(Z)V HSPLandroid/content/res/AssetManager;->(ZLandroid/content/res/AssetManager-IA;)V HSPLandroid/content/res/AssetManager;->addAssetPathInternal(Ljava/lang/String;ZZ)I @@ -5013,7 +4927,7 @@ HSPLandroid/content/res/AssetManager;->getLoaders()Ljava/util/List; HSPLandroid/content/res/AssetManager;->getLocales()[Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getNonSystemLocales()[Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getParentThemeIdentifier(I)I -HSPLandroid/content/res/AssetManager;->getPooledStringForCookie(II)Ljava/lang/CharSequence; +HSPLandroid/content/res/AssetManager;->getPooledStringForCookie(II)Ljava/lang/CharSequence;+]Landroid/content/res/ApkAssets;Landroid/content/res/ApkAssets;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->getResourceArray(I[I)I HSPLandroid/content/res/AssetManager;->getResourceArraySize(I)I HSPLandroid/content/res/AssetManager;->getResourceBagText(II)Ljava/lang/CharSequence; @@ -5023,13 +4937,13 @@ HSPLandroid/content/res/AssetManager;->getResourceIntArray(I)[I HSPLandroid/content/res/AssetManager;->getResourceName(I)Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getResourcePackageName(I)Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getResourceStringArray(I)[Ljava/lang/String; -HSPLandroid/content/res/AssetManager;->getResourceText(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/AssetManager;->getResourceText(I)Ljava/lang/CharSequence;+]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->getResourceTextArray(I)[Ljava/lang/CharSequence; HSPLandroid/content/res/AssetManager;->getResourceTypeName(I)Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getResourceValue(IILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->getSizeConfigurations()[Landroid/content/res/Configuration; HSPLandroid/content/res/AssetManager;->getSystem()Landroid/content/res/AssetManager; -HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->incRefsLocked(J)V HSPLandroid/content/res/AssetManager;->isUpToDate()Z+]Landroid/content/res/ApkAssets;Landroid/content/res/ApkAssets; HSPLandroid/content/res/AssetManager;->list(Ljava/lang/String;)[Ljava/lang/String; @@ -5045,7 +4959,7 @@ HSPLandroid/content/res/AssetManager;->rebaseTheme(JLandroid/content/res/AssetMa HSPLandroid/content/res/AssetManager;->releaseTheme(J)V HSPLandroid/content/res/AssetManager;->resolveAttrs(JII[I[I[I[I)Z HSPLandroid/content/res/AssetManager;->retrieveAttributes(Landroid/content/res/XmlBlock$Parser;[I[I[I)Z -HSPLandroid/content/res/AssetManager;->setApkAssets([Landroid/content/res/ApkAssets;Z)V +HSPLandroid/content/res/AssetManager;->setApkAssets([Landroid/content/res/ApkAssets;Z)V+]Landroid/util/ArraySet;Landroid/util/ArraySet; HSPLandroid/content/res/AssetManager;->setConfiguration(IILjava/lang/String;IIIIIIIIIIIIIIII)V HSPLandroid/content/res/AssetManager;->setThemeTo(JLandroid/content/res/AssetManager;J)V HSPLandroid/content/res/AssetManager;->xmlBlockGone(I)V @@ -5055,7 +4969,7 @@ HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->(Landroid/c HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->getChangingConfigurations()I HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Landroid/content/res/ColorStateList; HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Ljava/lang/Object; -HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList; HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; HSPLandroid/content/res/ColorStateList;->()V HSPLandroid/content/res/ColorStateList;->(Landroid/content/res/ColorStateList;)V @@ -5067,13 +4981,13 @@ HSPLandroid/content/res/ColorStateList;->getChangingConfigurations()I HSPLandroid/content/res/ColorStateList;->getColorForState([II)I HSPLandroid/content/res/ColorStateList;->getConstantState()Landroid/content/res/ConstantState; HSPLandroid/content/res/ColorStateList;->getDefaultColor()I -HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/content/res/ColorStateList;->isStateful()Z HSPLandroid/content/res/ColorStateList;->modulateColor(IFF)I HSPLandroid/content/res/ColorStateList;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; HSPLandroid/content/res/ColorStateList;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; HSPLandroid/content/res/ColorStateList;->onColorsChanged()V -HSPLandroid/content/res/ColorStateList;->valueOf(I)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList;->valueOf(I)Landroid/content/res/ColorStateList;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference; HSPLandroid/content/res/ColorStateList;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/CompatibilityInfo; HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -5099,17 +5013,17 @@ HSPLandroid/content/res/ComplexColor;->getChangingConfigurations()I HSPLandroid/content/res/ComplexColor;->setBaseChangingConfigurations(I)V HSPLandroid/content/res/Configuration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/Configuration; HSPLandroid/content/res/Configuration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/content/res/Configuration;->()V +HSPLandroid/content/res/Configuration;->()V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration; HSPLandroid/content/res/Configuration;->(Landroid/content/res/Configuration;)V HSPLandroid/content/res/Configuration;->(Landroid/os/Parcel;)V HSPLandroid/content/res/Configuration;->(Landroid/os/Parcel;Landroid/content/res/Configuration-IA;)V -HSPLandroid/content/res/Configuration;->compareTo(Landroid/content/res/Configuration;)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Locale;Ljava/util/Locale; +HSPLandroid/content/res/Configuration;->compareTo(Landroid/content/res/Configuration;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;)I -HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;ZZ)I +HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;ZZ)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/content/res/Configuration;->diffPublicOnly(Landroid/content/res/Configuration;)I HSPLandroid/content/res/Configuration;->equals(Landroid/content/res/Configuration;)Z HSPLandroid/content/res/Configuration;->equals(Ljava/lang/Object;)Z -HSPLandroid/content/res/Configuration;->fixUpLocaleList()V +HSPLandroid/content/res/Configuration;->fixUpLocaleList()V+]Ljava/util/Locale;Ljava/util/Locale;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/content/res/Configuration;->generateDelta(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration; HSPLandroid/content/res/Configuration;->getGrammaticalGender()I HSPLandroid/content/res/Configuration;->getLayoutDirection()I @@ -5132,13 +5046,13 @@ HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;II)V HSPLandroid/content/res/Configuration;->setToDefaults()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/content/res/Configuration;->toString()Ljava/lang/String; -HSPLandroid/content/res/Configuration;->unset()V -HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I+]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; +HSPLandroid/content/res/Configuration;->unset()V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration; +HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/Configuration;Landroid/content/res/Configuration; HSPLandroid/content/res/Configuration;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/res/ConfigurationBoundResourceCache;->()V HSPLandroid/content/res/ConfigurationBoundResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object; HSPLandroid/content/res/ConfigurationBoundResourceCache;->getGeneration()I -HSPLandroid/content/res/ConfigurationBoundResourceCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/ConfigurationBoundResourceCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object;+]Landroid/content/res/ConstantState;Landroid/animation/StateListAnimator$StateListAnimatorConstantState;,Landroid/content/res/ColorStateList$ColorStateListFactory;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache; HSPLandroid/content/res/ConfigurationBoundResourceCache;->onConfigurationChange(I)V HSPLandroid/content/res/ConfigurationBoundResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;I)V HSPLandroid/content/res/ConfigurationBoundResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;IZ)V @@ -5148,12 +5062,12 @@ HSPLandroid/content/res/ConstantState;->()V HSPLandroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;)Ljava/lang/Object; HSPLandroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; HSPLandroid/content/res/DrawableCache;->()V -HSPLandroid/content/res/DrawableCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/DrawableCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache; HSPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Landroid/graphics/drawable/Drawable$ConstantState;I)Z HSPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Ljava/lang/Object;I)Z HSPLandroid/content/res/FontResourcesParser;->parse(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry; -HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry; -HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry; +HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;+]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser; +HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/content/res/FontScaleConverterFactory;->forScale(F)Landroid/content/res/FontScaleConverter; HSPLandroid/content/res/FontScaleConverterFactory;->isNonLinearFontScalingActive(F)Z HSPLandroid/content/res/GradientColor;->()V @@ -5176,17 +5090,17 @@ HSPLandroid/content/res/Resources$Theme;->applyStyle(IZ)V HSPLandroid/content/res/Resources$Theme;->equals(Ljava/lang/Object;)Z HSPLandroid/content/res/Resources$Theme;->getAppliedStyleResId()I HSPLandroid/content/res/Resources$Theme;->getChangingConfigurations()I -HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey; +HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; HSPLandroid/content/res/Resources$Theme;->getParentThemeIdentifier(I)I HSPLandroid/content/res/Resources$Theme;->getResources()Landroid/content/res/Resources; HSPLandroid/content/res/Resources$Theme;->getTheme()[Ljava/lang/String; HSPLandroid/content/res/Resources$Theme;->hashCode()I -HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray; -HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; -HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; HSPLandroid/content/res/Resources$Theme;->rebase()V HSPLandroid/content/res/Resources$Theme;->rebase(Landroid/content/res/ResourcesImpl;)V -HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; HSPLandroid/content/res/Resources$Theme;->resolveAttributes([I[I)Landroid/content/res/TypedArray; HSPLandroid/content/res/Resources$Theme;->setImpl(Landroid/content/res/ResourcesImpl$ThemeImpl;)V HSPLandroid/content/res/Resources$Theme;->setTo(Landroid/content/res/Resources$Theme;)V @@ -5194,13 +5108,13 @@ HSPLandroid/content/res/Resources$Theme;->toString()Ljava/lang/String; HSPLandroid/content/res/Resources$ThemeKey;->()V HSPLandroid/content/res/Resources$ThemeKey;->append(IZ)V HSPLandroid/content/res/Resources$ThemeKey;->clone()Landroid/content/res/Resources$ThemeKey; -HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/res/Resources$ThemeKey;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey; HSPLandroid/content/res/Resources$ThemeKey;->findValue(IZ)I HSPLandroid/content/res/Resources$ThemeKey;->hashCode()I HSPLandroid/content/res/Resources$ThemeKey;->moveToLast(I)V HSPLandroid/content/res/Resources$ThemeKey;->setTo(Landroid/content/res/Resources$ThemeKey;)V HSPLandroid/content/res/Resources;->(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V -HSPLandroid/content/res/Resources;->(Ljava/lang/ClassLoader;)V +HSPLandroid/content/res/Resources;->(Ljava/lang/ClassLoader;)V+]Ljava/util/Set;Ljava/util/Collections$SynchronizedSet; HSPLandroid/content/res/Resources;->addLoaders([Landroid/content/res/loader/ResourcesLoader;)V HSPLandroid/content/res/Resources;->checkCallbacksRegistered()V HSPLandroid/content/res/Resources;->cleanupThemeReferences()V @@ -5209,7 +5123,7 @@ HSPLandroid/content/res/Resources;->dumpHistory(Ljava/io/PrintWriter;Ljava/lang/ HSPLandroid/content/res/Resources;->finishPreloading()V HSPLandroid/content/res/Resources;->getAnimation(I)Landroid/content/res/XmlResourceParser; HSPLandroid/content/res/Resources;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; -HSPLandroid/content/res/Resources;->getAssets()Landroid/content/res/AssetManager; +HSPLandroid/content/res/Resources;->getAssets()Landroid/content/res/AssetManager;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I HSPLandroid/content/res/Resources;->getBoolean(I)Z HSPLandroid/content/res/Resources;->getClassLoader()Ljava/lang/ClassLoader; @@ -5218,16 +5132,16 @@ HSPLandroid/content/res/Resources;->getColor(ILandroid/content/res/Resources$The HSPLandroid/content/res/Resources;->getColorStateList(I)Landroid/content/res/ColorStateList; HSPLandroid/content/res/Resources;->getColorStateList(ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; HSPLandroid/content/res/Resources;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; -HSPLandroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; +HSPLandroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getDimension(I)F HSPLandroid/content/res/Resources;->getDimensionPixelOffset(I)I HSPLandroid/content/res/Resources;->getDimensionPixelSize(I)I -HSPLandroid/content/res/Resources;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; -HSPLandroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; +HSPLandroid/content/res/Resources;->getDisplayAdjustments()Landroid/view/DisplayAdjustments;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; +HSPLandroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable; HSPLandroid/content/res/Resources;->getDrawable(ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; HSPLandroid/content/res/Resources;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable; -HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/Resources;->getDrawableInflater()Landroid/graphics/drawable/DrawableInflater; HSPLandroid/content/res/Resources;->getFloat(I)F HSPLandroid/content/res/Resources;->getFont(Landroid/util/TypedValue;I)Landroid/graphics/Typeface; @@ -5243,31 +5157,31 @@ HSPLandroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljav HSPLandroid/content/res/Resources;->getQuantityText(II)Ljava/lang/CharSequence; HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String; HSPLandroid/content/res/Resources;->getResourceName(I)Ljava/lang/String; -HSPLandroid/content/res/Resources;->getResourcePackageName(I)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getResourcePackageName(I)Ljava/lang/String;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getResourceTypeName(I)Ljava/lang/String; HSPLandroid/content/res/Resources;->getSizeConfigurations()[Landroid/content/res/Configuration; HSPLandroid/content/res/Resources;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; -HSPLandroid/content/res/Resources;->getString(I)Ljava/lang/String; -HSPLandroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getString(I)Ljava/lang/String;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString; +HSPLandroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String; HSPLandroid/content/res/Resources;->getSystem()Landroid/content/res/Resources; -HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/Resources;->getTextArray(I)[Ljava/lang/CharSequence; -HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V +HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getValueForDensity(IILandroid/util/TypedValue;Z)V HSPLandroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser; HSPLandroid/content/res/Resources;->hasOverrideDisplayAdjustments()Z HSPLandroid/content/res/Resources;->lambda$dumpHistory$1(Ljava/util/Map;Landroid/content/res/Resources;)V -HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->loadComplexColor(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; -HSPLandroid/content/res/Resources;->loadDrawable(Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->loadDrawable(Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/lang/CharSequence;Ljava/lang/String; -HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->newTheme()Landroid/content/res/Resources$Theme; HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/Resources;->obtainTempTypedValue()Landroid/util/TypedValue; -HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream; HSPLandroid/content/res/Resources;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream; HSPLandroid/content/res/Resources;->openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor; @@ -5305,7 +5219,7 @@ HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getTheme()[Ljava/lang/String; HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->obtainStyledAttributes(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase()V HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase(Landroid/content/res/AssetManager;)V -HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttributes(Landroid/content/res/Resources$Theme;[I[I)Landroid/content/res/TypedArray; HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V HSPLandroid/content/res/ResourcesImpl;->-$$Nest$sfgetsThemeRegistry()Llibcore/util/NativeAllocationRegistry; @@ -5321,7 +5235,7 @@ HSPLandroid/content/res/ResourcesImpl;->flushLayoutCache()V HSPLandroid/content/res/ResourcesImpl;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; HSPLandroid/content/res/ResourcesImpl;->getAssets()Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I -HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/ConstantState;Landroid/content/res/ColorStateList$ColorStateListFactory; HSPLandroid/content/res/ResourcesImpl;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; HSPLandroid/content/res/ResourcesImpl;->getConfiguration()Landroid/content/res/Configuration; HSPLandroid/content/res/ResourcesImpl;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; @@ -5331,25 +5245,25 @@ HSPLandroid/content/res/ResourcesImpl;->getPluralRule()Landroid/icu/text/PluralR HSPLandroid/content/res/ResourcesImpl;->getQuantityText(II)Ljava/lang/CharSequence; HSPLandroid/content/res/ResourcesImpl;->getResourceEntryName(I)Ljava/lang/String; HSPLandroid/content/res/ResourcesImpl;->getResourceName(I)Ljava/lang/String; -HSPLandroid/content/res/ResourcesImpl;->getResourcePackageName(I)Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->getResourcePackageName(I)Ljava/lang/String;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl;->getResourceTypeName(I)Ljava/lang/String; HSPLandroid/content/res/ResourcesImpl;->getSizeConfigurations()[Landroid/content/res/Configuration; HSPLandroid/content/res/ResourcesImpl;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; -HSPLandroid/content/res/ResourcesImpl;->getValue(ILandroid/util/TypedValue;Z)V +HSPLandroid/content/res/ResourcesImpl;->getValue(ILandroid/util/TypedValue;Z)V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl;->getValueForDensity(IILandroid/util/TypedValue;Z)V HSPLandroid/content/res/ResourcesImpl;->lambda$decodeImageDrawable$1(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V HSPLandroid/content/res/ResourcesImpl;->lambda$new$0()Landroid/content/res/ResourcesImpl$LookupStack; HSPLandroid/content/res/ResourcesImpl;->loadColorStateList(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; HSPLandroid/content/res/ResourcesImpl;->loadComplexColor(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; -HSPLandroid/content/res/ResourcesImpl;->loadComplexColorForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; -HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor; -HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; -HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;II)Landroid/graphics/drawable/Drawable; -HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface; +HSPLandroid/content/res/ResourcesImpl;->loadComplexColorForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser; +HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor;+]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; +HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;II)Landroid/graphics/drawable/Drawable;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/ResourcesImpl$LookupStack;Landroid/content/res/ResourcesImpl$LookupStack;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Ljava/lang/CharSequence;Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/graphics/Typeface$Builder;Landroid/graphics/Typeface$Builder; HSPLandroid/content/res/ResourcesImpl;->loadXmlDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILjava/lang/String;)Landroid/graphics/drawable/Drawable; HSPLandroid/content/res/ResourcesImpl;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/XmlBlock;Landroid/content/res/XmlBlock; HSPLandroid/content/res/ResourcesImpl;->newThemeImpl()Landroid/content/res/ResourcesImpl$ThemeImpl; -HSPLandroid/content/res/ResourcesImpl;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream; +HSPLandroid/content/res/ResourcesImpl;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/content/res/ResourcesImpl;->openRawResourceFd(ILandroid/util/TypedValue;)Landroid/content/res/AssetFileDescriptor; HSPLandroid/content/res/ResourcesImpl;->startPreloading()V HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache; @@ -5365,43 +5279,43 @@ HSPLandroid/content/res/StringBlock;->finalize()V HSPLandroid/content/res/StringBlock;->get(I)Ljava/lang/CharSequence; HSPLandroid/content/res/StringBlock;->getSequence(I)Ljava/lang/CharSequence;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/String;Ljava/lang/String; HSPLandroid/content/res/ThemedResourceCache;->()V -HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; HSPLandroid/content/res/ThemedResourceCache;->getGeneration()I -HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray; +HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey; HSPLandroid/content/res/ThemedResourceCache;->getUnthemedLocked(Z)Landroid/util/LongSparseArray; HSPLandroid/content/res/ThemedResourceCache;->onConfigurationChange(I)V HSPLandroid/content/res/ThemedResourceCache;->pruneEntriesLocked(Landroid/util/LongSparseArray;I)Z HSPLandroid/content/res/ThemedResourceCache;->pruneLocked(I)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/content/res/ThemedResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;I)V HSPLandroid/content/res/ThemedResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;IZ)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; -HSPLandroid/content/res/TypedArray;->(Landroid/content/res/Resources;)V +HSPLandroid/content/res/TypedArray;->(Landroid/content/res/Resources;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/TypedArray;->extractThemeAttrs()[I -HSPLandroid/content/res/TypedArray;->extractThemeAttrs([I)[I +HSPLandroid/content/res/TypedArray;->extractThemeAttrs([I)[I+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/content/res/TypedArray;->getBoolean(IZ)Z -HSPLandroid/content/res/TypedArray;->getChangingConfigurations()I -HSPLandroid/content/res/TypedArray;->getColor(II)I -HSPLandroid/content/res/TypedArray;->getColorStateList(I)Landroid/content/res/ColorStateList; -HSPLandroid/content/res/TypedArray;->getComplexColor(I)Landroid/content/res/ComplexColor; +HSPLandroid/content/res/TypedArray;->getChangingConfigurations()I+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/content/res/TypedArray;->getColor(II)I+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/content/res/TypedArray;->getColorStateList(I)Landroid/content/res/ColorStateList;+]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/content/res/TypedArray;->getComplexColor(I)Landroid/content/res/ComplexColor;+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/TypedArray;->getDimension(IF)F HSPLandroid/content/res/TypedArray;->getDimensionPixelOffset(II)I HSPLandroid/content/res/TypedArray;->getDimensionPixelSize(II)I -HSPLandroid/content/res/TypedArray;->getDrawable(I)Landroid/graphics/drawable/Drawable; -HSPLandroid/content/res/TypedArray;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/TypedArray;->getDrawable(I)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/content/res/TypedArray;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/TypedArray;->getFloat(IF)F -HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface; +HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface;+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/TypedArray;->getFraction(IIIF)F HSPLandroid/content/res/TypedArray;->getIndex(I)I HSPLandroid/content/res/TypedArray;->getIndexCount()I HSPLandroid/content/res/TypedArray;->getInt(II)I HSPLandroid/content/res/TypedArray;->getInteger(II)I HSPLandroid/content/res/TypedArray;->getLayoutDimension(II)I -HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I +HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/content/res/TypedArray;->getNonConfigurationString(II)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/content/res/TypedArray;->getNonResourceString(I)Ljava/lang/String; HSPLandroid/content/res/TypedArray;->getPositionDescription()Ljava/lang/String; HSPLandroid/content/res/TypedArray;->getResourceId(II)I HSPLandroid/content/res/TypedArray;->getResources()Landroid/content/res/Resources; -HSPLandroid/content/res/TypedArray;->getString(I)Ljava/lang/String; +HSPLandroid/content/res/TypedArray;->getString(I)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/content/res/TypedArray;->getText(I)Ljava/lang/CharSequence; HSPLandroid/content/res/TypedArray;->getTextArray(I)[Ljava/lang/CharSequence; HSPLandroid/content/res/TypedArray;->getType(I)I @@ -5410,7 +5324,7 @@ HSPLandroid/content/res/TypedArray;->getValueAt(ILandroid/util/TypedValue;)Z HSPLandroid/content/res/TypedArray;->hasValue(I)Z HSPLandroid/content/res/TypedArray;->hasValueOrEmpty(I)Z HSPLandroid/content/res/TypedArray;->length()I -HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence;+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/TypedArray;->obtain(Landroid/content/res/Resources;I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; HSPLandroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue; HSPLandroid/content/res/TypedArray;->recycle()V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; @@ -5428,13 +5342,13 @@ HSPLandroid/content/res/XmlBlock$Parser;->getAttributeNameResource(I)I HSPLandroid/content/res/XmlBlock$Parser;->getAttributeResourceValue(II)I HSPLandroid/content/res/XmlBlock$Parser;->getAttributeResourceValue(Ljava/lang/String;Ljava/lang/String;I)I+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(I)Ljava/lang/String;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock; -HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock$Parser;->getClassAttribute()Ljava/lang/String; HSPLandroid/content/res/XmlBlock$Parser;->getDepth()I HSPLandroid/content/res/XmlBlock$Parser;->getEventType()I HSPLandroid/content/res/XmlBlock$Parser;->getLineNumber()I HSPLandroid/content/res/XmlBlock$Parser;->getName()Ljava/lang/String;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock; -HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock; HSPLandroid/content/res/XmlBlock$Parser;->getPositionDescription()Ljava/lang/String; HSPLandroid/content/res/XmlBlock$Parser;->getSequenceString(Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/content/res/XmlBlock$Parser;->getSourceResId()I @@ -5443,7 +5357,7 @@ HSPLandroid/content/res/XmlBlock$Parser;->isEmptyElementTag()Z HSPLandroid/content/res/XmlBlock$Parser;->next()I+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock$Parser;->nextTag()I+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock$Parser;->nextText()Ljava/lang/String;+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; -HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock;->-$$Nest$fgetmOpenCount(Landroid/content/res/XmlBlock;)I HSPLandroid/content/res/XmlBlock;->-$$Nest$fputmOpenCount(Landroid/content/res/XmlBlock;I)V HSPLandroid/content/res/XmlBlock;->-$$Nest$smnativeGetAttributeCount(J)I @@ -5464,7 +5378,7 @@ HSPLandroid/content/res/XmlBlock;->newParser(I)Landroid/content/res/XmlResourceP HSPLandroid/content/type/DefaultMimeMapFactory$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/content/type/DefaultMimeMapFactory;->create()Llibcore/content/type/MimeMap; HSPLandroid/content/type/DefaultMimeMapFactory;->lambda$create$0(Ljava/lang/Class;Ljava/lang/String;)Ljava/io/InputStream; -HSPLandroid/content/type/DefaultMimeMapFactory;->parseTypes(Llibcore/content/type/MimeMap$Builder;Ljava/util/function/Function;Ljava/lang/String;)V+]Ljava/util/function/Function;Landroid/content/type/DefaultMimeMapFactory$$ExternalSyntheticLambda0;]Ljava/io/BufferedReader;Ljava/io/BufferedReader; +HSPLandroid/content/type/DefaultMimeMapFactory;->parseTypes(Llibcore/content/type/MimeMap$Builder;Ljava/util/function/Function;Ljava/lang/String;)V+]Ljava/util/function/Function;Landroid/content/type/DefaultMimeMapFactory$$ExternalSyntheticLambda0;]Ljava/io/InputStream;Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;]Ljava/io/BufferedReader;Ljava/io/BufferedReader; HSPLandroid/database/AbstractCursor$SelfContentObserver;->(Landroid/database/AbstractCursor;)V HSPLandroid/database/AbstractCursor$SelfContentObserver;->onChange(Z)V HSPLandroid/database/AbstractCursor;->()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; @@ -5472,42 +5386,42 @@ HSPLandroid/database/AbstractCursor;->checkPosition()V+]Landroid/database/Abstra HSPLandroid/database/AbstractCursor;->close()V+]Landroid/database/AbstractCursor;Landroid/database/MatrixCursor;,Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Landroid/database/ContentObservable;Landroid/database/ContentObservable; HSPLandroid/database/AbstractCursor;->fillWindow(ILandroid/database/CursorWindow;)V HSPLandroid/database/AbstractCursor;->finalize()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; -HSPLandroid/database/AbstractCursor;->getColumnCount()I -HSPLandroid/database/AbstractCursor;->getColumnIndex(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String;]Landroid/database/AbstractCursor;Landroid/database/BulkCursorToCursorAdaptor; +HSPLandroid/database/AbstractCursor;->getColumnCount()I+]Landroid/database/AbstractCursor;Landroid/database/BulkCursorToCursorAdaptor; +HSPLandroid/database/AbstractCursor;->getColumnIndex(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String;]Landroid/database/AbstractCursor;Landroid/database/MatrixCursor;,Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/AbstractCursor;->getColumnIndexOrThrow(Ljava/lang/String;)I HSPLandroid/database/AbstractCursor;->getColumnName(I)Ljava/lang/String; HSPLandroid/database/AbstractCursor;->getExtras()Landroid/os/Bundle; HSPLandroid/database/AbstractCursor;->getPosition()I HSPLandroid/database/AbstractCursor;->getWantsAllOnMoveCalls()Z HSPLandroid/database/AbstractCursor;->getWindow()Landroid/database/CursorWindow; -HSPLandroid/database/AbstractCursor;->isAfterLast()Z +HSPLandroid/database/AbstractCursor;->isAfterLast()Z+]Landroid/database/AbstractCursor;Landroid/database/sqlite/SQLiteCursor; HSPLandroid/database/AbstractCursor;->isClosed()Z HSPLandroid/database/AbstractCursor;->isLast()Z HSPLandroid/database/AbstractCursor;->move(I)Z HSPLandroid/database/AbstractCursor;->moveToFirst()Z HSPLandroid/database/AbstractCursor;->moveToLast()Z HSPLandroid/database/AbstractCursor;->moveToNext()Z+]Landroid/database/AbstractCursor;Landroid/database/MatrixCursor;,Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor; -HSPLandroid/database/AbstractCursor;->moveToPosition(I)Z+]Landroid/database/AbstractCursor;Landroid/database/MatrixCursor;,Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor; +HSPLandroid/database/AbstractCursor;->moveToPosition(I)Z+]Landroid/database/AbstractCursor;missing_types HSPLandroid/database/AbstractCursor;->onChange(Z)V -HSPLandroid/database/AbstractCursor;->onDeactivateOrClose()V+]Landroid/database/DataSetObservable;Landroid/database/DataSetObservable; +HSPLandroid/database/AbstractCursor;->onDeactivateOrClose()V+]Landroid/database/DataSetObservable;Landroid/database/DataSetObservable;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/database/AbstractCursor;->onMove(II)Z HSPLandroid/database/AbstractCursor;->registerContentObserver(Landroid/database/ContentObserver;)V HSPLandroid/database/AbstractCursor;->registerDataSetObserver(Landroid/database/DataSetObserver;)V HSPLandroid/database/AbstractCursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;)V -HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;IZ)V +HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;IZ)V+]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/database/AbstractCursor;->unregisterContentObserver(Landroid/database/ContentObserver;)V HSPLandroid/database/AbstractWindowedCursor;->()V HSPLandroid/database/AbstractWindowedCursor;->checkPosition()V HSPLandroid/database/AbstractWindowedCursor;->clearOrCreateWindow(Ljava/lang/String;)V HSPLandroid/database/AbstractWindowedCursor;->closeWindow()V+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; -HSPLandroid/database/AbstractWindowedCursor;->getBlob(I)[B -HSPLandroid/database/AbstractWindowedCursor;->getDouble(I)D +HSPLandroid/database/AbstractWindowedCursor;->getBlob(I)[B+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; +HSPLandroid/database/AbstractWindowedCursor;->getDouble(I)D+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->getFloat(I)F HSPLandroid/database/AbstractWindowedCursor;->getInt(I)I+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->getLong(I)J+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->getString(I)Ljava/lang/String;+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; -HSPLandroid/database/AbstractWindowedCursor;->getType(I)I +HSPLandroid/database/AbstractWindowedCursor;->getType(I)I+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->getWindow()Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->hasWindow()Z HSPLandroid/database/AbstractWindowedCursor;->isNull(I)Z+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; @@ -5516,22 +5430,22 @@ HSPLandroid/database/AbstractWindowedCursor;->setWindow(Landroid/database/Cursor HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/BulkCursorDescriptor; HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/database/BulkCursorDescriptor;->()V -HSPLandroid/database/BulkCursorDescriptor;->readFromParcel(Landroid/os/Parcel;)V -HSPLandroid/database/BulkCursorDescriptor;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/database/BulkCursorDescriptor;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/database/CursorWindow$1;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/database/BulkCursorDescriptor;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/database/IBulkCursor;Landroid/database/CursorToBulkCursorAdaptor;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/database/BulkCursorNative;->()V HSPLandroid/database/BulkCursorNative;->asBinder()Landroid/os/IBinder; HSPLandroid/database/BulkCursorNative;->asInterface(Landroid/os/IBinder;)Landroid/database/IBulkCursor; HSPLandroid/database/BulkCursorNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/database/BulkCursorProxy;->(Landroid/os/IBinder;)V HSPLandroid/database/BulkCursorProxy;->asBinder()Landroid/os/IBinder; -HSPLandroid/database/BulkCursorProxy;->close()V -HSPLandroid/database/BulkCursorProxy;->getWindow(I)Landroid/database/CursorWindow; +HSPLandroid/database/BulkCursorProxy;->close()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/database/BulkCursorProxy;->getWindow(I)Landroid/database/CursorWindow;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/database/BulkCursorToCursorAdaptor;->()V -HSPLandroid/database/BulkCursorToCursorAdaptor;->close()V +HSPLandroid/database/BulkCursorToCursorAdaptor;->close()V+]Landroid/database/IBulkCursor;Landroid/database/BulkCursorProxy; HSPLandroid/database/BulkCursorToCursorAdaptor;->getColumnNames()[Ljava/lang/String; HSPLandroid/database/BulkCursorToCursorAdaptor;->getCount()I HSPLandroid/database/BulkCursorToCursorAdaptor;->getObserver()Landroid/database/IContentObserver; -HSPLandroid/database/BulkCursorToCursorAdaptor;->initialize(Landroid/database/BulkCursorDescriptor;)V +HSPLandroid/database/BulkCursorToCursorAdaptor;->initialize(Landroid/database/BulkCursorDescriptor;)V+]Landroid/database/BulkCursorToCursorAdaptor;Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/BulkCursorToCursorAdaptor;->onMove(II)Z+]Landroid/database/IBulkCursor;Landroid/database/BulkCursorProxy;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/BulkCursorToCursorAdaptor;Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/BulkCursorToCursorAdaptor;->throwIfCursorIsClosed()V HSPLandroid/database/ContentObservable;->()V @@ -5550,7 +5464,7 @@ HSPLandroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;)V HSPLandroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;I)V HSPLandroid/database/ContentObserver;->onChange(ZLjava/util/Collection;I)V HSPLandroid/database/ContentObserver;->onChange(ZLjava/util/Collection;II)V -HSPLandroid/database/ContentObserver;->releaseContentObserver()Landroid/database/IContentObserver; +HSPLandroid/database/ContentObserver;->releaseContentObserver()Landroid/database/IContentObserver;+]Landroid/database/ContentObserver$Transport;Landroid/database/ContentObserver$Transport; HSPLandroid/database/CrossProcessCursorWrapper;->(Landroid/database/Cursor;)V HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->(Landroid/database/IContentObserver;Landroid/os/IBinder$DeathRecipient;)V HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;)Z @@ -5560,27 +5474,27 @@ HSPLandroid/database/CursorToBulkCursorAdaptor;->close()V HSPLandroid/database/CursorToBulkCursorAdaptor;->closeFilledWindowLocked()V HSPLandroid/database/CursorToBulkCursorAdaptor;->createAndRegisterObserverProxyLocked(Landroid/database/IContentObserver;)V HSPLandroid/database/CursorToBulkCursorAdaptor;->disposeLocked()V -HSPLandroid/database/CursorToBulkCursorAdaptor;->getBulkCursorDescriptor()Landroid/database/BulkCursorDescriptor; -HSPLandroid/database/CursorToBulkCursorAdaptor;->getWindow(I)Landroid/database/CursorWindow; +HSPLandroid/database/CursorToBulkCursorAdaptor;->getBulkCursorDescriptor()Landroid/database/BulkCursorDescriptor;+]Landroid/database/CrossProcessCursor;Landroid/database/MatrixCursor; +HSPLandroid/database/CursorToBulkCursorAdaptor;->getWindow(I)Landroid/database/CursorWindow;+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/CrossProcessCursor;Landroid/database/MatrixCursor; HSPLandroid/database/CursorToBulkCursorAdaptor;->throwIfCursorIsClosed()V HSPLandroid/database/CursorToBulkCursorAdaptor;->unregisterObserverProxyLocked()V HSPLandroid/database/CursorWindow$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/database/CursorWindow$1;->newArray(I)[Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow$1;->newArray(I)[Ljava/lang/Object; -HSPLandroid/database/CursorWindow;->(Landroid/os/Parcel;)V +HSPLandroid/database/CursorWindow;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLandroid/database/CursorWindow;->(Landroid/os/Parcel;Landroid/database/CursorWindow-IA;)V HSPLandroid/database/CursorWindow;->(Ljava/lang/String;)V HSPLandroid/database/CursorWindow;->(Ljava/lang/String;J)V+]Ljava/lang/String;Ljava/lang/String;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; -HSPLandroid/database/CursorWindow;->allocRow()Z +HSPLandroid/database/CursorWindow;->allocRow()Z+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->clear()V HSPLandroid/database/CursorWindow;->dispose()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLandroid/database/CursorWindow;->finalize()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; -HSPLandroid/database/CursorWindow;->getBlob(II)[B +HSPLandroid/database/CursorWindow;->getBlob(II)[B+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getCursorWindowSize()I -HSPLandroid/database/CursorWindow;->getDouble(II)D +HSPLandroid/database/CursorWindow;->getDouble(II)D+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getFloat(II)F -HSPLandroid/database/CursorWindow;->getInt(II)I +HSPLandroid/database/CursorWindow;->getInt(II)I+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getLong(II)J+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getNumRows()I+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getStartPosition()I @@ -5590,30 +5504,30 @@ HSPLandroid/database/CursorWindow;->newFromParcel(Landroid/os/Parcel;)Landroid/d HSPLandroid/database/CursorWindow;->onAllReferencesReleased()V HSPLandroid/database/CursorWindow;->putLong(JII)Z HSPLandroid/database/CursorWindow;->putNull(II)Z -HSPLandroid/database/CursorWindow;->putString(Ljava/lang/String;II)Z +HSPLandroid/database/CursorWindow;->putString(Ljava/lang/String;II)Z+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->setNumColumns(I)Z HSPLandroid/database/CursorWindow;->setStartPosition(I)V HSPLandroid/database/CursorWindow;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/database/CursorWrapper;->(Landroid/database/Cursor;)V HSPLandroid/database/CursorWrapper;->close()V -HSPLandroid/database/CursorWrapper;->getBlob(I)[B -HSPLandroid/database/CursorWrapper;->getColumnCount()I -HSPLandroid/database/CursorWrapper;->getColumnIndex(Ljava/lang/String;)I +HSPLandroid/database/CursorWrapper;->getBlob(I)[B+]Landroid/database/Cursor;missing_types +HSPLandroid/database/CursorWrapper;->getColumnCount()I+]Landroid/database/Cursor;missing_types +HSPLandroid/database/CursorWrapper;->getColumnIndex(Ljava/lang/String;)I+]Landroid/database/Cursor;Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/CursorWrapper;->getColumnIndexOrThrow(Ljava/lang/String;)I HSPLandroid/database/CursorWrapper;->getColumnName(I)Ljava/lang/String; HSPLandroid/database/CursorWrapper;->getColumnNames()[Ljava/lang/String; HSPLandroid/database/CursorWrapper;->getCount()I HSPLandroid/database/CursorWrapper;->getExtras()Landroid/os/Bundle; -HSPLandroid/database/CursorWrapper;->getInt(I)I -HSPLandroid/database/CursorWrapper;->getLong(I)J+]Landroid/database/Cursor;Landroid/database/BulkCursorToCursorAdaptor; -HSPLandroid/database/CursorWrapper;->getPosition()I +HSPLandroid/database/CursorWrapper;->getInt(I)I+]Landroid/database/Cursor;missing_types +HSPLandroid/database/CursorWrapper;->getLong(I)J+]Landroid/database/Cursor;missing_types +HSPLandroid/database/CursorWrapper;->getPosition()I+]Landroid/database/Cursor;missing_types HSPLandroid/database/CursorWrapper;->getString(I)Ljava/lang/String;+]Landroid/database/Cursor;missing_types -HSPLandroid/database/CursorWrapper;->getType(I)I +HSPLandroid/database/CursorWrapper;->getType(I)I+]Landroid/database/Cursor;missing_types HSPLandroid/database/CursorWrapper;->getWrappedCursor()Landroid/database/Cursor; HSPLandroid/database/CursorWrapper;->isAfterLast()Z HSPLandroid/database/CursorWrapper;->isClosed()Z HSPLandroid/database/CursorWrapper;->isLast()Z -HSPLandroid/database/CursorWrapper;->isNull(I)Z +HSPLandroid/database/CursorWrapper;->isNull(I)Z+]Landroid/database/Cursor;Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/CursorWrapper;->moveToFirst()Z HSPLandroid/database/CursorWrapper;->moveToLast()Z HSPLandroid/database/CursorWrapper;->moveToNext()Z+]Landroid/database/Cursor;missing_types @@ -5624,10 +5538,10 @@ HSPLandroid/database/DataSetObservable;->notifyChanged()V HSPLandroid/database/DataSetObservable;->notifyInvalidated()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/database/DataSetObserver;->()V HSPLandroid/database/DatabaseUtils;->appendEscapedSQLString(Ljava/lang/StringBuilder;Ljava/lang/String;)V -HSPLandroid/database/DatabaseUtils;->cursorFillWindow(Landroid/database/Cursor;ILandroid/database/CursorWindow;)V +HSPLandroid/database/DatabaseUtils;->cursorFillWindow(Landroid/database/Cursor;ILandroid/database/CursorWindow;)V+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/Cursor;Landroid/database/MatrixCursor; HSPLandroid/database/DatabaseUtils;->getSqlStatementType(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/database/DatabaseUtils;->getTypeOfObject(Ljava/lang/Object;)I -HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J +HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J+]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)J HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J @@ -5643,7 +5557,7 @@ HSPLandroid/database/DefaultDatabaseErrorHandler;->()V HSPLandroid/database/IContentObserver$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/database/IContentObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/database/IContentObserver$Stub$Proxy;->onChangeEtc(Z[Landroid/net/Uri;II)V -HSPLandroid/database/IContentObserver$Stub;->()V +HSPLandroid/database/IContentObserver$Stub;->()V+]Landroid/database/IContentObserver$Stub;Landroid/database/ContentObserver$Transport; HSPLandroid/database/IContentObserver$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/database/IContentObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/database/IContentObserver; HSPLandroid/database/IContentObserver$Stub;->getDefaultTransactionName(I)Ljava/lang/String; @@ -5662,7 +5576,7 @@ HSPLandroid/database/MatrixCursor;->getCount()I HSPLandroid/database/MatrixCursor;->getDouble(I)D HSPLandroid/database/MatrixCursor;->getInt(I)I HSPLandroid/database/MatrixCursor;->getLong(I)J -HSPLandroid/database/MatrixCursor;->getString(I)Ljava/lang/String; +HSPLandroid/database/MatrixCursor;->getString(I)Ljava/lang/String;+]Ljava/lang/Object;Ljava/lang/String; HSPLandroid/database/MatrixCursor;->getType(I)I HSPLandroid/database/MatrixCursor;->newRow()Landroid/database/MatrixCursor$RowBuilder; HSPLandroid/database/MergeCursor$1;->(Landroid/database/MergeCursor;)V @@ -5678,16 +5592,16 @@ HSPLandroid/database/Observable;->registerObserver(Ljava/lang/Object;)V HSPLandroid/database/Observable;->unregisterAll()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/database/Observable;->unregisterObserver(Ljava/lang/Object;)V HSPLandroid/database/sqlite/SQLiteClosable;->()V -HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V -HSPLandroid/database/sqlite/SQLiteClosable;->close()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteStatement;,Landroid/database/sqlite/SQLiteDatabase;,Landroid/database/sqlite/SQLiteQuery; -HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteStatement;,Landroid/database/sqlite/SQLiteQuery;,Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/database/sqlite/SQLiteClosable;->close()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteStatement;,Landroid/database/sqlite/SQLiteQuery;,Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteStatement;,Landroid/database/sqlite/SQLiteDatabase;,Landroid/database/sqlite/SQLiteQuery; HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->getTruncateSize()J HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->init(Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->initIfNeeded()V HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->isLegacyCompatibilityWalEnabled()Z HSPLandroid/database/sqlite/SQLiteConnection$Operation;->()V HSPLandroid/database/sqlite/SQLiteConnection$Operation;->(Landroid/database/sqlite/SQLiteConnection$Operation-IA;)V -HSPLandroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V +HSPLandroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteConnection$Operation;->getTraceMethodName()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->(Landroid/database/sqlite/SQLiteConnectionPool;)V HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I+]Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteConnectionPool;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -5707,7 +5621,7 @@ HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemov HSPLandroid/database/sqlite/SQLiteConnection;->-$$Nest$mfinalizePreparedStatement(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V HSPLandroid/database/sqlite/SQLiteConnection;->(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteDatabaseConfiguration;IZ)V HSPLandroid/database/sqlite/SQLiteConnection;->acquirePreparedStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnection$PreparedStatement;+]Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache; -HSPLandroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V+]Landroid/database/sqlite/SQLiteDatabaseConfiguration;Landroid/database/sqlite/SQLiteDatabaseConfiguration;]Ldalvik/system/BlockGuard$Policy;Landroid/os/StrictMode$AndroidBlockGuardPolicy; +HSPLandroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V+]Landroid/database/sqlite/SQLiteDatabaseConfiguration;Landroid/database/sqlite/SQLiteDatabaseConfiguration;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLandroid/database/sqlite/SQLiteConnection;->attachCancellationSignal(Landroid/os/CancellationSignal;)V+]Landroid/os/CancellationSignal;Landroid/os/CancellationSignal; HSPLandroid/database/sqlite/SQLiteConnection;->bindArguments(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V+]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/Number;Ljava/lang/Integer;,Ljava/lang/Double;,Ljava/lang/Long;]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLandroid/database/sqlite/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String; @@ -5718,9 +5632,9 @@ HSPLandroid/database/sqlite/SQLiteConnection;->detachCancellationSignal(Landroid HSPLandroid/database/sqlite/SQLiteConnection;->dispose(Z)V HSPLandroid/database/sqlite/SQLiteConnection;->dumpUnsafe(Landroid/util/Printer;Z)V HSPLandroid/database/sqlite/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; -HSPLandroid/database/sqlite/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I +HSPLandroid/database/sqlite/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; HSPLandroid/database/sqlite/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; -HSPLandroid/database/sqlite/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J +HSPLandroid/database/sqlite/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; HSPLandroid/database/sqlite/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; HSPLandroid/database/sqlite/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String;+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; HSPLandroid/database/sqlite/SQLiteConnection;->executePerConnectionSqlFromConfiguration(I)V @@ -5729,7 +5643,7 @@ HSPLandroid/database/sqlite/SQLiteConnection;->finalizePreparedStatement(Landroi HSPLandroid/database/sqlite/SQLiteConnection;->getConnectionId()I HSPLandroid/database/sqlite/SQLiteConnection;->getMainDbStatsUnsafe(IJJ)Landroid/database/sqlite/SQLiteDebug$DbStats; HSPLandroid/database/sqlite/SQLiteConnection;->isCacheable(I)Z -HSPLandroid/database/sqlite/SQLiteConnection;->isPreparedStatementInCache(Ljava/lang/String;)Z +HSPLandroid/database/sqlite/SQLiteConnection;->isPreparedStatementInCache(Ljava/lang/String;)Z+]Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache; HSPLandroid/database/sqlite/SQLiteConnection;->isPrimaryConnection()Z HSPLandroid/database/sqlite/SQLiteConnection;->maybeTruncateWalFile()V HSPLandroid/database/sqlite/SQLiteConnection;->open()V+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; @@ -5771,7 +5685,7 @@ HSPLandroid/database/sqlite/SQLiteConnectionPool;->discardAcquiredConnectionsLoc HSPLandroid/database/sqlite/SQLiteConnectionPool;->dispose(Z)V HSPLandroid/database/sqlite/SQLiteConnectionPool;->dump(Landroid/util/Printer;ZLandroid/util/ArraySet;)V HSPLandroid/database/sqlite/SQLiteConnectionPool;->finalize()V -HSPLandroid/database/sqlite/SQLiteConnectionPool;->finishAcquireConnectionLocked(Landroid/database/sqlite/SQLiteConnection;I)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->finishAcquireConnectionLocked(Landroid/database/sqlite/SQLiteConnection;I)V+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; HSPLandroid/database/sqlite/SQLiteConnectionPool;->getPath()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteConnectionPool;->getPriority(I)I HSPLandroid/database/sqlite/SQLiteConnectionPool;->isSessionBlockingImportantConnectionWaitersLocked(ZI)Z @@ -5789,16 +5703,16 @@ HSPLandroid/database/sqlite/SQLiteConnectionPool;->releaseConnection(Landroid/da HSPLandroid/database/sqlite/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V HSPLandroid/database/sqlite/SQLiteConnectionPool;->shouldYieldConnection(Landroid/database/sqlite/SQLiteConnection;I)Z HSPLandroid/database/sqlite/SQLiteConnectionPool;->throwIfClosedLocked()V -HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Landroid/database/sqlite/SQLiteConnection; -HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Landroid/database/sqlite/SQLiteConnection; -HSPLandroid/database/sqlite/SQLiteConnectionPool;->waitForConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Landroid/database/sqlite/SQLiteConnection; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Landroid/database/sqlite/SQLiteConnection;+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Landroid/database/sqlite/SQLiteConnection;+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Ljava/util/Iterator;Ljava/util/WeakHashMap$KeyIterator;]Ljava/util/Set;Ljava/util/WeakHashMap$KeySet; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->waitForConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Landroid/database/sqlite/SQLiteConnection;+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/os/CancellationSignal;Landroid/os/CancellationSignal; HSPLandroid/database/sqlite/SQLiteConnectionPool;->wakeConnectionWaitersLocked()V HSPLandroid/database/sqlite/SQLiteConstraintException;->(Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteCursor;->(Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V+]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery; HSPLandroid/database/sqlite/SQLiteCursor;->close()V+]Landroid/database/sqlite/SQLiteCursorDriver;Landroid/database/sqlite/SQLiteDirectCursorDriver;]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery; HSPLandroid/database/sqlite/SQLiteCursor;->fillWindow(I)V+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/sqlite/SQLiteCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteCursor;->finalize()V -HSPLandroid/database/sqlite/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I +HSPLandroid/database/sqlite/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/HashMap; HSPLandroid/database/sqlite/SQLiteCursor;->getColumnNames()[Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteCursor;->getCount()I HSPLandroid/database/sqlite/SQLiteCursor;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;+]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery; @@ -5807,7 +5721,7 @@ HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0;->(La HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda2;->()V HSPLandroid/database/sqlite/SQLiteDatabase$1;->(Ljava/lang/String;)V -HSPLandroid/database/sqlite/SQLiteDatabase$1;->accept(Ljava/io/File;)Z +HSPLandroid/database/sqlite/SQLiteDatabase$1;->accept(Ljava/io/File;)Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;Ljava/io/File; HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->()V HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)V HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->addOpenFlags(I)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; @@ -5830,7 +5744,7 @@ HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->(ILandroid/databas HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$OpenParams-IA;)V HSPLandroid/database/sqlite/SQLiteDatabase;->(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction()V -HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;Z)V +HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;Z)V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V HSPLandroid/database/sqlite/SQLiteDatabase;->collectDbStats(Ljava/util/ArrayList;)V @@ -5844,12 +5758,12 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->dispose(Z)V HSPLandroid/database/sqlite/SQLiteDatabase;->dumpAll(Landroid/util/Printer;ZZ)V HSPLandroid/database/sqlite/SQLiteDatabase;->dumpDatabaseDirectory(Landroid/util/Printer;Ljava/io/File;Z)V HSPLandroid/database/sqlite/SQLiteDatabase;->enableWriteAheadLogging()Z -HSPLandroid/database/sqlite/SQLiteDatabase;->endTransaction()V +HSPLandroid/database/sqlite/SQLiteDatabase;->endTransaction()V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/database/sqlite/SQLiteDatabase;->executeSql(Ljava/lang/String;[Ljava/lang/Object;)I HSPLandroid/database/sqlite/SQLiteDatabase;->finalize()V -HSPLandroid/database/sqlite/SQLiteDatabase;->findEditTable(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabase;->findEditTable(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteDatabase;->getActiveDatabasePools()Ljava/util/ArrayList; HSPLandroid/database/sqlite/SQLiteDatabase;->getActiveDatabases()Ljava/util/ArrayList; HSPLandroid/database/sqlite/SQLiteDatabase;->getFileTimestamps(Ljava/lang/String;)Ljava/lang/String; @@ -5857,17 +5771,17 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->getMaximumSize()J HSPLandroid/database/sqlite/SQLiteDatabase;->getPageSize()J HSPLandroid/database/sqlite/SQLiteDatabase;->getPath()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I -HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession; -HSPLandroid/database/sqlite/SQLiteDatabase;->getVersion()I +HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; +HSPLandroid/database/sqlite/SQLiteDatabase;->getVersion()I+]Ljava/lang/Long;Ljava/lang/Long; HSPLandroid/database/sqlite/SQLiteDatabase;->inTransaction()Z+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J HSPLandroid/database/sqlite/SQLiteDatabase;->insertOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J -HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J +HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/ContentValues;Landroid/content/ContentValues;]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; HSPLandroid/database/sqlite/SQLiteDatabase;->isMainThread()Z HSPLandroid/database/sqlite/SQLiteDatabase;->isOpen()Z HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnly()Z HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnlyLocked()Z -HSPLandroid/database/sqlite/SQLiteDatabase;->isWriteAheadLoggingEnabled()Z +HSPLandroid/database/sqlite/SQLiteDatabase;->isWriteAheadLoggingEnabled()Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/database/sqlite/SQLiteDatabaseConfiguration;Landroid/database/sqlite/SQLiteDatabaseConfiguration; HSPLandroid/database/sqlite/SQLiteDatabase;->onAllReferencesReleased()V HSPLandroid/database/sqlite/SQLiteDatabase;->open()V HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/io/File;Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase; @@ -5880,7 +5794,7 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang HSPLandroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; -HSPLandroid/database/sqlite/SQLiteDatabase;->queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteDatabase;->queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; @@ -5889,11 +5803,11 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->releaseMemory()I HSPLandroid/database/sqlite/SQLiteDatabase;->replace(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J HSPLandroid/database/sqlite/SQLiteDatabase;->replaceOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J HSPLandroid/database/sqlite/SQLiteDatabase;->setForeignKeyConstraintsEnabled(Z)V -HSPLandroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V +HSPLandroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V HSPLandroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/database/sqlite/SQLiteDatabase;->updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I -HSPLandroid/database/sqlite/SQLiteDatabase;->validateSql(Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteDatabase;->validateSql(Ljava/lang/String;Landroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z HSPLandroid/database/sqlite/SQLiteDatabase;->yieldIfContendedSafely(J)Z HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V @@ -5902,7 +5816,7 @@ HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isInMemoryDb()Z+]Ljava HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isLegacyCompatibilityWalEnabled()Z HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isReadOnlyDatabase()Z HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isWalEnabledInternal()Z -HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->resolveJournalMode()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->resolveJournalMode()Ljava/lang/String;+]Landroid/database/sqlite/SQLiteDatabaseConfiguration;Landroid/database/sqlite/SQLiteDatabaseConfiguration; HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->resolveSyncMode()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->stripPathForLogs(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->updateParametersFrom(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -5957,37 +5871,37 @@ HSPLandroid/database/sqlite/SQLiteProgram;->onAllReferencesReleased()V+]Landroid HSPLandroid/database/sqlite/SQLiteQuery;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Landroid/os/CancellationSignal;)V HSPLandroid/database/sqlite/SQLiteQuery;->fillWindow(Landroid/database/CursorWindow;IIZ)I+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->()V -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendClause(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendClause(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/database/sqlite/SQLiteQueryBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQueryString(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeProjection([Ljava/lang/String;)[Ljava/lang/String; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeSingleProjection(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeSingleProjection(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeSingleProjectionOrThrow(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeWhere(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeWhere(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrict()Z HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrictColumns()Z HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrictGrammar()Z HSPLandroid/database/sqlite/SQLiteQueryBuilder;->maybeWithOperator(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/database/sqlite/SQLiteQueryBuilder; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/database/sqlite/SQLiteQueryBuilder; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/database/sqlite/SQLiteQueryBuilder;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setDistinct(Z)V HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setProjectionMap(Ljava/util/Map;)V HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setStrict(Z)V HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->wrap(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->wrap(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteSession$Transaction;->()V HSPLandroid/database/sqlite/SQLiteSession$Transaction;->(Landroid/database/sqlite/SQLiteSession$Transaction-IA;)V HSPLandroid/database/sqlite/SQLiteSession;->(Landroid/database/sqlite/SQLiteConnectionPool;)V HSPLandroid/database/sqlite/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteConnectionPool; HSPLandroid/database/sqlite/SQLiteSession;->beginTransaction(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V -HSPLandroid/database/sqlite/SQLiteSession;->beginTransactionUnchecked(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteSession;->beginTransactionUnchecked(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection; HSPLandroid/database/sqlite/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V HSPLandroid/database/sqlite/SQLiteSession;->endTransactionUnchecked(Landroid/os/CancellationSignal;Z)V+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection; HSPLandroid/database/sqlite/SQLiteSession;->execute(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)V -HSPLandroid/database/sqlite/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I +HSPLandroid/database/sqlite/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection; HSPLandroid/database/sqlite/SQLiteSession;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZILandroid/os/CancellationSignal;)I+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection; HSPLandroid/database/sqlite/SQLiteSession;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J HSPLandroid/database/sqlite/SQLiteSession;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J @@ -6008,7 +5922,7 @@ HSPLandroid/database/sqlite/SQLiteSession;->yieldTransactionUnchecked(JLandroid/ HSPLandroid/database/sqlite/SQLiteStatement;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/database/sqlite/SQLiteStatement;->execute()V HSPLandroid/database/sqlite/SQLiteStatement;->executeInsert()J -HSPLandroid/database/sqlite/SQLiteStatement;->executeUpdateDelete()I +HSPLandroid/database/sqlite/SQLiteStatement;->executeUpdateDelete()I+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement; HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForLong()J HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForString()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteStatementInfo;->()V @@ -6025,7 +5939,6 @@ HSPLandroid/ddm/DdmHandleHello;->handleHELO(Lorg/apache/harmony/dalvik/ddmc/Chun HSPLandroid/ddm/DdmHandleProfiling;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; HSPLandroid/graphics/BLASTBufferQueue;->(Ljava/lang/String;Landroid/view/SurfaceControl;III)V HSPLandroid/graphics/BLASTBufferQueue;->(Ljava/lang/String;Z)V -HSPLandroid/graphics/BLASTBufferQueue;->clearSyncTransaction()V HSPLandroid/graphics/BLASTBufferQueue;->createSurface()Landroid/view/Surface; HSPLandroid/graphics/BLASTBufferQueue;->destroy()V HSPLandroid/graphics/BLASTBufferQueue;->finalize()V @@ -6039,44 +5952,44 @@ HSPLandroid/graphics/BaseCanvas;->drawARGB(IIII)V HSPLandroid/graphics/BaseCanvas;->drawArc(FFFFFFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V -HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Matrix;Landroid/graphics/Matrix; +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/BaseCanvas;Landroid/graphics/Canvas; HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->drawColor(I)V -HSPLandroid/graphics/BaseCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/BaseCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V+]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/BaseCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V -HSPLandroid/graphics/BaseCanvas;->throwIfHasHwFeaturesInSwMode(Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->throwIfHasHwFeaturesInSwMode(Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;missing_types]Landroid/graphics/BaseCanvas;Landroid/view/Surface$CompatibleCanvas;,Landroid/graphics/Canvas; HSPLandroid/graphics/BaseCanvas;->throwIfHasHwFeaturesInSwMode(Landroid/graphics/Shader;)V HSPLandroid/graphics/BaseCanvas;->throwIfHwBitmapInSwMode(Landroid/graphics/Bitmap;)V HSPLandroid/graphics/BaseRecordingCanvas;->(J)V HSPLandroid/graphics/BaseRecordingCanvas;->drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/BaseRecordingCanvas;Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/BaseRecordingCanvas;->drawCircle(FFFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawColor(I)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawColor(I)V+]Landroid/graphics/BlendMode;Landroid/graphics/BlendMode; HSPLandroid/graphics/BaseRecordingCanvas;->drawColor(ILandroid/graphics/PorterDuff$Mode;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint; HSPLandroid/graphics/BaseRecordingCanvas;->drawOval(FFFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawPatch(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Paint;)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/NinePatch;Landroid/graphics/NinePatch;]Landroid/graphics/BaseRecordingCanvas;Landroid/graphics/RecordingCanvas; -HSPLandroid/graphics/BaseRecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint; HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/Layout$Ellipsizer; +HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V+]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun([CIIIIFFZLandroid/graphics/Paint;)V HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Bitmap; HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/graphics/Bitmap$Config;->nativeToConfig(I)Landroid/graphics/Bitmap$Config; HSPLandroid/graphics/Bitmap$Config;->values()[Landroid/graphics/Bitmap$Config; -HSPLandroid/graphics/Bitmap;->(JIIIZ[BLandroid/graphics/NinePatch$InsetStruct;Z)V +HSPLandroid/graphics/Bitmap;->(JIIIZ[BLandroid/graphics/NinePatch$InsetStruct;Z)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/graphics/Bitmap;->checkHardware(Ljava/lang/String;)V HSPLandroid/graphics/Bitmap;->checkPixelAccess(II)V HSPLandroid/graphics/Bitmap;->checkPixelsAccess(IIIIII[I)V @@ -6151,7 +6064,7 @@ HSPLandroid/graphics/BitmapShader;->(Landroid/graphics/Bitmap;II)V HSPLandroid/graphics/BitmapShader;->(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V HSPLandroid/graphics/BitmapShader;->createNativeInstance(JZ)J HSPLandroid/graphics/BitmapShader;->shouldDiscardNativeInstance(Z)Z -HSPLandroid/graphics/BlendMode;->blendModeToPorterDuffMode(Landroid/graphics/BlendMode;)Landroid/graphics/PorterDuff$Mode; +HSPLandroid/graphics/BlendMode;->blendModeToPorterDuffMode(Landroid/graphics/BlendMode;)Landroid/graphics/PorterDuff$Mode;+]Landroid/graphics/BlendMode;Landroid/graphics/BlendMode; HSPLandroid/graphics/BlendMode;->fromValue(I)Landroid/graphics/BlendMode; HSPLandroid/graphics/BlendMode;->getXfermode()Landroid/graphics/Xfermode; HSPLandroid/graphics/BlendMode;->toValue(Landroid/graphics/BlendMode;)I @@ -6164,8 +6077,8 @@ HSPLandroid/graphics/Canvas;->()V HSPLandroid/graphics/Canvas;->(J)V HSPLandroid/graphics/Canvas;->(Landroid/graphics/Bitmap;)V HSPLandroid/graphics/Canvas;->checkValidClipOp(Landroid/graphics/Region$Op;)V -HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;)Z -HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z +HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;)Z+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z+]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/Canvas;->clipRect(FFFF)Z HSPLandroid/graphics/Canvas;->clipRect(IIII)Z HSPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;)Z @@ -6260,7 +6173,7 @@ HSPLandroid/graphics/Color;->toArgb()I HSPLandroid/graphics/Color;->toArgb(J)I HSPLandroid/graphics/Color;->valueOf(I)Landroid/graphics/Color; HSPLandroid/graphics/ColorFilter;->()V -HSPLandroid/graphics/ColorFilter;->getNativeInstance()J +HSPLandroid/graphics/ColorFilter;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/PorterDuffColorFilter;,Landroid/graphics/BlendModeColorFilter;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/ColorMatrixColorFilter;->(Landroid/graphics/ColorMatrix;)V HSPLandroid/graphics/ColorMatrixColorFilter;->([F)V HSPLandroid/graphics/ColorMatrixColorFilter;->createNativeInstance()J @@ -6391,7 +6304,6 @@ HSPLandroid/graphics/ImageDecoder$InputStreamSource;->(Landroid/content/re HSPLandroid/graphics/ImageDecoder$InputStreamSource;->createImageDecoder(Z)Landroid/graphics/ImageDecoder; HSPLandroid/graphics/ImageDecoder$InputStreamSource;->getDensity()I HSPLandroid/graphics/ImageDecoder$InputStreamSource;->getResources()Landroid/content/res/Resources; -HSPLandroid/graphics/ImageDecoder$InputStreamSource;->toString()Ljava/lang/String; HSPLandroid/graphics/ImageDecoder$Source;->()V HSPLandroid/graphics/ImageDecoder$Source;->(Landroid/graphics/ImageDecoder$Source-IA;)V HSPLandroid/graphics/ImageDecoder$Source;->computeDstDensity()I @@ -6430,7 +6342,7 @@ HSPLandroid/graphics/Insets;->min(Landroid/graphics/Insets;Landroid/graphics/Ins HSPLandroid/graphics/Insets;->of(IIII)Landroid/graphics/Insets; HSPLandroid/graphics/Insets;->of(Landroid/graphics/Rect;)Landroid/graphics/Insets; HSPLandroid/graphics/Insets;->toRect()Landroid/graphics/Rect; -HSPLandroid/graphics/Insets;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/graphics/Insets;->toString()Ljava/lang/String; HSPLandroid/graphics/Insets;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/graphics/Interpolator;->(II)V HSPLandroid/graphics/Interpolator;->finalize()V @@ -6447,8 +6359,8 @@ HSPLandroid/graphics/LinearGradient;->(FFFF[J[FLandroid/graphics/Shader$Ti HSPLandroid/graphics/LinearGradient;->(FFFF[J[FLandroid/graphics/Shader$TileMode;Landroid/graphics/ColorSpace;)V HSPLandroid/graphics/LinearGradient;->createNativeInstance(JZ)J HSPLandroid/graphics/MaskFilter;->finalize()V -HSPLandroid/graphics/Matrix;->()V -HSPLandroid/graphics/Matrix;->(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Matrix;->()V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; +HSPLandroid/graphics/Matrix;->(Landroid/graphics/Matrix;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/Matrix;->checkPointArrays([FI[FII)V HSPLandroid/graphics/Matrix;->equals(Ljava/lang/Object;)Z HSPLandroid/graphics/Matrix;->getValues([F)V @@ -6492,13 +6404,13 @@ HSPLandroid/graphics/Outline;->()V HSPLandroid/graphics/Outline;->isEmpty()Z HSPLandroid/graphics/Outline;->setAlpha(F)V HSPLandroid/graphics/Outline;->setConvexPath(Landroid/graphics/Path;)V -HSPLandroid/graphics/Outline;->setEmpty()V +HSPLandroid/graphics/Outline;->setEmpty()V+]Landroid/graphics/Path;Landroid/graphics/Path;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/graphics/Outline;->setOval(IIII)V HSPLandroid/graphics/Outline;->setOval(Landroid/graphics/Rect;)V -HSPLandroid/graphics/Outline;->setPath(Landroid/graphics/Path;)V +HSPLandroid/graphics/Outline;->setPath(Landroid/graphics/Path;)V+]Landroid/graphics/Path;Landroid/graphics/Path;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/graphics/Outline;->setRect(IIII)V -HSPLandroid/graphics/Outline;->setRect(Landroid/graphics/Rect;)V -HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V +HSPLandroid/graphics/Outline;->setRect(Landroid/graphics/Rect;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline; +HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Outline;Landroid/graphics/Outline; HSPLandroid/graphics/Outline;->setRoundRect(Landroid/graphics/Rect;F)V HSPLandroid/graphics/Paint$FontMetrics;->()V HSPLandroid/graphics/Paint$FontMetricsInt;->()V @@ -6517,15 +6429,15 @@ HSPLandroid/graphics/Paint;->getFontMetrics()Landroid/graphics/Paint$FontMetrics HSPLandroid/graphics/Paint;->getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F HSPLandroid/graphics/Paint;->getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt; HSPLandroid/graphics/Paint;->getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I -HSPLandroid/graphics/Paint;->getFontMetricsInt(Ljava/lang/CharSequence;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V +HSPLandroid/graphics/Paint;->getFontMetricsInt(Ljava/lang/CharSequence;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; HSPLandroid/graphics/Paint;->getFontVariationSettings()Ljava/lang/String; HSPLandroid/graphics/Paint;->getHinting()I HSPLandroid/graphics/Paint;->getLetterSpacing()F HSPLandroid/graphics/Paint;->getMaskFilter()Landroid/graphics/MaskFilter; -HSPLandroid/graphics/Paint;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/BlendModeColorFilter;,Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/Paint;Landroid/graphics/Paint;,Landroid/text/TextPaint;]Landroid/graphics/Shader;Landroid/graphics/drawable/RippleShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/BitmapShader; +HSPLandroid/graphics/Paint;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/PorterDuffColorFilter;,Landroid/graphics/BlendModeColorFilter;,Landroid/graphics/ColorMatrixColorFilter;]Landroid/graphics/Paint;missing_types]Landroid/graphics/Shader;Landroid/graphics/SweepGradient;,Landroid/graphics/drawable/RippleShader;,Landroid/graphics/BitmapShader;,Landroid/graphics/ComposeShader; HSPLandroid/graphics/Paint;->getRunAdvance(Ljava/lang/CharSequence;IIIIZI)F HSPLandroid/graphics/Paint;->getRunAdvance([CIIIIZI)F -HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FI)F +HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FI)F+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; HSPLandroid/graphics/Paint;->getRunCharacterAdvance([CIIIIZI[FI)F HSPLandroid/graphics/Paint;->getShader()Landroid/graphics/Shader; HSPLandroid/graphics/Paint;->getShadowLayerColor()I @@ -6559,13 +6471,12 @@ HSPLandroid/graphics/Paint;->installXfermode(Landroid/graphics/Xfermode;)Landroi HSPLandroid/graphics/Paint;->isAntiAlias()Z HSPLandroid/graphics/Paint;->isDither()Z HSPLandroid/graphics/Paint;->isElegantTextHeight()Z -HSPLandroid/graphics/Paint;->isFilterBitmap()Z+]Landroid/graphics/Paint;Landroid/graphics/Paint;,Landroid/text/TextPaint; +HSPLandroid/graphics/Paint;->isFilterBitmap()Z+]Landroid/graphics/Paint;missing_types HSPLandroid/graphics/Paint;->measureText(Ljava/lang/CharSequence;II)F -HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;)F -HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;II)F +HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;)F+]Ljava/lang/String;Ljava/lang/String;]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;II)F+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/graphics/Paint;->reset()V HSPLandroid/graphics/Paint;->set(Landroid/graphics/Paint;)V -HSPLandroid/graphics/Paint;->setARGB(IIII)V+]Landroid/graphics/Paint;Landroid/graphics/Paint; HSPLandroid/graphics/Paint;->setAlpha(I)V HSPLandroid/graphics/Paint;->setAntiAlias(Z)V HSPLandroid/graphics/Paint;->setBlendMode(Landroid/graphics/BlendMode;)V @@ -6593,28 +6504,28 @@ HSPLandroid/graphics/Paint;->setStrokeMiter(F)V HSPLandroid/graphics/Paint;->setStrokeWidth(F)V HSPLandroid/graphics/Paint;->setStyle(Landroid/graphics/Paint$Style;)V HSPLandroid/graphics/Paint;->setTextAlign(Landroid/graphics/Paint$Align;)V -HSPLandroid/graphics/Paint;->setTextLocales(Landroid/os/LocaleList;)V +HSPLandroid/graphics/Paint;->setTextLocales(Landroid/os/LocaleList;)V+]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/graphics/Paint;->setTextScaleX(F)V HSPLandroid/graphics/Paint;->setTextSize(F)V HSPLandroid/graphics/Paint;->setTextSkewX(F)V HSPLandroid/graphics/Paint;->setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface; HSPLandroid/graphics/Paint;->setUnderlineText(Z)V HSPLandroid/graphics/Paint;->setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode; -HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V +HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/graphics/PaintFlagsDrawFilter;->(II)V -HSPLandroid/graphics/Path;->()V +HSPLandroid/graphics/Path;->()V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/Path;->(Landroid/graphics/Path;)V HSPLandroid/graphics/Path;->addArc(FFFFFF)V HSPLandroid/graphics/Path;->addArc(Landroid/graphics/RectF;FF)V HSPLandroid/graphics/Path;->addCircle(FFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addOval(FFFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addOval(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V -HSPLandroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/graphics/Path;->addRect(FFFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRoundRect(FFFFFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRoundRect(FFFF[FLandroid/graphics/Path$Direction;)V -HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V +HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V+]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;[FLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->approximate(F)[F HSPLandroid/graphics/Path;->arcTo(FFFFFFZ)V @@ -6629,11 +6540,11 @@ HSPLandroid/graphics/Path;->isEmpty()Z HSPLandroid/graphics/Path;->lineTo(FF)V HSPLandroid/graphics/Path;->moveTo(FF)V HSPLandroid/graphics/Path;->offset(FF)V -HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z -HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z +HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z+]Landroid/graphics/Path;Landroid/graphics/Path; +HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z+]Landroid/graphics/Path$Op;Landroid/graphics/Path$Op; HSPLandroid/graphics/Path;->rLineTo(FF)V HSPLandroid/graphics/Path;->readOnlyNI()J -HSPLandroid/graphics/Path;->reset()V +HSPLandroid/graphics/Path;->reset()V+]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/Path;->rewind()V HSPLandroid/graphics/Path;->set(Landroid/graphics/Path;)V HSPLandroid/graphics/Path;->setFillType(Landroid/graphics/Path$FillType;)V @@ -6658,9 +6569,9 @@ HSPLandroid/graphics/Point$1;->createFromParcel(Landroid/os/Parcel;)Landroid/gra HSPLandroid/graphics/Point$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/graphics/Point;->()V HSPLandroid/graphics/Point;->(II)V -HSPLandroid/graphics/Point;->(Landroid/graphics/Point;)V +HSPLandroid/graphics/Point;->(Landroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point; HSPLandroid/graphics/Point;->equals(II)Z -HSPLandroid/graphics/Point;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/Point;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/graphics/Point; HSPLandroid/graphics/Point;->hashCode()I HSPLandroid/graphics/Point;->offset(II)V HSPLandroid/graphics/Point;->readFromParcel(Landroid/os/Parcel;)V @@ -6670,7 +6581,7 @@ HSPLandroid/graphics/Point;->toString()Ljava/lang/String; HSPLandroid/graphics/PointF;->()V HSPLandroid/graphics/PointF;->(FF)V HSPLandroid/graphics/PointF;->equals(FF)Z -HSPLandroid/graphics/PointF;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/PointF;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/graphics/PointF; HSPLandroid/graphics/PointF;->length()F HSPLandroid/graphics/PointF;->length(FF)F HSPLandroid/graphics/PointF;->set(FF)V @@ -6681,9 +6592,9 @@ HSPLandroid/graphics/PorterDuffColorFilter;->equals(Ljava/lang/Object;)Z HSPLandroid/graphics/PorterDuffColorFilter;->getColor()I HSPLandroid/graphics/PorterDuffColorFilter;->getMode()Landroid/graphics/PorterDuff$Mode; HSPLandroid/graphics/PorterDuffXfermode;->(Landroid/graphics/PorterDuff$Mode;)V -HSPLandroid/graphics/RadialGradient;->(FFFFFF[J[FLandroid/graphics/Shader$TileMode;Landroid/graphics/ColorSpace;)V +HSPLandroid/graphics/RadialGradient;->(FFFFFF[J[FLandroid/graphics/Shader$TileMode;Landroid/graphics/ColorSpace;)V+][F[F HSPLandroid/graphics/RadialGradient;->(FFF[I[FLandroid/graphics/Shader$TileMode;)V -HSPLandroid/graphics/RadialGradient;->createNativeInstance(JZ)J +HSPLandroid/graphics/RadialGradient;->createNativeInstance(JZ)J+]Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace$Rgb;]Landroid/graphics/RadialGradient;Landroid/graphics/RadialGradient; HSPLandroid/graphics/RecordingCanvas;->(Landroid/graphics/RenderNode;II)V HSPLandroid/graphics/RecordingCanvas;->disableZ()V HSPLandroid/graphics/RecordingCanvas;->drawRenderNode(Landroid/graphics/RenderNode;)V @@ -6694,11 +6605,11 @@ HSPLandroid/graphics/RecordingCanvas;->finishRecording(Landroid/graphics/RenderN HSPLandroid/graphics/RecordingCanvas;->getHeight()I HSPLandroid/graphics/RecordingCanvas;->getWidth()I HSPLandroid/graphics/RecordingCanvas;->isHardwareAccelerated()Z -HSPLandroid/graphics/RecordingCanvas;->obtain(Landroid/graphics/RenderNode;II)Landroid/graphics/RecordingCanvas; -HSPLandroid/graphics/RecordingCanvas;->recycle()V +HSPLandroid/graphics/RecordingCanvas;->obtain(Landroid/graphics/RenderNode;II)Landroid/graphics/RecordingCanvas;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; +HSPLandroid/graphics/RecordingCanvas;->recycle()V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; HSPLandroid/graphics/RecordingCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V -HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Rect; -HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Rect;+]Landroid/graphics/Rect;Landroid/graphics/Rect; +HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/graphics/Rect$1;Landroid/graphics/Rect$1; HSPLandroid/graphics/Rect$1;->newArray(I)[Landroid/graphics/Rect; HSPLandroid/graphics/Rect$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/graphics/Rect;->()V @@ -6725,16 +6636,16 @@ HSPLandroid/graphics/Rect;->isEmpty()Z HSPLandroid/graphics/Rect;->isValid()Z HSPLandroid/graphics/Rect;->offset(II)V HSPLandroid/graphics/Rect;->offsetTo(II)V -HSPLandroid/graphics/Rect;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/graphics/Rect;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/graphics/Rect;->scale(F)V HSPLandroid/graphics/Rect;->set(IIII)V HSPLandroid/graphics/Rect;->set(Landroid/graphics/Rect;)V HSPLandroid/graphics/Rect;->setEmpty()V HSPLandroid/graphics/Rect;->setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z HSPLandroid/graphics/Rect;->toShortString(Ljava/lang/StringBuilder;)Ljava/lang/String; -HSPLandroid/graphics/Rect;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/graphics/Rect;->toString()Ljava/lang/String; HSPLandroid/graphics/Rect;->union(IIII)V -HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/graphics/Rect;->width()I HSPLandroid/graphics/Rect;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/graphics/RectF;->()V @@ -6744,7 +6655,7 @@ HSPLandroid/graphics/RectF;->(Landroid/graphics/RectF;)V HSPLandroid/graphics/RectF;->centerX()F HSPLandroid/graphics/RectF;->centerY()F HSPLandroid/graphics/RectF;->contains(FF)Z -HSPLandroid/graphics/RectF;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/RectF;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/graphics/RectF; HSPLandroid/graphics/RectF;->hashCode()I HSPLandroid/graphics/RectF;->height()F HSPLandroid/graphics/RectF;->inset(FF)V @@ -6760,7 +6671,7 @@ HSPLandroid/graphics/RectF;->set(Landroid/graphics/Rect;)V HSPLandroid/graphics/RectF;->set(Landroid/graphics/RectF;)V HSPLandroid/graphics/RectF;->setEmpty()V HSPLandroid/graphics/RectF;->union(FFFF)V -HSPLandroid/graphics/RectF;->union(Landroid/graphics/RectF;)V +HSPLandroid/graphics/RectF;->union(Landroid/graphics/RectF;)V+]Landroid/graphics/RectF;Landroid/graphics/RectF; HSPLandroid/graphics/RectF;->width()F HSPLandroid/graphics/Region$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Region; HSPLandroid/graphics/Region$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -6789,17 +6700,17 @@ HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->without(Landro HSPLandroid/graphics/RenderNode$PositionUpdateListener;->callPositionChanged(Ljava/lang/ref/WeakReference;JIIII)Z HSPLandroid/graphics/RenderNode$PositionUpdateListener;->callPositionLost(Ljava/lang/ref/WeakReference;J)Z HSPLandroid/graphics/RenderNode;->(J)V -HSPLandroid/graphics/RenderNode;->(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)V +HSPLandroid/graphics/RenderNode;->(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/RenderNode;->addPositionUpdateListener(Landroid/graphics/RenderNode$PositionUpdateListener;)V HSPLandroid/graphics/RenderNode;->adopt(J)Landroid/graphics/RenderNode; HSPLandroid/graphics/RenderNode;->beginRecording(II)Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/RenderNode;->clearStretch()Z HSPLandroid/graphics/RenderNode;->create(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)Landroid/graphics/RenderNode; HSPLandroid/graphics/RenderNode;->discardDisplayList()V -HSPLandroid/graphics/RenderNode;->endRecording()V +HSPLandroid/graphics/RenderNode;->endRecording()V+]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/RenderNode;->getClipToOutline()Z HSPLandroid/graphics/RenderNode;->getElevation()F -HSPLandroid/graphics/RenderNode;->getMatrix(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/RenderNode;->getMatrix(Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/graphics/RenderNode;->getPivotY()F HSPLandroid/graphics/RenderNode;->getRotationX()F HSPLandroid/graphics/RenderNode;->getRotationY()F @@ -6846,15 +6757,15 @@ HSPLandroid/graphics/RuntimeShader;->setFloatUniform(Ljava/lang/String;FFFFI)V HSPLandroid/graphics/RuntimeShader;->setInputShader(Ljava/lang/String;Landroid/graphics/Shader;)V HSPLandroid/graphics/RuntimeShader;->setUniform(Ljava/lang/String;[FZ)V HSPLandroid/graphics/Shader;->()V -HSPLandroid/graphics/Shader;->(Landroid/graphics/ColorSpace;)V +HSPLandroid/graphics/Shader;->(Landroid/graphics/ColorSpace;)V+]Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace$Rgb; HSPLandroid/graphics/Shader;->colorSpace()Landroid/graphics/ColorSpace; HSPLandroid/graphics/Shader;->convertColors([I)[J HSPLandroid/graphics/Shader;->detectColorSpace([J)Landroid/graphics/ColorSpace; HSPLandroid/graphics/Shader;->discardNativeInstance()V -HSPLandroid/graphics/Shader;->discardNativeInstanceLocked()V -HSPLandroid/graphics/Shader;->getNativeInstance()J -HSPLandroid/graphics/Shader;->getNativeInstance(Z)J -HSPLandroid/graphics/Shader;->setLocalMatrix(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Shader;->discardNativeInstanceLocked()V+]Ljava/lang/Runnable;Llibcore/util/NativeAllocationRegistry$CleanerRunner; +HSPLandroid/graphics/Shader;->getNativeInstance()J+]Landroid/graphics/Shader;megamorphic_types +HSPLandroid/graphics/Shader;->getNativeInstance(Z)J+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Shader;megamorphic_types]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; +HSPLandroid/graphics/Shader;->setLocalMatrix(Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Shader;Landroid/graphics/SweepGradient;,Landroid/graphics/BitmapShader; HSPLandroid/graphics/Shader;->shouldDiscardNativeInstance(Z)Z HSPLandroid/graphics/SurfaceTexture$1;->handleMessage(Landroid/os/Message;)V HSPLandroid/graphics/SurfaceTexture;->(I)V @@ -6871,7 +6782,7 @@ HSPLandroid/graphics/TextureLayer;->(Landroid/graphics/HardwareRenderer;J) HSPLandroid/graphics/TextureLayer;->close()V HSPLandroid/graphics/TextureLayer;->detachSurfaceTexture()V HSPLandroid/graphics/Typeface$Builder;->build()Landroid/graphics/Typeface; -HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String; +HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->(Landroid/graphics/fonts/FontFamily;)V HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->build()Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->setStyle(Landroid/graphics/fonts/FontStyle;)Landroid/graphics/Typeface$CustomFallbackBuilder; @@ -6884,10 +6795,10 @@ HSPLandroid/graphics/Typeface;->createFromResources(Landroid/content/res/FontRes HSPLandroid/graphics/Typeface;->createWeightStyle(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->defaultFromStyle(I)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->deserializeFontMap(Ljava/nio/ByteBuffer;Ljava/util/Map;)[J -HSPLandroid/graphics/Typeface;->equals(Ljava/lang/Object;)Z -HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;+]Landroid/util/LruCache;Landroid/util/LruCache; HSPLandroid/graphics/Typeface;->getStyle()I -HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface;+]Ljava/util/Map;Landroid/util/ArrayMap; HSPLandroid/graphics/Typeface;->getSystemFontFamilyName()Ljava/lang/String; HSPLandroid/graphics/Typeface;->hasFontFamily(Ljava/lang/String;)Z HSPLandroid/graphics/Typeface;->readString(Ljava/nio/ByteBuffer;)Ljava/lang/String; @@ -7096,7 +7007,7 @@ HSPLandroid/graphics/drawable/BitmapDrawable;->(Landroid/graphics/drawable HSPLandroid/graphics/drawable/BitmapDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/BitmapDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/BitmapDrawable;->clearMutated()V -HSPLandroid/graphics/drawable/BitmapDrawable;->computeBitmapSize()V +HSPLandroid/graphics/drawable/BitmapDrawable;->computeBitmapSize()V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap; HSPLandroid/graphics/drawable/BitmapDrawable;->draw(Landroid/graphics/Canvas;)V HSPLandroid/graphics/drawable/BitmapDrawable;->getBitmap()Landroid/graphics/Bitmap; HSPLandroid/graphics/drawable/BitmapDrawable;->getChangingConfigurations()I @@ -7126,7 +7037,7 @@ HSPLandroid/graphics/drawable/BitmapDrawable;->setTileModeXY(Landroid/graphics/S HSPLandroid/graphics/drawable/BitmapDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V HSPLandroid/graphics/drawable/BitmapDrawable;->setTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/graphics/drawable/BitmapDrawable;->updateDstRectAndInsetsIfDirty()V -HSPLandroid/graphics/drawable/BitmapDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->updateLocalState(Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/BitmapDrawable;Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/graphics/drawable/BitmapDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;I)V HSPLandroid/graphics/drawable/BitmapDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/ClipDrawable$ClipState;->(Landroid/graphics/drawable/ClipDrawable$ClipState;Landroid/content/res/Resources;)V @@ -7150,13 +7061,13 @@ HSPLandroid/graphics/drawable/ColorDrawable;->(Landroid/graphics/drawable/ HSPLandroid/graphics/drawable/ColorDrawable;->(Landroid/graphics/drawable/ColorDrawable$ColorState;Landroid/content/res/Resources;Landroid/graphics/drawable/ColorDrawable-IA;)V HSPLandroid/graphics/drawable/ColorDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/ColorDrawable;->clearMutated()V -HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/drawable/ColorDrawable;->getAlpha()I HSPLandroid/graphics/drawable/ColorDrawable;->getChangingConfigurations()I HSPLandroid/graphics/drawable/ColorDrawable;->getColor()I HSPLandroid/graphics/drawable/ColorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; -HSPLandroid/graphics/drawable/ColorDrawable;->getOpacity()I -HSPLandroid/graphics/drawable/ColorDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/ColorDrawable;->getOpacity()I+]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/ColorDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable;]Landroid/graphics/Outline;Landroid/graphics/Outline; HSPLandroid/graphics/drawable/ColorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/ColorDrawable;->isStateful()Z HSPLandroid/graphics/drawable/ColorDrawable;->mutate()Landroid/graphics/drawable/Drawable; @@ -7165,7 +7076,7 @@ HSPLandroid/graphics/drawable/ColorDrawable;->setAlpha(I)V HSPLandroid/graphics/drawable/ColorDrawable;->setColor(I)V HSPLandroid/graphics/drawable/ColorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V HSPLandroid/graphics/drawable/ColorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V -HSPLandroid/graphics/drawable/ColorDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ColorDrawable;->updateLocalState(Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable; HSPLandroid/graphics/drawable/ColorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/Drawable$ConstantState;->()V HSPLandroid/graphics/drawable/Drawable$ConstantState;->canApplyTheme()Z @@ -7198,7 +7109,7 @@ HSPLandroid/graphics/drawable/Drawable;->getPadding(Landroid/graphics/Rect;)Z HSPLandroid/graphics/drawable/Drawable;->getState()[I HSPLandroid/graphics/drawable/Drawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/Drawable;->inflateWithAttributes(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/TypedArray;I)V -HSPLandroid/graphics/drawable/Drawable;->invalidateSelf()V +HSPLandroid/graphics/drawable/Drawable;->invalidateSelf()V+]Landroid/graphics/drawable/Drawable$Callback;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/Drawable;->isProjected()Z HSPLandroid/graphics/drawable/Drawable;->isStateful()Z HSPLandroid/graphics/drawable/Drawable;->isVisible()Z @@ -7209,14 +7120,14 @@ HSPLandroid/graphics/drawable/Drawable;->onBoundsChange(Landroid/graphics/Rect;) HSPLandroid/graphics/drawable/Drawable;->onLevelChange(I)Z HSPLandroid/graphics/drawable/Drawable;->onStateChange([I)Z HSPLandroid/graphics/drawable/Drawable;->parseBlendMode(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendMode; -HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I +HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/graphics/drawable/Drawable;->resolveOpacity(II)I HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(FII)F HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(IIIZ)I HSPLandroid/graphics/drawable/Drawable;->scheduleSelf(Ljava/lang/Runnable;J)V HSPLandroid/graphics/drawable/Drawable;->setAutoMirrored(Z)V -HSPLandroid/graphics/drawable/Drawable;->setBounds(IIII)V -HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/Drawable;->setBounds(IIII)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/Drawable;->setCallback(Landroid/graphics/drawable/Drawable$Callback;)V HSPLandroid/graphics/drawable/Drawable;->setChangingConfigurations(I)V HSPLandroid/graphics/drawable/Drawable;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V @@ -7225,21 +7136,21 @@ HSPLandroid/graphics/drawable/Drawable;->setHotspot(FF)V HSPLandroid/graphics/drawable/Drawable;->setLayoutDirection(I)Z HSPLandroid/graphics/drawable/Drawable;->setLevel(I)Z HSPLandroid/graphics/drawable/Drawable;->setSrcDensityOverride(I)V -HSPLandroid/graphics/drawable/Drawable;->setState([I)Z +HSPLandroid/graphics/drawable/Drawable;->setState([I)Z+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/Drawable;->setTint(I)V HSPLandroid/graphics/drawable/Drawable;->setTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/graphics/drawable/Drawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V -HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V -HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter; -HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; +HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/BlendModeColorFilter;Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/PorterDuffColorFilter;Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->()V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->(Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback-IA;)V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback; HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback; -HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable; -HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->addChild(Landroid/graphics/drawable/Drawable;)I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->addChild(Landroid/graphics/drawable/Drawable;)I+]Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/StateListDrawable$StateListState;,Landroid/graphics/drawable/AnimationDrawable$AnimationState;]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canApplyTheme()Z HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canConstantState()Z @@ -7281,16 +7192,16 @@ HSPLandroid/graphics/drawable/DrawableContainer;->getOpacity()I HSPLandroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets;+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/NinePatchDrawable; HSPLandroid/graphics/drawable/DrawableContainer;->getOutline(Landroid/graphics/Outline;)V HSPLandroid/graphics/drawable/DrawableContainer;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;]Landroid/graphics/Rect;Landroid/graphics/Rect; -HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/graphics/drawable/DrawableContainer;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;]Landroid/graphics/drawable/DrawableContainer;Landroid/graphics/drawable/AnimatedStateListDrawable;,Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable;,Landroid/graphics/drawable/StateListDrawable;,Landroid/graphics/drawable/AnimationDrawable;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/DrawableContainer;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/StateListDrawable$StateListState;]Landroid/graphics/drawable/DrawableContainer;Landroid/graphics/drawable/StateListDrawable; HSPLandroid/graphics/drawable/DrawableContainer;->isAutoMirrored()Z HSPLandroid/graphics/drawable/DrawableContainer;->isStateful()Z -HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/AnimationDrawable;,Landroid/graphics/drawable/NinePatchDrawable;,Landroid/graphics/drawable/AnimatedVectorDrawable; +HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/DrawableContainer;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/DrawableContainer;->needsMirroring()Z HSPLandroid/graphics/drawable/DrawableContainer;->onBoundsChange(Landroid/graphics/Rect;)V HSPLandroid/graphics/drawable/DrawableContainer;->onStateChange([I)Z -HSPLandroid/graphics/drawable/DrawableContainer;->selectDrawable(I)Z +HSPLandroid/graphics/drawable/DrawableContainer;->selectDrawable(I)Z+]Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/StateListDrawable$StateListState;,Landroid/graphics/drawable/AnimationDrawable$AnimationState;]Landroid/graphics/drawable/DrawableContainer;Landroid/graphics/drawable/AnimationDrawable;,Landroid/graphics/drawable/StateListDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/DrawableContainer;->setAlpha(I)V HSPLandroid/graphics/drawable/DrawableContainer;->setAutoMirrored(Z)V HSPLandroid/graphics/drawable/DrawableContainer;->setColorFilter(Landroid/graphics/ColorFilter;)V @@ -7339,7 +7250,7 @@ HSPLandroid/graphics/drawable/DrawableWrapper;->onLevelChange(I)Z HSPLandroid/graphics/drawable/DrawableWrapper;->onStateChange([I)Z HSPLandroid/graphics/drawable/DrawableWrapper;->setAlpha(I)V HSPLandroid/graphics/drawable/DrawableWrapper;->setColorFilter(Landroid/graphics/ColorFilter;)V -HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/DrawableWrapper;Landroid/graphics/drawable/InsetDrawable;,Landroid/graphics/drawable/RotateDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/DrawableWrapper;->setHotspot(FF)V HSPLandroid/graphics/drawable/DrawableWrapper;->setTintBlendMode(Landroid/graphics/BlendMode;)V HSPLandroid/graphics/drawable/DrawableWrapper;->setTintList(Landroid/content/res/ColorStateList;)V @@ -7347,12 +7258,12 @@ HSPLandroid/graphics/drawable/DrawableWrapper;->setVisible(ZZ)Z HSPLandroid/graphics/drawable/DrawableWrapper;->updateLocalState(Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/DrawableWrapper;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->-$$Nest$mcomputeOpacity(Landroid/graphics/drawable/GradientDrawable$GradientState;)V -HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V+][F[F -HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V+][F[F][Landroid/content/res/ColorStateList;[Landroid/content/res/ColorStateList; +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V+]Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/graphics/drawable/GradientDrawable$GradientState; HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->applyDensityScaling(II)V HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->canApplyTheme()Z -HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->computeOpacity()V -HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->computeOpacity()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList; +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->getChangingConfigurations()I+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList; HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->hasCenterColor()Z HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->newDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; @@ -7365,27 +7276,26 @@ HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setStroke(ILandro HSPLandroid/graphics/drawable/GradientDrawable;->()V HSPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;Landroid/graphics/drawable/GradientDrawable-IA;)V -HSPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V HSPLandroid/graphics/drawable/GradientDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->applyThemeChildElements(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/GradientDrawable;->clearMutated()V -HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; -HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z -HSPLandroid/graphics/drawable/GradientDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;,Landroid/graphics/Canvas;]Landroid/graphics/RectF;Landroid/graphics/RectF; +HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;]Landroid/graphics/drawable/GradientDrawable$Orientation;Landroid/graphics/drawable/GradientDrawable$Orientation;]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/GradientDrawable;->getChangingConfigurations()I+]Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/graphics/drawable/GradientDrawable$GradientState; HSPLandroid/graphics/drawable/GradientDrawable;->getColorFilter()Landroid/graphics/ColorFilter; HSPLandroid/graphics/drawable/GradientDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; HSPLandroid/graphics/drawable/GradientDrawable;->getFloatOrFraction(Landroid/content/res/TypedArray;IF)F HSPLandroid/graphics/drawable/GradientDrawable;->getIntrinsicHeight()I HSPLandroid/graphics/drawable/GradientDrawable;->getIntrinsicWidth()I HSPLandroid/graphics/drawable/GradientDrawable;->getOpacity()I -HSPLandroid/graphics/drawable/GradientDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/GradientDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Outline;Landroid/graphics/Outline; HSPLandroid/graphics/drawable/GradientDrawable;->getPadding(Landroid/graphics/Rect;)Z HSPLandroid/graphics/drawable/GradientDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->isOpaque(I)Z HSPLandroid/graphics/drawable/GradientDrawable;->isOpaqueForState()Z -HSPLandroid/graphics/drawable/GradientDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/GradientDrawable;->isStateful()Z+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList; HSPLandroid/graphics/drawable/GradientDrawable;->modulateAlpha(I)I HSPLandroid/graphics/drawable/GradientDrawable;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/GradientDrawable;->onBoundsChange(Landroid/graphics/Rect;)V @@ -7412,12 +7322,12 @@ HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawablePadding(L HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSize(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSolid(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableStroke(Landroid/content/res/TypedArray;)V -HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V -HSPLandroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/drawable/Icon; HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/graphics/drawable/Icon;->(I)V -HSPLandroid/graphics/drawable/Icon;->(Landroid/os/Parcel;)V +HSPLandroid/graphics/drawable/Icon;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/graphics/Bitmap$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/graphics/drawable/Icon;->createWithAdaptiveBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/drawable/Icon; HSPLandroid/graphics/drawable/Icon;->createWithBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/drawable/Icon; HSPLandroid/graphics/drawable/Icon;->createWithResource(Landroid/content/Context;I)Landroid/graphics/drawable/Icon; @@ -7435,7 +7345,7 @@ HSPLandroid/graphics/drawable/Icon;->loadDrawableInner(Landroid/content/Context; HSPLandroid/graphics/drawable/Icon;->scaleDownIfNecessary(Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; HSPLandroid/graphics/drawable/Icon;->setBitmap(Landroid/graphics/Bitmap;)V HSPLandroid/graphics/drawable/Icon;->setTint(I)Landroid/graphics/drawable/Icon; -HSPLandroid/graphics/drawable/Icon;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/graphics/drawable/Icon;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->-$$Nest$fputmThemeAttrs(Landroid/graphics/drawable/InsetDrawable$InsetState;[I)V HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->applyDensityScaling(II)V @@ -7453,7 +7363,7 @@ HSPLandroid/graphics/drawable/InsetDrawable;->(Landroid/graphics/drawable/ HSPLandroid/graphics/drawable/InsetDrawable;->(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;Landroid/graphics/drawable/InsetDrawable-IA;)V HSPLandroid/graphics/drawable/InsetDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/InsetDrawable;->getInset(Landroid/content/res/TypedArray;ILandroid/graphics/drawable/InsetDrawable$InsetValue;)Landroid/graphics/drawable/InsetDrawable$InsetValue; -HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/InsetDrawable;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/InsetDrawable$InsetValue;Landroid/graphics/drawable/InsetDrawable$InsetValue; HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicHeight()I HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicWidth()I HSPLandroid/graphics/drawable/InsetDrawable;->getOpacity()I @@ -7465,7 +7375,7 @@ HSPLandroid/graphics/drawable/InsetDrawable;->onBoundsChange(Landroid/graphics/R HSPLandroid/graphics/drawable/InsetDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/InsetDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->(I)V -HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable$ConstantState;missing_types]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->applyDensityScaling(II)V HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->setDensity(I)V @@ -7477,7 +7387,7 @@ HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->applyDensityScaling(II) HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->canApplyTheme()Z HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->canConstantState()Z HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getChangingConfigurations()I -HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getOpacity()I +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getOpacity()I+]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->invalidateCache()V HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->isStateful()Z HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable()Landroid/graphics/drawable/Drawable; @@ -7485,7 +7395,7 @@ HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable(Landroid/co HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->onDensityChanged(II)V HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->setDensity(I)V HSPLandroid/graphics/drawable/LayerDrawable;->()V -HSPLandroid/graphics/drawable/LayerDrawable;->(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/LayerDrawable;->(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/LayerDrawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->([Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/LayerDrawable;->([Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/LayerDrawable$LayerState;)V HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/Drawable;[IIIIII)Landroid/graphics/drawable/LayerDrawable$ChildDrawable; @@ -7503,23 +7413,23 @@ HSPLandroid/graphics/drawable/LayerDrawable;->findIndexByLayerId(I)I HSPLandroid/graphics/drawable/LayerDrawable;->getChangingConfigurations()I HSPLandroid/graphics/drawable/LayerDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; HSPLandroid/graphics/drawable/LayerDrawable;->getDrawable(I)Landroid/graphics/drawable/Drawable; -HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicHeight()I -HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicHeight()I+]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/LayerDrawable;missing_types]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->getNumberOfLayers()I -HSPLandroid/graphics/drawable/LayerDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/LayerDrawable;->getOpacity()I+]Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable$LayerState;,Landroid/graphics/drawable/TransitionDrawable$TransitionState; HSPLandroid/graphics/drawable/LayerDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/LayerDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/LayerDrawable;->inflateLayers(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V -HSPLandroid/graphics/drawable/LayerDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/LayerDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable$LayerState;,Landroid/graphics/drawable/RippleDrawable$RippleState;,Landroid/graphics/drawable/TransitionDrawable$TransitionState;]Landroid/graphics/drawable/LayerDrawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->isAutoMirrored()Z HSPLandroid/graphics/drawable/LayerDrawable;->isProjected()Z HSPLandroid/graphics/drawable/LayerDrawable;->isStateful()Z -HSPLandroid/graphics/drawable/LayerDrawable;->jumpToCurrentState()V -HSPLandroid/graphics/drawable/LayerDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/LayerDrawable;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/graphics/drawable/LayerDrawable;->mutate()Landroid/graphics/drawable/Drawable;+]Landroid/graphics/drawable/LayerDrawable;missing_types]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->onBoundsChange(Landroid/graphics/Rect;)V HSPLandroid/graphics/drawable/LayerDrawable;->onStateChange([I)Z -HSPLandroid/graphics/drawable/LayerDrawable;->refreshChildPadding(ILandroid/graphics/drawable/LayerDrawable$ChildDrawable;)Z+]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/graphics/drawable/LayerDrawable;->refreshChildPadding(ILandroid/graphics/drawable/LayerDrawable$ChildDrawable;)Z+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/LayerDrawable;->refreshPadding()V HSPLandroid/graphics/drawable/LayerDrawable;->resolveGravity(IIIII)I HSPLandroid/graphics/drawable/LayerDrawable;->resumeChildInvalidation()V @@ -7535,10 +7445,10 @@ HSPLandroid/graphics/drawable/LayerDrawable;->setLayerInset(IIIII)V HSPLandroid/graphics/drawable/LayerDrawable;->setPaddingMode(I)V HSPLandroid/graphics/drawable/LayerDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V HSPLandroid/graphics/drawable/LayerDrawable;->setTintList(Landroid/content/res/ColorStateList;)V -HSPLandroid/graphics/drawable/LayerDrawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/LayerDrawable;->setVisible(ZZ)Z+]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->suspendChildInvalidation()V HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V -HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/LayerDrawable;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/LayerDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/NinePatchDrawable$$ExternalSyntheticLambda0;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V @@ -7636,11 +7546,11 @@ HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->newDrawable(Landroid/ HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->onDensityChanged(II)V HSPLandroid/graphics/drawable/RippleDrawable;->()V HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V -HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;Landroid/graphics/drawable/RippleDrawable-IA;)V HSPLandroid/graphics/drawable/RippleDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/RippleDrawable;->canApplyTheme()Z -HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V +HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->clearHotspots()V HSPLandroid/graphics/drawable/RippleDrawable;->computeRadius()F HSPLandroid/graphics/drawable/RippleDrawable;->createAnimationProperties(FFFFFF)Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties; @@ -7648,22 +7558,22 @@ HSPLandroid/graphics/drawable/RippleDrawable;->createConstantState(Landroid/grap HSPLandroid/graphics/drawable/RippleDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/RippleDrawable$RippleState; HSPLandroid/graphics/drawable/RippleDrawable;->draw(Landroid/graphics/Canvas;)V HSPLandroid/graphics/drawable/RippleDrawable;->drawBackgroundAndRipples(Landroid/graphics/Canvas;)V -HSPLandroid/graphics/drawable/RippleDrawable;->drawContent(Landroid/graphics/Canvas;)V -HSPLandroid/graphics/drawable/RippleDrawable;->drawPatterned(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/RippleDrawable;->drawContent(Landroid/graphics/Canvas;)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable; +HSPLandroid/graphics/drawable/RippleDrawable;->drawPatterned(Landroid/graphics/Canvas;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/RippleAnimationSession;Landroid/graphics/drawable/RippleAnimationSession; HSPLandroid/graphics/drawable/RippleDrawable;->drawPatternedBackground(Landroid/graphics/Canvas;FF)V HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedAnimation()V HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedBackgroundAnimation()V HSPLandroid/graphics/drawable/RippleDrawable;->getComputedRadius()I HSPLandroid/graphics/drawable/RippleDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; -HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect; +HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->getMaskType()I HSPLandroid/graphics/drawable/RippleDrawable;->getOpacity()I -HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable;,Landroid/graphics/drawable/GradientDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf()V HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf(Z)V HSPLandroid/graphics/drawable/RippleDrawable;->isBounded()Z+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; -HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z +HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->isStateful()Z HSPLandroid/graphics/drawable/RippleDrawable;->jumpToCurrentState()V HSPLandroid/graphics/drawable/RippleDrawable;->mutate()Landroid/graphics/drawable/Drawable; @@ -7724,10 +7634,8 @@ HSPLandroid/graphics/drawable/RippleShader;->setRadius(F)V HSPLandroid/graphics/drawable/RippleShader;->setResolution(FF)V HSPLandroid/graphics/drawable/RippleShader;->setShader(Landroid/graphics/Shader;)V HSPLandroid/graphics/drawable/RippleShader;->setTouch(FF)V -HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->-$$Nest$fgetmThemeAttrs(Landroid/graphics/drawable/RotateDrawable$RotateState;)[I HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; -HSPLandroid/graphics/drawable/RotateDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/RotateDrawable;->draw(Landroid/graphics/Canvas;)V HSPLandroid/graphics/drawable/RotateDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/RotateDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; @@ -7801,7 +7709,7 @@ HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->(Landro HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->getChangingConfigurations()I HSPLandroid/graphics/drawable/TransitionDrawable;->([Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/TransitionDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState; -HSPLandroid/graphics/drawable/TransitionDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/TransitionDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/drawable/TransitionDrawable;Landroid/graphics/drawable/TransitionDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/ColorDrawable; HSPLandroid/graphics/drawable/TransitionDrawable;->setCrossFadeEnabled(Z)V HSPLandroid/graphics/drawable/TransitionDrawable;->startTransition(I)V HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->canApplyTheme()Z @@ -7822,22 +7730,22 @@ HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getPropertyIndex(Ljava/ HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->isStateful()Z HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->onStateChange([I)Z -HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;,Landroid/content/res/GradientColor;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/Shader;Landroid/graphics/LinearGradient;,Landroid/graphics/RadialGradient;]Landroid/content/res/GradientColor;Landroid/content/res/GradientColor; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-$$Nest$fgetmChangingConfigurations(Landroid/graphics/drawable/VectorDrawable$VGroup;)I HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-$$Nest$fgetmNativePtr(Landroid/graphics/drawable/VectorDrawable$VGroup;)J HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->()V -HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V -HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VClipPath; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->canApplyTheme()Z HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getGroupName()Ljava/lang/String; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativePtr()J -HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getProperty(Ljava/lang/String;)Landroid/util/Property; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->isStateful()Z HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z -HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/VectorDrawable$VObject;->()V HSPLandroid/graphics/drawable/VectorDrawable$VObject;->isTreeValid()Z @@ -7847,25 +7755,25 @@ HSPLandroid/graphics/drawable/VectorDrawable$VPath;->(Landroid/graphics/dr HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getPathName()Ljava/lang/String; HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getProperty(Ljava/lang/String;)Landroid/util/Property; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->-$$Nest$mcreateNativeTree(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyDensityScaling(II)V HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canApplyTheme()Z -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canReuseCache()Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canReuseCache()Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTree(Landroid/graphics/drawable/VectorDrawable$VGroup;)V -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->finalize()V -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getAlpha()F +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getAlpha()F+]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getChangingConfigurations()I -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getNativeRenderer()J -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getNativeRenderer()J+]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr; +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->isStateful()Z+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onStateChange([I)Z -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setAlpha(F)Z HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setDensity(I)Z -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->updateCacheStates()V HSPLandroid/graphics/drawable/VectorDrawable;->-$$Nest$smnAddChild(JJ)V HSPLandroid/graphics/drawable/VectorDrawable;->-$$Nest$smnCreateFullPath()J @@ -7892,31 +7800,31 @@ HSPLandroid/graphics/drawable/VectorDrawable;->applyTheme(Landroid/content/res/R HSPLandroid/graphics/drawable/VectorDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/VectorDrawable;->clearMutated()V HSPLandroid/graphics/drawable/VectorDrawable;->computeVectorSize()V -HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/ColorFilter;Landroid/graphics/PorterDuffColorFilter;,Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/drawable/VectorDrawable;->getAlpha()I HSPLandroid/graphics/drawable/VectorDrawable;->getChangingConfigurations()I HSPLandroid/graphics/drawable/VectorDrawable;->getColorFilter()Landroid/graphics/ColorFilter; HSPLandroid/graphics/drawable/VectorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicHeight()I -HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/VectorDrawable;->getNativeTree()J HSPLandroid/graphics/drawable/VectorDrawable;->getOpacity()I HSPLandroid/graphics/drawable/VectorDrawable;->getPixelSize()F HSPLandroid/graphics/drawable/VectorDrawable;->getTargetByName(Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V -HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup; +HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/graphics/drawable/VectorDrawable$VClipPath;Landroid/graphics/drawable/VectorDrawable$VClipPath;]Ljava/util/Stack;Ljava/util/Stack;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Landroid/graphics/drawable/VectorDrawable$VFullPath;Landroid/graphics/drawable/VectorDrawable$VFullPath; HSPLandroid/graphics/drawable/VectorDrawable;->isAutoMirrored()Z -HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; HSPLandroid/graphics/drawable/VectorDrawable;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/VectorDrawable;->needMirroring()Z -HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V HSPLandroid/graphics/drawable/VectorDrawable;->setAlpha(I)V HSPLandroid/graphics/drawable/VectorDrawable;->setAutoMirrored(Z)V HSPLandroid/graphics/drawable/VectorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V HSPLandroid/graphics/drawable/VectorDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V HSPLandroid/graphics/drawable/VectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V -HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V+]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/VectorDrawable;->updateLocalState(Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/VectorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/graphics/drawable/shapes/OvalShape;->()V @@ -7982,7 +7890,7 @@ HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->()V HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setIndent(FI)V HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setTabStops([FF)V HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setWidth(F)V -HSPLandroid/graphics/text/LineBreaker$Result;->(J)V +HSPLandroid/graphics/text/LineBreaker$Result;->(J)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/text/LineBreaker$Result;->getEndLineHyphenEdit(I)I HSPLandroid/graphics/text/LineBreaker$Result;->getLineAscent(I)F HSPLandroid/graphics/text/LineBreaker$Result;->getLineBreakOffset(I)I @@ -7991,13 +7899,12 @@ HSPLandroid/graphics/text/LineBreaker$Result;->getLineDescent(I)F HSPLandroid/graphics/text/LineBreaker$Result;->getLineWidth(I)F HSPLandroid/graphics/text/LineBreaker$Result;->getStartLineHyphenEdit(I)I HSPLandroid/graphics/text/LineBreaker$Result;->hasLineTab(I)Z -HSPLandroid/graphics/text/LineBreaker;->(III[I)V -HSPLandroid/graphics/text/LineBreaker;->computeLineBreaks(Landroid/graphics/text/MeasuredText;Landroid/graphics/text/LineBreaker$ParagraphConstraints;I)Landroid/graphics/text/LineBreaker$Result; +HSPLandroid/graphics/text/LineBreaker;->computeLineBreaks(Landroid/graphics/text/MeasuredText;Landroid/graphics/text/LineBreaker$ParagraphConstraints;I)Landroid/graphics/text/LineBreaker$Result;+]Landroid/graphics/text/MeasuredText;Landroid/graphics/text/MeasuredText; HSPLandroid/graphics/text/MeasuredText$Builder;->([C)V HSPLandroid/graphics/text/MeasuredText$Builder;->appendReplacementRun(Landroid/graphics/Paint;IF)Landroid/graphics/text/MeasuredText$Builder; HSPLandroid/graphics/text/MeasuredText$Builder;->appendStyleRun(Landroid/graphics/Paint;IZ)Landroid/graphics/text/MeasuredText$Builder; -HSPLandroid/graphics/text/MeasuredText$Builder;->appendStyleRun(Landroid/graphics/Paint;Landroid/graphics/text/LineBreakConfig;IZ)Landroid/graphics/text/MeasuredText$Builder; -HSPLandroid/graphics/text/MeasuredText$Builder;->build()Landroid/graphics/text/MeasuredText; +HSPLandroid/graphics/text/MeasuredText$Builder;->appendStyleRun(Landroid/graphics/Paint;Landroid/graphics/text/LineBreakConfig;IZ)Landroid/graphics/text/MeasuredText$Builder;+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Landroid/graphics/text/LineBreakConfig;Landroid/graphics/text/LineBreakConfig; +HSPLandroid/graphics/text/MeasuredText$Builder;->build()Landroid/graphics/text/MeasuredText;+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/text/MeasuredText$Builder;->ensureNativePtrNoReuse()V HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(I)Landroid/graphics/text/MeasuredText$Builder; HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(Z)Landroid/graphics/text/MeasuredText$Builder; @@ -8103,7 +8010,6 @@ HSPLandroid/hardware/camera2/CameraCharacteristics$Key;->equals(Ljava/lang/Objec HSPLandroid/hardware/camera2/CameraCharacteristics$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; HSPLandroid/hardware/camera2/CameraCharacteristics;->-$$Nest$fgetmLock(Landroid/hardware/camera2/CameraCharacteristics;)Ljava/lang/Object; HSPLandroid/hardware/camera2/CameraCharacteristics;->-$$Nest$fputmFoldedDeviceState(Landroid/hardware/camera2/CameraCharacteristics;Z)V -HSPLandroid/hardware/camera2/CameraCharacteristics;->(Landroid/hardware/camera2/impl/CameraMetadataNative;)V HSPLandroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; HSPLandroid/hardware/camera2/CameraCharacteristics;->getDeviceStateListener()Landroid/hardware/camera2/CameraManager$DeviceStateListener; HSPLandroid/hardware/camera2/CameraCharacteristics;->overrideProperty(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; @@ -8111,7 +8017,6 @@ HSPLandroid/hardware/camera2/CameraManager$AvailabilityCallback;->()V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;->compare(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$3;->(Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Landroid/hardware/camera2/CameraManager$AvailabilityCallback;)V -HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$6;->(Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Ljava/lang/String;Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Ljava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->asBinder()Landroid/os/IBinder; HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->cameraIdHasConcurrentStreamsLocked(Ljava/lang/String;)Z HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->connectCameraServiceLocked()V @@ -8119,23 +8024,18 @@ HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->extractCameraId HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->get()Landroid/hardware/camera2/CameraManager$CameraManagerGlobal; HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->getCameraIdList()[Ljava/lang/String; HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->getCameraService()Landroid/hardware/ICameraService; -HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->isAvailable(I)Z HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onCameraAccessPrioritiesChanged()V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onStatusChanged(ILjava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onStatusChangedLocked(ILjava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onTorchStatusChanged(ILjava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onTorchStatusChangedLocked(ILjava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->postSingleAccessPriorityChangeUpdate(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Ljava/util/concurrent/Executor;)V -HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->postSingleUpdate(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Ljava/util/concurrent/Executor;Ljava/lang/String;Ljava/lang/String;I)V -HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->registerDeviceStateListener(Landroid/hardware/camera2/CameraCharacteristics;Landroid/content/Context;)V -HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->(Landroid/content/Context;)V HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->addDeviceStateListener(Landroid/hardware/camera2/CameraManager$DeviceStateListener;)V HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->handleStateChange(I)V HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->onBaseStateChanged(I)V HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->onStateChanged(I)V HSPLandroid/hardware/camera2/CameraManager;->(Landroid/content/Context;)V HSPLandroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics; -HSPLandroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;Z)Landroid/hardware/camera2/CameraCharacteristics;+]Landroid/hardware/camera2/CameraManager;Landroid/hardware/camera2/CameraManager;]Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;]Landroid/hardware/ICameraService;Landroid/hardware/ICameraService$Stub$Proxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative;]Ljava/util/Map;Ljava/util/HashMap; HSPLandroid/hardware/camera2/CameraManager;->getCameraIdList()[Ljava/lang/String; HSPLandroid/hardware/camera2/CameraManager;->getDisplaySize()Landroid/util/Size; HSPLandroid/hardware/camera2/CameraManager;->getPhysicalCameraMultiResolutionConfigs(Ljava/lang/String;Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/ICameraService;)Ljava/util/Map; @@ -8154,7 +8054,7 @@ HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->()V HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->finalize()V HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/hardware/camera2/impl/GetCommand;megamorphic_types -HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getBase(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;+]Landroid/hardware/camera2/impl/CameraMetadataNative$Key;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;]Landroid/hardware/camera2/marshal/Marshaler;megamorphic_types]Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getBase(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;+]Landroid/hardware/camera2/impl/CameraMetadataNative$Key;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;]Landroid/hardware/camera2/marshal/Marshaler;megamorphic_types]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative; HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->move(Landroid/hardware/camera2/impl/CameraMetadataNative;)Landroid/hardware/camera2/impl/CameraMetadataNative; HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->readValues(I)[B HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setCameraId(I)V @@ -8168,7 +8068,7 @@ HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->equals(Ljava HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->hashCode()I HSPLandroid/hardware/camera2/marshal/MarshalRegistry;->getMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler;+]Ljava/util/HashMap;Ljava/util/HashMap; HSPLandroid/hardware/camera2/marshal/Marshaler;->(Landroid/hardware/camera2/marshal/MarshalQueryable;Landroid/hardware/camera2/utils/TypeReference;I)V -HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object;+]Landroid/hardware/camera2/marshal/Marshaler;Landroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;,Landroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;,Landroid/hardware/camera2/marshal/impl/MarshalQueryablePair$MarshalerPair;]Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller;Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$1;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$2;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$3;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$5;]Ljava/lang/Class;Ljava/lang/Class; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object;+]Landroid/hardware/camera2/marshal/Marshaler;Landroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;,Landroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;,Landroid/hardware/camera2/marshal/impl/MarshalQueryablePair$MarshalerPair;]Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller;Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$1;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$2;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$3;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$5;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Boolean; @@ -8182,7 +8082,7 @@ HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$Ma HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class; -HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->unmarshalObject(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->unmarshalObject(Ljava/nio/ByteBuffer;)Ljava/lang/Object;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRange;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z @@ -8200,7 +8100,7 @@ HSPLandroid/hardware/camera2/utils/ConcurrentCameraIdCombination;->(Landro HSPLandroid/hardware/camera2/utils/ConcurrentCameraIdCombination;->getConcurrentCameraIdCombination()Ljava/util/Set; HSPLandroid/hardware/camera2/utils/ConcurrentCameraIdCombination;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/hardware/camera2/utils/TypeReference;->containsTypeVariable(Ljava/lang/reflect/Type;)Z+]Ljava/lang/Class;Ljava/lang/Class; -HSPLandroid/hardware/camera2/utils/TypeReference;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/Class; +HSPLandroid/hardware/camera2/utils/TypeReference;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Llibcore/reflect/ParameterizedTypeImpl;,Llibcore/reflect/GenericArrayTypeImpl;,Ljava/lang/Class; HSPLandroid/hardware/camera2/utils/TypeReference;->getComponentType()Landroid/hardware/camera2/utils/TypeReference; HSPLandroid/hardware/camera2/utils/TypeReference;->getComponentType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType()Ljava/lang/Class; @@ -8212,7 +8112,6 @@ HSPLandroid/hardware/devicestate/DeviceStateInfo$1;->createFromParcel(Landroid/o HSPLandroid/hardware/devicestate/DeviceStateInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/hardware/devicestate/DeviceStateInfo;->()V HSPLandroid/hardware/devicestate/DeviceStateInfo;->([III)V -HSPLandroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;->onBaseStateChanged(I)V HSPLandroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;->onSupportedStatesChanged([I)V HSPLandroid/hardware/devicestate/DeviceStateManager;->()V HSPLandroid/hardware/devicestate/DeviceStateManager;->registerCallback(Ljava/util/concurrent/Executor;Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;)V @@ -8222,13 +8121,7 @@ HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWra HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda1;->run()V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda2;->(Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;[I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda2;->run()V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->$r8$lambda$6u3slsjk-8VI_sfftus20TtEKlU(Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;[I)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->$r8$lambda$FiFeo7UDl_Jzgv3ijVmtwGDn8K0(Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;I)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->$r8$lambda$yXCJCBW7G4qvEFV6LoxaomGrhSE(Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->(Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;Ljava/util/concurrent/Executor;)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->lambda$notifyBaseStateChanged$1(I)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->lambda$notifyStateChanged$2(I)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->lambda$notifySupportedStatesChanged$0([I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->notifyBaseStateChanged(I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->notifyStateChanged(I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->notifySupportedStatesChanged([I)V @@ -8277,7 +8170,7 @@ HSPLandroid/hardware/display/DeviceProductInfo$ManufactureDate$1;->createFromPar HSPLandroid/hardware/display/DeviceProductInfo$ManufactureDate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/hardware/display/DeviceProductInfo$ManufactureDate;->(Landroid/os/Parcel;)V HSPLandroid/hardware/display/DeviceProductInfo$ManufactureDate;->equals(Ljava/lang/Object;)Z -HSPLandroid/hardware/display/DeviceProductInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/hardware/display/DeviceProductInfo;->(Landroid/os/Parcel;)V HSPLandroid/hardware/display/DeviceProductInfo;->(Landroid/os/Parcel;Landroid/hardware/display/DeviceProductInfo-IA;)V HSPLandroid/hardware/display/DeviceProductInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/hardware/display/DisplayManager$$ExternalSyntheticLambda0;->()V @@ -8295,7 +8188,7 @@ HSPLandroid/hardware/display/DisplayManager;->getDisplay(I)Landroid/view/Display HSPLandroid/hardware/display/DisplayManager;->getDisplays()[Landroid/view/Display; HSPLandroid/hardware/display/DisplayManager;->getDisplays(Ljava/lang/String;)[Landroid/view/Display; HSPLandroid/hardware/display/DisplayManager;->getDisplays([ILjava/util/function/Predicate;)[Landroid/view/Display;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Landroid/hardware/display/DisplayManager$$ExternalSyntheticLambda2;,Landroid/hardware/display/DisplayManager$$ExternalSyntheticLambda0; -HSPLandroid/hardware/display/DisplayManager;->getOrCreateDisplay(IZ)Landroid/view/Display;+]Landroid/hardware/display/DisplayManager$WeakDisplayCache;Landroid/hardware/display/DisplayManager$WeakDisplayCache;]Landroid/content/Context;missing_types]Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal;]Landroid/view/Display;Landroid/view/Display; +HSPLandroid/hardware/display/DisplayManager;->getOrCreateDisplay(IZ)Landroid/view/Display;+]Landroid/hardware/display/DisplayManager$WeakDisplayCache;Landroid/hardware/display/DisplayManager$WeakDisplayCache;]Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal;]Landroid/view/Display;Landroid/view/Display;]Landroid/content/Context;missing_types HSPLandroid/hardware/display/DisplayManager;->getStableDisplaySize()Landroid/graphics/Point; HSPLandroid/hardware/display/DisplayManager;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; HSPLandroid/hardware/display/DisplayManager;->isPresentationDisplay(Landroid/view/Display;)Z @@ -8310,14 +8203,13 @@ HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate$$Exter HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->$r8$lambda$aO0d1U2yv7-42_0MvY8uEf7AtpE(Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;JLandroid/os/Message;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->(Landroid/hardware/display/DisplayManager$DisplayListener;Ljava/util/concurrent/Executor;J)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->clearEvents()V -HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleMessage(Landroid/os/Message;)V+]Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/view/Display$HdrSdrRatioListenerWrapper; +HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleMessage(Landroid/os/Message;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->lambda$sendDisplayEvent$0(JLandroid/os/Message;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->sendDisplayEvent(IILandroid/view/DisplayInfo;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->(Landroid/hardware/display/DisplayManagerGlobal;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->(Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback-IA;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->onDisplayEvent(II)V HSPLandroid/hardware/display/DisplayManagerGlobal;->-$$Nest$fgetmDm(Landroid/hardware/display/DisplayManagerGlobal;)Landroid/hardware/display/IDisplayManager; -HSPLandroid/hardware/display/DisplayManagerGlobal;->-$$Nest$mhandleDisplayEvent(Landroid/hardware/display/DisplayManagerGlobal;II)V HSPLandroid/hardware/display/DisplayManagerGlobal;->(Landroid/hardware/display/IDisplayManager;)V HSPLandroid/hardware/display/DisplayManagerGlobal;->calculateEventsMaskLocked()I HSPLandroid/hardware/display/DisplayManagerGlobal;->findDisplayListenerLocked(Landroid/hardware/display/DisplayManager$DisplayListener;)I @@ -8332,7 +8224,7 @@ HSPLandroid/hardware/display/DisplayManagerGlobal;->getLooperForHandler(Landroid HSPLandroid/hardware/display/DisplayManagerGlobal;->getPreferredWideGamutColorSpace()Landroid/graphics/ColorSpace; HSPLandroid/hardware/display/DisplayManagerGlobal;->getStableDisplaySize()Landroid/graphics/Point; HSPLandroid/hardware/display/DisplayManagerGlobal;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; -HSPLandroid/hardware/display/DisplayManagerGlobal;->handleDisplayEvent(II)V+]Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList; +HSPLandroid/hardware/display/DisplayManagerGlobal;->handleDisplayEvent(II)V HSPLandroid/hardware/display/DisplayManagerGlobal;->registerCallbackIfNeededLocked()V HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;J)V HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Ljava/util/concurrent/Executor;J)V @@ -8346,7 +8238,7 @@ HSPLandroid/hardware/display/IColorDisplayManager$Stub$Proxy;->isNightDisplayAct HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayIds(Z)[I -HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayInfo(I)Landroid/view/DisplayInfo;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/hardware/display/IDisplayManager$Stub$Proxy;Landroid/hardware/display/IDisplayManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayInfo(I)Landroid/view/DisplayInfo; HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getOverlaySupport()Landroid/hardware/OverlayProperties; HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getPreferredWideGamutColorSpaceId()I HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getStableDisplaySize()Landroid/graphics/Point; @@ -8407,7 +8299,6 @@ HSPLandroid/hardware/input/InputManagerGlobal;->getInputDevice(I)Landroid/view/I HSPLandroid/hardware/input/InputManagerGlobal;->getInputDeviceIds()[I+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/hardware/input/InputManagerGlobal;->getInputManagerService()Landroid/hardware/input/IInputManager; HSPLandroid/hardware/input/InputManagerGlobal;->getInstance()Landroid/hardware/input/InputManagerGlobal; -HSPLandroid/hardware/input/InputManagerGlobal;->onInputDevicesChanged([I)V+]Landroid/view/InputDevice;Landroid/view/InputDevice;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/hardware/input/InputManagerGlobal;->populateInputDevicesLocked()V HSPLandroid/hardware/input/InputManagerGlobal;->registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V HSPLandroid/hardware/input/InputSettings;->isStylusPointerIconEnabled(Landroid/content/Context;)Z @@ -8469,7 +8360,7 @@ HSPLandroid/hardware/security/keymint/KeyParameter$1;->newArray(I)[Landroid/hard HSPLandroid/hardware/security/keymint/KeyParameter$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/hardware/security/keymint/KeyParameter;->()V HSPLandroid/hardware/security/keymint/KeyParameter;->()V -HSPLandroid/hardware/security/keymint/KeyParameter;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/hardware/security/keymint/KeyParameter;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/hardware/security/keymint/KeyParameter;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/security/keymint/KeyParameterValue$1;->()V HSPLandroid/hardware/security/keymint/KeyParameterValue$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/security/keymint/KeyParameterValue; @@ -8537,7 +8428,7 @@ HSPLandroid/icu/impl/BMPSet;->initBits()V HSPLandroid/icu/impl/BMPSet;->set32x64Bits([III)V HSPLandroid/icu/impl/CacheValue$NullValue;->isNull()Z HSPLandroid/icu/impl/CacheValue$SoftValue;->(Ljava/lang/Object;)V -HSPLandroid/icu/impl/CacheValue$SoftValue;->get()Ljava/lang/Object; +HSPLandroid/icu/impl/CacheValue$SoftValue;->get()Ljava/lang/Object;+]Ljava/lang/ref/Reference;Ljava/lang/ref/SoftReference; HSPLandroid/icu/impl/CacheValue$SoftValue;->resetIfCleared(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/impl/CacheValue$StrongValue;->get()Ljava/lang/Object; HSPLandroid/icu/impl/CacheValue;->()V @@ -8573,7 +8464,7 @@ HSPLandroid/icu/impl/FormattedStringBuilder;->copyFrom(Landroid/icu/impl/Formatt HSPLandroid/icu/impl/FormattedStringBuilder;->fieldAt(I)Ljava/lang/Object; HSPLandroid/icu/impl/FormattedStringBuilder;->getCapacity()I HSPLandroid/icu/impl/FormattedStringBuilder;->insert(ILjava/lang/CharSequence;IILjava/lang/Object;)I -HSPLandroid/icu/impl/FormattedStringBuilder;->insert(ILjava/lang/CharSequence;Ljava/lang/Object;)I+]Ljava/lang/CharSequence;Ljava/lang/String; +HSPLandroid/icu/impl/FormattedStringBuilder;->insert(ILjava/lang/CharSequence;Ljava/lang/Object;)I+]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/icu/impl/FormattedStringBuilder;->insert(I[C[Ljava/lang/Object;)I HSPLandroid/icu/impl/FormattedStringBuilder;->insertCodePoint(IILjava/lang/Object;)I HSPLandroid/icu/impl/FormattedStringBuilder;->length()I @@ -8584,7 +8475,7 @@ HSPLandroid/icu/impl/FormattedStringBuilder;->toFieldArray()[Ljava/lang/Object; HSPLandroid/icu/impl/FormattedStringBuilder;->toString()Ljava/lang/String; HSPLandroid/icu/impl/FormattedStringBuilder;->unwrapField(Ljava/lang/Object;)Ljava/text/Format$Field; HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->isIntOrGroup(Ljava/lang/Object;)Z -HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextFieldPosition(Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;)Z +HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextFieldPosition(Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;)Z+]Landroid/icu/text/ConstrainedFieldPosition;Landroid/icu/text/ConstrainedFieldPosition;]Ljava/text/FieldPosition;Ljava/text/DontCareFieldPosition; HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextPosition(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/text/ConstrainedFieldPosition;Ljava/text/Format$Field;)Z+]Landroid/icu/text/ConstrainedFieldPosition;Landroid/icu/text/ConstrainedFieldPosition; HSPLandroid/icu/impl/Grego;->dayOfWeek(J)I HSPLandroid/icu/impl/Grego;->dayToFields(J[I)[I @@ -8624,7 +8515,7 @@ HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$Curre HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$FormattingData;->(Ljava/lang/String;)V HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Z)V -HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->fetchFormattingData(Ljava/lang/String;)Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$FormattingData;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable; +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->fetchFormattingData(Ljava/lang/String;)Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$FormattingData;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->fetchSpacingInfo()Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getFormatInfo(Ljava/lang/String;)Landroid/icu/impl/CurrencyData$CurrencyFormatInfo; HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getSpacingInfo()Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; @@ -8640,7 +8531,7 @@ HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->()V HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->add(Ljava/lang/Object;)V HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->create()Landroid/icu/impl/ICUCurrencyMetaInfo$UniqueList; HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->list()Ljava/util/List; -HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->collect(Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; +HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->collect(Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;+]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable;]Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector; HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->collectRegion(Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;ILandroid/icu/impl/ICUResourceBundle;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceString;,Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable;,Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray;]Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector; HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->currencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->currencyDigits(Ljava/lang/String;Landroid/icu/util/Currency$CurrencyUsage;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits; @@ -8688,7 +8579,7 @@ HSPLandroid/icu/impl/ICUResourceBundle;->-$$Nest$sminstantiateBundle(Ljava/lang/ HSPLandroid/icu/impl/ICUResourceBundle;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V HSPLandroid/icu/impl/ICUResourceBundle;->(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V HSPLandroid/icu/impl/ICUResourceBundle;->addBundleBaseNamesFromClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V -HSPLandroid/icu/impl/ICUResourceBundle;->at(I)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->at(I)Landroid/icu/impl/ICUResourceBundle;+]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray; HSPLandroid/icu/impl/ICUResourceBundle;->at(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle;+]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable; HSPLandroid/icu/impl/ICUResourceBundle;->countPathKeys(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundle;->createBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle; @@ -8712,7 +8603,7 @@ HSPLandroid/icu/impl/ICUResourceBundle;->getAvailEntry(Ljava/lang/String;Ljava/l HSPLandroid/icu/impl/ICUResourceBundle;->getBaseName()Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundle;->getBundle(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle; HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; -HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/impl/ICUResourceBundle; HSPLandroid/icu/impl/ICUResourceBundle;->getDefaultScript(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundle;->getExplicitParent(Ljava/lang/String;)Ljava/lang/String; @@ -8730,30 +8621,30 @@ HSPLandroid/icu/impl/ICUResourceBundle;->getResPathKeys([Ljava/lang/String;I)V HSPLandroid/icu/impl/ICUResourceBundle;->getStringWithFallback(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundle;->getULocale()Landroid/icu/util/ULocale; HSPLandroid/icu/impl/ICUResourceBundle;->getWithFallback(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle; -HSPLandroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/ICUResourceBundle$OpenType;Landroid/icu/impl/ICUResourceBundle$OpenType;]Landroid/icu/impl/CacheBase;Landroid/icu/impl/ICUResourceBundle$1; HSPLandroid/icu/impl/ICUResourceBundle;->setParent(Ljava/util/ResourceBundle;)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->getStringArray()[Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->getType()I -HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;+]Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray;Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGetStringArray()[Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;->getBinary([B)[B HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V -HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->createBundleObject(ILjava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->createBundleObject(ILjava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;+]Landroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getContainerResource(I)I+]Landroid/icu/impl/ICUResourceBundleReader$Container;Landroid/icu/impl/ICUResourceBundleReader$Table16;,Landroid/icu/impl/ICUResourceBundleReader$Table1632;,Landroid/icu/impl/ICUResourceBundleReader$Array32; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getSize()I+]Landroid/icu/impl/ICUResourceBundleReader$Container;Landroid/icu/impl/ICUResourceBundleReader$Table16;,Landroid/icu/impl/ICUResourceBundleReader$Table1632;,Landroid/icu/impl/ICUResourceBundleReader$Array32; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getString(I)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;->getInt()I HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V -HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->getIntVector()[I +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->getIntVector()[I+]Landroid/icu/impl/ICUResourceBundleReader;Landroid/icu/impl/ICUResourceBundleReader; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/ICUResourceBundleReader;Landroid/icu/impl/ICUResourceBundleReader; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->getString()Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->getType()I HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;I)V -HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V+]Landroid/icu/impl/ICUResourceBundleReader;Landroid/icu/impl/ICUResourceBundleReader; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->findString(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->getType()I HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; @@ -8766,11 +8657,11 @@ HSPLandroid/icu/impl/ICUResourceBundleImpl;->getResource()I HSPLandroid/icu/impl/ICUResourceBundleReader$Array16;->(Landroid/icu/impl/ICUResourceBundleReader;I)V HSPLandroid/icu/impl/ICUResourceBundleReader$Array16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->(Landroid/icu/impl/ICUResourceBundleReader;I)V -HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Landroid/icu/impl/ICUResourceBundleReader$Array32;Landroid/icu/impl/ICUResourceBundleReader$Array32; HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->()V HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->getValue(ILandroid/icu/impl/UResource$Value;)Z HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->()V -HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Ljava/nio/CharBuffer;Ljava/nio/ByteBufferAsCharBuffer; HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I @@ -8789,17 +8680,17 @@ HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray(Landro HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getTable()Landroid/icu/impl/UResource$Table; HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getType()I HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; -HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->(I)V HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I -HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;+]Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->makeKey(I)I -HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfCleared([Ljava/lang/Object;ILjava/lang/Object;I)Ljava/lang/Object; HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->storeDirectly(I)Z HSPLandroid/icu/impl/ICUResourceBundleReader$Table1632;->(Landroid/icu/impl/ICUResourceBundleReader;I)V HSPLandroid/icu/impl/ICUResourceBundleReader$Table1632;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Landroid/icu/impl/ICUResourceBundleReader$Table1632;Landroid/icu/impl/ICUResourceBundleReader$Table1632; -HSPLandroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Landroid/icu/impl/ICUResourceBundleReader$Table16;Landroid/icu/impl/ICUResourceBundleReader$Table16; HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->()V HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->findTableItem(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;)I HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->findValue(Ljava/lang/CharSequence;Landroid/icu/impl/UResource$Value;)Z @@ -8829,20 +8720,20 @@ HSPLandroid/icu/impl/ICUResourceBundleReader;->getAlias(I)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleReader;->getArray(I)Landroid/icu/impl/ICUResourceBundleReader$Array; HSPLandroid/icu/impl/ICUResourceBundleReader;->getBinary(I[B)[B HSPLandroid/icu/impl/ICUResourceBundleReader;->getChars(II)[C -HSPLandroid/icu/impl/ICUResourceBundleReader;->getFullName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getFullName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/icu/impl/ICUResourceBundleReader;->getIndexesInt(I)I -HSPLandroid/icu/impl/ICUResourceBundleReader;->getInt(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getInt(I)I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLandroid/icu/impl/ICUResourceBundleReader;->getIntVector(I)[I -HSPLandroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLandroid/icu/impl/ICUResourceBundleReader;->getKey16String(I)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleReader;->getNoFallback()Z HSPLandroid/icu/impl/ICUResourceBundleReader;->getReader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader; HSPLandroid/icu/impl/ICUResourceBundleReader;->getResourceByteOffset(I)I HSPLandroid/icu/impl/ICUResourceBundleReader;->getRootResource()I HSPLandroid/icu/impl/ICUResourceBundleReader;->getString(I)Ljava/lang/String;+]Landroid/icu/impl/ICUResourceBundleReader;Landroid/icu/impl/ICUResourceBundleReader; -HSPLandroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache; -HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache; -HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C +HSPLandroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;]Ljava/nio/CharBuffer;Ljava/nio/ByteBufferAsCharBuffer;]Ljava/lang/CharSequence;Ljava/nio/ByteBufferAsCharBuffer; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;]Landroid/icu/impl/ICUResourceBundleReader$Table;Landroid/icu/impl/ICUResourceBundleReader$Table16;,Landroid/icu/impl/ICUResourceBundleReader$Table1632; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C+]Ljava/nio/CharBuffer;Ljava/nio/ByteBufferAsCharBuffer; HSPLandroid/icu/impl/ICUResourceBundleReader;->getTableKeyOffsets(I)[C HSPLandroid/icu/impl/ICUResourceBundleReader;->init(Ljava/nio/ByteBuffer;)V HSPLandroid/icu/impl/ICUResourceBundleReader;->makeKeyStringFromBytes([BI)Ljava/lang/String; @@ -8855,7 +8746,7 @@ HSPLandroid/icu/impl/ICUService;->getKey(Landroid/icu/impl/ICUService$Key;[Ljava HSPLandroid/icu/impl/ICUService;->getKey(Landroid/icu/impl/ICUService$Key;[Ljava/lang/String;Landroid/icu/impl/ICUService$Factory;)Ljava/lang/Object; HSPLandroid/icu/impl/ICUService;->isDefault()Z HSPLandroid/icu/impl/IDNA2003;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; -HSPLandroid/icu/impl/IDNA2003;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/impl/IDNA2003;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;+]Landroid/icu/text/UCharacterIterator;Landroid/icu/impl/ReplaceableUCharacterIterator;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLandroid/icu/impl/IDNA2003;->getSeparatorIndex([CII)I HSPLandroid/icu/impl/IDNA2003;->isLDHChar(I)Z HSPLandroid/icu/impl/IDNA2003;->isLabelSeparator(I)Z @@ -8873,8 +8764,8 @@ HSPLandroid/icu/impl/LocaleIDParser;->getCountry()Ljava/lang/String; HSPLandroid/icu/impl/LocaleIDParser;->getKeyComparator()Ljava/util/Comparator; HSPLandroid/icu/impl/LocaleIDParser;->getKeyword()Ljava/lang/String; HSPLandroid/icu/impl/LocaleIDParser;->getKeywordMap()Ljava/util/Map; -HSPLandroid/icu/impl/LocaleIDParser;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser; -HSPLandroid/icu/impl/LocaleIDParser;->getKeywords()Ljava/util/Iterator; +HSPLandroid/icu/impl/LocaleIDParser;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser;]Ljava/util/Map;Ljava/util/Collections$EmptyMap; +HSPLandroid/icu/impl/LocaleIDParser;->getKeywords()Ljava/util/Iterator;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser;]Ljava/util/Map;Ljava/util/Collections$EmptyMap; HSPLandroid/icu/impl/LocaleIDParser;->getLanguage()Ljava/lang/String; HSPLandroid/icu/impl/LocaleIDParser;->getName()Ljava/lang/String; HSPLandroid/icu/impl/LocaleIDParser;->getScript()Ljava/lang/String; @@ -8889,10 +8780,10 @@ HSPLandroid/icu/impl/LocaleIDParser;->isTerminator(C)Z HSPLandroid/icu/impl/LocaleIDParser;->isTerminatorOrIDSeparator(C)Z HSPLandroid/icu/impl/LocaleIDParser;->next()C HSPLandroid/icu/impl/LocaleIDParser;->parseBaseName()V -HSPLandroid/icu/impl/LocaleIDParser;->parseCountry()I +HSPLandroid/icu/impl/LocaleIDParser;->parseCountry()I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/icu/impl/LocaleIDParser;->parseKeywords()I HSPLandroid/icu/impl/LocaleIDParser;->parseLanguage()I -HSPLandroid/icu/impl/LocaleIDParser;->parseScript()I +HSPLandroid/icu/impl/LocaleIDParser;->parseScript()I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/icu/impl/LocaleIDParser;->parseVariant()I HSPLandroid/icu/impl/LocaleIDParser;->reset()V HSPLandroid/icu/impl/LocaleIDParser;->setKeywordValue(Ljava/lang/String;Ljava/lang/String;)V @@ -8904,7 +8795,7 @@ HSPLandroid/icu/impl/LocaleIDParser;->skipScript()V HSPLandroid/icu/impl/LocaleIDParser;->skipUntilTerminatorOrIDSeparator()V HSPLandroid/icu/impl/Norm2AllModes$ComposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->normalizeAndAppend(Ljava/lang/CharSequence;ZLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V -HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I +HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I+]Landroid/icu/impl/Normalizer2Impl;Landroid/icu/impl/Normalizer2Impl;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/icu/impl/Norm2AllModes$NFKCSingleton;->-$$Nest$sfgetINSTANCE()Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton; HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->-$$Nest$fgetallModes(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Landroid/icu/impl/Norm2AllModes; HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->-$$Nest$fgetexception(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Ljava/lang/RuntimeException; @@ -8921,7 +8812,7 @@ HSPLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->flushAndAppendZeroCC(Lja HSPLandroid/icu/impl/Normalizer2Impl;->addToStartSet(Landroid/icu/util/MutableCodePointTrie;II)V HSPLandroid/icu/impl/Normalizer2Impl;->composeQuickCheck(Ljava/lang/CharSequence;IIZZ)I HSPLandroid/icu/impl/Normalizer2Impl;->decompose(IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V -HSPLandroid/icu/impl/Normalizer2Impl;->decompose(Ljava/lang/CharSequence;IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I +HSPLandroid/icu/impl/Normalizer2Impl;->decompose(Ljava/lang/CharSequence;IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/icu/impl/Normalizer2Impl;->decomposeAndAppend(Ljava/lang/CharSequence;ZLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V HSPLandroid/icu/impl/Normalizer2Impl;->ensureCanonIterData()Landroid/icu/impl/Normalizer2Impl; HSPLandroid/icu/impl/Normalizer2Impl;->getRawNorm16(I)I @@ -8935,7 +8826,7 @@ HSPLandroid/icu/impl/Normalizer2Impl;->isMaybeOrNonZeroCC(I)Z HSPLandroid/icu/impl/Normalizer2Impl;->mapAlgorithmic(II)I HSPLandroid/icu/impl/OlsonTimeZone;->(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;Ljava/lang/String;)V HSPLandroid/icu/impl/OlsonTimeZone;->clone()Ljava/lang/Object; -HSPLandroid/icu/impl/OlsonTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone; +HSPLandroid/icu/impl/OlsonTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone;+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/impl/OlsonTimeZone;->construct(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;Ljava/lang/String;)V HSPLandroid/icu/impl/OlsonTimeZone;->equals(Ljava/lang/Object;)Z HSPLandroid/icu/impl/OlsonTimeZone;->freeze()Landroid/icu/util/TimeZone; @@ -8943,19 +8834,19 @@ HSPLandroid/icu/impl/OlsonTimeZone;->getCanonicalID()Ljava/lang/String; HSPLandroid/icu/impl/OlsonTimeZone;->getHistoricalOffset(JZII[I)V HSPLandroid/icu/impl/OlsonTimeZone;->getInt(B)I HSPLandroid/icu/impl/OlsonTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; -HSPLandroid/icu/impl/OlsonTimeZone;->getOffset(JZ[I)V +HSPLandroid/icu/impl/OlsonTimeZone;->getOffset(JZ[I)V+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/impl/OlsonTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule; -HSPLandroid/icu/impl/OlsonTimeZone;->hashCode()I +HSPLandroid/icu/impl/OlsonTimeZone;->hashCode()I+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/impl/OlsonTimeZone;->initTransitionRules()V HSPLandroid/icu/impl/OlsonTimeZone;->initialDstOffset()I HSPLandroid/icu/impl/OlsonTimeZone;->initialRawOffset()I HSPLandroid/icu/impl/OlsonTimeZone;->isFrozen()Z HSPLandroid/icu/impl/OlsonTimeZone;->loadRule(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -HSPLandroid/icu/impl/OlsonTimeZone;->toString()Ljava/lang/String; +HSPLandroid/icu/impl/OlsonTimeZone;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/icu/impl/PatternProps;->isWhiteSpace(I)Z HSPLandroid/icu/impl/PatternProps;->skipWhiteSpace(Ljava/lang/CharSequence;I)I HSPLandroid/icu/impl/PatternTokenizer;->()V -HSPLandroid/icu/impl/PatternTokenizer;->next(Ljava/lang/StringBuffer;)I+]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/impl/PatternTokenizer;->next(Ljava/lang/StringBuffer;)I HSPLandroid/icu/impl/PatternTokenizer;->quoteLiteral(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/PatternTokenizer;->setExtraQuotingCharacters(Landroid/icu/text/UnicodeSet;)Landroid/icu/impl/PatternTokenizer; HSPLandroid/icu/impl/PatternTokenizer;->setPattern(Ljava/lang/String;)Landroid/icu/impl/PatternTokenizer; @@ -8970,14 +8861,14 @@ HSPLandroid/icu/impl/PluralRulesLoader;->getRulesIdForLocale(Landroid/icu/util/U HSPLandroid/icu/impl/RBBIDataWrapper$IsAcceptable;->isDataVersionAcceptable([B)Z HSPLandroid/icu/impl/RBBIDataWrapper$RBBIDataHeader;->()V HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;->()V -HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;->get(Ljava/nio/ByteBuffer;I)Landroid/icu/impl/RBBIDataWrapper$RBBIStateTable; +HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;->get(Ljava/nio/ByteBuffer;I)Landroid/icu/impl/RBBIDataWrapper$RBBIStateTable;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLandroid/icu/impl/RBBIDataWrapper;->()V HSPLandroid/icu/impl/RBBIDataWrapper;->get(Ljava/nio/ByteBuffer;)Landroid/icu/impl/RBBIDataWrapper; HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->(Ljava/lang/String;)V HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getLength()I -HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getText([CI)I +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getText([CI)I+]Landroid/icu/text/Replaceable;Landroid/icu/text/ReplaceableString; HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->next()I+]Landroid/icu/text/Replaceable;Landroid/icu/text/ReplaceableString; -HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->setIndex(I)V +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->setIndex(I)V+]Landroid/icu/text/Replaceable;Landroid/icu/text/ReplaceableString; HSPLandroid/icu/impl/RuleCharacterIterator;->_advance(I)V HSPLandroid/icu/impl/RuleCharacterIterator;->_current()I HSPLandroid/icu/impl/RuleCharacterIterator;->atEnd()Z @@ -8993,7 +8884,7 @@ HSPLandroid/icu/impl/SimpleFormatterImpl;->format(Ljava/lang/String;[Ljava/lang/ HSPLandroid/icu/impl/SimpleFormatterImpl;->formatPrefixSuffix(Ljava/lang/String;Ljava/text/Format$Field;IILandroid/icu/impl/FormattedStringBuilder;)I HSPLandroid/icu/impl/SimpleFormatterImpl;->formatRawPattern(Ljava/lang/String;II[Ljava/lang/CharSequence;)Ljava/lang/String; HSPLandroid/icu/impl/SimpleFormatterImpl;->getArgumentLimit(Ljava/lang/String;)I -HSPLandroid/icu/impl/SoftCache;->getInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/icu/impl/CacheValue;Landroid/icu/impl/CacheValue$SoftValue;,Landroid/icu/impl/CacheValue$NullValue;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; +HSPLandroid/icu/impl/SoftCache;->getInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/icu/impl/CacheValue;Landroid/icu/impl/CacheValue$SoftValue;]Landroid/icu/impl/SoftCache;Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;,Landroid/icu/util/ULocale$1;,Landroid/icu/impl/ICUResourceBundle$1;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; HSPLandroid/icu/impl/StandardPlural;->fromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; HSPLandroid/icu/impl/StandardPlural;->orNullFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; HSPLandroid/icu/impl/StandardPlural;->orOtherFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; @@ -9001,7 +8892,7 @@ HSPLandroid/icu/impl/StandardPlural;->values()[Landroid/icu/impl/StandardPlural; HSPLandroid/icu/impl/StaticUnicodeSets;->chooseFrom(Ljava/lang/String;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/impl/StaticUnicodeSets$Key; HSPLandroid/icu/impl/StaticUnicodeSets;->chooseFrom(Ljava/lang/String;Landroid/icu/impl/StaticUnicodeSets$Key;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/impl/StaticUnicodeSets$Key; HSPLandroid/icu/impl/StaticUnicodeSets;->get(Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/text/UnicodeSet; -HSPLandroid/icu/impl/StringSegment;->(Ljava/lang/String;Z)V +HSPLandroid/icu/impl/StringSegment;->(Ljava/lang/String;Z)V+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/StringSegment;->adjustOffset(I)V HSPLandroid/icu/impl/StringSegment;->charAt(I)C+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/StringSegment;->codePointsEqual(IIZ)Z @@ -9066,7 +8957,7 @@ HSPLandroid/icu/impl/Trie2Writable;->writeBlock(II)V HSPLandroid/icu/impl/Trie2_16;->get(I)I HSPLandroid/icu/impl/Trie2_32;->get(I)I HSPLandroid/icu/impl/Trie2_32;->getFromU16SingleLead(C)I -HSPLandroid/icu/impl/UBiDiProps;->getClass(I)I +HSPLandroid/icu/impl/UBiDiProps;->getClass(I)I+]Landroid/icu/impl/Trie2_16;Landroid/icu/impl/Trie2_16; HSPLandroid/icu/impl/UBiDiProps;->getClassFromProps(I)I HSPLandroid/icu/impl/UCaseProps;->fold(II)I+]Landroid/icu/impl/Trie2_16;Landroid/icu/impl/Trie2_16; HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/lang/String;)I @@ -9076,11 +8967,11 @@ HSPLandroid/icu/impl/UCaseProps;->isUpperOrTitleFromProps(I)Z HSPLandroid/icu/impl/UCaseProps;->propsHasException(I)Z HSPLandroid/icu/impl/UCaseProps;->toUpperOrTitle(ILandroid/icu/impl/UCaseProps$ContextIterator;Ljava/lang/Appendable;IZ)I HSPLandroid/icu/impl/UCharacterProperty$IntProperty;->getValue(I)I -HSPLandroid/icu/impl/UCharacterProperty;->digit(I)I +HSPLandroid/icu/impl/UCharacterProperty;->digit(I)I+]Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty; HSPLandroid/icu/impl/UCharacterProperty;->getIntPropertyValue(II)I HSPLandroid/icu/impl/UCharacterProperty;->getNumericTypeValue(I)I -HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I -HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I+]Landroid/icu/impl/Trie2_16;Landroid/icu/impl/Trie2_16; +HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I+]Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty; HSPLandroid/icu/impl/UPropertyAliases;->asciiToLowercase(I)I HSPLandroid/icu/impl/UPropertyAliases;->containsName(Landroid/icu/util/BytesTrie;Ljava/lang/CharSequence;)Z HSPLandroid/icu/impl/UPropertyAliases;->findProperty(I)I @@ -9110,11 +9001,11 @@ HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->createInstance(Ljava/lang/St HSPLandroid/icu/impl/ZoneMeta;->findCLDRCanonicalID(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/ZoneMeta;->getCanonicalCLDRID(Landroid/icu/util/TimeZone;)Ljava/lang/String; HSPLandroid/icu/impl/ZoneMeta;->getCanonicalCLDRID(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/icu/impl/ZoneMeta;->getSystemTimeZone(Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone; +HSPLandroid/icu/impl/ZoneMeta;->getSystemTimeZone(Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone;+]Landroid/icu/impl/ZoneMeta$SystemTimeZoneCache;Landroid/icu/impl/ZoneMeta$SystemTimeZoneCache; HSPLandroid/icu/impl/ZoneMeta;->getZoneIDs()[Ljava/lang/String; HSPLandroid/icu/impl/ZoneMeta;->getZoneIndex(Ljava/lang/String;)I HSPLandroid/icu/impl/ZoneMeta;->openOlsonResource(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -HSPLandroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI;->clone()Ljava/lang/Object; +HSPLandroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI;->clone()Ljava/lang/Object;+][I[I HSPLandroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI;->removeAllElements()V HSPLandroid/icu/impl/coll/Collation;->()V HSPLandroid/icu/impl/coll/Collation;->ceFromCE32(I)J @@ -9215,7 +9106,7 @@ HSPLandroid/icu/impl/coll/UVector32;->ensureAppendCapacity()V HSPLandroid/icu/impl/coll/UVector64;->()V HSPLandroid/icu/impl/locale/AsciiUtil;->caseIgnoreMatch(Ljava/lang/String;Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/locale/AsciiUtil;->isAlpha(C)Z -HSPLandroid/icu/impl/locale/AsciiUtil;->isAlphaString(Ljava/lang/String;)Z +HSPLandroid/icu/impl/locale/AsciiUtil;->isAlphaString(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/locale/AsciiUtil;->toLower(C)C HSPLandroid/icu/impl/locale/AsciiUtil;->toLowerString(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/locale/AsciiUtil;->toTitleString(Ljava/lang/String;)Ljava/lang/String; @@ -9235,7 +9126,7 @@ HSPLandroid/icu/impl/locale/BaseLocale$Key;->hashCode()I+]Ljava/lang/String;Ljav HSPLandroid/icu/impl/locale/BaseLocale$Key;->normalize(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key; HSPLandroid/icu/impl/locale/BaseLocale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/icu/impl/locale/BaseLocale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/BaseLocale-IA;)V -HSPLandroid/icu/impl/locale/BaseLocale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/impl/locale/BaseLocale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/BaseLocale;+]Landroid/icu/impl/locale/BaseLocale$Cache;Landroid/icu/impl/locale/BaseLocale$Cache; HSPLandroid/icu/impl/locale/BaseLocale;->getLanguage()Ljava/lang/String; HSPLandroid/icu/impl/locale/BaseLocale;->getRegion()Ljava/lang/String; HSPLandroid/icu/impl/locale/BaseLocale;->getScript()Ljava/lang/String; @@ -9245,22 +9136,14 @@ HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->getBaseLocale()Landroid/icu/ HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->getLocaleExtensions()Landroid/icu/impl/locale/LocaleExtensions; HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setLanguage(Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder; HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setRegion(Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder; -HSPLandroid/icu/impl/locale/LanguageTag;->()V -HSPLandroid/icu/impl/locale/LanguageTag;->canonicalizeLanguage(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getExtensions()Ljava/util/List; -HSPLandroid/icu/impl/locale/LanguageTag;->getLanguage()Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getPrivateuse()Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getRegion()Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getScript()Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getVariants()Ljava/util/List; HSPLandroid/icu/impl/locale/LanguageTag;->isLanguage(Ljava/lang/String;)Z HSPLandroid/icu/impl/locale/LanguageTag;->isRegion(Ljava/lang/String;)Z -HSPLandroid/icu/impl/locale/LanguageTag;->parseLocale(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/impl/locale/LanguageTag;+]Landroid/icu/impl/locale/LocaleExtensions;Landroid/icu/impl/locale/LocaleExtensions;]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/StringTokenIterator; +HSPLandroid/icu/impl/locale/LanguageTag;->parseLocale(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/impl/locale/LanguageTag;+]Landroid/icu/impl/locale/LocaleExtensions;Landroid/icu/impl/locale/LocaleExtensions;]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/StringTokenIterator;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; HSPLandroid/icu/impl/locale/LocaleExtensions;->getKeys()Ljava/util/Set; HSPLandroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V HSPLandroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object; -HSPLandroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V -HSPLandroid/icu/impl/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue; +HSPLandroid/icu/impl/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; HSPLandroid/icu/impl/number/AdoptingModifierStore$1;->()V HSPLandroid/icu/impl/number/AdoptingModifierStore;->(Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/Modifier;)V HSPLandroid/icu/impl/number/AdoptingModifierStore;->getModifierWithoutPlural(Landroid/icu/impl/number/Modifier$Signum;)Landroid/icu/impl/number/Modifier; @@ -9275,10 +9158,10 @@ HSPLandroid/icu/impl/number/AffixUtils;->hasCurrencySymbols(Ljava/lang/CharSeque HSPLandroid/icu/impl/number/AffixUtils;->hasNext(JLjava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;,Ljava/lang/String; HSPLandroid/icu/impl/number/AffixUtils;->iterateWithConsumer(Ljava/lang/CharSequence;Landroid/icu/impl/number/AffixUtils$TokenConsumer;)V HSPLandroid/icu/impl/number/AffixUtils;->makeTag(IIII)J -HSPLandroid/icu/impl/number/AffixUtils;->nextToken(JLjava/lang/CharSequence;)J +HSPLandroid/icu/impl/number/AffixUtils;->nextToken(JLjava/lang/CharSequence;)J+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder; HSPLandroid/icu/impl/number/AffixUtils;->unescape(Ljava/lang/CharSequence;Landroid/icu/impl/FormattedStringBuilder;ILandroid/icu/impl/number/AffixUtils$SymbolProvider;Landroid/icu/text/NumberFormat$Field;)I HSPLandroid/icu/impl/number/AffixUtils;->unescapedCount(Ljava/lang/CharSequence;ZLandroid/icu/impl/number/AffixUtils$SymbolProvider;)I -HSPLandroid/icu/impl/number/ConstantAffixModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I +HSPLandroid/icu/impl/number/ConstantAffixModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I+]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder; HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;ZZ)V HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;ZZLandroid/icu/impl/number/Modifier$Parameters;)V HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I @@ -9372,7 +9255,7 @@ HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->applyMaxInteger(I)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->convertToAccurateDouble()V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->copyFrom(Landroid/icu/impl/number/DecimalQuantity;)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fitsInLong()Z+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; -HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getDigit(I)B +HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getDigit(I)B+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getLowerDisplayMagnitude()I HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getMagnitude()I HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D @@ -9385,20 +9268,20 @@ HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->isZeroish()Z HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->negate()V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->populateUFieldPosition(Ljava/text/FieldPosition;)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->roundToMagnitude(ILjava/math/MathContext;)V -HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->roundToMagnitude(ILjava/math/MathContext;Z)V +HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->roundToMagnitude(ILjava/math/MathContext;Z)V+]Ljava/math/MathContext;Ljava/math/MathContext;]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;]Ljava/math/RoundingMode;Ljava/math/RoundingMode; HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->safeSubtract(II)I HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setMinFraction(I)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setMinInteger(I)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToBigDecimal(Ljava/math/BigDecimal;)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToDouble(D)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToInt(I)V -HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToLong(J)V +HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToLong(J)V+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->signum()Landroid/icu/impl/number/Modifier$Signum; HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->toLong(Z)J+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->()V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(D)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(I)V -HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(J)V +HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(J)V+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(Ljava/lang/Number;)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(Ljava/math/BigDecimal;)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->compact()V @@ -9414,9 +9297,9 @@ HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->setDigitPos(IB)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->shiftLeft(I)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->shiftRight(I)V HSPLandroid/icu/impl/number/Grouper;->(SSS)V -HSPLandroid/icu/impl/number/Grouper;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Grouper; +HSPLandroid/icu/impl/number/Grouper;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Grouper;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/Grouper;->getInstance(SSS)Landroid/icu/impl/number/Grouper; -HSPLandroid/icu/impl/number/Grouper;->getMinGroupingForLocale(Landroid/icu/util/ULocale;)S +HSPLandroid/icu/impl/number/Grouper;->getMinGroupingForLocale(Landroid/icu/util/ULocale;)S+]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable;]Ljava/lang/Short;Ljava/lang/Short; HSPLandroid/icu/impl/number/Grouper;->getPrimary()S HSPLandroid/icu/impl/number/Grouper;->getSecondary()S HSPLandroid/icu/impl/number/Grouper;->groupAtPosition(ILandroid/icu/impl/number/DecimalQuantity;)Z @@ -9438,16 +9321,16 @@ HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->ap HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; HSPLandroid/icu/impl/number/MutablePatternModifier;->(Z)V HSPLandroid/icu/impl/number/MutablePatternModifier;->addToChain(Landroid/icu/impl/number/MicroPropsGenerator;)Landroid/icu/impl/number/MicroPropsGenerator; -HSPLandroid/icu/impl/number/MutablePatternModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I +HSPLandroid/icu/impl/number/MutablePatternModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I+]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider; HSPLandroid/icu/impl/number/MutablePatternModifier;->createConstantModifier(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;)Landroid/icu/impl/number/ConstantMultiFieldModifier; HSPLandroid/icu/impl/number/MutablePatternModifier;->createImmutable()Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier; HSPLandroid/icu/impl/number/MutablePatternModifier;->getPrefixLength()I HSPLandroid/icu/impl/number/MutablePatternModifier;->getSymbol(I)Ljava/lang/CharSequence; HSPLandroid/icu/impl/number/MutablePatternModifier;->insertPrefix(Landroid/icu/impl/FormattedStringBuilder;I)I HSPLandroid/icu/impl/number/MutablePatternModifier;->insertSuffix(Landroid/icu/impl/FormattedStringBuilder;I)I -HSPLandroid/icu/impl/number/MutablePatternModifier;->needsPlurals()Z +HSPLandroid/icu/impl/number/MutablePatternModifier;->needsPlurals()Z+]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider; HSPLandroid/icu/impl/number/MutablePatternModifier;->prepareAffix(Z)V -HSPLandroid/icu/impl/number/MutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; +HSPLandroid/icu/impl/number/MutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;+]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/impl/number/MicroPropsGenerator;Landroid/icu/impl/number/MicroProps;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/MutablePatternModifier;->setNumberProperties(Landroid/icu/impl/number/Modifier$Signum;Landroid/icu/impl/StandardPlural;)V HSPLandroid/icu/impl/number/MutablePatternModifier;->setPatternAttributes(Landroid/icu/number/NumberFormatter$SignDisplay;ZZ)V HSPLandroid/icu/impl/number/MutablePatternModifier;->setPatternInfo(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/text/NumberFormat$Field;)V @@ -9461,40 +9344,40 @@ HSPLandroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;->()V HSPLandroid/icu/impl/number/PatternStringParser$ParserState;->(Ljava/lang/String;)V HSPLandroid/icu/impl/number/PatternStringParser$ParserState;->next()I+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser$ParserState;->peek()I+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/impl/number/PatternStringParser;->consumeAffix(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)J +HSPLandroid/icu/impl/number/PatternStringParser;->consumeAffix(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)J+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeExponent(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V -HSPLandroid/icu/impl/number/PatternStringParser;->consumeFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V +HSPLandroid/icu/impl/number/PatternStringParser;->consumeFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeFractionFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeIntegerFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeLiteral(Landroid/icu/impl/number/PatternStringParser$ParserState;)V HSPLandroid/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$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; -HSPLandroid/icu/impl/number/PatternStringParser;->consumePattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)V +HSPLandroid/icu/impl/number/PatternStringParser;->consumePattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)V+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeSubpattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V HSPLandroid/icu/impl/number/PatternStringParser;->parseToExistingProperties(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V HSPLandroid/icu/impl/number/PatternStringParser;->parseToExistingPropertiesImpl(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V HSPLandroid/icu/impl/number/PatternStringParser;->parseToPatternInfo(Ljava/lang/String;)Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo; -HSPLandroid/icu/impl/number/PatternStringParser;->patternInfoToProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;I)V +HSPLandroid/icu/impl/number/PatternStringParser;->patternInfoToProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;I)V+]Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/PatternStringUtils$PatternSignType;->()V HSPLandroid/icu/impl/number/PatternStringUtils$PatternSignType;->(Ljava/lang/String;I)V HSPLandroid/icu/impl/number/PatternStringUtils$PatternSignType;->values()[Landroid/icu/impl/number/PatternStringUtils$PatternSignType; -HSPLandroid/icu/impl/number/PatternStringUtils;->patternInfoToStringBuilder(Landroid/icu/impl/number/AffixPatternProvider;ZLandroid/icu/impl/number/PatternStringUtils$PatternSignType;ZLandroid/icu/impl/StandardPlural;ZLjava/lang/StringBuilder;)V +HSPLandroid/icu/impl/number/PatternStringUtils;->patternInfoToStringBuilder(Landroid/icu/impl/number/AffixPatternProvider;ZLandroid/icu/impl/number/PatternStringUtils$PatternSignType;ZLandroid/icu/impl/StandardPlural;ZLjava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural; HSPLandroid/icu/impl/number/PatternStringUtils;->propertiesToPatternString(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; -HSPLandroid/icu/impl/number/PatternStringUtils;->resolveSignDisplay(Landroid/icu/number/NumberFormatter$SignDisplay;Landroid/icu/impl/number/Modifier$Signum;)Landroid/icu/impl/number/PatternStringUtils$PatternSignType; +HSPLandroid/icu/impl/number/PatternStringUtils;->resolveSignDisplay(Landroid/icu/number/NumberFormatter$SignDisplay;Landroid/icu/impl/number/Modifier$Signum;)Landroid/icu/impl/number/PatternStringUtils$PatternSignType;+]Landroid/icu/impl/number/Modifier$Signum;Landroid/icu/impl/number/Modifier$Signum;]Landroid/icu/number/NumberFormatter$SignDisplay;Landroid/icu/number/NumberFormatter$SignDisplay; HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->(Landroid/icu/impl/number/DecimalFormatProperties;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->charAt(II)C HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->containsSymbolType(I)Z HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->currencyAsDecimal()Z -HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/AffixPatternProvider; +HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/AffixPatternProvider;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->getString(I)Ljava/lang/String; HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasBody()Z HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasCurrencySign()Z HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasNegativeSubpattern()Z+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->length(I)I -HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOr34Digits(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext; -HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOrUnlimited(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext; +HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->length(I)I+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/number/PropertiesAffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider; +HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOr34Digits(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Ljava/math/RoundingMode;Ljava/math/RoundingMode; +HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOrUnlimited(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Ljava/math/RoundingMode;Ljava/math/RoundingMode; HSPLandroid/icu/impl/number/RoundingUtils;->getRoundingDirection(ZZIILjava/lang/Object;)Z HSPLandroid/icu/impl/number/RoundingUtils;->roundsAtMidpoint(I)Z -HSPLandroid/icu/impl/number/RoundingUtils;->scaleFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/Scale; +HSPLandroid/icu/impl/number/RoundingUtils;->scaleFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/Scale;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/SimpleModifier;->(Ljava/lang/String;Ljava/text/Format$Field;ZLandroid/icu/impl/number/Modifier$Parameters;)V HSPLandroid/icu/impl/number/SimpleModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I HSPLandroid/icu/impl/number/parse/AffixMatcher$1;->compare(Landroid/icu/impl/number/parse/AffixMatcher;Landroid/icu/impl/number/parse/AffixMatcher;)I @@ -9520,7 +9403,7 @@ HSPLandroid/icu/impl/number/parse/DecimalMatcher;->getInstance(Landroid/icu/text HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)Z HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;I)Z+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber;]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment; HSPLandroid/icu/impl/number/parse/DecimalMatcher;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V -HSPLandroid/icu/impl/number/parse/DecimalMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z +HSPLandroid/icu/impl/number/parse/DecimalMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z+]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment; HSPLandroid/icu/impl/number/parse/DecimalMatcher;->validateGroup(IIZ)Z HSPLandroid/icu/impl/number/parse/IgnorablesMatcher;->getInstance(I)Landroid/icu/impl/number/parse/IgnorablesMatcher; HSPLandroid/icu/impl/number/parse/InfinityMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/impl/number/parse/InfinityMatcher; @@ -9532,9 +9415,9 @@ HSPLandroid/icu/impl/number/parse/NumberParserImpl;->addMatchers(Ljava/util/Coll HSPLandroid/icu/impl/number/parse/NumberParserImpl;->createParserFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Z)Landroid/icu/impl/number/parse/NumberParserImpl;+]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/NumberParserImpl;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/parse/NumberParserImpl;->freeze()V HSPLandroid/icu/impl/number/parse/NumberParserImpl;->getParseFlags()I -HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parse(Ljava/lang/String;IZLandroid/icu/impl/number/parse/ParsedNumber;)V+]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/number/parse/NumberParseMatcher;megamorphic_types]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment; +HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parse(Ljava/lang/String;IZLandroid/icu/impl/number/parse/ParsedNumber;)V+]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/number/parse/NumberParseMatcher;megamorphic_types]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parseGreedy(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/number/parse/NumberParseMatcher;megamorphic_types]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment; -HSPLandroid/icu/impl/number/parse/ParsedNumber;->()V +HSPLandroid/icu/impl/number/parse/ParsedNumber;->()V+]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber; HSPLandroid/icu/impl/number/parse/ParsedNumber;->clear()V HSPLandroid/icu/impl/number/parse/ParsedNumber;->getNumber(I)Ljava/lang/Number;+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/parse/ParsedNumber;->postProcess()V @@ -9545,7 +9428,7 @@ HSPLandroid/icu/impl/number/parse/RequireAffixValidator;->()V HSPLandroid/icu/impl/number/parse/RequireAffixValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V HSPLandroid/icu/impl/number/parse/RequireNumberValidator;->()V HSPLandroid/icu/impl/number/parse/RequireNumberValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V -HSPLandroid/icu/impl/number/parse/ScientificMatcher;->(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V +HSPLandroid/icu/impl/number/parse/ScientificMatcher;->(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet; HSPLandroid/icu/impl/number/parse/ScientificMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)Landroid/icu/impl/number/parse/ScientificMatcher; HSPLandroid/icu/impl/number/parse/ScientificMatcher;->minusSignSet()Landroid/icu/text/UnicodeSet; HSPLandroid/icu/impl/number/parse/ScientificMatcher;->plusSignSet()Landroid/icu/text/UnicodeSet; @@ -9589,7 +9472,7 @@ HSPLandroid/icu/number/IntegerWidth;->(II)V HSPLandroid/icu/number/IntegerWidth;->truncateAt(I)Landroid/icu/number/IntegerWidth; HSPLandroid/icu/number/IntegerWidth;->zeroFillTo(I)Landroid/icu/number/IntegerWidth; HSPLandroid/icu/number/LocalizedNumberFormatter;->(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V -HSPLandroid/icu/number/LocalizedNumberFormatter;->computeCompiled()Z +HSPLandroid/icu/number/LocalizedNumberFormatter;->computeCompiled()Z+]Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;]Landroid/icu/number/LocalizedNumberFormatter;Landroid/icu/number/LocalizedNumberFormatter;]Ljava/lang/Long;Ljava/lang/Long; HSPLandroid/icu/number/LocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/LocalizedNumberFormatter; HSPLandroid/icu/number/LocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/NumberFormatterSettings; HSPLandroid/icu/number/LocalizedNumberFormatter;->format(D)Landroid/icu/number/FormattedNumber; @@ -9605,27 +9488,27 @@ HSPLandroid/icu/number/NumberFormatterImpl;->formatStatic(Landroid/icu/impl/numb HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffix(BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixImpl(Landroid/icu/impl/number/MicroPropsGenerator;BLandroid/icu/impl/FormattedStringBuilder;)I HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixStatic(Landroid/icu/impl/number/MacroProps;BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I -HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;+]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/text/NumberingSystem;Landroid/icu/text/NumberingSystem;]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl; +HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;+]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/text/NumberingSystem;Landroid/icu/text/NumberingSystem;]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier; HSPLandroid/icu/number/NumberFormatterImpl;->preProcess(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; -HSPLandroid/icu/number/NumberFormatterImpl;->preProcessUnsafe(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; +HSPLandroid/icu/number/NumberFormatterImpl;->preProcessUnsafe(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;+]Landroid/icu/impl/number/MicroPropsGenerator;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/number/NumberFormatterImpl;->unitIsBaseUnit(Landroid/icu/util/MeasureUnit;)Z HSPLandroid/icu/number/NumberFormatterImpl;->unitIsCurrency(Landroid/icu/util/MeasureUnit;)Z HSPLandroid/icu/number/NumberFormatterImpl;->unitIsPercent(Landroid/icu/util/MeasureUnit;)Z HSPLandroid/icu/number/NumberFormatterImpl;->unitIsPermille(Landroid/icu/util/MeasureUnit;)Z -HSPLandroid/icu/number/NumberFormatterImpl;->writeAffixes(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/FormattedStringBuilder;II)I -HSPLandroid/icu/number/NumberFormatterImpl;->writeFractionDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I +HSPLandroid/icu/number/NumberFormatterImpl;->writeAffixes(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/FormattedStringBuilder;II)I+]Landroid/icu/impl/number/Padder;Landroid/icu/impl/number/Padder;]Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/MutablePatternModifier;,Landroid/icu/impl/number/ConstantAffixModifier; +HSPLandroid/icu/number/NumberFormatterImpl;->writeFractionDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/number/NumberFormatterImpl;->writeIntegerDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I+]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; -HSPLandroid/icu/number/NumberFormatterImpl;->writeNumber(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I +HSPLandroid/icu/number/NumberFormatterImpl;->writeNumber(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/number/NumberFormatterSettings;->(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V -HSPLandroid/icu/number/NumberFormatterSettings;->macros(Landroid/icu/impl/number/MacroProps;)Landroid/icu/number/NumberFormatterSettings; +HSPLandroid/icu/number/NumberFormatterSettings;->macros(Landroid/icu/impl/number/MacroProps;)Landroid/icu/number/NumberFormatterSettings;+]Landroid/icu/number/NumberFormatterSettings;Landroid/icu/number/UnlocalizedNumberFormatter; HSPLandroid/icu/number/NumberFormatterSettings;->perUnit(Landroid/icu/util/MeasureUnit;)Landroid/icu/number/NumberFormatterSettings; HSPLandroid/icu/number/NumberFormatterSettings;->resolve()Landroid/icu/impl/number/MacroProps;+]Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MacroProps; HSPLandroid/icu/number/NumberFormatterSettings;->unit(Landroid/icu/util/MeasureUnit;)Landroid/icu/number/NumberFormatterSettings; HSPLandroid/icu/number/NumberFormatterSettings;->unitWidth(Landroid/icu/number/NumberFormatter$UnitWidth;)Landroid/icu/number/NumberFormatterSettings; -HSPLandroid/icu/number/NumberPropertyMapper;->create(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/UnlocalizedNumberFormatter; -HSPLandroid/icu/number/NumberPropertyMapper;->oldToNew(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/MacroProps;+]Ljava/math/MathContext;Ljava/math/MathContext;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/number/IntegerWidth;Landroid/icu/number/IntegerWidth;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; +HSPLandroid/icu/number/NumberPropertyMapper;->create(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/UnlocalizedNumberFormatter;+]Landroid/icu/number/UnlocalizedNumberFormatter;Landroid/icu/number/UnlocalizedNumberFormatter; +HSPLandroid/icu/number/NumberPropertyMapper;->oldToNew(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/MacroProps;+]Ljava/math/MathContext;Ljava/math/MathContext;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;,Landroid/icu/number/Precision$CurrencyRounderImpl;]Landroid/icu/number/IntegerWidth;Landroid/icu/number/IntegerWidth;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Landroid/icu/number/CurrencyPrecision;Landroid/icu/number/Precision$CurrencyRounderImpl;]Landroid/icu/util/Currency;Landroid/icu/util/Currency; HSPLandroid/icu/number/Precision$FractionRounderImpl;->(II)V -HSPLandroid/icu/number/Precision$FractionRounderImpl;->apply(Landroid/icu/impl/number/DecimalQuantity;)V +HSPLandroid/icu/number/Precision$FractionRounderImpl;->apply(Landroid/icu/impl/number/DecimalQuantity;)V+]Landroid/icu/number/Precision$FractionRounderImpl;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/number/Precision$FractionRounderImpl;->createCopy()Landroid/icu/number/Precision$FractionRounderImpl; HSPLandroid/icu/number/Precision$FractionRounderImpl;->createCopy()Landroid/icu/number/Precision; HSPLandroid/icu/number/Precision;->-$$Nest$smgetDisplayMagnitudeFraction(I)I @@ -9638,12 +9521,12 @@ HSPLandroid/icu/number/Precision;->getDisplayMagnitudeFraction(I)I HSPLandroid/icu/number/Precision;->getRoundingMagnitudeFraction(I)I HSPLandroid/icu/number/Precision;->setResolvedMinFraction(Landroid/icu/impl/number/DecimalQuantity;I)V HSPLandroid/icu/number/Precision;->withLocaleData(Landroid/icu/util/Currency;)Landroid/icu/number/Precision; -HSPLandroid/icu/number/Precision;->withMode(Ljava/math/MathContext;)Landroid/icu/number/Precision; +HSPLandroid/icu/number/Precision;->withMode(Ljava/math/MathContext;)Landroid/icu/number/Precision;+]Ljava/math/MathContext;Ljava/math/MathContext; HSPLandroid/icu/number/Scale;->applyTo(Landroid/icu/impl/number/DecimalQuantity;)V HSPLandroid/icu/number/Scale;->powerOfTen(I)Landroid/icu/number/Scale; HSPLandroid/icu/number/Scale;->withMathContext(Ljava/math/MathContext;)Landroid/icu/number/Scale; HSPLandroid/icu/number/UnlocalizedNumberFormatter;->(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V -HSPLandroid/icu/number/UnlocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/NumberFormatterSettings; +HSPLandroid/icu/number/UnlocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/NumberFormatterSettings;+]Landroid/icu/number/UnlocalizedNumberFormatter;Landroid/icu/number/UnlocalizedNumberFormatter; HSPLandroid/icu/number/UnlocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/UnlocalizedNumberFormatter; HSPLandroid/icu/number/UnlocalizedNumberFormatter;->locale(Landroid/icu/util/ULocale;)Landroid/icu/number/LocalizedNumberFormatter; HSPLandroid/icu/platform/AndroidDataFiles;->generateIcuDataPath()Ljava/lang/String; @@ -9655,20 +9538,20 @@ HSPLandroid/icu/text/Bidi;->(II)V HSPLandroid/icu/text/Bidi;->DirPropFlag(B)I HSPLandroid/icu/text/Bidi;->GetParaLevelAt(I)B HSPLandroid/icu/text/Bidi;->directionFromFlags()B -HSPLandroid/icu/text/Bidi;->getCustomizedClass(I)I +HSPLandroid/icu/text/Bidi;->getCustomizedClass(I)I+]Landroid/icu/impl/UBiDiProps;Landroid/icu/impl/UBiDiProps; HSPLandroid/icu/text/Bidi;->getDirProps()V+]Landroid/icu/text/Bidi;Landroid/icu/text/Bidi; HSPLandroid/icu/text/Bidi;->getDirPropsMemory(I)V HSPLandroid/icu/text/Bidi;->getLevelsMemory(I)V HSPLandroid/icu/text/Bidi;->getMemory(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;ZI)Ljava/lang/Object; -HSPLandroid/icu/text/Bidi;->resolveExplicitLevels()B -HSPLandroid/icu/text/Bidi;->setPara([CB[B)V +HSPLandroid/icu/text/Bidi;->resolveExplicitLevels()B+]Landroid/icu/text/Bidi;Landroid/icu/text/Bidi; +HSPLandroid/icu/text/Bidi;->setPara([CB[B)V+]Landroid/icu/text/Bidi;Landroid/icu/text/Bidi; HSPLandroid/icu/text/Bidi;->verifyRange(III)V HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->(Landroid/icu/util/ULocale;Landroid/icu/text/BreakIterator;)V -HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator;+]Landroid/icu/text/BreakIterator;Landroid/icu/text/RuleBasedBreakIterator; HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->getLocale()Landroid/icu/util/ULocale; HSPLandroid/icu/text/BreakIterator;->()V HSPLandroid/icu/text/BreakIterator;->clone()Ljava/lang/Object; -HSPLandroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/impl/CacheValue;Landroid/icu/impl/CacheValue$StrongValue;]Landroid/icu/text/BreakIterator$BreakIteratorCache;Landroid/icu/text/BreakIterator$BreakIteratorCache; HSPLandroid/icu/text/BreakIterator;->getSentenceInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator; HSPLandroid/icu/text/BreakIterator;->getShim()Landroid/icu/text/BreakIterator$BreakIteratorServiceShim; HSPLandroid/icu/text/BreakIterator;->getWordInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator; @@ -9725,7 +9608,7 @@ HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;Ljava HSPLandroid/icu/text/DateFormat;->getPatternInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; HSPLandroid/icu/text/DateFormat;->getTimeInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; HSPLandroid/icu/text/DateFormat;->setCalendar(Landroid/icu/util/Calendar;)V -HSPLandroid/icu/text/DateFormat;->setContext(Landroid/icu/text/DisplayContext;)V +HSPLandroid/icu/text/DateFormat;->setContext(Landroid/icu/text/DisplayContext;)V+]Landroid/icu/text/DisplayContext;Landroid/icu/text/DisplayContext; HSPLandroid/icu/text/DateFormat;->setTimeZone(Landroid/icu/util/TimeZone;)V HSPLandroid/icu/text/DateFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/text/DateFormatSymbols$1;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormatSymbols$AospExtendedDateFormatSymbols; @@ -9740,7 +9623,7 @@ HSPLandroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->values()[Lan HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/ULocale;)V HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;Landroid/icu/text/DateFormatSymbols$AospExtendedDateFormatSymbols;)V -HSPLandroid/icu/text/DateFormatSymbols;->(Ljava/lang/Class;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateFormatSymbols;->(Ljava/lang/Class;Landroid/icu/util/ULocale;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/text/DateFormatSymbols;Landroid/icu/text/DateFormatSymbols;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/icu/text/DateFormatSymbols;->(Ljava/lang/Class;Ljava/util/Locale;)V HSPLandroid/icu/text/DateFormatSymbols;->duplicate([Ljava/lang/String;)[Ljava/lang/String; HSPLandroid/icu/text/DateFormatSymbols;->getAmPmStrings()[Ljava/lang/String; @@ -9759,7 +9642,7 @@ HSPLandroid/icu/text/DateIntervalFormat;->(Ljava/lang/String;Landroid/icu/ HSPLandroid/icu/text/DateIntervalFormat;->adjustFieldWidth(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/lang/String; HSPLandroid/icu/text/DateIntervalFormat;->concatSingleDate2TimeInterval(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;)V HSPLandroid/icu/text/DateIntervalFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -HSPLandroid/icu/text/DateIntervalFormat;->formatImpl(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Landroid/icu/text/DateIntervalFormat$FormatOutput;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DateIntervalFormat;->formatImpl(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Landroid/icu/text/DateIntervalFormat$FormatOutput;Ljava/util/List;)Ljava/lang/StringBuffer;+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/text/SimpleDateFormat;Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/DateIntervalFormat;->genIntervalPattern(ILjava/lang/String;Ljava/lang/String;ILjava/util/Map;)Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch; HSPLandroid/icu/text/DateIntervalFormat;->genSeparateDateTimePtn(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)Z HSPLandroid/icu/text/DateIntervalFormat;->getConcatenationPattern(Landroid/icu/util/ULocale;)Ljava/lang/String; @@ -9796,7 +9679,7 @@ HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Ljava/ HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->equals(Ljava/lang/Object;)Z HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->fieldIsNumeric(I)Z HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getBasePattern()Ljava/lang/String; -HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I+]Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DistanceInfo; HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getFieldMask()I HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->set(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$FormatParser;Z)Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher; HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->toCanonicalString()Ljava/lang/String; @@ -9879,12 +9762,12 @@ HSPLandroid/icu/text/DateTimePatternGenerator;->setDateTimeFromCalendar(Landroid HSPLandroid/icu/text/DateTimePatternGenerator;->setDecimal(Ljava/lang/String;)V HSPLandroid/icu/text/DateTimePatternGenerator;->setDecimalSymbols(Landroid/icu/util/ULocale;)V HSPLandroid/icu/text/DateTimePatternGenerator;->setFieldDisplayName(ILandroid/icu/text/DateTimePatternGenerator$DisplayWidth;Ljava/lang/String;)V -HSPLandroid/icu/text/DecimalFormat;->(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V +HSPLandroid/icu/text/DecimalFormat;->(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLandroid/icu/text/DecimalFormat;->(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V HSPLandroid/icu/text/DecimalFormat;->clone()Ljava/lang/Object; -HSPLandroid/icu/text/DecimalFormat;->fieldPositionHelper(Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;I)V +HSPLandroid/icu/text/DecimalFormat;->fieldPositionHelper(Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;I)V+]Ljava/text/FieldPosition;Ljava/text/DontCareFieldPosition;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -HSPLandroid/icu/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Landroid/icu/number/LocalizedNumberFormatter;Landroid/icu/number/LocalizedNumberFormatter;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLandroid/icu/text/DecimalFormat;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols; HSPLandroid/icu/text/DecimalFormat;->getMaximumFractionDigits()I HSPLandroid/icu/text/DecimalFormat;->getMaximumIntegerDigits()I @@ -9896,21 +9779,21 @@ HSPLandroid/icu/text/DecimalFormat;->getParser()Landroid/icu/impl/number/parse/N HSPLandroid/icu/text/DecimalFormat;->getPositivePrefix()Ljava/lang/String; HSPLandroid/icu/text/DecimalFormat;->getPositiveSuffix()Ljava/lang/String; HSPLandroid/icu/text/DecimalFormat;->isParseBigDecimal()Z -HSPLandroid/icu/text/DecimalFormat;->isParseIntegerOnly()Z +HSPLandroid/icu/text/DecimalFormat;->isParseIntegerOnly()Z+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber;]Ljava/text/ParsePosition;Ljava/text/ParsePosition;]Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/NumberParserImpl;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; -HSPLandroid/icu/text/DecimalFormat;->refreshFormatter()V +HSPLandroid/icu/text/DecimalFormat;->refreshFormatter()V+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/number/UnlocalizedNumberFormatter;Landroid/icu/number/UnlocalizedNumberFormatter;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLandroid/icu/text/DecimalFormat;->setCurrency(Landroid/icu/util/Currency;)V HSPLandroid/icu/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V HSPLandroid/icu/text/DecimalFormat;->setGroupingUsed(Z)V HSPLandroid/icu/text/DecimalFormat;->setMaximumFractionDigits(I)V -HSPLandroid/icu/text/DecimalFormat;->setMaximumIntegerDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->setMaximumIntegerDigits(I)V+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLandroid/icu/text/DecimalFormat;->setMinimumFractionDigits(I)V -HSPLandroid/icu/text/DecimalFormat;->setMinimumIntegerDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->setMinimumIntegerDigits(I)V+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLandroid/icu/text/DecimalFormat;->setParseIntegerOnly(Z)V HSPLandroid/icu/text/DecimalFormat;->setParseStrictMode(Landroid/icu/impl/number/DecimalFormatProperties$ParseMode;)V HSPLandroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V HSPLandroid/icu/text/DecimalFormat;->toNumberFormatter()Landroid/icu/number/LocalizedNumberFormatter; -HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Landroid/icu/util/ULocale;Ljava/lang/Void;)Landroid/icu/text/DecimalFormatSymbols$CacheData; HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/text/DecimalFormatSymbols$CacheData;->(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V @@ -9952,7 +9835,7 @@ HSPLandroid/icu/text/DecimalFormatSymbols;->getPlusSignString()Ljava/lang/String HSPLandroid/icu/text/DecimalFormatSymbols;->getULocale()Landroid/icu/util/ULocale; HSPLandroid/icu/text/DecimalFormatSymbols;->getZeroDigit()C HSPLandroid/icu/text/DecimalFormatSymbols;->initSpacingInfo(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;)V -HSPLandroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V+]Landroid/icu/impl/CurrencyData$CurrencyDisplayInfoProvider;Landroid/icu/impl/ICUCurrencyDisplayInfoProvider;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo; HSPLandroid/icu/text/DecimalFormatSymbols;->loadData(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData; HSPLandroid/icu/text/DecimalFormatSymbols;->setApproximatelySignString(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setCurrency(Landroid/icu/util/Currency;)V @@ -9961,7 +9844,7 @@ HSPLandroid/icu/text/DecimalFormatSymbols;->setCurrencySymbol(Ljava/lang/String; HSPLandroid/icu/text/DecimalFormatSymbols;->setDecimalSeparator(C)V HSPLandroid/icu/text/DecimalFormatSymbols;->setDecimalSeparatorString(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setDigit(C)V -HSPLandroid/icu/text/DecimalFormatSymbols;->setDigitStrings([Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setDigitStrings([Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/text/DecimalFormatSymbols;->setExponentMultiplicationSign(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setExponentSeparator(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setGroupingSeparator(C)V @@ -9984,7 +9867,7 @@ HSPLandroid/icu/text/DecimalFormatSymbols;->setPercent(C)V HSPLandroid/icu/text/DecimalFormatSymbols;->setPercentString(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSign(C)V HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSignString(Ljava/lang/String;)V -HSPLandroid/icu/text/DecimalFormatSymbols;->setZeroDigit(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setZeroDigit(C)V+][C[C][Ljava/lang/String;[Ljava/lang/String; HSPLandroid/icu/text/DisplayContext;->type()Landroid/icu/text/DisplayContext$Type; HSPLandroid/icu/text/Edits$Iterator;->next(Z)Z HSPLandroid/icu/text/Edits;->()V @@ -10002,7 +9885,7 @@ HSPLandroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/No HSPLandroid/icu/text/Normalizer2;->getNFCInstance()Landroid/icu/text/Normalizer2; HSPLandroid/icu/text/Normalizer2;->getNFDInstance()Landroid/icu/text/Normalizer2; HSPLandroid/icu/text/Normalizer2;->getNFKDInstance()Landroid/icu/text/Normalizer2; -HSPLandroid/icu/text/Normalizer2;->normalize(Ljava/lang/CharSequence;)Ljava/lang/String; +HSPLandroid/icu/text/Normalizer2;->normalize(Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/icu/text/Normalizer2;Landroid/icu/impl/Norm2AllModes$DecomposeNormalizer2; HSPLandroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Ljava/lang/String; HSPLandroid/icu/text/NumberFormat;->()V HSPLandroid/icu/text/NumberFormat;->clone()Ljava/lang/Object; @@ -10012,7 +9895,7 @@ HSPLandroid/icu/text/NumberFormat;->getInstance(Landroid/icu/util/ULocale;I)Land HSPLandroid/icu/text/NumberFormat;->getInstance(Ljava/util/Locale;I)Landroid/icu/text/NumberFormat; HSPLandroid/icu/text/NumberFormat;->getPattern(Landroid/icu/util/ULocale;I)Ljava/lang/String; HSPLandroid/icu/text/NumberFormat;->getPatternForStyle(Landroid/icu/util/ULocale;I)Ljava/lang/String; -HSPLandroid/icu/text/NumberFormat;->getPatternForStyleAndNumberingSystem(Landroid/icu/util/ULocale;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/icu/text/NumberFormat;->getPatternForStyleAndNumberingSystem(Landroid/icu/util/ULocale;Ljava/lang/String;I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable; HSPLandroid/icu/text/NumberFormat;->getShim()Landroid/icu/text/NumberFormat$NumberFormatShim; HSPLandroid/icu/text/NumberFormatServiceShim$NFService$1RBNumberFormatFactory;->handleCreate(Landroid/icu/util/ULocale;ILandroid/icu/impl/ICUService;)Ljava/lang/Object; HSPLandroid/icu/text/NumberFormatServiceShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; @@ -10020,7 +9903,7 @@ HSPLandroid/icu/text/NumberingSystem$1;->createInstance(Ljava/lang/Object;Ljava/ HSPLandroid/icu/text/NumberingSystem$1;->createInstance(Ljava/lang/String;Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem; HSPLandroid/icu/text/NumberingSystem$LocaleLookupData;->(Landroid/icu/util/ULocale;Ljava/lang/String;)V HSPLandroid/icu/text/NumberingSystem;->getDescription()Ljava/lang/String; -HSPLandroid/icu/text/NumberingSystem;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberingSystem; +HSPLandroid/icu/text/NumberingSystem;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberingSystem;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/impl/CacheBase;Landroid/icu/text/NumberingSystem$1; HSPLandroid/icu/text/NumberingSystem;->getInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem; HSPLandroid/icu/text/NumberingSystem;->getName()Ljava/lang/String; HSPLandroid/icu/text/NumberingSystem;->getRadix()I @@ -10100,15 +9983,15 @@ HSPLandroid/icu/text/RelativeDateTimeFormatter;->keyToDirection(Landroid/icu/imp HSPLandroid/icu/text/ReplaceableString;->(Ljava/lang/String;)V HSPLandroid/icu/text/ReplaceableString;->charAt(I)C HSPLandroid/icu/text/ReplaceableString;->getChars(II[CI)V -HSPLandroid/icu/text/ReplaceableString;->length()I +HSPLandroid/icu/text/ReplaceableString;->length()I+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->(Landroid/icu/text/RuleBasedBreakIterator;)V -HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$BreakCache;)V +HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$BreakCache;)V+][S[S][I[I HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->addFollowing(IIZ)V HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->addPreceding(IIZ)Z HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->current()I HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->following(I)V -HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->next()V -HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateFollowing()Z +HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->next()V+]Landroid/icu/text/RuleBasedBreakIterator$BreakCache;Landroid/icu/text/RuleBasedBreakIterator$BreakCache; +HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateFollowing()Z+]Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;]Landroid/icu/text/RuleBasedBreakIterator$BreakCache;Landroid/icu/text/RuleBasedBreakIterator$BreakCache; HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateNear(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populatePreceding()Z HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->preceding(I)V @@ -10117,19 +10000,19 @@ HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset()V HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset(II)V HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->seek(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->(Landroid/icu/text/RuleBasedBreakIterator;)V -HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;)V +HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;)V+]Landroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI;Landroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI; HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->following(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->preceding(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->reset()V HSPLandroid/icu/text/RuleBasedBreakIterator;->()V HSPLandroid/icu/text/RuleBasedBreakIterator;->CISetIndex32(Ljava/text/CharacterIterator;I)I HSPLandroid/icu/text/RuleBasedBreakIterator;->checkOffset(ILjava/text/CharacterIterator;)V -HSPLandroid/icu/text/RuleBasedBreakIterator;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/RuleBasedBreakIterator;->clone()Ljava/lang/Object;+]Ljava/text/CharacterIterator;Ljava/text/StringCharacterIterator; HSPLandroid/icu/text/RuleBasedBreakIterator;->first()I HSPLandroid/icu/text/RuleBasedBreakIterator;->following(I)I HSPLandroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/nio/ByteBuffer;)Landroid/icu/text/RuleBasedBreakIterator; HSPLandroid/icu/text/RuleBasedBreakIterator;->getText()Ljava/text/CharacterIterator; -HSPLandroid/icu/text/RuleBasedBreakIterator;->handleNext()I +HSPLandroid/icu/text/RuleBasedBreakIterator;->handleNext()I+]Landroid/icu/impl/RBBIDataWrapper;Landroid/icu/impl/RBBIDataWrapper;]Landroid/icu/util/CodePointTrie;Landroid/icu/util/CodePointTrie$Fast8;]Ljava/text/CharacterIterator;Ljava/text/StringCharacterIterator; HSPLandroid/icu/text/RuleBasedBreakIterator;->handleSafePrevious(I)I HSPLandroid/icu/text/RuleBasedBreakIterator;->isBoundary(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator;->next()I @@ -10148,7 +10031,7 @@ HSPLandroid/icu/text/RuleBasedCollator;->checkNotFrozen()V HSPLandroid/icu/text/RuleBasedCollator;->clone()Ljava/lang/Object; HSPLandroid/icu/text/RuleBasedCollator;->cloneAsThawed()Landroid/icu/text/RuleBasedCollator; HSPLandroid/icu/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I -HSPLandroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I +HSPLandroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I+]Landroid/icu/impl/coll/CollationData;Landroid/icu/impl/coll/CollationData;]Landroid/icu/impl/coll/SharedObject$Reference;Landroid/icu/impl/coll/SharedObject$Reference;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/icu/impl/coll/CollationSettings;Landroid/icu/impl/coll/CollationSettings; HSPLandroid/icu/text/RuleBasedCollator;->freeze()Landroid/icu/text/Collator; HSPLandroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer; HSPLandroid/icu/text/RuleBasedCollator;->getCollationKey(Ljava/lang/String;)Landroid/icu/text/CollationKey; @@ -10168,10 +10051,10 @@ HSPLandroid/icu/text/RuleBasedCollator;->writeSortKey(Ljava/lang/CharSequence;La HSPLandroid/icu/text/SimpleDateFormat$PatternItem;->(CI)V HSPLandroid/icu/text/SimpleDateFormat;->(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V HSPLandroid/icu/text/SimpleDateFormat;->(Ljava/lang/String;Landroid/icu/util/ULocale;)V -HSPLandroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V -HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; +HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/FieldPosition;Ljava/text/FieldPosition;]Landroid/icu/text/SimpleDateFormat;Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/text/SimpleDateFormat;Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/SimpleDateFormat;->getIndexFromChar(C)I HSPLandroid/icu/text/SimpleDateFormat;->getInstance(Landroid/icu/util/Calendar$FormatConfiguration;)Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/SimpleDateFormat;->getLocale()Landroid/icu/util/ULocale; @@ -10186,7 +10069,7 @@ HSPLandroid/icu/text/SimpleDateFormat;->parsePattern()V HSPLandroid/icu/text/SimpleDateFormat;->safeAppend([Ljava/lang/String;ILjava/lang/StringBuffer;)V HSPLandroid/icu/text/SimpleDateFormat;->safeAppendWithMonthPattern([Ljava/lang/String;ILjava/lang/StringBuffer;Ljava/lang/String;)V HSPLandroid/icu/text/SimpleDateFormat;->setContext(Landroid/icu/text/DisplayContext;)V -HSPLandroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;CLandroid/icu/util/Calendar;)V +HSPLandroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;CLandroid/icu/util/Calendar;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/FieldPosition;Ljava/text/FieldPosition;]Landroid/icu/text/SimpleDateFormat;Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/SimpleDateFormat;->toPattern()Ljava/lang/String; HSPLandroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V HSPLandroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -10197,7 +10080,7 @@ HSPLandroid/icu/text/TimeZoneNames;->getInstance(Landroid/icu/util/ULocale;)Land HSPLandroid/icu/text/TimeZoneNames;->getInstance(Ljava/util/Locale;)Landroid/icu/text/TimeZoneNames; HSPLandroid/icu/text/UCharacterIterator;->()V HSPLandroid/icu/text/UCharacterIterator;->getInstance(Ljava/lang/String;)Landroid/icu/text/UCharacterIterator; -HSPLandroid/icu/text/UCharacterIterator;->getText()Ljava/lang/String; +HSPLandroid/icu/text/UCharacterIterator;->getText()Ljava/lang/String;+]Landroid/icu/text/UCharacterIterator;Landroid/icu/impl/ReplaceableUCharacterIterator; HSPLandroid/icu/text/UCharacterIterator;->getText([C)I HSPLandroid/icu/text/UCharacterIterator;->setToStart()V HSPLandroid/icu/text/UFormat;->()V @@ -10273,19 +10156,19 @@ HSPLandroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/Calendar;Land HSPLandroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; HSPLandroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; -HSPLandroid/icu/util/Calendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/Calendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/util/Calendar;->clone()Ljava/lang/Object; -HSPLandroid/icu/util/Calendar;->complete()V -HSPLandroid/icu/util/Calendar;->computeFields()V -HSPLandroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V +HSPLandroid/icu/util/Calendar;->complete()V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/icu/util/Calendar;->computeFields()V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/util/TimeZone;Landroid/icu/impl/OlsonTimeZone; +HSPLandroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->computeGregorianFields(I)V -HSPLandroid/icu/util/Calendar;->computeWeekFields()V +HSPLandroid/icu/util/Calendar;->computeWeekFields()V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar; HSPLandroid/icu/util/Calendar;->floorDivide(II[I)I HSPLandroid/icu/util/Calendar;->floorDivide(JI[I)I HSPLandroid/icu/util/Calendar;->floorDivide(JJ)J HSPLandroid/icu/util/Calendar;->formatHelper(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;II)Landroid/icu/text/DateFormat; -HSPLandroid/icu/util/Calendar;->get(I)I +HSPLandroid/icu/util/Calendar;->get(I)I+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->getCalendarTypeForLocale(Landroid/icu/util/ULocale;)Landroid/icu/impl/CalType; HSPLandroid/icu/util/Calendar;->getDateTimeFormat(IILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; HSPLandroid/icu/util/Calendar;->getDateTimeFormatString(Landroid/icu/util/ULocale;Ljava/lang/String;II)Ljava/lang/String; @@ -10304,7 +10187,7 @@ HSPLandroid/icu/util/Calendar;->getLimit(II)I HSPLandroid/icu/util/Calendar;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/Calendar;->getMinimalDaysInFirstWeek()I HSPLandroid/icu/util/Calendar;->getPatternData(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; -HSPLandroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String; +HSPLandroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/util/Calendar;->getRepeatedWallTimeOption()I HSPLandroid/icu/util/Calendar;->getSkippedWallTimeOption()I HSPLandroid/icu/util/Calendar;->getTimeInMillis()J @@ -10312,22 +10195,22 @@ HSPLandroid/icu/util/Calendar;->getTimeZone()Landroid/icu/util/TimeZone; HSPLandroid/icu/util/Calendar;->getWeekDataForRegionInternal(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; HSPLandroid/icu/util/Calendar;->handleCreateFields()[I HSPLandroid/icu/util/Calendar;->handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; -HSPLandroid/icu/util/Calendar;->initInternal()V +HSPLandroid/icu/util/Calendar;->initInternal()V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->internalSet(II)V -HSPLandroid/icu/util/Calendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z +HSPLandroid/icu/util/Calendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/util/TimeZone;Landroid/icu/impl/OlsonTimeZone;]Ljava/lang/Object;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->isLenient()Z HSPLandroid/icu/util/Calendar;->julianDayToDayOfWeek(I)I -HSPLandroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/util/Calendar;->setFirstDayOfWeek(I)V HSPLandroid/icu/util/Calendar;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V HSPLandroid/icu/util/Calendar;->setMinimalDaysInFirstWeek(I)V HSPLandroid/icu/util/Calendar;->setTime(Ljava/util/Date;)V HSPLandroid/icu/util/Calendar;->setTimeInMillis(J)V HSPLandroid/icu/util/Calendar;->setTimeZone(Landroid/icu/util/TimeZone;)V -HSPLandroid/icu/util/Calendar;->setWeekData(Landroid/icu/util/Calendar$WeekData;)Landroid/icu/util/Calendar; -HSPLandroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V -HSPLandroid/icu/util/Calendar;->weekNumber(II)I -HSPLandroid/icu/util/Calendar;->weekNumber(III)I +HSPLandroid/icu/util/Calendar;->setWeekData(Landroid/icu/util/Calendar$WeekData;)Landroid/icu/util/Calendar;+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/util/Calendar$WeekDataCache;Landroid/icu/util/Calendar$WeekDataCache; +HSPLandroid/icu/util/Calendar;->weekNumber(II)I+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/icu/util/Calendar;->weekNumber(III)I+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/CharsTrie;->(Ljava/lang/CharSequence;I)V HSPLandroid/icu/util/CharsTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result; HSPLandroid/icu/util/CharsTrie;->first(I)Landroid/icu/util/BytesTrie$Result; @@ -10383,8 +10266,8 @@ HSPLandroid/icu/util/Currency;->getInstance(Ljava/lang/String;)Landroid/icu/util HSPLandroid/icu/util/Currency;->getInstance(Ljava/util/Locale;)Landroid/icu/util/Currency; HSPLandroid/icu/util/Currency;->getName(Landroid/icu/util/ULocale;I[Z)Ljava/lang/String;+]Landroid/icu/text/CurrencyDisplayNames;Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo; HSPLandroid/icu/util/Currency;->getRoundingIncrement(Landroid/icu/util/Currency$CurrencyUsage;)D -HSPLandroid/icu/util/Currency;->getSymbol(Landroid/icu/util/ULocale;)Ljava/lang/String; -HSPLandroid/icu/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String; +HSPLandroid/icu/util/Currency;->getSymbol(Landroid/icu/util/ULocale;)Ljava/lang/String;+]Landroid/icu/util/Currency;Landroid/icu/util/Currency; +HSPLandroid/icu/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String;+]Landroid/icu/util/Currency;Landroid/icu/util/Currency; HSPLandroid/icu/util/Currency;->getTenderCurrencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; HSPLandroid/icu/util/Currency;->isAlpha3Code(Ljava/lang/String;)Z HSPLandroid/icu/util/Currency;->loadCurrency(Ljava/lang/String;)Landroid/icu/util/Currency; @@ -10395,10 +10278,10 @@ HSPLandroid/icu/util/DateTimeRule;->getRuleDayOfWeek()I HSPLandroid/icu/util/DateTimeRule;->getRuleMillisInDay()I HSPLandroid/icu/util/DateTimeRule;->getRuleMonth()I HSPLandroid/icu/util/DateTimeRule;->getTimeRuleType()I -HSPLandroid/icu/util/GregorianCalendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/GregorianCalendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V+]Landroid/icu/util/GregorianCalendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/GregorianCalendar;->getType()Ljava/lang/String; -HSPLandroid/icu/util/GregorianCalendar;->handleComputeFields(I)V -HSPLandroid/icu/util/GregorianCalendar;->handleGetYearLength(I)I +HSPLandroid/icu/util/GregorianCalendar;->handleComputeFields(I)V+]Landroid/icu/util/GregorianCalendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/icu/util/GregorianCalendar;->handleGetYearLength(I)I+]Landroid/icu/util/GregorianCalendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/GregorianCalendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z HSPLandroid/icu/util/GregorianCalendar;->isLeapYear(I)Z HSPLandroid/icu/util/InitialTimeZoneRule;->(Ljava/lang/String;II)V @@ -10460,7 +10343,7 @@ HSPLandroid/icu/util/MutableCodePointTrie;->writeBlock(II)V HSPLandroid/icu/util/Output;->(Ljava/lang/Object;)V HSPLandroid/icu/util/STZInfo;->()V HSPLandroid/icu/util/SimpleTimeZone;->(ILjava/lang/String;IIIIIIIIIII)V -HSPLandroid/icu/util/SimpleTimeZone;->clone()Ljava/lang/Object; +HSPLandroid/icu/util/SimpleTimeZone;->clone()Ljava/lang/Object;+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/util/SimpleTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone; HSPLandroid/icu/util/SimpleTimeZone;->compareToRule(IIIIIIIIIIII)I HSPLandroid/icu/util/SimpleTimeZone;->construct(IIIIIIIIIIII)V @@ -10469,7 +10352,7 @@ HSPLandroid/icu/util/SimpleTimeZone;->decodeRules()V HSPLandroid/icu/util/SimpleTimeZone;->decodeStartRule()V HSPLandroid/icu/util/SimpleTimeZone;->getDSTSavings()I HSPLandroid/icu/util/SimpleTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; -HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIII)I +HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIII)I+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIIII)I HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIIIII)I HSPLandroid/icu/util/SimpleTimeZone;->getRawOffset()I @@ -10479,7 +10362,7 @@ HSPLandroid/icu/util/SimpleTimeZone;->hashCode()I HSPLandroid/icu/util/SimpleTimeZone;->initTransitionRules()V HSPLandroid/icu/util/SimpleTimeZone;->isFrozen()Z HSPLandroid/icu/util/SimpleTimeZone;->setStartYear(I)V -HSPLandroid/icu/util/SimpleTimeZone;->toString()Ljava/lang/String; +HSPLandroid/icu/util/SimpleTimeZone;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/util/SimpleTimeZone;->useDaylightTime()Z HSPLandroid/icu/util/TimeArrayTimeZoneRule;->(Ljava/lang/String;II[JI)V HSPLandroid/icu/util/TimeArrayTimeZoneRule;->getStartTimes()[J @@ -10494,10 +10377,10 @@ HSPLandroid/icu/util/TimeZone;->getDefault()Landroid/icu/util/TimeZone; HSPLandroid/icu/util/TimeZone;->getFrozenICUTimeZone(Ljava/lang/String;Z)Landroid/icu/util/BasicTimeZone; HSPLandroid/icu/util/TimeZone;->getFrozenTimeZone(Ljava/lang/String;)Landroid/icu/util/TimeZone; HSPLandroid/icu/util/TimeZone;->getID()Ljava/lang/String; -HSPLandroid/icu/util/TimeZone;->getOffset(JZ[I)V +HSPLandroid/icu/util/TimeZone;->getOffset(JZ[I)V+]Landroid/icu/util/TimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;)Landroid/icu/util/TimeZone; -HSPLandroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone; -HSPLandroid/icu/util/TimeZone;->hashCode()I +HSPLandroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone;+]Landroid/icu/util/TimeZone;Landroid/icu/impl/OlsonTimeZone; +HSPLandroid/icu/util/TimeZone;->hashCode()I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/util/TimeZone;->setICUDefault(Landroid/icu/util/TimeZone;)V HSPLandroid/icu/util/TimeZoneRule;->(Ljava/lang/String;II)V HSPLandroid/icu/util/TimeZoneRule;->getDSTSavings()I @@ -10534,60 +10417,59 @@ HSPLandroid/icu/util/ULocale;->(Ljava/lang/String;Ljava/util/Locale;)V HSPLandroid/icu/util/ULocale;->(Ljava/lang/String;Ljava/util/Locale;Landroid/icu/util/ULocale-IA;)V HSPLandroid/icu/util/ULocale;->addLikelySubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->appendTag(Ljava/lang/String;Ljava/lang/StringBuilder;)V -HSPLandroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser; HSPLandroid/icu/util/ULocale;->canonicalize(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->createCanonical(Ljava/lang/String;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->createLikelySubtagsString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->equals(Ljava/lang/Object;)Z+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->extensions()Landroid/icu/impl/locale/LocaleExtensions;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/impl/locale/InternalLocaleBuilder;Landroid/icu/impl/locale/InternalLocaleBuilder; HSPLandroid/icu/util/ULocale;->forLocale(Ljava/util/Locale;)Landroid/icu/util/ULocale;+]Landroid/icu/impl/SoftCache;Landroid/icu/util/ULocale$2; HSPLandroid/icu/util/ULocale;->getBaseName()Ljava/lang/String; HSPLandroid/icu/util/ULocale;->getBaseName(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getCountry()Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getDefault()Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->getCountry()Ljava/lang/String;+]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/util/ULocale;->getDefault()Landroid/icu/util/ULocale;+]Ljava/util/Locale;Ljava/util/Locale; HSPLandroid/icu/util/ULocale;->getDefault(Landroid/icu/util/ULocale$Category;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->getInstance(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->getKeywordValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser; HSPLandroid/icu/util/ULocale;->getKeywords()Ljava/util/Iterator; -HSPLandroid/icu/util/ULocale;->getKeywords(Ljava/lang/String;)Ljava/util/Iterator; -HSPLandroid/icu/util/ULocale;->getLanguage()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getKeywords(Ljava/lang/String;)Ljava/util/Iterator;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser; +HSPLandroid/icu/util/ULocale;->getLanguage()Ljava/lang/String;+]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale; HSPLandroid/icu/util/ULocale;->getName()Ljava/lang/String; HSPLandroid/icu/util/ULocale;->getName(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getScript()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->getScript()Ljava/lang/String;+]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale; HSPLandroid/icu/util/ULocale;->getScript(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->getShortestSubtagLength(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getVariant()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getVariant()Ljava/lang/String;+]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale; HSPLandroid/icu/util/ULocale;->getVariant(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->hashCode()I HSPLandroid/icu/util/ULocale;->isEmptyString(Ljava/lang/String;)Z HSPLandroid/icu/util/ULocale;->isKnownCanonicalizedLocale(Ljava/lang/String;)Z -HSPLandroid/icu/util/ULocale;->isRightToLeft()Z +HSPLandroid/icu/util/ULocale;->isRightToLeft()Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->lookupLikelySubtags(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->lscvToID(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->parseTagString(Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/icu/util/ULocale;->setKeywordValue(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->setKeywordValue(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->stripLeadingUnd(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->toLanguageTag()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale;]Landroid/icu/impl/locale/LanguageTag;Landroid/icu/impl/locale/LanguageTag;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/icu/util/ULocale;->toLanguageTag()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Landroid/icu/impl/locale/LanguageTag;Landroid/icu/impl/locale/LanguageTag;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/Collections$UnmodifiableCollection$1; HSPLandroid/icu/util/ULocale;->toLocale()Ljava/util/Locale; HSPLandroid/icu/util/ULocale;->toString()Ljava/lang/String; HSPLandroid/icu/util/UResourceBundle;->()V HSPLandroid/icu/util/UResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->get(I)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->get(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->getIterator()Landroid/icu/util/UResourceBundleIterator; -HSPLandroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType; +HSPLandroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType;+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap; HSPLandroid/icu/util/UResourceBundle;->handleGetObject(Ljava/lang/String;)Ljava/lang/Object; HSPLandroid/icu/util/UResourceBundle;->handleGetObjectImpl(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object; -HSPLandroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle;+]Landroid/icu/util/UResourceBundle$RootType;Landroid/icu/util/UResourceBundle$RootType; HSPLandroid/icu/util/UResourceBundle;->resolveObject(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object; HSPLandroid/icu/util/UResourceBundleIterator;->(Landroid/icu/util/UResourceBundle;)V HSPLandroid/icu/util/UResourceBundleIterator;->hasNext()Z @@ -10623,7 +10505,7 @@ HSPLandroid/location/LastLocationRequest;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/location/Location$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; HSPLandroid/location/Location$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Location; HSPLandroid/location/Location$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/location/Location;->(Landroid/location/Location;)V +HSPLandroid/location/Location;->(Landroid/location/Location;)V+]Landroid/location/Location;Landroid/location/Location; HSPLandroid/location/Location;->(Ljava/lang/String;)V HSPLandroid/location/Location;->computeDistanceAndBearing(DDDDLandroid/location/Location$BearingDistanceCache;)V HSPLandroid/location/Location;->distanceTo(Landroid/location/Location;)F @@ -10663,7 +10545,7 @@ HSPLandroid/location/Location;->setSpeedAccuracyMetersPerSecond(F)V HSPLandroid/location/Location;->setTime(J)V HSPLandroid/location/Location;->setVerticalAccuracyMeters(F)V HSPLandroid/location/Location;->toString()Ljava/lang/String; -HSPLandroid/location/Location;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/location/Location;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/location/Location;Landroid/location/Location;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/location/LocationListener;->onLocationChanged(Ljava/util/List;)V HSPLandroid/location/LocationManager$LocationEnabledCache;->recompute(Ljava/lang/Integer;)Ljava/lang/Boolean; HSPLandroid/location/LocationManager$LocationEnabledCache;->recompute(Ljava/lang/Object;)Ljava/lang/Object; @@ -10724,11 +10606,11 @@ HSPLandroid/location/provider/ProviderProperties$1;->createFromParcel(Landroid/o HSPLandroid/location/provider/ProviderProperties$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/location/provider/ProviderProperties;->(ZZZZZZZII)V HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/AudioAttributes; -HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/media/AudioAttributes$1;Landroid/media/AudioAttributes$1; HSPLandroid/media/AudioAttributes$Builder;->()V HSPLandroid/media/AudioAttributes$Builder;->(Landroid/media/AudioAttributes;)V HSPLandroid/media/AudioAttributes$Builder;->addTag(Ljava/lang/String;)Landroid/media/AudioAttributes$Builder; -HSPLandroid/media/AudioAttributes$Builder;->build()Landroid/media/AudioAttributes;+]Ljava/util/HashSet;Ljava/util/HashSet; +HSPLandroid/media/AudioAttributes$Builder;->build()Landroid/media/AudioAttributes; HSPLandroid/media/AudioAttributes$Builder;->replaceFlags(I)Landroid/media/AudioAttributes$Builder; HSPLandroid/media/AudioAttributes$Builder;->setAllowedCapturePolicy(I)Landroid/media/AudioAttributes$Builder; HSPLandroid/media/AudioAttributes$Builder;->setCapturePreset(I)Landroid/media/AudioAttributes$Builder; @@ -10750,8 +10632,7 @@ HSPLandroid/media/AudioAttributes;->-$$Nest$fputmTags(Landroid/media/AudioAttrib HSPLandroid/media/AudioAttributes;->-$$Nest$fputmUsage(Landroid/media/AudioAttributes;I)V HSPLandroid/media/AudioAttributes;->()V HSPLandroid/media/AudioAttributes;->(Landroid/media/AudioAttributes-IA;)V -HSPLandroid/media/AudioAttributes;->(Landroid/os/Parcel;)V -HSPLandroid/media/AudioAttributes;->(Landroid/os/Parcel;Landroid/media/AudioAttributes-IA;)V +HSPLandroid/media/AudioAttributes;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/media/AudioAttributes;->areHapticChannelsMuted()Z HSPLandroid/media/AudioAttributes;->equals(Ljava/lang/Object;)Z HSPLandroid/media/AudioAttributes;->getAllFlags()I @@ -10761,16 +10642,16 @@ HSPLandroid/media/AudioAttributes;->getUsage()I HSPLandroid/media/AudioAttributes;->hashCode()I HSPLandroid/media/AudioAttributes;->isSystemUsage(I)Z HSPLandroid/media/AudioAttributes;->toVolumeStreamType(ZLandroid/media/AudioAttributes;)I -HSPLandroid/media/AudioAttributes;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/media/AudioAttributes;->writeToParcel(Landroid/os/Parcel;I)V+]Ljava/util/HashSet;Ljava/util/HashSet;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/media/AudioDeviceCallback;->()V HSPLandroid/media/AudioDeviceInfo;->(Landroid/media/AudioDevicePort;)V -HSPLandroid/media/AudioDeviceInfo;->convertInternalDeviceToDeviceType(I)I -HSPLandroid/media/AudioDeviceInfo;->getId()I +HSPLandroid/media/AudioDeviceInfo;->convertInternalDeviceToDeviceType(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; +HSPLandroid/media/AudioDeviceInfo;->getId()I+]Landroid/media/AudioHandle;Landroid/media/AudioHandle;]Landroid/media/AudioDevicePort;Landroid/media/AudioDevicePort; HSPLandroid/media/AudioDeviceInfo;->getType()I HSPLandroid/media/AudioDevicePort;->(Landroid/media/AudioHandle;Ljava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;ILjava/lang/String;[I[ILjava/util/List;)V HSPLandroid/media/AudioDevicePort;->(Landroid/media/AudioHandle;Ljava/lang/String;[I[I[I[I[Landroid/media/AudioGain;ILjava/lang/String;[I[I)V HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioDevicePortConfig; -HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig; +HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig;+]Landroid/media/AudioDevicePort;Landroid/media/AudioDevicePort; HSPLandroid/media/AudioDevicePort;->type()I HSPLandroid/media/AudioDevicePortConfig;->(Landroid/media/AudioDevicePort;IIILandroid/media/AudioGainConfig;)V HSPLandroid/media/AudioFocusRequest$Builder;->(I)V @@ -10824,13 +10705,13 @@ HSPLandroid/media/AudioManager;->abandonAudioFocus(Landroid/media/AudioManager$O HSPLandroid/media/AudioManager;->areNavigationRepeatSoundEffectsEnabled()Z HSPLandroid/media/AudioManager;->broadcastDeviceListChange_sync(Landroid/os/Handler;)V HSPLandroid/media/AudioManager;->calcListDeltas(Ljava/util/ArrayList;Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo; -HSPLandroid/media/AudioManager;->checkFlags(Landroid/media/AudioDevicePort;I)Z -HSPLandroid/media/AudioManager;->checkTypes(Landroid/media/AudioDevicePort;)Z -HSPLandroid/media/AudioManager;->filterDevicePorts(Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HSPLandroid/media/AudioManager;->checkFlags(Landroid/media/AudioDevicePort;I)Z+]Landroid/media/AudioDevicePort;Landroid/media/AudioDevicePort; +HSPLandroid/media/AudioManager;->checkTypes(Landroid/media/AudioDevicePort;)Z+]Landroid/media/AudioDevicePort;Landroid/media/AudioDevicePort; +HSPLandroid/media/AudioManager;->filterDevicePorts(Ljava/util/ArrayList;Ljava/util/ArrayList;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/media/AudioManager;->generateAudioSessionId()I HSPLandroid/media/AudioManager;->getActiveRecordingConfigurations()Ljava/util/List; HSPLandroid/media/AudioManager;->getContext()Landroid/content/Context; -HSPLandroid/media/AudioManager;->getDeviceForPortId(II)Landroid/media/AudioDeviceInfo; +HSPLandroid/media/AudioManager;->getDeviceForPortId(II)Landroid/media/AudioDeviceInfo;+]Landroid/media/AudioDeviceInfo;Landroid/media/AudioDeviceInfo; HSPLandroid/media/AudioManager;->getDevices(I)[Landroid/media/AudioDeviceInfo; HSPLandroid/media/AudioManager;->getDevicesForStream(I)I HSPLandroid/media/AudioManager;->getDevicesStatic(I)[Landroid/media/AudioDeviceInfo; @@ -10846,7 +10727,7 @@ HSPLandroid/media/AudioManager;->getStreamMinVolumeInt(I)I HSPLandroid/media/AudioManager;->getStreamVolume(I)I HSPLandroid/media/AudioManager;->hasPlaybackCallback_sync(Landroid/media/AudioManager$AudioPlaybackCallback;)Z HSPLandroid/media/AudioManager;->hasRecordCallback_sync(Landroid/media/AudioManager$AudioRecordingCallback;)Z -HSPLandroid/media/AudioManager;->infoListFromPortList(Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo; +HSPLandroid/media/AudioManager;->infoListFromPortList(Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/media/AudioManager;->isBluetoothA2dpOn()Z HSPLandroid/media/AudioManager;->isBluetoothScoOn()Z HSPLandroid/media/AudioManager;->isInputDevice(I)Z @@ -10873,12 +10754,12 @@ HSPLandroid/media/AudioManager;->resetAudioPortGeneration()I HSPLandroid/media/AudioManager;->setContext(Landroid/content/Context;)V HSPLandroid/media/AudioManager;->setParameters(Ljava/lang/String;)V HSPLandroid/media/AudioManager;->unregisterAudioFocusRequest(Landroid/media/AudioManager$OnAudioFocusChangeListener;)V -HSPLandroid/media/AudioManager;->updateAudioPortCache(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)I +HSPLandroid/media/AudioManager;->updateAudioPortCache(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)I+]Landroid/media/AudioPatch;Landroid/media/AudioPatch;]Landroid/media/AudioPortEventHandler;Landroid/media/AudioPortEventHandler;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/media/AudioManager;->updatePortConfig(Landroid/media/AudioPortConfig;Ljava/util/ArrayList;)Landroid/media/AudioPortConfig;+]Landroid/media/AudioPortConfig;Landroid/media/AudioPortConfig;]Landroid/media/AudioHandle;Landroid/media/AudioHandle;]Landroid/media/AudioPort;Landroid/media/AudioMixPort;,Landroid/media/AudioDevicePort;,Landroid/media/AudioPort;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/media/AudioMixPort;->(Landroid/media/AudioHandle;IILjava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;)V HSPLandroid/media/AudioMixPort;->(Landroid/media/AudioHandle;IILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V HSPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioMixPortConfig; -HSPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig; +HSPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig;+]Landroid/media/AudioMixPort;Landroid/media/AudioMixPort; HSPLandroid/media/AudioMixPortConfig;->(Landroid/media/AudioMixPort;IIILandroid/media/AudioGainConfig;)V HSPLandroid/media/AudioPatch;->(Landroid/media/AudioHandle;[Landroid/media/AudioPortConfig;[Landroid/media/AudioPortConfig;)V HSPLandroid/media/AudioPatch;->sinks()[Landroid/media/AudioPortConfig; @@ -10886,8 +10767,8 @@ HSPLandroid/media/AudioPatch;->sources()[Landroid/media/AudioPortConfig; HSPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->(Landroid/media/AudioPlaybackConfiguration;Landroid/media/IPlayer;)V HSPLandroid/media/AudioPlaybackConfiguration;->getAudioAttributes()Landroid/media/AudioAttributes; HSPLandroid/media/AudioPlaybackConfiguration;->isActive()Z -HSPLandroid/media/AudioPort$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I -HSPLandroid/media/AudioPort;->(Landroid/media/AudioHandle;ILjava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;Ljava/util/List;)V +HSPLandroid/media/AudioPort$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I+]Ljava/lang/Number;Ljava/lang/Integer; +HSPLandroid/media/AudioPort;->(Landroid/media/AudioHandle;ILjava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/stream/Stream;Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/ReferencePipeline$Head;]Ljava/util/stream/IntStream;Ljava/util/stream/IntPipeline$Head;,Ljava/util/stream/ReferencePipeline$4;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/media/AudioProfile;Landroid/media/AudioProfile;]Ljava/util/Set;Ljava/util/HashSet; HSPLandroid/media/AudioPort;->(Landroid/media/AudioHandle;ILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V HSPLandroid/media/AudioPort;->handle()Landroid/media/AudioHandle; HSPLandroid/media/AudioPort;->id()I @@ -10899,10 +10780,10 @@ HSPLandroid/media/AudioPortConfig;->gain()Landroid/media/AudioGainConfig; HSPLandroid/media/AudioPortConfig;->port()Landroid/media/AudioPort; HSPLandroid/media/AudioPortConfig;->samplingRate()I HSPLandroid/media/AudioPortEventHandler$1;->(Landroid/media/AudioPortEventHandler;Landroid/os/Looper;)V -HSPLandroid/media/AudioPortEventHandler$1;->handleMessage(Landroid/os/Message;)V +HSPLandroid/media/AudioPortEventHandler$1;->handleMessage(Landroid/os/Message;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/media/AudioPortEventHandler;->handler()Landroid/os/Handler; HSPLandroid/media/AudioPortEventHandler;->init()V -HSPLandroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V +HSPLandroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V+]Landroid/os/Handler;Landroid/media/AudioPortEventHandler$1;]Landroid/media/AudioPortEventHandler;Landroid/media/AudioPortEventHandler;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference; HSPLandroid/media/AudioPortEventHandler;->registerListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V HSPLandroid/media/AudioProfile;->(I[I[I[II)V HSPLandroid/media/AudioProfile;->getChannelIndexMasks()[I @@ -10947,7 +10828,6 @@ HSPLandroid/media/AudioTrack;->startImpl()V HSPLandroid/media/AudioTrack;->stop()V HSPLandroid/media/AudioTrack;->testDisableNativeRoutingCallbacksLocked()V HSPLandroid/media/AudioTrack;->tryToDisableNativeRoutingCallback()V -HSPLandroid/media/AudioTrack;->write(Ljava/nio/ByteBuffer;II)I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLandroid/media/CallbackUtil$LazyListenerManager;->()V HSPLandroid/media/IAudioFocusDispatcher$Stub;->()V HSPLandroid/media/IAudioFocusDispatcher$Stub;->asBinder()Landroid/os/IBinder; @@ -11305,7 +11185,6 @@ HSPLandroid/media/MediaRouter;->systemVolumeChanged(I)V HSPLandroid/media/MediaRouter;->typesToString(I)Ljava/lang/String; HSPLandroid/media/MediaRouter;->updateWifiDisplayStatus(Landroid/hardware/display/WifiDisplayStatus;)V HSPLandroid/media/MediaServiceManager$ServiceRegisterer;->(Ljava/lang/String;)V -HSPLandroid/media/MediaServiceManager$ServiceRegisterer;->(Ljava/lang/String;Z)V HSPLandroid/media/MediaServiceManager$ServiceRegisterer;->get()Landroid/os/IBinder; HSPLandroid/media/MediaServiceManager;->()V HSPLandroid/media/MediaServiceManager;->getMediaCommunicationServiceRegisterer()Landroid/media/MediaServiceManager$ServiceRegisterer; @@ -11485,11 +11364,8 @@ HSPLandroid/media/session/MediaSession;->setMetadata(Landroid/media/MediaMetadat HSPLandroid/media/session/MediaSession;->setPlaybackState(Landroid/media/session/PlaybackState;)V HSPLandroid/media/session/MediaSession;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub;->(Landroid/media/session/MediaSessionManager;)V -HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub;->(Landroid/media/session/MediaSessionManager;Landroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub-IA;)V HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub;->(Landroid/media/session/MediaSessionManager;)V -HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub;->(Landroid/media/session/MediaSessionManager;Landroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub-IA;)V HSPLandroid/media/session/MediaSessionManager$RemoteSessionCallbackStub;->(Landroid/media/session/MediaSessionManager;)V -HSPLandroid/media/session/MediaSessionManager$RemoteSessionCallbackStub;->(Landroid/media/session/MediaSessionManager;Landroid/media/session/MediaSessionManager$RemoteSessionCallbackStub-IA;)V HSPLandroid/media/session/MediaSessionManager$RemoteUserInfo;->(Ljava/lang/String;II)V HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1$$ExternalSyntheticLambda0;->run()V HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;->(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)V @@ -11624,8 +11500,8 @@ HSPLandroid/net/TelephonyNetworkSpecifier;->equals(Ljava/lang/Object;)Z HSPLandroid/net/TelephonyNetworkSpecifier;->hashCode()I HSPLandroid/net/TelephonyNetworkSpecifier;->toString()Ljava/lang/String; HSPLandroid/net/TelephonyNetworkSpecifier;->writeToParcel(Landroid/os/Parcel;I)V -HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Uri; -HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Uri;+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/net/Uri$1;Landroid/net/Uri$1; HSPLandroid/net/Uri$1;->newArray(I)[Landroid/net/Uri; HSPLandroid/net/Uri$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/net/Uri$AbstractHierarchicalUri;->()V @@ -11642,7 +11518,7 @@ HSPLandroid/net/Uri$AbstractHierarchicalUri;->parseUserInfo()Ljava/lang/String; HSPLandroid/net/Uri$AbstractPart;->(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/net/Uri$AbstractPart;->getDecoded()Ljava/lang/String; HSPLandroid/net/Uri$Builder;->()V -HSPLandroid/net/Uri$Builder;->appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->appendQueryParameter(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart;,Landroid/net/Uri$Part; HSPLandroid/net/Uri$Builder;->authority(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder; @@ -11650,7 +11526,7 @@ HSPLandroid/net/Uri$Builder;->authority(Ljava/lang/String;)Landroid/net/Uri$Buil HSPLandroid/net/Uri$Builder;->build()Landroid/net/Uri; HSPLandroid/net/Uri$Builder;->clearQuery()Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->encodedAuthority(Ljava/lang/String;)Landroid/net/Uri$Builder; -HSPLandroid/net/Uri$Builder;->encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->encodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->encodedQuery(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->fragment(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder; @@ -11662,22 +11538,21 @@ HSPLandroid/net/Uri$Builder;->query(Landroid/net/Uri$Part;)Landroid/net/Uri$Buil HSPLandroid/net/Uri$Builder;->scheme(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->toString()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V -HSPLandroid/net/Uri$HierarchicalUri;->appendSspTo(Ljava/lang/StringBuilder;)V +HSPLandroid/net/Uri$HierarchicalUri;->appendSspTo(Ljava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/net/Uri$Part;Landroid/net/Uri$Part;,Landroid/net/Uri$Part$EmptyPart;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; HSPLandroid/net/Uri$HierarchicalUri;->buildUpon()Landroid/net/Uri$Builder;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder; -HSPLandroid/net/Uri$HierarchicalUri;->generatePath(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart;,Landroid/net/Uri$Part; -HSPLandroid/net/Uri$HierarchicalUri;->getAuthority()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getAuthority()Ljava/lang/String;+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart;,Landroid/net/Uri$Part; HSPLandroid/net/Uri$HierarchicalUri;->getEncodedAuthority()Ljava/lang/String; -HSPLandroid/net/Uri$HierarchicalUri;->getEncodedFragment()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getEncodedFragment()Ljava/lang/String;+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart; HSPLandroid/net/Uri$HierarchicalUri;->getEncodedPath()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->getEncodedQuery()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->getFragment()Ljava/lang/String; -HSPLandroid/net/Uri$HierarchicalUri;->getPath()Ljava/lang/String; -HSPLandroid/net/Uri$HierarchicalUri;->getPathSegments()Ljava/util/List; +HSPLandroid/net/Uri$HierarchicalUri;->getPath()Ljava/lang/String;+]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$HierarchicalUri;->getPathSegments()Ljava/util/List;+]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; HSPLandroid/net/Uri$HierarchicalUri;->getQuery()Ljava/lang/String;+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart; HSPLandroid/net/Uri$HierarchicalUri;->getScheme()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->getSchemeSpecificPart()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->isHierarchical()Z -HSPLandroid/net/Uri$HierarchicalUri;->makeUriString()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->makeUriString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart; HSPLandroid/net/Uri$HierarchicalUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri;+]Ljava/lang/String;Ljava/lang/String;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/net/Uri$HierarchicalUri;->toString()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart;,Landroid/net/Uri$Part;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -11690,7 +11565,7 @@ HSPLandroid/net/Uri$OpaqueUri;->toString()Ljava/lang/String; HSPLandroid/net/Uri$OpaqueUri;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/net/Uri$Part$EmptyPart;->isEmpty()Z HSPLandroid/net/Uri$Part;->(Ljava/lang/String;Ljava/lang/String;)V -HSPLandroid/net/Uri$Part;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$Part;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Part;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$Part;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$Part; HSPLandroid/net/Uri$Part;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$Part; HSPLandroid/net/Uri$Part;->getEncoded()Ljava/lang/String; @@ -11698,15 +11573,15 @@ HSPLandroid/net/Uri$Part;->isEmpty()Z HSPLandroid/net/Uri$Part;->nonNull(Landroid/net/Uri$Part;)Landroid/net/Uri$Part; HSPLandroid/net/Uri$PathPart;->(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/net/Uri$PathPart;->appendDecodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart; -HSPLandroid/net/Uri$PathPart;->appendEncodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; -HSPLandroid/net/Uri$PathPart;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->appendEncodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$PathPart;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$PathPart;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$PathPart; HSPLandroid/net/Uri$PathPart;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$PathPart; HSPLandroid/net/Uri$PathPart;->getEncoded()Ljava/lang/String; HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments;+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri$PathSegmentsBuilder;Landroid/net/Uri$PathSegmentsBuilder;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; -HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;+]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/net/Uri$PathSegments;->([Ljava/lang/String;I)V -HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object; +HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object;+]Landroid/net/Uri$PathSegments;Landroid/net/Uri$PathSegments; HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/String; HSPLandroid/net/Uri$PathSegments;->size()I HSPLandroid/net/Uri$PathSegmentsBuilder;->add(Ljava/lang/String;)V @@ -11738,7 +11613,7 @@ HSPLandroid/net/Uri$StringUri;->parseFragment()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->parsePath()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->parsePath(Ljava/lang/String;I)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->parseQuery()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/net/Uri$StringUri;->parseScheme()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->parseScheme()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->toString()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/net/Uri;->()V @@ -11750,13 +11625,13 @@ HSPLandroid/net/Uri;->compareTo(Ljava/lang/Object;)I HSPLandroid/net/Uri;->decode(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/net/Uri;->encode(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/net/Uri;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLandroid/net/Uri;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/Uri;->equals(Ljava/lang/Object;)Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/net/Uri;->fromFile(Ljava/io/File;)Landroid/net/Uri; HSPLandroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/net/Uri;->getBooleanQueryParameter(Ljava/lang/String;Z)Z -HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set; -HSPLandroid/net/Uri;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; +HSPLandroid/net/Uri;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/net/Uri;->isAbsolute()Z HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri;->isOpaque()Z @@ -11765,9 +11640,9 @@ HSPLandroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/net/Uri;->toSafeString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;,Landroid/net/Uri$HierarchicalUri; HSPLandroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/net/Uri;->writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V -HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String; -HSPLandroid/net/UriCodec;->flushDecodingByteAccumulator(Ljava/lang/StringBuilder;Ljava/nio/charset/CharsetDecoder;Ljava/nio/ByteBuffer;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/net/UriCodec;->flushDecodingByteAccumulator(Ljava/lang/StringBuilder;Ljava/nio/charset/CharsetDecoder;Ljava/nio/ByteBuffer;Z)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLandroid/net/UriCodec;->getNextCharacter(Ljava/lang/String;IILjava/lang/String;)C+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/UriCodec;->hexCharToValue(C)I HSPLandroid/net/WebAddress;->(Ljava/lang/String;)V @@ -11851,24 +11726,24 @@ HSPLandroid/os/AsyncTask;->postResultIfNotInvoked(Ljava/lang/Object;)V HSPLandroid/os/BaseBundle;->()V HSPLandroid/os/BaseBundle;->(I)V HSPLandroid/os/BaseBundle;->(Landroid/os/BaseBundle;)V -HSPLandroid/os/BaseBundle;->(Landroid/os/BaseBundle;Z)V +HSPLandroid/os/BaseBundle;->(Landroid/os/BaseBundle;Z)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->(Landroid/os/Parcel;I)V -HSPLandroid/os/BaseBundle;->(Ljava/lang/ClassLoader;I)V+]Ljava/lang/Object;Landroid/os/Bundle;]Ljava/lang/Class;Ljava/lang/Class; +HSPLandroid/os/BaseBundle;->(Ljava/lang/ClassLoader;I)V+]Ljava/lang/Object;Landroid/os/Bundle;,Landroid/os/PersistableBundle;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/os/BaseBundle;->clear()V HSPLandroid/os/BaseBundle;->containsKey(Ljava/lang/String;)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->deepCopyValue(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/BaseBundle;->get(Ljava/lang/String;)Ljava/lang/Object;+]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->get(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; HSPLandroid/os/BaseBundle;->getArrayList(Ljava/lang/String;Ljava/lang/Class;)Ljava/util/ArrayList; -HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;)Z -HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;)Z+]Landroid/os/BaseBundle;Landroid/os/PersistableBundle;,Landroid/os/Bundle; +HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;Z)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getBooleanArray(Ljava/lang/String;)[Z HSPLandroid/os/BaseBundle;->getByteArray(Ljava/lang/String;)[B HSPLandroid/os/BaseBundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence; HSPLandroid/os/BaseBundle;->getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence; -HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;F)F +HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;F)F+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Float;Ljava/lang/Float;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;)I -HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;I)I +HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;I)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getIntArray(Ljava/lang/String;)[I HSPLandroid/os/BaseBundle;->getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList; HSPLandroid/os/BaseBundle;->getLong(Ljava/lang/String;)J @@ -11876,7 +11751,7 @@ HSPLandroid/os/BaseBundle;->getLong(Ljava/lang/String;J)J+]Landroid/util/ArrayMa HSPLandroid/os/BaseBundle;->getLongArray(Ljava/lang/String;)[J+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getSerializable(Ljava/lang/String;)Ljava/io/Serializable; HSPLandroid/os/BaseBundle;->getSerializable(Ljava/lang/String;Ljava/lang/Class;)Ljava/io/Serializable; -HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;)Ljava/lang/String;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/PersistableBundle;,Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/os/BaseBundle;->getStringArray(Ljava/lang/String;)[Ljava/lang/String;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList; @@ -11892,10 +11767,10 @@ HSPLandroid/os/BaseBundle;->isParcelled()Z HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->putAll(Landroid/os/PersistableBundle;)V HSPLandroid/os/BaseBundle;->putAll(Landroid/util/ArrayMap;)V -HSPLandroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V +HSPLandroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/PersistableBundle;,Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->putBooleanArray(Ljava/lang/String;[Z)V HSPLandroid/os/BaseBundle;->putByteArray(Ljava/lang/String;[B)V -HSPLandroid/os/BaseBundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V +HSPLandroid/os/BaseBundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V HSPLandroid/os/BaseBundle;->putDouble(Ljava/lang/String;D)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->putFloat(Ljava/lang/String;F)V @@ -11914,7 +11789,7 @@ HSPLandroid/os/BaseBundle;->remove(Ljava/lang/String;)V HSPLandroid/os/BaseBundle;->setClassLoader(Ljava/lang/ClassLoader;)V HSPLandroid/os/BaseBundle;->setShouldDefuse(Z)V HSPLandroid/os/BaseBundle;->size()I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; -HSPLandroid/os/BaseBundle;->unparcel()V+]Landroid/os/BaseBundle;Landroid/os/PersistableBundle;,Landroid/os/Bundle; +HSPLandroid/os/BaseBundle;->unparcel()V+]Landroid/os/BaseBundle;Landroid/os/Bundle;,Landroid/os/PersistableBundle; HSPLandroid/os/BaseBundle;->unparcel(Z)V HSPLandroid/os/BaseBundle;->unwrapLazyValueFromMapLocked(ILjava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/BiFunction;Landroid/os/Parcel$LazyValue;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference; HSPLandroid/os/BaseBundle;->writeToParcelInner(Landroid/os/Parcel;I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -11954,7 +11829,7 @@ HSPLandroid/os/Binder$PropagateWorkSourceTransactListener;->onTransactEnded(Ljav HSPLandroid/os/Binder$PropagateWorkSourceTransactListener;->onTransactStarted(Landroid/os/IBinder;I)Ljava/lang/Object; HSPLandroid/os/Binder$ProxyTransactListener;->onTransactStarted(Landroid/os/IBinder;II)Ljava/lang/Object;+]Landroid/os/Binder$ProxyTransactListener;Landroid/os/Binder$PropagateWorkSourceTransactListener; HSPLandroid/os/Binder;->()V -HSPLandroid/os/Binder;->(Ljava/lang/String;)V +HSPLandroid/os/Binder;->(Ljava/lang/String;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/os/Binder;->allowBlocking(Landroid/os/IBinder;)Landroid/os/IBinder; HSPLandroid/os/Binder;->attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V HSPLandroid/os/Binder;->checkParcel(Landroid/os/IBinder;ILandroid/os/Parcel;Ljava/lang/String;)V @@ -11969,7 +11844,7 @@ HSPLandroid/os/Binder;->getInterfaceDescriptor()Ljava/lang/String; HSPLandroid/os/Binder;->getMaxTransactionId()I HSPLandroid/os/Binder;->getSimpleDescriptor()Ljava/lang/String; HSPLandroid/os/Binder;->getTransactionName(I)Ljava/lang/String; -HSPLandroid/os/Binder;->getTransactionTraceName(I)Ljava/lang/String;+]Landroid/os/Binder;Landroid/app/ActivityThread$ApplicationThread;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/util/concurrent/atomic/AtomicReferenceArray; +HSPLandroid/os/Binder;->getTransactionTraceName(I)Ljava/lang/String;+]Landroid/os/Binder;megamorphic_types]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/util/concurrent/atomic/AtomicReferenceArray; HSPLandroid/os/Binder;->isBinderAlive()Z HSPLandroid/os/Binder;->isProxy(Landroid/os/IInterface;)Z HSPLandroid/os/Binder;->isStackTrackingEnabled()Z @@ -11985,9 +11860,9 @@ HSPLandroid/os/Binder;->withCleanCallingIdentity(Lcom/android/internal/util/Func HSPLandroid/os/BinderProxy$ProxyMap;->get(J)Landroid/os/BinderProxy;+]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/os/BinderProxy$ProxyMap;->hash(J)I HSPLandroid/os/BinderProxy$ProxyMap;->remove(II)V -HSPLandroid/os/BinderProxy$ProxyMap;->set(JLandroid/os/BinderProxy;)V +HSPLandroid/os/BinderProxy$ProxyMap;->set(JLandroid/os/BinderProxy;)V+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/os/BinderProxy;->(J)V -HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy; +HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy;+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;]Landroid/os/BinderProxy$ProxyMap;Landroid/os/BinderProxy$ProxyMap; HSPLandroid/os/BinderProxy;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface; HSPLandroid/os/BinderProxy;->sendDeathNotice(Landroid/os/IBinder$DeathRecipient;Landroid/os/IBinder;)V HSPLandroid/os/BinderProxy;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z+]Landroid/os/BinderProxy;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -12027,14 +11902,13 @@ HSPLandroid/os/Bundle;->getParcelable(Ljava/lang/String;Ljava/lang/Class;)Ljava/ HSPLandroid/os/Bundle;->getParcelableArray(Ljava/lang/String;)[Landroid/os/Parcelable; HSPLandroid/os/Bundle;->getParcelableArray(Ljava/lang/String;Ljava/lang/Class;)[Ljava/lang/Object;+]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->getParcelableArrayList(Ljava/lang/String;)Ljava/util/ArrayList; -HSPLandroid/os/Bundle;->getParcelableArrayList(Ljava/lang/String;Ljava/lang/Class;)Ljava/util/ArrayList;+]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->getSerializable(Ljava/lang/String;)Ljava/io/Serializable; HSPLandroid/os/Bundle;->getSerializable(Ljava/lang/String;Ljava/lang/Class;)Ljava/io/Serializable; HSPLandroid/os/Bundle;->getSparseParcelableArray(Ljava/lang/String;)Landroid/util/SparseArray; HSPLandroid/os/Bundle;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList; HSPLandroid/os/Bundle;->hasFileDescriptors()Z HSPLandroid/os/Bundle;->maybePrefillHasFds()V+]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/os/Bundle;->putAll(Landroid/os/Bundle;)V +HSPLandroid/os/Bundle;->putAll(Landroid/os/Bundle;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->putBinder(Ljava/lang/String;Landroid/os/IBinder;)V HSPLandroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V HSPLandroid/os/Bundle;->putByteArray(Ljava/lang/String;[B)V @@ -12042,7 +11916,7 @@ HSPLandroid/os/Bundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequenc HSPLandroid/os/Bundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V HSPLandroid/os/Bundle;->putFloat(Ljava/lang/String;F)V HSPLandroid/os/Bundle;->putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V -HSPLandroid/os/Bundle;->putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V +HSPLandroid/os/Bundle;->putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->putParcelableArray(Ljava/lang/String;[Landroid/os/Parcelable;)V HSPLandroid/os/Bundle;->putParcelableArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->putParcelableList(Ljava/lang/String;Ljava/util/List;)V @@ -12150,7 +12024,7 @@ HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppFilesDirs(Lj HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppMediaDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment$UserEnvironment;->buildExternalStoragePublicDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment$UserEnvironment;->getExternalDirs()[Ljava/io/File;+]Landroid/os/storage/StorageVolume;Landroid/os/storage/StorageVolume; -HSPLandroid/os/Environment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/os/Environment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File;+]Landroid/os/Environment$UserEnvironment;Landroid/os/Environment$UserEnvironment; HSPLandroid/os/Environment;->buildExternalStorageAppMediaDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment;->buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File; HSPLandroid/os/Environment;->buildPaths([Ljava/io/File;[Ljava/lang/String;)[Ljava/io/File; @@ -12221,14 +12095,11 @@ HSPLandroid/os/GraphicsEnvironment;->getGlobalSettingsString(Landroid/content/Co HSPLandroid/os/GraphicsEnvironment;->getInstance()Landroid/os/GraphicsEnvironment; HSPLandroid/os/GraphicsEnvironment;->getPackageIndex(Ljava/lang/String;Ljava/util/List;)I HSPLandroid/os/GraphicsEnvironment;->getVulkanVersion(Landroid/content/pm/PackageManager;)I -HSPLandroid/os/GraphicsEnvironment;->isAngleEnabledByGameMode(Landroid/content/Context;Ljava/lang/String;)Z HSPLandroid/os/GraphicsEnvironment;->setLayerPaths(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/GraphicsEnvironment;->setup(Landroid/content/Context;Landroid/os/Bundle;)V HSPLandroid/os/GraphicsEnvironment;->setupAngle(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;)Z HSPLandroid/os/GraphicsEnvironment;->setupGpuLayers(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)V HSPLandroid/os/GraphicsEnvironment;->shouldShowAngleInUseDialogBox(Landroid/content/Context;)Z -HSPLandroid/os/GraphicsEnvironment;->shouldUseAngle(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z -HSPLandroid/os/GraphicsEnvironment;->shouldUseAngleInternal(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z HSPLandroid/os/GraphicsEnvironment;->showAngleInUseDialogBox(Landroid/content/Context;)V HSPLandroid/os/Handler$BlockingRunnable;->(Ljava/lang/Runnable;)V HSPLandroid/os/Handler$BlockingRunnable;->postAndWait(Landroid/os/Handler;J)Z @@ -12247,7 +12118,7 @@ HSPLandroid/os/Handler;->(Z)V HSPLandroid/os/Handler;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; HSPLandroid/os/Handler;->disallowNullArgumentIfShared(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/Handler;->dispatchMessage(Landroid/os/Message;)V+]Landroid/os/Handler;megamorphic_types -HSPLandroid/os/Handler;->enqueueMessage(Landroid/os/MessageQueue;Landroid/os/Message;J)Z+]Landroid/os/Message;Landroid/os/Message;]Landroid/os/MessageQueue;Landroid/os/MessageQueue; +HSPLandroid/os/Handler;->enqueueMessage(Landroid/os/MessageQueue;Landroid/os/Message;J)Z+]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/Handler;->executeOrSendMessage(Landroid/os/Message;)Z HSPLandroid/os/Handler;->getIMessenger()Landroid/os/IMessenger; HSPLandroid/os/Handler;->getLooper()Landroid/os/Looper; @@ -12265,22 +12136,22 @@ HSPLandroid/os/Handler;->obtainMessage(I)Landroid/os/Message; HSPLandroid/os/Handler;->obtainMessage(III)Landroid/os/Message; HSPLandroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message; HSPLandroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; -HSPLandroid/os/Handler;->post(Ljava/lang/Runnable;)Z+]Landroid/os/Handler;Landroid/os/Handler;,Landroid/app/ActivityThread$H; +HSPLandroid/os/Handler;->post(Ljava/lang/Runnable;)Z+]Landroid/os/Handler;missing_types HSPLandroid/os/Handler;->postAtFrontOfQueue(Ljava/lang/Runnable;)Z HSPLandroid/os/Handler;->postAtTime(Ljava/lang/Runnable;J)Z HSPLandroid/os/Handler;->postAtTime(Ljava/lang/Runnable;Ljava/lang/Object;J)Z HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;IJ)Z -HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z+]Landroid/os/Handler;Landroid/os/Handler; +HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z+]Landroid/os/Handler;Landroid/os/Handler;,Landroid/view/ViewRootImpl$ViewRootHandler; HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;Ljava/lang/Object;J)Z -HSPLandroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V +HSPLandroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V+]Landroid/os/MessageQueue;Landroid/os/MessageQueue; HSPLandroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V HSPLandroid/os/Handler;->removeMessages(I)V+]Landroid/os/MessageQueue;Landroid/os/MessageQueue; -HSPLandroid/os/Handler;->removeMessages(ILjava/lang/Object;)V +HSPLandroid/os/Handler;->removeMessages(ILjava/lang/Object;)V+]Landroid/os/MessageQueue;Landroid/os/MessageQueue; HSPLandroid/os/Handler;->runWithScissors(Ljava/lang/Runnable;J)Z HSPLandroid/os/Handler;->sendEmptyMessage(I)Z HSPLandroid/os/Handler;->sendEmptyMessageAtTime(IJ)Z HSPLandroid/os/Handler;->sendEmptyMessageDelayed(IJ)Z -HSPLandroid/os/Handler;->sendMessage(Landroid/os/Message;)Z+]Landroid/os/Handler;Landroid/os/Handler;,Landroid/media/AudioPortEventHandler$1;,Landroid/view/ViewRootImpl$ViewRootHandler;,Landroid/app/ActivityThread$H; +HSPLandroid/os/Handler;->sendMessage(Landroid/os/Message;)Z+]Landroid/os/Handler;missing_types HSPLandroid/os/Handler;->sendMessageAtFrontOfQueue(Landroid/os/Message;)Z HSPLandroid/os/Handler;->sendMessageAtTime(Landroid/os/Message;J)Z HSPLandroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z+]Landroid/os/Handler;megamorphic_types @@ -12312,7 +12183,7 @@ HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->(Landroid/os/IBind HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->getProperty(ILandroid/os/BatteryProperty;)I HSPLandroid/os/IBatteryPropertiesRegistrar$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IBatteryPropertiesRegistrar; -HSPLandroid/os/IBinder$DeathRecipient;->binderDied(Landroid/os/IBinder;)V +HSPLandroid/os/IBinder$DeathRecipient;->binderDied(Landroid/os/IBinder;)V+]Landroid/os/IBinder$DeathRecipient;Landroid/os/RemoteCallbackList$Callback; HSPLandroid/os/IBinder;->getSuggestedMaxIpcSizeBytes()I HSPLandroid/os/ICancellationSignal$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/os/ICancellationSignal$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -12422,15 +12293,15 @@ HSPLandroid/os/IpcDataCache;->(Landroid/os/IpcDataCache$Config;Landroid/os HSPLandroid/os/IpcDataCache;->query(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/LocaleList; HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/os/LocaleList;->([Ljava/util/Locale;)V +HSPLandroid/os/LocaleList;->([Ljava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/os/LocaleList;->computeFirstMatch(Ljava/util/Collection;Z)Ljava/util/Locale; HSPLandroid/os/LocaleList;->computeFirstMatchIndex(Ljava/util/Collection;Z)I HSPLandroid/os/LocaleList;->equals(Ljava/lang/Object;)Z HSPLandroid/os/LocaleList;->findFirstMatchIndex(Ljava/util/Locale;)I -HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList; +HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/os/LocaleList;->get(I)Ljava/util/Locale; HSPLandroid/os/LocaleList;->getAdjustedDefault()Landroid/os/LocaleList; -HSPLandroid/os/LocaleList;->getDefault()Landroid/os/LocaleList; +HSPLandroid/os/LocaleList;->getDefault()Landroid/os/LocaleList;+]Ljava/util/Locale;Ljava/util/Locale; HSPLandroid/os/LocaleList;->getEmptyLocaleList()Landroid/os/LocaleList; HSPLandroid/os/LocaleList;->getFirstMatchWithEnglishSupported([Ljava/lang/String;)Ljava/util/Locale; HSPLandroid/os/LocaleList;->getLikelyScript(Ljava/util/Locale;)Ljava/lang/String; @@ -12450,7 +12321,7 @@ HSPLandroid/os/Looper;->getMainLooper()Landroid/os/Looper; HSPLandroid/os/Looper;->getQueue()Landroid/os/MessageQueue; HSPLandroid/os/Looper;->getThread()Ljava/lang/Thread; HSPLandroid/os/Looper;->isCurrentThread()Z -HSPLandroid/os/Looper;->loop()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Thread;Landroid/os/HandlerThread; +HSPLandroid/os/Looper;->loop()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Thread;Landroid/os/HandlerThread;,Landroid/net/ConnectivityThread; HSPLandroid/os/Looper;->loopOnce(Landroid/os/Looper;JI)Z+]Landroid/os/Handler;megamorphic_types]Landroid/os/Message;Landroid/os/Message;]Landroid/os/MessageQueue;Landroid/os/MessageQueue; HSPLandroid/os/Looper;->myLooper()Landroid/os/Looper;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/os/Looper;->myQueue()Landroid/os/MessageQueue; @@ -12500,22 +12371,22 @@ HSPLandroid/os/MessageQueue;->addIdleHandler(Landroid/os/MessageQueue$IdleHandle HSPLandroid/os/MessageQueue;->addOnFileDescriptorEventListener(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V HSPLandroid/os/MessageQueue;->dispatchEvents(II)I HSPLandroid/os/MessageQueue;->dispose()V -HSPLandroid/os/MessageQueue;->enqueueMessage(Landroid/os/Message;J)Z+]Landroid/os/Message;Landroid/os/Message;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/IllegalStateException;Ljava/lang/IllegalStateException; +HSPLandroid/os/MessageQueue;->enqueueMessage(Landroid/os/Message;J)Z+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->finalize()V HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;ILjava/lang/Object;)Z HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z -HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;+]Landroid/os/Message;Landroid/os/Message;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/MessageQueue$IdleHandler;missing_types +HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;+]Landroid/os/MessageQueue$IdleHandler;missing_types]Landroid/os/Message;Landroid/os/Message;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/os/MessageQueue;->postSyncBarrier()I -HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I +HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->quit(Z)V HSPLandroid/os/MessageQueue;->removeAllFutureMessagesLocked()V HSPLandroid/os/MessageQueue;->removeAllMessagesLocked()V -HSPLandroid/os/MessageQueue;->removeCallbacksAndMessages(Landroid/os/Handler;Ljava/lang/Object;)V +HSPLandroid/os/MessageQueue;->removeCallbacksAndMessages(Landroid/os/Handler;Ljava/lang/Object;)V+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->removeIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;ILjava/lang/Object;)V+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->removeOnFileDescriptorEventListener(Ljava/io/FileDescriptor;)V -HSPLandroid/os/MessageQueue;->removeSyncBarrier(I)V +HSPLandroid/os/MessageQueue;->removeSyncBarrier(I)V+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->updateOnFileDescriptorEventListenerLocked(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger; HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -12555,7 +12426,7 @@ HSPLandroid/os/Parcel;->createLongArray()[J+]Landroid/os/Parcel;Landroid/os/Parc HSPLandroid/os/Parcel;->createString16Array()[Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->createString8Array()[Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->createStringArray()[Ljava/lang/String; -HSPLandroid/os/Parcel;->createStringArrayList()Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->createStringArrayList()Ljava/util/ArrayList;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/os/Parcel;->createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;missing_types]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->dataAvail()I @@ -12569,7 +12440,7 @@ HSPLandroid/os/Parcel;->finalize()V HSPLandroid/os/Parcel;->freeBuffer()V HSPLandroid/os/Parcel;->getClassCookie(Ljava/lang/Class;)Ljava/lang/Object; HSPLandroid/os/Parcel;->getExceptionCode(Ljava/lang/Throwable;)I -HSPLandroid/os/Parcel;->getValueType(Ljava/lang/Object;)I +HSPLandroid/os/Parcel;->getValueType(Ljava/lang/Object;)I+]Ljava/lang/Object;Ljava/util/Random;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/os/Parcel;->hasFileDescriptors()Z HSPLandroid/os/Parcel;->hasReadWriteHelper()Z HSPLandroid/os/Parcel;->init(J)V @@ -12584,7 +12455,7 @@ HSPLandroid/os/Parcel;->obtain(Landroid/os/IBinder;)Landroid/os/Parcel; HSPLandroid/os/Parcel;->pushAllowFds(Z)Z HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList; HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList; -HSPLandroid/os/Parcel;->readArrayListInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->readArrayListInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;IZZLjava/lang/ClassLoader;)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;Ljava/lang/ClassLoader;)V HSPLandroid/os/Parcel;->readArrayMapInternal(Landroid/util/ArrayMap;ILjava/lang/ClassLoader;)V @@ -12598,7 +12469,7 @@ HSPLandroid/os/Parcel;->readBundle(Ljava/lang/ClassLoader;)Landroid/os/Bundle;+] HSPLandroid/os/Parcel;->readByte()B+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readByteArray([B)V HSPLandroid/os/Parcel;->readCallingWorkSourceUid()I -HSPLandroid/os/Parcel;->readCharSequence()Ljava/lang/CharSequence; +HSPLandroid/os/Parcel;->readCharSequence()Ljava/lang/CharSequence;+]Landroid/os/Parcelable$Creator;Landroid/text/TextUtils$1; HSPLandroid/os/Parcel;->readCharSequenceArray()[Ljava/lang/CharSequence; HSPLandroid/os/Parcel;->readDouble()D HSPLandroid/os/Parcel;->readException()V+]Landroid/os/Parcel;Landroid/os/Parcel; @@ -12626,13 +12497,13 @@ HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;)[Landroid/os HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Ljava/lang/Object; HSPLandroid/os/Parcel;->readParcelableArrayInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readParcelableCreator(Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator; -HSPLandroid/os/Parcel;->readParcelableCreatorInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/os/Parcelable$Creator;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Object;Landroid/os/Parcel;]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/os/Parcel;->readParcelableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types +HSPLandroid/os/Parcel;->readParcelableCreatorInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/os/Parcelable$Creator;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Object;Landroid/os/Parcel;]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field; +HSPLandroid/os/Parcel;->readParcelableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types]Landroid/os/Parcelable$ClassLoaderCreator;Landroid/content/pm/ParceledListSlice$1; HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/util/List; HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List; HSPLandroid/os/Parcel;->readParcelableListInternal(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List; HSPLandroid/os/Parcel;->readPersistableBundle()Landroid/os/PersistableBundle; -HSPLandroid/os/Parcel;->readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle; +HSPLandroid/os/Parcel;->readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle;+]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readRawFileDescriptor()Ljava/io/FileDescriptor; HSPLandroid/os/Parcel;->readSerializable()Ljava/io/Serializable; HSPLandroid/os/Parcel;->readSerializableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -12653,7 +12524,7 @@ HSPLandroid/os/Parcel;->readStringArray()[Ljava/lang/String;+]Landroid/os/Parcel HSPLandroid/os/Parcel;->readStringArray([Ljava/lang/String;)V HSPLandroid/os/Parcel;->readStringList(Ljava/util/List;)V HSPLandroid/os/Parcel;->readStrongBinder()Landroid/os/IBinder; -HSPLandroid/os/Parcel;->readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V +HSPLandroid/os/Parcel;->readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readTypedList(Ljava/util/List;Landroid/os/Parcelable$Creator;)V HSPLandroid/os/Parcel;->readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readValue(ILjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object; @@ -12670,15 +12541,15 @@ HSPLandroid/os/Parcel;->setReadWriteHelper(Landroid/os/Parcel$ReadWriteHelper;)V HSPLandroid/os/Parcel;->unmarshall([BII)V HSPLandroid/os/Parcel;->writeArrayMap(Landroid/util/ArrayMap;)V HSPLandroid/os/Parcel;->writeArrayMapInternal(Landroid/util/ArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/os/Parcel;->writeArraySet(Landroid/util/ArraySet;)V +HSPLandroid/os/Parcel;->writeArraySet(Landroid/util/ArraySet;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeBinderList(Ljava/util/List;)V HSPLandroid/os/Parcel;->writeBlob([B)V -HSPLandroid/os/Parcel;->writeBoolean(Z)V +HSPLandroid/os/Parcel;->writeBoolean(Z)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeBooleanArray([Z)V HSPLandroid/os/Parcel;->writeBundle(Landroid/os/Bundle;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeByte(B)V HSPLandroid/os/Parcel;->writeByteArray([B)V -HSPLandroid/os/Parcel;->writeByteArray([BII)V +HSPLandroid/os/Parcel;->writeByteArray([BII)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeCharSequence(Ljava/lang/CharSequence;)V HSPLandroid/os/Parcel;->writeDouble(D)V HSPLandroid/os/Parcel;->writeException(Ljava/lang/Exception;)V @@ -12696,7 +12567,7 @@ HSPLandroid/os/Parcel;->writeMapInternal(Ljava/util/Map;)V HSPLandroid/os/Parcel;->writeNoException()V HSPLandroid/os/Parcel;->writeParcelable(Landroid/os/Parcelable;I)V+]Landroid/os/Parcelable;missing_types]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeParcelableArray([Landroid/os/Parcelable;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeParcelableList(Ljava/util/List;I)V HSPLandroid/os/Parcel;->writePersistableBundle(Landroid/os/PersistableBundle;)V HSPLandroid/os/Parcel;->writeSerializable(Ljava/io/Serializable;)V @@ -12708,25 +12579,25 @@ HSPLandroid/os/Parcel;->writeString16(Ljava/lang/String;)V+]Landroid/os/Parcel$R HSPLandroid/os/Parcel;->writeString16Array([Ljava/lang/String;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeString16NoHelper(Ljava/lang/String;)V HSPLandroid/os/Parcel;->writeString8(Ljava/lang/String;)V+]Landroid/os/Parcel$ReadWriteHelper;Landroid/os/Parcel$ReadWriteHelper; -HSPLandroid/os/Parcel;->writeString8Array([Ljava/lang/String;)V +HSPLandroid/os/Parcel;->writeString8Array([Ljava/lang/String;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeString8NoHelper(Ljava/lang/String;)V HSPLandroid/os/Parcel;->writeStringArray([Ljava/lang/String;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeStringList(Ljava/util/List;)V HSPLandroid/os/Parcel;->writeStrongBinder(Landroid/os/IBinder;)V -HSPLandroid/os/Parcel;->writeStrongInterface(Landroid/os/IInterface;)V +HSPLandroid/os/Parcel;->writeStrongInterface(Landroid/os/IInterface;)V+]Landroid/os/IInterface;Landroid/database/ContentObserver$Transport;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;,Landroid/app/ActivityThread$ApplicationThread;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeTypedArray([Landroid/os/Parcelable;I)V HSPLandroid/os/Parcel;->writeTypedArrayMap(Landroid/util/ArrayMap;I)V HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;)V -HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;I)V -HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V -HSPLandroid/os/Parcel;->writeValue(ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Double;Ljava/lang/Double;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Byte;Ljava/lang/Byte;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;I)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V+]Landroid/os/Parcelable;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/Parcel;->writeValue(ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Double;Ljava/lang/Double;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Byte;Ljava/lang/Byte;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Float;Ljava/lang/Float; HSPLandroid/os/Parcel;->writeValue(Ljava/lang/Object;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelFileDescriptor; HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->(Landroid/os/ParcelFileDescriptor;)V HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->close()V -HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([B)I+]Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor; -HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([BII)I +HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([B)I +HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([BII)I+]Landroid/os/ParcelFileDescriptor;Landroid/content/ContentResolver$ParcelFileDescriptorInner;,Landroid/os/ParcelFileDescriptor; HSPLandroid/os/ParcelFileDescriptor$AutoCloseOutputStream;->(Landroid/os/ParcelFileDescriptor;)V HSPLandroid/os/ParcelFileDescriptor$AutoCloseOutputStream;->close()V HSPLandroid/os/ParcelFileDescriptor;->(Landroid/os/ParcelFileDescriptor;)V @@ -12783,8 +12654,6 @@ HSPLandroid/os/PatternMatcher;->match(Ljava/lang/String;)Z HSPLandroid/os/PatternMatcher;->matchPattern(Ljava/lang/String;Ljava/lang/String;[II)Z HSPLandroid/os/PatternMatcher;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/os/PerformanceHintManager;->createHintSession([IJ)Landroid/os/PerformanceHintManager$Session; -HSPLandroid/os/PermissionEnforcer;->checkPermission(Ljava/lang/String;II)I+]Landroid/content/Context;Landroid/app/ContextImpl; -HSPLandroid/os/PermissionEnforcer;->enforcePermission(Ljava/lang/String;II)V+]Landroid/os/PermissionEnforcer;Landroid/os/PermissionEnforcer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/os/PersistableBundle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/PersistableBundle; HSPLandroid/os/PersistableBundle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/PersistableBundle$MyReadMapCallback;->()V @@ -12913,7 +12782,6 @@ HSPLandroid/os/ServiceManager;->initServiceCache(Ljava/util/Map;)V HSPLandroid/os/ServiceManager;->isDeclared(Ljava/lang/String;)Z HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManager;->waitForDeclaredService(Ljava/lang/String;)Landroid/os/IBinder; -HSPLandroid/os/ServiceManager;->waitForService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManagerProxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V HSPLandroid/os/ServiceManagerProxy;->checkService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManagerProxy;->getService(Ljava/lang/String;)Landroid/os/IBinder; @@ -12972,7 +12840,7 @@ HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->lambda$handleViolationWithTi HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onCustomSlowCall(Ljava/lang/String;)V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onNetwork()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onReadFromDisk()V -HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onThreadPolicyViolation(Landroid/os/StrictMode$ViolationInfo;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/os/StrictMode$ViolationLogger;Landroid/os/StrictMode$$ExternalSyntheticLambda1;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$1;,Ljava/lang/ThreadLocal;]Ljava/lang/Long;Ljava/lang/Long;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onThreadPolicyViolation(Landroid/os/StrictMode$ViolationInfo;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/os/StrictMode$ViolationLogger;Landroid/os/StrictMode$$ExternalSyntheticLambda1;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$1;,Ljava/lang/ThreadLocal;]Ljava/lang/Long;Ljava/lang/Long;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onUnbufferedIO()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onWriteToDisk()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->setThreadPolicyMask(I)V @@ -13013,12 +12881,12 @@ HSPLandroid/os/StrictMode$ThreadSpanState;->(Landroid/os/StrictMode$Thread HSPLandroid/os/StrictMode$UnsafeIntentStrictModeCallback;->()V HSPLandroid/os/StrictMode$UnsafeIntentStrictModeCallback;->(Landroid/os/StrictMode$UnsafeIntentStrictModeCallback-IA;)V HSPLandroid/os/StrictMode$ViolationInfo;->-$$Nest$fgetmViolation(Landroid/os/StrictMode$ViolationInfo;)Landroid/os/strictmode/Violation; -HSPLandroid/os/StrictMode$ViolationInfo;->(Landroid/os/Parcel;Z)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Deque;Ljava/util/ArrayDeque; +HSPLandroid/os/StrictMode$ViolationInfo;->(Landroid/os/Parcel;Z)V+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/StrictMode$ViolationInfo;->(Landroid/os/strictmode/Violation;I)V+]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$8; -HSPLandroid/os/StrictMode$ViolationInfo;->getStackTrace()Ljava/lang/String;+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Ljava/io/StringWriter;Ljava/io/StringWriter;]Landroid/os/strictmode/Violation;Landroid/os/strictmode/DiskReadViolation;,Landroid/os/strictmode/CustomViolation; +HSPLandroid/os/StrictMode$ViolationInfo;->getStackTrace()Ljava/lang/String;+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;]Ljava/io/StringWriter;Ljava/io/StringWriter;]Landroid/os/strictmode/Violation;Landroid/os/strictmode/UnbufferedIoViolation;,Landroid/os/strictmode/DiskReadViolation;,Landroid/os/strictmode/CustomViolation; HSPLandroid/os/StrictMode$ViolationInfo;->hashCode()I+]Landroid/os/strictmode/Violation;Landroid/os/strictmode/DiskReadViolation;,Landroid/os/strictmode/LeakedClosableViolation; HSPLandroid/os/StrictMode$ViolationInfo;->penaltyEnabled(I)Z -HSPLandroid/os/StrictMode$ViolationInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/StrictMode$ViolationInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/StrictMode$VmPolicy$Builder;->()V HSPLandroid/os/StrictMode$VmPolicy$Builder;->(Landroid/os/StrictMode$VmPolicy;)V HSPLandroid/os/StrictMode$VmPolicy$Builder;->build()Landroid/os/StrictMode$VmPolicy; @@ -13057,7 +12925,7 @@ HSPLandroid/os/StrictMode;->allowThreadDiskReadsMask()I HSPLandroid/os/StrictMode;->allowThreadDiskWrites()Landroid/os/StrictMode$ThreadPolicy; HSPLandroid/os/StrictMode;->allowThreadDiskWritesMask()I HSPLandroid/os/StrictMode;->allowVmViolations()Landroid/os/StrictMode$VmPolicy; -HSPLandroid/os/StrictMode;->assertConfigurationContext(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroid/os/StrictMode;->assertConfigurationContext(Landroid/content/Context;Ljava/lang/String;)V+]Landroid/content/Context;missing_types HSPLandroid/os/StrictMode;->clampViolationTimeMap(Landroid/util/SparseLongArray;J)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray; HSPLandroid/os/StrictMode;->clearGatheredViolations()V+]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$1; HSPLandroid/os/StrictMode;->decrementExpectedActivityCount(Ljava/lang/Class;)V @@ -13080,13 +12948,13 @@ HSPLandroid/os/StrictMode;->noteUntaggedSocket()V HSPLandroid/os/StrictMode;->onBinderStrictModePolicyChange(I)V HSPLandroid/os/StrictMode;->onCredentialProtectedPathAccess(Ljava/lang/String;I)V HSPLandroid/os/StrictMode;->onVmPolicyViolation(Landroid/os/strictmode/Violation;)V -HSPLandroid/os/StrictMode;->onVmPolicyViolation(Landroid/os/strictmode/Violation;Z)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo; +HSPLandroid/os/StrictMode;->onVmPolicyViolation(Landroid/os/strictmode/Violation;Z)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/os/StrictMode$ViolationLogger;Landroid/os/StrictMode$$ExternalSyntheticLambda1;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo; HSPLandroid/os/StrictMode;->readAndHandleBinderCallViolations(Landroid/os/Parcel;)V+]Landroid/os/StrictMode$AndroidBlockGuardPolicy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/StrictMode;->registerIntentMatchingRestrictionCallback()V -HSPLandroid/os/StrictMode;->setBlockGuardPolicy(I)V +HSPLandroid/os/StrictMode;->setBlockGuardPolicy(I)V+]Landroid/os/StrictMode$AndroidBlockGuardPolicy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$4; HSPLandroid/os/StrictMode;->setBlockGuardVmPolicy(I)V HSPLandroid/os/StrictMode;->setCloseGuardEnabled(Z)V -HSPLandroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V +HSPLandroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/os/StrictMode;->setThreadPolicyMask(I)V HSPLandroid/os/StrictMode;->setVmPolicy(Landroid/os/StrictMode$VmPolicy;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/os/INetworkManagementService;Landroid/os/INetworkManagementService$Stub$Proxy; HSPLandroid/os/StrictMode;->tooManyViolationsThisLoop()Z @@ -13120,7 +12988,6 @@ HSPLandroid/os/SystemProperties;->getLong(Ljava/lang/String;J)J HSPLandroid/os/SystemProperties;->native_get(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/SystemVibrator;->(Landroid/content/Context;)V -HSPLandroid/os/SystemVibrator;->getInfo()Landroid/os/VibratorInfo; HSPLandroid/os/SystemVibrator;->hasVibrator()Z HSPLandroid/os/SystemVibrator;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Ljava/lang/String;Landroid/os/VibrationAttributes;)V HSPLandroid/os/SystemVibratorManager;->(Landroid/content/Context;)V @@ -13139,12 +13006,12 @@ HSPLandroid/os/Temperature;->(FILjava/lang/String;I)V HSPLandroid/os/Temperature;->getStatus()I HSPLandroid/os/Temperature;->isValidStatus(I)Z HSPLandroid/os/ThreadLocalWorkSource$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; -HSPLandroid/os/ThreadLocalWorkSource;->getToken()J -HSPLandroid/os/ThreadLocalWorkSource;->getUid()I +HSPLandroid/os/ThreadLocalWorkSource;->getToken()J+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; +HSPLandroid/os/ThreadLocalWorkSource;->getUid()I+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; HSPLandroid/os/ThreadLocalWorkSource;->lambda$static$0()[I HSPLandroid/os/ThreadLocalWorkSource;->parseUidFromToken(J)I -HSPLandroid/os/ThreadLocalWorkSource;->restore(J)V -HSPLandroid/os/ThreadLocalWorkSource;->setUid(I)J +HSPLandroid/os/ThreadLocalWorkSource;->restore(J)V+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; +HSPLandroid/os/ThreadLocalWorkSource;->setUid(I)J+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; HSPLandroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V HSPLandroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V HSPLandroid/os/Trace;->asyncTraceForTrackBegin(JLjava/lang/String;Ljava/lang/String;I)V @@ -13162,7 +13029,7 @@ HSPLandroid/os/Trace;->setCounter(Ljava/lang/String;J)V HSPLandroid/os/Trace;->traceBegin(JLjava/lang/String;)V HSPLandroid/os/Trace;->traceCounter(JLjava/lang/String;I)V HSPLandroid/os/Trace;->traceEnd(J)V -HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle; +HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/UserHandle;->(I)V HSPLandroid/os/UserHandle;->equals(Ljava/lang/Object;)Z @@ -13205,7 +13072,6 @@ HSPLandroid/os/UserManager$3;->bypass(Ljava/lang/Object;)Z HSPLandroid/os/UserManager$3;->recompute(Ljava/lang/Integer;)Ljava/lang/String; HSPLandroid/os/UserManager$3;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/UserManager$4;->(Landroid/os/UserManager;ILjava/lang/String;)V -HSPLandroid/os/UserManager$4;->recompute(Ljava/lang/Integer;)Landroid/content/pm/UserProperties;+]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/IUserManager;Landroid/os/IUserManager$Stub$Proxy; HSPLandroid/os/UserManager;->-$$Nest$fgetmService(Landroid/os/UserManager;)Landroid/os/IUserManager; HSPLandroid/os/UserManager;->(Landroid/content/Context;Landroid/os/IUserManager;)V HSPLandroid/os/UserManager;->convertUserIdsToUserHandles([I)Ljava/util/List; @@ -13232,7 +13098,6 @@ HSPLandroid/os/UserManager;->getUserHandle(I)I HSPLandroid/os/UserManager;->getUserHandles(Z)Ljava/util/List; HSPLandroid/os/UserManager;->getUserInfo(I)Landroid/content/pm/UserInfo; HSPLandroid/os/UserManager;->getUserProfiles()Ljava/util/List; -HSPLandroid/os/UserManager;->getUserProperties(Landroid/os/UserHandle;)Landroid/content/pm/UserProperties;+]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/app/PropertyInvalidatedCache;Landroid/os/UserManager$4; HSPLandroid/os/UserManager;->getUserRestrictionSources(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; HSPLandroid/os/UserManager;->getUserRestrictions()Landroid/os/Bundle; HSPLandroid/os/UserManager;->getUserRestrictions(Landroid/os/UserHandle;)Landroid/os/Bundle; @@ -13258,7 +13123,6 @@ HSPLandroid/os/UserManager;->isUserRunning(I)Z HSPLandroid/os/UserManager;->isUserRunning(Landroid/os/UserHandle;)Z HSPLandroid/os/UserManager;->isUserSwitcherEnabled()Z HSPLandroid/os/UserManager;->isUserSwitcherEnabled(Z)Z -HSPLandroid/os/UserManager;->isUserTypeCloneProfile(Ljava/lang/String;)Z HSPLandroid/os/UserManager;->isUserTypeManagedProfile(Ljava/lang/String;)Z HSPLandroid/os/UserManager;->isUserTypeRestricted(Ljava/lang/String;)Z HSPLandroid/os/UserManager;->isUserUnlocked()Z @@ -13280,7 +13144,6 @@ HSPLandroid/os/VibrationEffect;->get(IZ)Landroid/os/VibrationEffect; HSPLandroid/os/Vibrator;->(Landroid/content/Context;)V HSPLandroid/os/Vibrator;->vibrate(Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V HSPLandroid/os/Vibrator;->vibrate(Landroid/os/VibrationEffect;Landroid/os/VibrationAttributes;)V -HSPLandroid/os/VibratorInfo;->hasCapability(J)Z HSPLandroid/os/VibratorManager;->(Landroid/content/Context;)V HSPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/WorkSource; HSPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -13414,7 +13277,7 @@ HSPLandroid/permission/IPermissionManager$Stub$Proxy;->(Landroid/os/IBinde HSPLandroid/permission/IPermissionManager$Stub$Proxy;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V HSPLandroid/permission/IPermissionManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/permission/IPermissionManager$Stub$Proxy;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; -HSPLandroid/permission/IPermissionManager$Stub$Proxy;->getSplitPermissions()Ljava/util/List; +HSPLandroid/permission/IPermissionManager$Stub$Proxy;->getSplitPermissions()Ljava/util/List;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/permission/IPermissionManager$Stub$Proxy;Landroid/permission/IPermissionManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/permission/IPermissionManager$Stub$Proxy;->removeOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V HSPLandroid/permission/IPermissionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/permission/IPermissionManager; HSPLandroid/permission/LegacyPermissionManager;->()V @@ -13438,7 +13301,7 @@ HSPLandroid/permission/PermissionManager$PermissionQuery;->hashCode()I HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->(Landroid/content/pm/permission/SplitPermissionInfoParcelable;)V HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getNewPermissions()Ljava/util/List; HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getSplitPermission()Ljava/lang/String; -HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getTargetSdk()I +HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getTargetSdk()I+]Landroid/content/pm/permission/SplitPermissionInfoParcelable;Landroid/content/pm/permission/SplitPermissionInfoParcelable; HSPLandroid/permission/PermissionManager;->(Landroid/content/Context;)V HSPLandroid/permission/PermissionManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V HSPLandroid/permission/PermissionManager;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)I @@ -13486,9 +13349,8 @@ HSPLandroid/provider/Settings$Config;->checkCallingOrSelfPermission(Ljava/lang/S HSPLandroid/provider/Settings$Config;->createCompositeName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/provider/Settings$Config;->createNamespaceUri(Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/provider/Settings$Config;->createPrefix(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLandroid/provider/Settings$Config;->enforceReadPermission(Ljava/lang/String;)V HSPLandroid/provider/Settings$Config;->getContentResolver()Landroid/content/ContentResolver; -HSPLandroid/provider/Settings$Config;->getStrings(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;+]Landroid/provider/Settings$NameValueCache;Landroid/provider/Settings$NameValueCache;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList; +HSPLandroid/provider/Settings$Config;->getStrings(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;+]Landroid/provider/Settings$NameValueCache;Landroid/provider/Settings$NameValueCache;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/Arrays$ArrayList;,Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/Arrays$ArrayItr; HSPLandroid/provider/Settings$Config;->getStrings(Ljava/lang/String;Ljava/util/List;)Ljava/util/Map; HSPLandroid/provider/Settings$Config;->registerContentObserver(Ljava/lang/String;ZLandroid/database/ContentObserver;)V HSPLandroid/provider/Settings$ContentProviderHolder;->-$$Nest$fgetmUri(Landroid/provider/Settings$ContentProviderHolder;)Landroid/net/Uri; @@ -13497,7 +13359,7 @@ HSPLandroid/provider/Settings$GenerationTracker;->(Ljava/lang/String;Landr HSPLandroid/provider/Settings$GenerationTracker;->destroy()V HSPLandroid/provider/Settings$GenerationTracker;->getCurrentGeneration()I HSPLandroid/provider/Settings$GenerationTracker;->isGenerationChanged()Z -HSPLandroid/provider/Settings$GenerationTracker;->readCurrentGeneration()I +HSPLandroid/provider/Settings$GenerationTracker;->readCurrentGeneration()I+]Landroid/util/MemoryIntArray;Landroid/util/MemoryIntArray; HSPLandroid/provider/Settings$Global;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F HSPLandroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I HSPLandroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I @@ -13511,7 +13373,7 @@ HSPLandroid/provider/Settings$Global;->putString(Landroid/content/ContentResolve HSPLandroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z HSPLandroid/provider/Settings$NameValueCache$$ExternalSyntheticLambda0;->(Landroid/provider/Settings$NameValueCache;)V HSPLandroid/provider/Settings$NameValueCache;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; -HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Landroid/util/ArrayMap;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/provider/Settings$GenerationTracker;Landroid/provider/Settings$GenerationTracker;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/provider/Settings$ContentProviderHolder;Landroid/provider/Settings$ContentProviderHolder;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/String;Ljava/lang/String;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/net/Uri;Landroid/net/Uri$StringUri; +HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Landroid/util/ArrayMap;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Landroid/provider/Settings$GenerationTracker;Landroid/provider/Settings$GenerationTracker;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/provider/Settings$ContentProviderHolder;Landroid/provider/Settings$ContentProviderHolder;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Ljava/lang/String;Ljava/lang/String;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/ArrayList$Itr;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/provider/Settings$NameValueCache;->isCallerExemptFromReadableRestriction()Z HSPLandroid/provider/Settings$NameValueCache;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z HSPLandroid/provider/Settings$NameValueTable;->getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; @@ -13537,13 +13399,12 @@ HSPLandroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;L HSPLandroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I HSPLandroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)I HSPLandroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I -HSPLandroid/provider/Settings$System;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/provider/Settings$System;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;+]Landroid/provider/Settings$NameValueCache;Landroid/provider/Settings$NameValueCache;]Ljava/util/HashSet;Ljava/util/HashSet; HSPLandroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z HSPLandroid/provider/Settings$System;->putIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z HSPLandroid/provider/Settings$System;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z HSPLandroid/provider/Settings$System;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;IZ)Z -HSPLandroid/provider/Settings;->-$$Nest$smparseFloatSettingWithDefault(Ljava/lang/String;F)F HSPLandroid/provider/Settings;->-$$Nest$smparseIntSetting(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/provider/Settings;->-$$Nest$smparseIntSettingWithDefault(Ljava/lang/String;I)I HSPLandroid/provider/Settings;->canDrawOverlays(Landroid/content/Context;)Z @@ -13729,7 +13590,6 @@ HSPLandroid/security/keystore2/AndroidKeyStoreCipherSpiBase;->resetWhilePreservi HSPLandroid/security/keystore2/AndroidKeyStoreCipherSpiBase;->setKey(Landroid/security/keystore2/AndroidKeyStoreKey;)V HSPLandroid/security/keystore2/AndroidKeyStoreKey;->(Landroid/system/keystore2/KeyDescriptor;J[Landroid/system/keystore2/Authorization;Ljava/lang/String;Landroid/security/KeyStoreSecurityLevel;)V HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getAlgorithm()Ljava/lang/String; -HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getAuthorizations()[Landroid/system/keystore2/Authorization; HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getFormat()Ljava/lang/String; HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getKeyIdDescriptor()Landroid/system/keystore2/KeyDescriptor; HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getSecurityLevel()Landroid/security/KeyStoreSecurityLevel; @@ -13921,14 +13781,14 @@ HSPLandroid/service/notification/NotificationListenerService$NotificationListene HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRankingUpdate(Landroid/service/notification/NotificationRankingUpdate;)V HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V HSPLandroid/service/notification/NotificationListenerService$Ranking;->()V -HSPLandroid/service/notification/NotificationListenerService$Ranking;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/NotificationListenerService$Ranking;->(Landroid/os/Parcel;)V+]Ljava/lang/Object;Landroid/service/notification/NotificationListenerService$Ranking;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/service/notification/NotificationListenerService$Ranking;->getChannel()Landroid/app/NotificationChannel; HSPLandroid/service/notification/NotificationListenerService$Ranking;->getKey()Ljava/lang/String; HSPLandroid/service/notification/NotificationListenerService$Ranking;->populate(Landroid/service/notification/NotificationListenerService$Ranking;)V HSPLandroid/service/notification/NotificationListenerService$Ranking;->populate(Ljava/lang/String;IZIIILjava/lang/CharSequence;Ljava/lang/String;Landroid/app/NotificationChannel;Ljava/util/ArrayList;Ljava/util/ArrayList;ZIZJZLjava/util/ArrayList;Ljava/util/ArrayList;ZZZLandroid/content/pm/ShortcutInfo;IZIZ)V HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationListenerService$RankingMap; HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/service/notification/NotificationListenerService$RankingMap;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->(Landroid/os/Parcel;)V+]Landroid/service/notification/NotificationListenerService$Ranking;Landroid/service/notification/NotificationListenerService$Ranking;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Landroid/service/notification/NotificationListenerService$RankingMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getOrderedKeys()[Ljava/lang/String; HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getRanking(Ljava/lang/String;Landroid/service/notification/NotificationListenerService$Ranking;)Z HSPLandroid/service/notification/NotificationListenerService;->()V @@ -13957,7 +13817,7 @@ HSPLandroid/service/notification/NotificationRankingUpdate;->(Landroid/os/ HSPLandroid/service/notification/NotificationRankingUpdate;->getRankingMap()Landroid/service/notification/NotificationListenerService$RankingMap; HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/StatusBarNotification; HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/service/notification/StatusBarNotification;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/StatusBarNotification;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/service/notification/StatusBarNotification;->getGroupKey()Ljava/lang/String; HSPLandroid/service/notification/StatusBarNotification;->getId()I HSPLandroid/service/notification/StatusBarNotification;->getInstanceId()Lcom/android/internal/logging/InstanceId; @@ -13972,11 +13832,11 @@ HSPLandroid/service/notification/StatusBarNotification;->getTag()Ljava/lang/Stri HSPLandroid/service/notification/StatusBarNotification;->getUid()I HSPLandroid/service/notification/StatusBarNotification;->getUser()Landroid/os/UserHandle; HSPLandroid/service/notification/StatusBarNotification;->getUserId()I -HSPLandroid/service/notification/StatusBarNotification;->groupKey()Ljava/lang/String; +HSPLandroid/service/notification/StatusBarNotification;->groupKey()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/UserHandle;Landroid/os/UserHandle; HSPLandroid/service/notification/StatusBarNotification;->isAppGroup()Z HSPLandroid/service/notification/StatusBarNotification;->isGroup()Z HSPLandroid/service/notification/StatusBarNotification;->isOngoing()Z -HSPLandroid/service/notification/StatusBarNotification;->key()Ljava/lang/String; +HSPLandroid/service/notification/StatusBarNotification;->key()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/os/UserHandle;Landroid/os/UserHandle; HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/ZenModeConfig$ZenRule; HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/service/notification/ZenModeConfig$ZenRule;->(Landroid/os/Parcel;)V @@ -14036,7 +13896,7 @@ HSPLandroid/speech/tts/TtsEngines;->isEngineInstalled(Ljava/lang/String;)Z HSPLandroid/speech/tts/TtsEngines;->isSystemEngine(Landroid/content/pm/ServiceInfo;)Z HSPLandroid/sysprop/DisplayProperties;->debug_force_rtl()Ljava/util/Optional; HSPLandroid/sysprop/DisplayProperties;->debug_layout()Ljava/util/Optional; -HSPLandroid/sysprop/DisplayProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLandroid/sysprop/DisplayProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/sysprop/InputProperties;->force_enable_stylus_pointer_icon()Ljava/util/Optional; HSPLandroid/sysprop/InputProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean; HSPLandroid/sysprop/InputProperties;->tryParseString(Ljava/lang/String;)Ljava/lang/String; @@ -14300,7 +14160,7 @@ HSPLandroid/telephony/CellSignalStrengthGsm;->equals(Ljava/lang/Object;)Z HSPLandroid/telephony/CellSignalStrengthGsm;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/CellSignalStrengthLte$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthLte; HSPLandroid/telephony/CellSignalStrengthLte$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/CellSignalStrengthLte;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/CellSignalStrengthLte;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/CellSignalStrengthLte;->equals(Ljava/lang/Object;)Z HSPLandroid/telephony/CellSignalStrengthLte;->getDbm()I HSPLandroid/telephony/CellSignalStrengthLte;->getLevel()I @@ -14309,7 +14169,7 @@ HSPLandroid/telephony/CellSignalStrengthLte;->toString()Ljava/lang/String; HSPLandroid/telephony/CellSignalStrengthLte;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/CellSignalStrengthNr$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthNr; HSPLandroid/telephony/CellSignalStrengthNr$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/CellSignalStrengthNr;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/CellSignalStrengthNr;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/CellSignalStrengthNr;->equals(Ljava/lang/Object;)Z HSPLandroid/telephony/CellSignalStrengthNr;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/CellSignalStrengthTdscdma$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthTdscdma; @@ -14326,7 +14186,7 @@ HSPLandroid/telephony/CellSignalStrengthWcdma;->writeToParcel(Landroid/os/Parcel HSPLandroid/telephony/DataFailCause;->toString(I)Ljava/lang/String; HSPLandroid/telephony/DataSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/DataSpecificRegistrationInfo; HSPLandroid/telephony/DataSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/DataSpecificRegistrationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/DataSpecificRegistrationInfo;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/DataSpecificRegistrationInfo;->(Landroid/telephony/DataSpecificRegistrationInfo;)V HSPLandroid/telephony/DataSpecificRegistrationInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/DataSpecificRegistrationInfo;->writeToParcel(Landroid/os/Parcel;I)V @@ -14364,7 +14224,7 @@ HSPLandroid/telephony/ModemActivityInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/NetworkRegistrationInfo$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/NetworkRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/NetworkRegistrationInfo; HSPLandroid/telephony/NetworkRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/NetworkRegistrationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/NetworkRegistrationInfo;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/NetworkRegistrationInfo;->(Landroid/telephony/NetworkRegistrationInfo;)V HSPLandroid/telephony/NetworkRegistrationInfo;->domainToString(I)Ljava/lang/String; HSPLandroid/telephony/NetworkRegistrationInfo;->getAccessNetworkTechnology()I @@ -14435,7 +14295,7 @@ HSPLandroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/telephony/ServiceState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/ServiceState; HSPLandroid/telephony/ServiceState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/telephony/ServiceState;->()V -HSPLandroid/telephony/ServiceState;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/ServiceState;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/ServiceState;->(Landroid/telephony/ServiceState;)V HSPLandroid/telephony/ServiceState;->copyFrom(Landroid/telephony/ServiceState;)V HSPLandroid/telephony/ServiceState;->createLocationInfoSanitizedCopy(Z)Landroid/telephony/ServiceState; @@ -14469,7 +14329,7 @@ HSPLandroid/telephony/ServiceState;->toString()Ljava/lang/String; HSPLandroid/telephony/ServiceState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/SignalStrength$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SignalStrength; HSPLandroid/telephony/SignalStrength$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/SignalStrength;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/SignalStrength;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/SignalStrength;->getCellSignalStrengths()Ljava/util/List; HSPLandroid/telephony/SignalStrength;->getCellSignalStrengths(Ljava/lang/Class;)Ljava/util/List; HSPLandroid/telephony/SignalStrength;->getLevel()I @@ -14560,7 +14420,6 @@ HSPLandroid/telephony/SubscriptionInfo;->isOpportunistic()Z HSPLandroid/telephony/SubscriptionInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda3;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda4;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; -HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda5;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda6;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda7;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda9;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -14719,7 +14578,6 @@ HSPLandroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateLis HSPLandroid/telephony/TelephonyManager;->mergeAttributionAndRenouncedPermissions(Landroid/content/Context;Landroid/content/Context;)Landroid/content/Context; HSPLandroid/telephony/TelephonyManager;->registerTelephonyCallback(ILjava/util/concurrent/Executor;Landroid/telephony/TelephonyCallback;)V HSPLandroid/telephony/TelephonyManager;->registerTelephonyCallback(Ljava/util/concurrent/Executor;Landroid/telephony/TelephonyCallback;)V -HSPLandroid/telephony/TelephonyManager;->unregisterTelephonyCallback(Landroid/telephony/TelephonyCallback;)V HSPLandroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda0;->()V HSPLandroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I HSPLandroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda1;->()V @@ -14743,7 +14601,7 @@ HSPLandroid/telephony/UiccAccessRule$1;->newArray(I)[Landroid/telephony/UiccAcce HSPLandroid/telephony/UiccAccessRule$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/telephony/VoiceSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/VoiceSpecificRegistrationInfo; HSPLandroid/telephony/VoiceSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->(Landroid/telephony/VoiceSpecificRegistrationInfo;)V HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->writeToParcel(Landroid/os/Parcel;I)V @@ -14803,26 +14661,26 @@ HSPLandroid/telephony/ims/RegistrationManager$RegistrationCallback;->getBinder() HSPLandroid/telephony/ims/RegistrationManager$RegistrationCallback;->setExecutor(Ljava/util/concurrent/Executor;)V HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;->()V HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;->asBinder()Landroid/os/IBinder; -HSPLandroid/text/AndroidBidi;->bidi(I[C[B)I +HSPLandroid/text/AndroidBidi;->bidi(I[C[B)I+]Landroid/icu/text/Bidi;Landroid/icu/text/Bidi; HSPLandroid/text/AndroidBidi;->directions(I[BI[CII)Landroid/text/Layout$Directions; HSPLandroid/text/AutoGrowArray$ByteArray;->()V HSPLandroid/text/AutoGrowArray$ByteArray;->(I)V HSPLandroid/text/AutoGrowArray$ByteArray;->clear()V -HSPLandroid/text/AutoGrowArray$ByteArray;->clearWithReleasingLargeArray()V +HSPLandroid/text/AutoGrowArray$ByteArray;->clearWithReleasingLargeArray()V+]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray; HSPLandroid/text/AutoGrowArray$ByteArray;->get(I)B HSPLandroid/text/AutoGrowArray$ByteArray;->getRawArray()[B HSPLandroid/text/AutoGrowArray$ByteArray;->resize(I)V HSPLandroid/text/AutoGrowArray$FloatArray;->()V HSPLandroid/text/AutoGrowArray$FloatArray;->(I)V HSPLandroid/text/AutoGrowArray$FloatArray;->clear()V -HSPLandroid/text/AutoGrowArray$FloatArray;->clearWithReleasingLargeArray()V +HSPLandroid/text/AutoGrowArray$FloatArray;->clearWithReleasingLargeArray()V+]Landroid/text/AutoGrowArray$FloatArray;Landroid/text/AutoGrowArray$FloatArray; HSPLandroid/text/AutoGrowArray$FloatArray;->ensureCapacity(I)V HSPLandroid/text/AutoGrowArray$FloatArray;->getRawArray()[F HSPLandroid/text/AutoGrowArray$FloatArray;->resize(I)V HSPLandroid/text/AutoGrowArray$IntArray;->(I)V HSPLandroid/text/AutoGrowArray$IntArray;->append(I)V HSPLandroid/text/AutoGrowArray$IntArray;->clear()V -HSPLandroid/text/AutoGrowArray$IntArray;->clearWithReleasingLargeArray()V +HSPLandroid/text/AutoGrowArray$IntArray;->clearWithReleasingLargeArray()V+]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray; HSPLandroid/text/AutoGrowArray$IntArray;->ensureCapacity(I)V HSPLandroid/text/AutoGrowArray$IntArray;->getRawArray()[I HSPLandroid/text/AutoGrowArray;->computeNewCapacity(II)I @@ -14839,7 +14697,7 @@ HSPLandroid/text/BoringLayout$Metrics;->()V HSPLandroid/text/BoringLayout$Metrics;->reset()V HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V -HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)V +HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)V+]Landroid/text/BoringLayout;Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V HSPLandroid/text/BoringLayout;->ellipsized(II)V HSPLandroid/text/BoringLayout;->getEllipsisCount(I)I @@ -14851,18 +14709,18 @@ HSPLandroid/text/BoringLayout;->getLineCount()I HSPLandroid/text/BoringLayout;->getLineDescent(I)I HSPLandroid/text/BoringLayout;->getLineDirections(I)Landroid/text/Layout$Directions; HSPLandroid/text/BoringLayout;->getLineMax(I)F -HSPLandroid/text/BoringLayout;->getLineStart(I)I +HSPLandroid/text/BoringLayout;->getLineStart(I)I+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString; HSPLandroid/text/BoringLayout;->getLineTop(I)I HSPLandroid/text/BoringLayout;->getLineWidth(I)F HSPLandroid/text/BoringLayout;->getParagraphDirection(I)I HSPLandroid/text/BoringLayout;->hasAnyInterestingChars(Ljava/lang/CharSequence;I)Z -HSPLandroid/text/BoringLayout;->init(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/Layout$Alignment;Landroid/text/BoringLayout$Metrics;ZZZ)V +HSPLandroid/text/BoringLayout;->init(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/Layout$Alignment;Landroid/text/BoringLayout$Metrics;ZZZ)V+]Landroid/text/TextLine;Landroid/text/TextLine;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics; -HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics; +HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;+]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types]Landroid/text/TextDirectionHeuristic;Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;,Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal; HSPLandroid/text/BoringLayout;->isFallbackLineSpacingEnabled()Z HSPLandroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; -HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout; +HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;+]Landroid/text/BoringLayout;Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)Landroid/text/BoringLayout; HSPLandroid/text/CharSequenceCharacterIterator;->current()C @@ -14872,7 +14730,7 @@ HSPLandroid/text/CharSequenceCharacterIterator;->getEndIndex()I HSPLandroid/text/CharSequenceCharacterIterator;->getIndex()I HSPLandroid/text/CharSequenceCharacterIterator;->next()C HSPLandroid/text/CharSequenceCharacterIterator;->setIndex(I)C -HSPLandroid/text/DynamicLayout$Builder;->obtain(Ljava/lang/CharSequence;Landroid/text/TextPaint;I)Landroid/text/DynamicLayout$Builder; +HSPLandroid/text/DynamicLayout$Builder;->obtain(Ljava/lang/CharSequence;Landroid/text/TextPaint;I)Landroid/text/DynamicLayout$Builder;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; HSPLandroid/text/DynamicLayout$ChangeWatcher;->afterTextChanged(Landroid/text/Editable;)V HSPLandroid/text/DynamicLayout$ChangeWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V @@ -14880,29 +14738,29 @@ HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanChanged(Landroid/text/Spann HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V HSPLandroid/text/DynamicLayout$ChangeWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V HSPLandroid/text/DynamicLayout;->(Landroid/text/DynamicLayout$Builder;)V -HSPLandroid/text/DynamicLayout;->addBlockAtOffset(I)V -HSPLandroid/text/DynamicLayout;->contentMayProtrudeFromLineTopOrBottom(Ljava/lang/CharSequence;II)Z -HSPLandroid/text/DynamicLayout;->createBlocks()V -HSPLandroid/text/DynamicLayout;->generate(Landroid/text/DynamicLayout$Builder;)V +HSPLandroid/text/DynamicLayout;->addBlockAtOffset(I)V+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout; +HSPLandroid/text/DynamicLayout;->contentMayProtrudeFromLineTopOrBottom(Ljava/lang/CharSequence;II)Z+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Landroid/graphics/Paint;Landroid/text/TextPaint;]Landroid/text/Spanned;Landroid/text/SpannableString; +HSPLandroid/text/DynamicLayout;->createBlocks()V+]Ljava/lang/CharSequence;Landroid/text/SpannableString; +HSPLandroid/text/DynamicLayout;->generate(Landroid/text/DynamicLayout$Builder;)V+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector;]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;missing_types]Landroid/text/Spannable;missing_types HSPLandroid/text/DynamicLayout;->getBlockEndLines()[I HSPLandroid/text/DynamicLayout;->getBlockIndices()[I HSPLandroid/text/DynamicLayout;->getBlocksAlwaysNeedToBeRedrawn()Landroid/util/ArraySet; HSPLandroid/text/DynamicLayout;->getEllipsisCount(I)I HSPLandroid/text/DynamicLayout;->getEllipsisStart(I)I HSPLandroid/text/DynamicLayout;->getEllipsizedWidth()I -HSPLandroid/text/DynamicLayout;->getEndHyphenEdit(I)I +HSPLandroid/text/DynamicLayout;->getEndHyphenEdit(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; HSPLandroid/text/DynamicLayout;->getIndexFirstChangedBlock()I -HSPLandroid/text/DynamicLayout;->getLineContainsTab(I)Z -HSPLandroid/text/DynamicLayout;->getLineCount()I +HSPLandroid/text/DynamicLayout;->getLineContainsTab(I)Z+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/DynamicLayout;->getLineCount()I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; HSPLandroid/text/DynamicLayout;->getLineDescent(I)I -HSPLandroid/text/DynamicLayout;->getLineDirections(I)Landroid/text/Layout$Directions; +HSPLandroid/text/DynamicLayout;->getLineDirections(I)Landroid/text/Layout$Directions;+]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector; HSPLandroid/text/DynamicLayout;->getLineExtra(I)I -HSPLandroid/text/DynamicLayout;->getLineStart(I)I -HSPLandroid/text/DynamicLayout;->getLineTop(I)I +HSPLandroid/text/DynamicLayout;->getLineStart(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/DynamicLayout;->getLineTop(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; HSPLandroid/text/DynamicLayout;->getNumberOfBlocks()I -HSPLandroid/text/DynamicLayout;->getParagraphDirection(I)I -HSPLandroid/text/DynamicLayout;->getStartHyphenEdit(I)I -HSPLandroid/text/DynamicLayout;->reflow(Ljava/lang/CharSequence;III)V +HSPLandroid/text/DynamicLayout;->getParagraphDirection(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/DynamicLayout;->getStartHyphenEdit(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/DynamicLayout;->reflow(Ljava/lang/CharSequence;III)V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector;]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector;]Landroid/text/StaticLayout;Landroid/text/StaticLayout;]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder; HSPLandroid/text/DynamicLayout;->setIndexFirstChangedBlock(I)V HSPLandroid/text/DynamicLayout;->updateAlwaysNeedsToBeRedrawn(I)V HSPLandroid/text/DynamicLayout;->updateBlocks(III)V @@ -14954,52 +14812,50 @@ HSPLandroid/text/Layout$SpannedEllipsizer;->getSpanStart(Ljava/lang/Object;)I HSPLandroid/text/Layout$SpannedEllipsizer;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; HSPLandroid/text/Layout$SpannedEllipsizer;->nextSpanTransition(IILjava/lang/Class;)I HSPLandroid/text/Layout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V -HSPLandroid/text/Layout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FF)V HSPLandroid/text/Layout;->addSelection(IIIIILandroid/text/Layout$SelectionRectangleConsumer;)V HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;)V HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V -HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V +HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V+]Landroid/text/Layout;Landroid/text/StaticLayout; HSPLandroid/text/Layout;->drawBackground(Landroid/graphics/Canvas;II)V -HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V -HSPLandroid/text/Layout;->drawWithoutText(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V -HSPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V +HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;,Landroid/text/DynamicLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types +HSPLandroid/text/Layout;->drawWithoutText(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/text/Layout;Landroid/text/StaticLayout; HSPLandroid/text/Layout;->getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V HSPLandroid/text/Layout;->getDesiredWidth(Ljava/lang/CharSequence;IILandroid/text/TextPaint;)F HSPLandroid/text/Layout;->getDesiredWidth(Ljava/lang/CharSequence;Landroid/text/TextPaint;)F -HSPLandroid/text/Layout;->getDesiredWidthWithLimit(Ljava/lang/CharSequence;IILandroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;F)F HSPLandroid/text/Layout;->getEndHyphenEdit(I)I -HSPLandroid/text/Layout;->getHeight()I -HSPLandroid/text/Layout;->getHeight(Z)I +HSPLandroid/text/Layout;->getHeight()I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/StaticLayout; +HSPLandroid/text/Layout;->getHeight(Z)I+]Landroid/text/Layout;Landroid/text/DynamicLayout; HSPLandroid/text/Layout;->getHorizontal(IZ)F -HSPLandroid/text/Layout;->getHorizontal(IZIZ)F +HSPLandroid/text/Layout;->getHorizontal(IZIZ)F+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;]Landroid/text/TextLine;Landroid/text/TextLine; HSPLandroid/text/Layout;->getIndentAdjust(ILandroid/text/Layout$Alignment;)I -HSPLandroid/text/Layout;->getLineBaseline(I)I +HSPLandroid/text/Layout;->getLineBaseline(I)I+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout; HSPLandroid/text/Layout;->getLineBottom(I)I HSPLandroid/text/Layout;->getLineBottom(IZ)I -HSPLandroid/text/Layout;->getLineEnd(I)I -HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F -HSPLandroid/text/Layout;->getLineExtent(IZ)F -HSPLandroid/text/Layout;->getLineForOffset(I)I +HSPLandroid/text/Layout;->getLineEnd(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout; +HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/text/Layout;->getLineExtent(IZ)F+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/StaticLayout;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/text/Layout;->getLineForOffset(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout; HSPLandroid/text/Layout;->getLineForVertical(I)I -HSPLandroid/text/Layout;->getLineLeft(I)F +HSPLandroid/text/Layout;->getLineLeft(I)F+]Landroid/text/Layout$Alignment;Landroid/text/Layout$Alignment;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/StaticLayout;,Landroid/text/BoringLayout; HSPLandroid/text/Layout;->getLineMax(I)F -HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J -HSPLandroid/text/Layout;->getLineRight(I)F -HSPLandroid/text/Layout;->getLineStartPos(III)I -HSPLandroid/text/Layout;->getLineVisibleEnd(I)I -HSPLandroid/text/Layout;->getLineVisibleEnd(III)I +HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/graphics/Canvas;missing_types +HSPLandroid/text/Layout;->getLineRight(I)F+]Landroid/text/Layout$Alignment;Landroid/text/Layout$Alignment;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout; +HSPLandroid/text/Layout;->getLineStartPos(III)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout; +HSPLandroid/text/Layout;->getLineVisibleEnd(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout; +HSPLandroid/text/Layout;->getLineVisibleEnd(III)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout; HSPLandroid/text/Layout;->getLineWidth(I)F HSPLandroid/text/Layout;->getOffsetAtStartOf(I)I HSPLandroid/text/Layout;->getOffsetForHorizontal(IF)I HSPLandroid/text/Layout;->getOffsetForHorizontal(IFZ)I HSPLandroid/text/Layout;->getPaint()Landroid/text/TextPaint; -HSPLandroid/text/Layout;->getParagraphAlignment(I)Landroid/text/Layout$Alignment; -HSPLandroid/text/Layout;->getParagraphLeadingMargin(I)I -HSPLandroid/text/Layout;->getParagraphLeft(I)I -HSPLandroid/text/Layout;->getParagraphRight(I)I -HSPLandroid/text/Layout;->getParagraphSpans(Landroid/text/Spanned;IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/Layout;->getParagraphAlignment(I)Landroid/text/Layout$Alignment;+]Landroid/text/Layout;Landroid/text/DynamicLayout; +HSPLandroid/text/Layout;->getParagraphLeadingMargin(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;]Landroid/text/Spanned;Landroid/text/SpannableString; +HSPLandroid/text/Layout;->getParagraphLeft(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout; +HSPLandroid/text/Layout;->getParagraphRight(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout; +HSPLandroid/text/Layout;->getParagraphSpans(Landroid/text/Spanned;IILjava/lang/Class;)[Ljava/lang/Object;+]Landroid/text/Spanned;Landroid/text/SpannableString; HSPLandroid/text/Layout;->getPrimaryHorizontal(I)F -HSPLandroid/text/Layout;->getPrimaryHorizontal(IZ)F +HSPLandroid/text/Layout;->getPrimaryHorizontal(IZ)F+]Landroid/text/Layout;Landroid/text/DynamicLayout; HSPLandroid/text/Layout;->getSelection(IILandroid/text/Layout$SelectionRectangleConsumer;)V HSPLandroid/text/Layout;->getSelectionPath(IILandroid/graphics/Path;)V HSPLandroid/text/Layout;->getSpacingAdd()F @@ -15012,42 +14868,39 @@ HSPLandroid/text/Layout;->increaseWidthTo(I)V HSPLandroid/text/Layout;->isFallbackLineSpacingEnabled()Z HSPLandroid/text/Layout;->isJustificationRequired(I)Z HSPLandroid/text/Layout;->isRtlCharAt(I)Z -HSPLandroid/text/Layout;->measurePara(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)F -HSPLandroid/text/Layout;->primaryIsTrailingPrevious(I)Z +HSPLandroid/text/Layout;->primaryIsTrailingPrevious(I)Z+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout; HSPLandroid/text/Layout;->replaceWith(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V -HSPLandroid/text/Layout;->setJustificationMode(I)V HSPLandroid/text/Layout;->shouldClampCursor(I)Z HSPLandroid/text/MeasuredParagraph;->()V HSPLandroid/text/MeasuredParagraph;->breakText(IZF)I HSPLandroid/text/MeasuredParagraph;->buildForBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; HSPLandroid/text/MeasuredParagraph;->buildForMeasurement(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; -HSPLandroid/text/MeasuredParagraph;->buildForStaticLayout(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;IZLandroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; HSPLandroid/text/MeasuredParagraph;->getCharWidthAt(I)F HSPLandroid/text/MeasuredParagraph;->getChars()[C -HSPLandroid/text/MeasuredParagraph;->getDirections(II)Landroid/text/Layout$Directions; +HSPLandroid/text/MeasuredParagraph;->getDirections(II)Landroid/text/Layout$Directions;+]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray; HSPLandroid/text/MeasuredParagraph;->getFontMetrics()Landroid/text/AutoGrowArray$IntArray; HSPLandroid/text/MeasuredParagraph;->getMeasuredText()Landroid/graphics/text/MeasuredText; HSPLandroid/text/MeasuredParagraph;->getParagraphDir()I HSPLandroid/text/MeasuredParagraph;->getSpanEndCache()Landroid/text/AutoGrowArray$IntArray; HSPLandroid/text/MeasuredParagraph;->getWholeWidth()F -HSPLandroid/text/MeasuredParagraph;->obtain()Landroid/text/MeasuredParagraph; -HSPLandroid/text/MeasuredParagraph;->recycle()V -HSPLandroid/text/MeasuredParagraph;->release()V -HSPLandroid/text/MeasuredParagraph;->reset()V -HSPLandroid/text/MeasuredParagraph;->resetAndAnalyzeBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)V -HSPLandroid/text/PackedIntVector;->adjustValuesBelow(III)V -HSPLandroid/text/PackedIntVector;->deleteAt(II)V -HSPLandroid/text/PackedIntVector;->getValue(II)I -HSPLandroid/text/PackedIntVector;->growBuffer()V -HSPLandroid/text/PackedIntVector;->insertAt(I[I)V +HSPLandroid/text/MeasuredParagraph;->obtain()Landroid/text/MeasuredParagraph;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; +HSPLandroid/text/MeasuredParagraph;->recycle()V+]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; +HSPLandroid/text/MeasuredParagraph;->release()V+]Landroid/text/AutoGrowArray$FloatArray;Landroid/text/AutoGrowArray$FloatArray;]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray; +HSPLandroid/text/MeasuredParagraph;->reset()V+]Landroid/text/AutoGrowArray$FloatArray;Landroid/text/AutoGrowArray$FloatArray;]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray; +HSPLandroid/text/MeasuredParagraph;->resetAndAnalyzeBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)V+]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray;]Landroid/text/Spanned;missing_types +HSPLandroid/text/PackedIntVector;->adjustValuesBelow(III)V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/PackedIntVector;->deleteAt(II)V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/PackedIntVector;->getValue(II)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/PackedIntVector;->growBuffer()V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/PackedIntVector;->insertAt(I[I)V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; HSPLandroid/text/PackedIntVector;->moveRowGapTo(I)V HSPLandroid/text/PackedIntVector;->moveValueGapTo(II)V HSPLandroid/text/PackedIntVector;->size()I HSPLandroid/text/PackedIntVector;->width()I -HSPLandroid/text/PackedObjectVector;->deleteAt(II)V +HSPLandroid/text/PackedObjectVector;->deleteAt(II)V+]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector; HSPLandroid/text/PackedObjectVector;->getValue(II)Ljava/lang/Object; -HSPLandroid/text/PackedObjectVector;->growBuffer()V -HSPLandroid/text/PackedObjectVector;->insertAt(I[Ljava/lang/Object;)V +HSPLandroid/text/PackedObjectVector;->growBuffer()V+]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector; +HSPLandroid/text/PackedObjectVector;->insertAt(I[Ljava/lang/Object;)V+]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector; HSPLandroid/text/PackedObjectVector;->moveRowGapTo(I)V HSPLandroid/text/PackedObjectVector;->setValue(IILjava/lang/Object;)V HSPLandroid/text/PackedObjectVector;->size()I @@ -15057,24 +14910,23 @@ HSPLandroid/text/PrecomputedText$Params;->getBreakStrategy()I HSPLandroid/text/PrecomputedText$Params;->getHyphenationFrequency()I HSPLandroid/text/PrecomputedText$Params;->getTextDirection()Landroid/text/TextDirectionHeuristic; HSPLandroid/text/PrecomputedText$Params;->getTextPaint()Landroid/text/TextPaint; -HSPLandroid/text/PrecomputedText;->createMeasuredParagraphs(Ljava/lang/CharSequence;Landroid/text/PrecomputedText$Params;IIZ)[Landroid/text/PrecomputedText$ParagraphInfo; -HSPLandroid/text/Selection;->getSelectionEnd(Ljava/lang/CharSequence;)I -HSPLandroid/text/Selection;->getSelectionStart(Ljava/lang/CharSequence;)I -HSPLandroid/text/Selection;->removeMemory(Landroid/text/Spannable;)V +HSPLandroid/text/Selection;->getSelectionEnd(Ljava/lang/CharSequence;)I+]Landroid/text/Spanned;Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder; +HSPLandroid/text/Selection;->getSelectionStart(Ljava/lang/CharSequence;)I+]Landroid/text/Spanned;Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder; +HSPLandroid/text/Selection;->removeMemory(Landroid/text/Spannable;)V+]Landroid/text/Spannable;Landroid/text/SpannableStringBuilder;,Landroid/text/SpannableString; HSPLandroid/text/Selection;->removeSelection(Landroid/text/Spannable;)V HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;I)V HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;II)V -HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;III)V +HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;III)V+]Landroid/text/Spannable;Landroid/text/SpannableStringBuilder;,Landroid/text/SpannableString; HSPLandroid/text/Selection;->updateMemory(Landroid/text/Spannable;I)V HSPLandroid/text/SpanSet;->(Ljava/lang/Class;)V HSPLandroid/text/SpanSet;->getNextTransition(II)I HSPLandroid/text/SpanSet;->hasSpansIntersecting(II)Z -HSPLandroid/text/SpanSet;->init(Landroid/text/Spanned;II)V +HSPLandroid/text/SpanSet;->init(Landroid/text/Spanned;II)V+]Landroid/text/Spanned;missing_types HSPLandroid/text/SpanSet;->recycle()V HSPLandroid/text/Spannable$Factory;->getInstance()Landroid/text/Spannable$Factory; HSPLandroid/text/Spannable$Factory;->newSpannable(Ljava/lang/CharSequence;)Landroid/text/Spannable; HSPLandroid/text/SpannableString;->(Ljava/lang/CharSequence;)V -HSPLandroid/text/SpannableString;->(Ljava/lang/CharSequence;Z)V +HSPLandroid/text/SpannableString;->(Ljava/lang/CharSequence;Z)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString; HSPLandroid/text/SpannableString;->equals(Ljava/lang/Object;)Z HSPLandroid/text/SpannableString;->getSpanEnd(Ljava/lang/Object;)I HSPLandroid/text/SpannableString;->getSpanFlags(Ljava/lang/Object;)I @@ -15092,12 +14944,12 @@ HSPLandroid/text/SpannableStringBuilder;->(Ljava/lang/CharSequence;II)V HSPLandroid/text/SpannableStringBuilder;->append(C)Landroid/text/Editable; HSPLandroid/text/SpannableStringBuilder;->append(C)Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/Editable; -HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->calcMax(I)I -HSPLandroid/text/SpannableStringBuilder;->change(IILjava/lang/CharSequence;II)V -HSPLandroid/text/SpannableStringBuilder;->charAt(I)C -HSPLandroid/text/SpannableStringBuilder;->checkRange(Ljava/lang/String;II)V +HSPLandroid/text/SpannableStringBuilder;->change(IILjava/lang/CharSequence;II)V+]Landroid/text/Spanned;Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->charAt(I)C+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->checkRange(Ljava/lang/String;II)V+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->checkSortBuffer([II)[I HSPLandroid/text/SpannableStringBuilder;->clear()V HSPLandroid/text/SpannableStringBuilder;->compareSpans(II[I[I)I @@ -15109,8 +14961,8 @@ HSPLandroid/text/SpannableStringBuilder;->equals(Ljava/lang/Object;)Z HSPLandroid/text/SpannableStringBuilder;->getChars(II[CI)V HSPLandroid/text/SpannableStringBuilder;->getSpanEnd(Ljava/lang/Object;)I HSPLandroid/text/SpannableStringBuilder;->getSpanFlags(Ljava/lang/Object;)I -HSPLandroid/text/SpannableStringBuilder;->getSpanStart(Ljava/lang/Object;)I -HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/SpannableStringBuilder;->getSpanStart(Ljava/lang/Object;)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap; +HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;Z)[Ljava/lang/Object; HSPLandroid/text/SpannableStringBuilder;->getSpansRec(IILjava/lang/Class;I[Ljava/lang/Object;[I[IIZ)I HSPLandroid/text/SpannableStringBuilder;->getTextWatcherDepth()I @@ -15120,7 +14972,7 @@ HSPLandroid/text/SpannableStringBuilder;->invalidateIndex(I)V HSPLandroid/text/SpannableStringBuilder;->isInvalidParagraph(II)Z HSPLandroid/text/SpannableStringBuilder;->leftChild(I)I HSPLandroid/text/SpannableStringBuilder;->length()I -HSPLandroid/text/SpannableStringBuilder;->moveGapTo(I)V +HSPLandroid/text/SpannableStringBuilder;->moveGapTo(I)V+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->nextSpanTransition(IILjava/lang/Class;)I HSPLandroid/text/SpannableStringBuilder;->nextSpanTransitionRec(IILjava/lang/Class;I)I HSPLandroid/text/SpannableStringBuilder;->obtain(I)[I @@ -15130,8 +14982,8 @@ HSPLandroid/text/SpannableStringBuilder;->removeSpan(Ljava/lang/Object;)V HSPLandroid/text/SpannableStringBuilder;->removeSpan(Ljava/lang/Object;I)V HSPLandroid/text/SpannableStringBuilder;->removeSpansForChange(IIZI)Z HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/Editable; -HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; -HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->resizeFor(I)V HSPLandroid/text/SpannableStringBuilder;->resolveGap(I)I HSPLandroid/text/SpannableStringBuilder;->restoreInvariants()V @@ -15152,22 +15004,22 @@ HSPLandroid/text/SpannableStringBuilder;->subSequence(II)Ljava/lang/CharSequence HSPLandroid/text/SpannableStringBuilder;->toString()Ljava/lang/String; HSPLandroid/text/SpannableStringBuilder;->treeRoot()I HSPLandroid/text/SpannableStringBuilder;->updatedIntervalBound(IIIIZZ)I -HSPLandroid/text/SpannableStringInternal;->(Ljava/lang/CharSequence;IIZ)V -HSPLandroid/text/SpannableStringInternal;->charAt(I)C -HSPLandroid/text/SpannableStringInternal;->checkRange(Ljava/lang/String;II)V -HSPLandroid/text/SpannableStringInternal;->copySpansFromInternal(Landroid/text/SpannableStringInternal;IIZ)V +HSPLandroid/text/SpannableStringInternal;->(Ljava/lang/CharSequence;IIZ)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringInternal;->charAt(I)C+]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/text/SpannableStringInternal;->checkRange(Ljava/lang/String;II)V+]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringInternal;->copySpansFromInternal(Landroid/text/SpannableStringInternal;IIZ)V+]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; HSPLandroid/text/SpannableStringInternal;->copySpansFromSpanned(Landroid/text/Spanned;IIZ)V HSPLandroid/text/SpannableStringInternal;->equals(Ljava/lang/Object;)Z -HSPLandroid/text/SpannableStringInternal;->getChars(II[CI)V +HSPLandroid/text/SpannableStringInternal;->getChars(II[CI)V+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/text/SpannableStringInternal;->getSpanEnd(Ljava/lang/Object;)I HSPLandroid/text/SpannableStringInternal;->getSpanFlags(Ljava/lang/Object;)I HSPLandroid/text/SpannableStringInternal;->getSpanStart(Ljava/lang/Object;)I -HSPLandroid/text/SpannableStringInternal;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; -HSPLandroid/text/SpannableStringInternal;->length()I -HSPLandroid/text/SpannableStringInternal;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroid/text/SpannableStringInternal;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringInternal;->length()I+]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/text/SpannableStringInternal;->nextSpanTransition(IILjava/lang/Class;)I+]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/text/SpannableStringInternal;->removeSpan(Ljava/lang/Object;I)V -HSPLandroid/text/SpannableStringInternal;->sendSpanAdded(Ljava/lang/Object;II)V -HSPLandroid/text/SpannableStringInternal;->sendSpanChanged(Ljava/lang/Object;IIII)V +HSPLandroid/text/SpannableStringInternal;->sendSpanAdded(Ljava/lang/Object;II)V+]Landroid/text/SpanWatcher;Landroid/text/DynamicLayout$ChangeWatcher;,Landroid/widget/Editor$SpanController;,Landroid/widget/TextView$ChangeWatcher;]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringInternal;->sendSpanChanged(Ljava/lang/Object;IIII)V+]Landroid/text/SpanWatcher;Landroid/widget/Editor$SpanController;,Landroid/widget/TextView$ChangeWatcher;]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;III)V HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;IIIZ)V HSPLandroid/text/SpannableStringInternal;->toString()Ljava/lang/String; @@ -15201,8 +15053,8 @@ HSPLandroid/text/StaticLayout$Builder;->-$$Nest$fgetmTextDir(Landroid/text/Stati HSPLandroid/text/StaticLayout$Builder;->-$$Nest$fgetmWidth(Landroid/text/StaticLayout$Builder;)I HSPLandroid/text/StaticLayout$Builder;->()V HSPLandroid/text/StaticLayout$Builder;->build()Landroid/text/StaticLayout; -HSPLandroid/text/StaticLayout$Builder;->obtain(Ljava/lang/CharSequence;IILandroid/text/TextPaint;I)Landroid/text/StaticLayout$Builder; -HSPLandroid/text/StaticLayout$Builder;->recycle(Landroid/text/StaticLayout$Builder;)V +HSPLandroid/text/StaticLayout$Builder;->obtain(Ljava/lang/CharSequence;IILandroid/text/TextPaint;I)Landroid/text/StaticLayout$Builder;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; +HSPLandroid/text/StaticLayout$Builder;->recycle(Landroid/text/StaticLayout$Builder;)V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; HSPLandroid/text/StaticLayout$Builder;->setAlignment(Landroid/text/Layout$Alignment;)Landroid/text/StaticLayout$Builder; HSPLandroid/text/StaticLayout$Builder;->setBreakStrategy(I)Landroid/text/StaticLayout$Builder; HSPLandroid/text/StaticLayout$Builder;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)Landroid/text/StaticLayout$Builder; @@ -15215,21 +15067,18 @@ HSPLandroid/text/StaticLayout$Builder;->setLineSpacing(FF)Landroid/text/StaticLa HSPLandroid/text/StaticLayout$Builder;->setMaxLines(I)Landroid/text/StaticLayout$Builder; HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder; HSPLandroid/text/StaticLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/StaticLayout$Builder; -HSPLandroid/text/StaticLayout;->(Landroid/text/StaticLayout$Builder;)V -HSPLandroid/text/StaticLayout;->(Ljava/lang/CharSequence;)V HSPLandroid/text/StaticLayout;->calculateEllipsis(IILandroid/text/MeasuredParagraph;IFLandroid/text/TextUtils$TruncateAt;IFLandroid/text/TextPaint;Z)V -HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V +HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V+]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Landroid/graphics/text/LineBreaker$Builder;Landroid/graphics/text/LineBreaker$Builder;]Landroid/graphics/text/LineBreaker;Landroid/graphics/text/LineBreaker;]Landroid/text/Spanned;Landroid/text/SpannableString;]Ljava/lang/CharSequence;missing_types]Landroid/graphics/text/LineBreaker$ParagraphConstraints;Landroid/graphics/text/LineBreaker$ParagraphConstraints;]Landroid/graphics/text/LineBreaker$Result;Landroid/graphics/text/LineBreaker$Result;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/StaticLayout;Landroid/text/StaticLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/text/StaticLayout;->getBottomPadding()I HSPLandroid/text/StaticLayout;->getEllipsisCount(I)I HSPLandroid/text/StaticLayout;->getEllipsisStart(I)I -HSPLandroid/text/StaticLayout;->getEllipsizedWidth()I HSPLandroid/text/StaticLayout;->getEndHyphenEdit(I)I HSPLandroid/text/StaticLayout;->getHeight(Z)I HSPLandroid/text/StaticLayout;->getIndentAdjust(ILandroid/text/Layout$Alignment;)I HSPLandroid/text/StaticLayout;->getLineContainsTab(I)Z HSPLandroid/text/StaticLayout;->getLineCount()I HSPLandroid/text/StaticLayout;->getLineDescent(I)I -HSPLandroid/text/StaticLayout;->getLineDirections(I)Landroid/text/Layout$Directions; +HSPLandroid/text/StaticLayout;->getLineDirections(I)Landroid/text/Layout$Directions;+]Landroid/text/StaticLayout;Landroid/text/StaticLayout; HSPLandroid/text/StaticLayout;->getLineExtra(I)I HSPLandroid/text/StaticLayout;->getLineForVertical(I)I HSPLandroid/text/StaticLayout;->getLineStart(I)I @@ -15238,14 +15087,13 @@ HSPLandroid/text/StaticLayout;->getParagraphDirection(I)I HSPLandroid/text/StaticLayout;->getStartHyphenEdit(I)I HSPLandroid/text/StaticLayout;->getTopPadding()I HSPLandroid/text/StaticLayout;->getTotalInsets(I)F -HSPLandroid/text/StaticLayout;->isFallbackLineSpacingEnabled()Z -HSPLandroid/text/StaticLayout;->out(Ljava/lang/CharSequence;IIIIIIIFF[Landroid/text/style/LineHeightSpan;[ILandroid/graphics/Paint$FontMetricsInt;ZIZLandroid/text/MeasuredParagraph;IZZZ[CILandroid/text/TextUtils$TruncateAt;FFLandroid/text/TextPaint;Z)I +HSPLandroid/text/StaticLayout;->out(Ljava/lang/CharSequence;IIIIIIIFF[Landroid/text/style/LineHeightSpan;[ILandroid/graphics/Paint$FontMetricsInt;ZIZLandroid/text/MeasuredParagraph;IZZZ[CILandroid/text/TextUtils$TruncateAt;FFLandroid/text/TextPaint;Z)I+]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString;,Landroid/text/SpannedString; HSPLandroid/text/StaticLayout;->packHyphenEdit(II)I HSPLandroid/text/StaticLayout;->unpackEndHyphenEdit(I)I HSPLandroid/text/StaticLayout;->unpackStartHyphenEdit(I)I HSPLandroid/text/TextDirectionHeuristics$FirstStrong;->checkRtl(Ljava/lang/CharSequence;II)I HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z -HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;II)Z +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;II)Z+]Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;]Ljava/lang/CharSequence;missing_types HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl([CII)Z HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->defaultIsRtl()Z HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;->defaultIsRtl()Z @@ -15256,26 +15104,21 @@ HSPLandroid/text/TextLine$DecorationInfo;->hasDecoration()Z HSPLandroid/text/TextLine;->()V HSPLandroid/text/TextLine;->adjustEndHyphenEdit(II)I HSPLandroid/text/TextLine;->adjustStartHyphenEdit(II)I -HSPLandroid/text/TextLine;->draw(Landroid/graphics/Canvas;FIII)V +HSPLandroid/text/TextLine;->draw(Landroid/graphics/Canvas;FIII)V+]Landroid/text/Layout$Directions;Landroid/text/Layout$Directions; HSPLandroid/text/TextLine;->drawRun(Landroid/graphics/Canvas;IIZFIIIZ)F HSPLandroid/text/TextLine;->drawStroke(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V HSPLandroid/text/TextLine;->drawTextRun(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V HSPLandroid/text/TextLine;->equalAttributes(Landroid/text/TextPaint;Landroid/text/TextPaint;)Z -HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V -HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/text/TextPaint;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V -HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V +HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/text/TextPaint;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/text/TextLine;->getOffsetBeforeAfter(IIIZIZ)I HSPLandroid/text/TextLine;->getOffsetToLeftRightOf(IZ)I -HSPLandroid/text/TextLine;->getRunAdvance(Landroid/text/TextPaint;IIIIZI[FI)F HSPLandroid/text/TextLine;->handleReplacement(Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F -HSPLandroid/text/TextLine;->handleRun(IIIZLandroid/graphics/Canvas;Landroid/text/TextShaper$GlyphsConsumer;FIIILandroid/graphics/Paint$FontMetricsInt;Z[FI)F -HSPLandroid/text/TextLine;->handleText(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;Landroid/text/TextShaper$GlyphsConsumer;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList;[FI)F HSPLandroid/text/TextLine;->isLineEndSpace(C)Z -HSPLandroid/text/TextLine;->measure(IZLandroid/graphics/Paint$FontMetricsInt;)F -HSPLandroid/text/TextLine;->metrics(Landroid/graphics/Paint$FontMetricsInt;)F HSPLandroid/text/TextLine;->obtain()Landroid/text/TextLine; -HSPLandroid/text/TextLine;->recycle(Landroid/text/TextLine;)Landroid/text/TextLine; -HSPLandroid/text/TextLine;->set(Landroid/text/TextPaint;Ljava/lang/CharSequence;IIILandroid/text/Layout$Directions;ZLandroid/text/Layout$TabStops;IIZ)V +HSPLandroid/text/TextLine;->recycle(Landroid/text/TextLine;)Landroid/text/TextLine;+]Landroid/text/SpanSet;Landroid/text/SpanSet; +HSPLandroid/text/TextLine;->set(Landroid/text/TextPaint;Ljava/lang/CharSequence;IIILandroid/text/Layout$Directions;ZLandroid/text/Layout$TabStops;IIZ)V+]Landroid/text/SpanSet;Landroid/text/SpanSet; HSPLandroid/text/TextLine;->updateMetrics(Landroid/graphics/Paint$FontMetricsInt;IIIII)V HSPLandroid/text/TextPaint;->()V HSPLandroid/text/TextPaint;->(I)V @@ -15292,7 +15135,6 @@ HSPLandroid/text/TextUtils$SimpleStringSplitter;->next()Ljava/lang/Object; HSPLandroid/text/TextUtils$SimpleStringSplitter;->next()Ljava/lang/String; HSPLandroid/text/TextUtils$SimpleStringSplitter;->setString(Ljava/lang/String;)V HSPLandroid/text/TextUtils$StringWithRemovedChars;->toString()Ljava/lang/String; -HSPLandroid/text/TextUtils$TruncateAt;->values()[Landroid/text/TextUtils$TruncateAt; HSPLandroid/text/TextUtils;->concat([Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->copySpansFrom(Landroid/text/Spanned;IILjava/lang/Class;Landroid/text/Spannable;I)V HSPLandroid/text/TextUtils;->couldAffectRtl(C)Z @@ -15303,23 +15145,23 @@ HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/Tex HSPLandroid/text/TextUtils;->emptyIfNull(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z+]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/text/TextUtils;->expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence; -HSPLandroid/text/TextUtils;->formatSimple(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Long;Ljava/lang/Long; +HSPLandroid/text/TextUtils;->formatSimple(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLandroid/text/TextUtils;->getCapsMode(Ljava/lang/CharSequence;II)I -HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V +HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Object;Ljava/lang/String;,Landroid/text/SpannableString;,Landroid/text/Layout$Ellipsizer;]Landroid/text/GetChars;Landroid/text/SpannableString;,Landroid/text/Layout$Ellipsizer; HSPLandroid/text/TextUtils;->getEllipsisString(Landroid/text/TextUtils$TruncateAt;)Ljava/lang/String; -HSPLandroid/text/TextUtils;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I +HSPLandroid/text/TextUtils;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Ljava/util/Optional;Ljava/util/Optional;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLandroid/text/TextUtils;->getTrimmedLength(Ljava/lang/CharSequence;)I HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;C)I -HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CI)I -HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CII)I+]Ljava/lang/Object;Ljava/lang/String; +HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CI)I+]Ljava/lang/Object;Landroid/text/SpannableString;]Ljava/lang/CharSequence;Landroid/text/SpannableString; +HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CII)I+]Ljava/lang/Object;Landroid/text/SpannedString;,Landroid/text/SpannableString;,Ljava/lang/String; HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I HSPLandroid/text/TextUtils;->isDigitsOnly(Ljava/lang/CharSequence;)Z -HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; +HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;missing_types HSPLandroid/text/TextUtils;->isGraphic(Ljava/lang/CharSequence;)Z -HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Iterable;Ljava/util/ArrayList; +HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Iterable;missing_types]Ljava/util/Iterator;missing_types HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String; -HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CI)I +HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CI)I+]Ljava/lang/Object;Landroid/text/SpannableString; HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CII)I HSPLandroid/text/TextUtils;->makeSafeForPresentation(Ljava/lang/String;IFI)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->nullIfEmpty(Ljava/lang/String;)Ljava/lang/String; @@ -15331,7 +15173,7 @@ HSPLandroid/text/TextUtils;->safeIntern(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/text/TextUtils;->split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; HSPLandroid/text/TextUtils;->stringOrSpannedString(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->substring(Ljava/lang/CharSequence;II)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/text/TextUtils;->toUpperCase(Ljava/util/Locale;Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->toUpperCase(Ljava/util/Locale;Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence;+]Landroid/icu/text/CaseMap$Upper;Landroid/icu/text/CaseMap$Upper;]Landroid/icu/text/Edits;Landroid/icu/text/Edits; HSPLandroid/text/TextUtils;->trimNoCopySpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->trimToParcelableSize(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->trimToSize(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence; @@ -15339,7 +15181,7 @@ HSPLandroid/text/TextUtils;->unpackRangeEndFromLong(J)I HSPLandroid/text/TextUtils;->unpackRangeStartFromLong(J)I HSPLandroid/text/TextUtils;->writeToParcel(Ljava/lang/CharSequence;Landroid/os/Parcel;I)V HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;J)Ljava/lang/CharSequence; -HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence; +HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/text/DateFormatSymbols;Landroid/icu/text/DateFormatSymbols;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence; HSPLandroid/text/format/DateFormat;->getBestDateTimePattern(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/text/format/DateFormat;->getCompatibleEnglishPattern(Landroid/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; @@ -15350,16 +15192,16 @@ HSPLandroid/text/format/DateFormat;->getTimeFormatString(Landroid/content/Contex HSPLandroid/text/format/DateFormat;->getYearString(II)Ljava/lang/String; HSPLandroid/text/format/DateFormat;->hasDesignator(Ljava/lang/CharSequence;C)Z HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;)Z -HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;I)Z -HSPLandroid/text/format/DateFormat;->is24HourLocale(Ljava/util/Locale;)Z -HSPLandroid/text/format/DateFormat;->zeroPad(II)Ljava/lang/String; +HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;I)Z+]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/text/format/DateFormat;->is24HourLocale(Ljava/util/Locale;)Z+]Ljava/util/Locale;Ljava/util/Locale; +HSPLandroid/text/format/DateFormat;->zeroPad(II)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/text/format/DateIntervalFormat;->()V HSPLandroid/text/format/DateIntervalFormat;->formatDateRange(JJILjava/lang/String;)Ljava/lang/String; -HSPLandroid/text/format/DateIntervalFormat;->formatDateRange(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJI)Ljava/lang/String; -HSPLandroid/text/format/DateIntervalFormat;->getFormatter(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;)Landroid/icu/text/DateIntervalFormat; -HSPLandroid/text/format/DateIntervalFormat;->isExactlyMidnight(Landroid/icu/util/Calendar;)Z -HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;JJI)Ljava/lang/String; -HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter; +HSPLandroid/text/format/DateIntervalFormat;->formatDateRange(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJI)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Landroid/icu/text/DateIntervalFormat;Landroid/icu/text/DateIntervalFormat; +HSPLandroid/text/format/DateIntervalFormat;->getFormatter(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;)Landroid/icu/text/DateIntervalFormat;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/LruCache;Landroid/util/LruCache; +HSPLandroid/text/format/DateIntervalFormat;->isExactlyMidnight(Landroid/icu/util/Calendar;)Z+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;JJI)Ljava/lang/String;+]Ljava/util/Formatter;Ljava/util/Formatter; +HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter;+]Ljava/util/Formatter;Ljava/util/Formatter;]Ljava/lang/Appendable;Ljava/lang/StringBuilder; HSPLandroid/text/format/DateUtils;->formatDateTime(Landroid/content/Context;JI)Ljava/lang/String; HSPLandroid/text/format/DateUtils;->formatElapsedTime(J)Ljava/lang/String; HSPLandroid/text/format/DateUtils;->formatElapsedTime(Ljava/lang/StringBuilder;J)Ljava/lang/String; @@ -15368,20 +15210,20 @@ HSPLandroid/text/format/DateUtils;->initFormatStrings()V HSPLandroid/text/format/DateUtils;->initFormatStringsLocked()V HSPLandroid/text/format/DateUtils;->isSameDate(JJ)Z HSPLandroid/text/format/DateUtils;->isToday(J)Z -HSPLandroid/text/format/DateUtilsBridge;->createIcuCalendar(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;J)Landroid/icu/util/Calendar; -HSPLandroid/text/format/DateUtilsBridge;->fallInSameMonth(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z +HSPLandroid/text/format/DateUtilsBridge;->createIcuCalendar(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;J)Landroid/icu/util/Calendar;+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/text/format/DateUtilsBridge;->fallInSameMonth(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/text/format/DateUtilsBridge;->fallInSameYear(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z -HSPLandroid/text/format/DateUtilsBridge;->fallOnDifferentDates(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z -HSPLandroid/text/format/DateUtilsBridge;->icuTimeZone(Ljava/util/TimeZone;)Landroid/icu/util/TimeZone; +HSPLandroid/text/format/DateUtilsBridge;->fallOnDifferentDates(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/text/format/DateUtilsBridge;->icuTimeZone(Ljava/util/TimeZone;)Landroid/icu/util/TimeZone;+]Landroid/icu/util/TimeZone;Landroid/icu/impl/OlsonTimeZone;]Ljava/util/TimeZone;Llibcore/util/ZoneInfo; HSPLandroid/text/format/DateUtilsBridge;->isThisYear(Landroid/icu/util/Calendar;)Z -HSPLandroid/text/format/DateUtilsBridge;->toSkeleton(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;I)Ljava/lang/String; +HSPLandroid/text/format/DateUtilsBridge;->toSkeleton(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/text/format/Formatter;->formatBytes(Landroid/content/res/Resources;JI)Landroid/text/format/Formatter$BytesResult; HSPLandroid/text/format/Formatter;->formatFileSize(Landroid/content/Context;J)Ljava/lang/String; HSPLandroid/text/format/Formatter;->formatFileSize(Landroid/content/Context;JI)Ljava/lang/String; HSPLandroid/text/format/RelativeDateTimeFormatter;->getFormatter(Landroid/icu/util/ULocale;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;)Landroid/icu/text/RelativeDateTimeFormatter; HSPLandroid/text/format/RelativeDateTimeFormatter;->getRelativeTimeSpanString(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJJILandroid/icu/text/DisplayContext;)Ljava/lang/String; HSPLandroid/text/format/RelativeDateTimeFormatter;->getRelativeTimeSpanString(Ljava/util/Locale;Ljava/util/TimeZone;JJJILandroid/icu/text/DisplayContext;)Ljava/lang/String; -HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsFromTime(Landroid/text/format/Time;)V +HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsFromTime(Landroid/text/format/Time;)V+]Lcom/android/i18n/timezone/WallTime;Lcom/android/i18n/timezone/WallTime; HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsToTime(Landroid/text/format/Time;)V HSPLandroid/text/format/Time$TimeCalculator;->lookupZoneInfoData(Ljava/lang/String;)Lcom/android/i18n/timezone/ZoneInfoData; HSPLandroid/text/format/Time$TimeCalculator;->setTimeInMillis(J)V @@ -15464,7 +15306,7 @@ HSPLandroid/text/style/ClickableSpan;->updateDrawState(Landroid/text/TextPaint;) HSPLandroid/text/style/DynamicDrawableSpan;->(I)V HSPLandroid/text/style/ForegroundColorSpan;->(I)V HSPLandroid/text/style/ForegroundColorSpan;->getSpanTypeIdInternal()I -HSPLandroid/text/style/ForegroundColorSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/ForegroundColorSpan;->updateDrawState(Landroid/text/TextPaint;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/text/style/ForegroundColorSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V HSPLandroid/text/style/ImageSpan;->(Landroid/graphics/drawable/Drawable;I)V HSPLandroid/text/style/ImageSpan;->getDrawable()Landroid/graphics/drawable/Drawable; @@ -15485,7 +15327,7 @@ HSPLandroid/text/style/StyleSpan;->updateDrawState(Landroid/text/TextPaint;)V HSPLandroid/text/style/StyleSpan;->updateMeasureState(Landroid/text/TextPaint;)V HSPLandroid/text/style/StyleSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V HSPLandroid/text/style/TextAppearanceSpan;->(Landroid/content/Context;I)V -HSPLandroid/text/style/TextAppearanceSpan;->(Landroid/content/Context;II)V +HSPLandroid/text/style/TextAppearanceSpan;->(Landroid/content/Context;II)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/text/style/TextAppearanceSpan;->(Landroid/os/Parcel;)V HSPLandroid/text/style/TextAppearanceSpan;->(Ljava/lang/String;IILandroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;)V HSPLandroid/text/style/TextAppearanceSpan;->getFamily()Ljava/lang/String; @@ -15530,13 +15372,13 @@ HSPLandroid/transition/Transition$2;->onAnimationEnd(Landroid/animation/Animator HSPLandroid/transition/Transition$2;->onAnimationStart(Landroid/animation/Animator;)V HSPLandroid/transition/Transition$3;->onAnimationEnd(Landroid/animation/Animator;)V HSPLandroid/transition/Transition;->()V -HSPLandroid/transition/Transition;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/Transition;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/transition/Transition;Landroid/transition/TransitionSet;,Landroid/transition/ChangeTransform;,Landroid/transition/ChangeBounds;]Ljava/lang/Object;megamorphic_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/transition/Transition;->addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition; HSPLandroid/transition/Transition;->addTarget(Landroid/view/View;)Landroid/transition/Transition; HSPLandroid/transition/Transition;->addUnmatched(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V HSPLandroid/transition/Transition;->addViewValues(Landroid/transition/TransitionValuesMaps;Landroid/view/View;Landroid/transition/TransitionValues;)V HSPLandroid/transition/Transition;->animate(Landroid/animation/Animator;)V -HSPLandroid/transition/Transition;->captureHierarchy(Landroid/view/View;Z)V+]Landroid/transition/Transition;Landroid/transition/TransitionSet;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/transition/Transition;->captureHierarchy(Landroid/view/View;Z)V HSPLandroid/transition/Transition;->capturePropagationValues(Landroid/transition/TransitionValues;)V HSPLandroid/transition/Transition;->captureValues(Landroid/view/ViewGroup;Z)V HSPLandroid/transition/Transition;->clearValues(Z)V @@ -15547,7 +15389,7 @@ HSPLandroid/transition/Transition;->getDuration()J HSPLandroid/transition/Transition;->getInterpolator()Landroid/animation/TimeInterpolator; HSPLandroid/transition/Transition;->getName()Ljava/lang/String; HSPLandroid/transition/Transition;->getStartDelay()J -HSPLandroid/transition/Transition;->isValidTarget(Landroid/view/View;)Z+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/transition/Transition;->isValidTarget(Landroid/view/View;)Z HSPLandroid/transition/Transition;->matchIds(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseArray;Landroid/util/SparseArray;)V HSPLandroid/transition/Transition;->matchInstances(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V HSPLandroid/transition/Transition;->matchItemIds(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;)V @@ -15561,7 +15403,7 @@ HSPLandroid/transition/Transition;->setEpicenterCallback(Landroid/transition/Tra HSPLandroid/transition/Transition;->start()V HSPLandroid/transition/TransitionInflater;->(Landroid/content/Context;)V HSPLandroid/transition/TransitionInflater;->createCustom(Landroid/util/AttributeSet;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition;+]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/transition/TransitionSet;Landroid/transition/TransitionSet; HSPLandroid/transition/TransitionInflater;->from(Landroid/content/Context;)Landroid/transition/TransitionInflater; HSPLandroid/transition/TransitionInflater;->inflateTransition(I)Landroid/transition/Transition; HSPLandroid/transition/TransitionListenerAdapter;->()V @@ -15632,13 +15474,12 @@ HSPLandroid/util/ArrayMap;->containsValue(Ljava/lang/Object;)Z HSPLandroid/util/ArrayMap;->ensureCapacity(I)V HSPLandroid/util/ArrayMap;->entrySet()Ljava/util/Set; HSPLandroid/util/ArrayMap;->equals(Ljava/lang/Object;)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Long;]Ljava/util/Map;Landroid/util/ArrayMap; -HSPLandroid/util/ArrayMap;->forEach(Ljava/util/function/BiConsumer;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/BiConsumer;missing_types HSPLandroid/util/ArrayMap;->freeArrays([I[Ljava/lang/Object;I)V HSPLandroid/util/ArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/util/ArrayMap;->getCollection()Landroid/util/MapCollections; -HSPLandroid/util/ArrayMap;->hashCode()I -HSPLandroid/util/ArrayMap;->indexOf(Ljava/lang/Object;I)I+]Ljava/lang/Object;missing_types -HSPLandroid/util/ArrayMap;->indexOfKey(Ljava/lang/Object;)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;missing_types +HSPLandroid/util/ArrayMap;->hashCode()I+]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Long; +HSPLandroid/util/ArrayMap;->indexOf(Ljava/lang/Object;I)I+]Ljava/lang/Object;megamorphic_types +HSPLandroid/util/ArrayMap;->indexOfKey(Ljava/lang/Object;)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;megamorphic_types HSPLandroid/util/ArrayMap;->indexOfNull()I HSPLandroid/util/ArrayMap;->indexOfValue(Ljava/lang/Object;)I HSPLandroid/util/ArrayMap;->isEmpty()Z @@ -15646,13 +15487,13 @@ HSPLandroid/util/ArrayMap;->keyAt(I)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->keySet()Ljava/util/Set;+]Landroid/util/MapCollections;Landroid/util/ArrayMap$1; HSPLandroid/util/ArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;missing_types HSPLandroid/util/ArrayMap;->putAll(Landroid/util/ArrayMap;)V -HSPLandroid/util/ArrayMap;->putAll(Ljava/util/Map;)V +HSPLandroid/util/ArrayMap;->putAll(Ljava/util/Map;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$Node;]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types HSPLandroid/util/ArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->removeAt(I)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->retainAll(Ljava/util/Collection;)Z HSPLandroid/util/ArrayMap;->setValueAt(ILjava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->size()I -HSPLandroid/util/ArrayMap;->toString()Ljava/lang/String; +HSPLandroid/util/ArrayMap;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/util/ArrayMap;->validate()V HSPLandroid/util/ArrayMap;->valueAt(I)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->values()Ljava/util/Collection; @@ -15666,7 +15507,7 @@ HSPLandroid/util/ArraySet;->(IZ)V HSPLandroid/util/ArraySet;->(Landroid/util/ArraySet;)V HSPLandroid/util/ArraySet;->(Ljava/util/Collection;)V HSPLandroid/util/ArraySet;->([Ljava/lang/Object;)V -HSPLandroid/util/ArraySet;->add(Ljava/lang/Object;)Z+]Ljava/lang/Object;megamorphic_types +HSPLandroid/util/ArraySet;->add(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/app/PendingIntent; HSPLandroid/util/ArraySet;->addAll(Landroid/util/ArraySet;)V HSPLandroid/util/ArraySet;->addAll(Ljava/util/Collection;)Z HSPLandroid/util/ArraySet;->allocArrays(I)V @@ -15692,7 +15533,7 @@ HSPLandroid/util/ArraySet;->shouldShrink()Z HSPLandroid/util/ArraySet;->size()I HSPLandroid/util/ArraySet;->toArray()[Ljava/lang/Object; HSPLandroid/util/ArraySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; -HSPLandroid/util/ArraySet;->toString()Ljava/lang/String; +HSPLandroid/util/ArraySet;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArraySet;Landroid/util/ArraySet; HSPLandroid/util/ArraySet;->valueAt(I)Ljava/lang/Object; HSPLandroid/util/ArraySet;->valueAtUnchecked(I)Ljava/lang/Object; HSPLandroid/util/AtomicFile;->(Ljava/io/File;)V @@ -15709,11 +15550,11 @@ HSPLandroid/util/Base64$Decoder;->process([BIIZ)Z HSPLandroid/util/Base64$Encoder;->(I[B)V HSPLandroid/util/Base64$Encoder;->maxOutputSize(I)I HSPLandroid/util/Base64$Encoder;->process([BIIZ)Z -HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B +HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/util/Base64;->decode([BI)[B HSPLandroid/util/Base64;->decode([BIII)[B+]Landroid/util/Base64$Decoder;Landroid/util/Base64$Decoder; HSPLandroid/util/Base64;->encode([BI)[B -HSPLandroid/util/Base64;->encode([BIII)[B +HSPLandroid/util/Base64;->encode([BIII)[B+]Landroid/util/Base64$Encoder;Landroid/util/Base64$Encoder; HSPLandroid/util/Base64;->encodeToString([BI)Ljava/lang/String; HSPLandroid/util/Base64;->encodeToString([BIII)Ljava/lang/String; HSPLandroid/util/Base64OutputStream;->(Ljava/io/OutputStream;I)V @@ -15736,9 +15577,9 @@ HSPLandroid/util/DisplayMetrics;->setTo(Landroid/util/DisplayMetrics;)V HSPLandroid/util/DisplayMetrics;->setToDefaults()V HSPLandroid/util/DisplayUtils;->getDisplayUniqueIdConfigIndex(Landroid/content/res/Resources;Ljava/lang/String;)I HSPLandroid/util/EventLog$Event;->([B)V -HSPLandroid/util/EventLog$Event;->decodeObject()Ljava/lang/Object; -HSPLandroid/util/EventLog$Event;->getData()Ljava/lang/Object; -HSPLandroid/util/EventLog$Event;->getHeaderSize()I +HSPLandroid/util/EventLog$Event;->decodeObject()Ljava/lang/Object;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLandroid/util/EventLog$Event;->getData()Ljava/lang/Object;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLandroid/util/EventLog$Event;->getHeaderSize()I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLandroid/util/EventLog$Event;->getUid()I HSPLandroid/util/EventLog;->getTagCode(Ljava/lang/String;)I HSPLandroid/util/EventLog;->readTagsFile()V @@ -15821,7 +15662,7 @@ HSPLandroid/util/JsonWriter;->flush()V HSPLandroid/util/JsonWriter;->name(Ljava/lang/String;)Landroid/util/JsonWriter; HSPLandroid/util/JsonWriter;->newline()V HSPLandroid/util/JsonWriter;->open(Landroid/util/JsonScope;Ljava/lang/String;)Landroid/util/JsonWriter; -HSPLandroid/util/JsonWriter;->peek()Landroid/util/JsonScope;+]Ljava/util/List;Ljava/util/ArrayList; +HSPLandroid/util/JsonWriter;->peek()Landroid/util/JsonScope; HSPLandroid/util/JsonWriter;->replaceTop(Landroid/util/JsonScope;)V HSPLandroid/util/JsonWriter;->string(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/Writer;Ljava/io/StringWriter; HSPLandroid/util/JsonWriter;->value(J)Landroid/util/JsonWriter; @@ -15851,7 +15692,7 @@ HSPLandroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I HSPLandroid/util/Log;->logToRadioBuffer(ILjava/lang/String;Ljava/lang/String;)I HSPLandroid/util/Log;->println(ILjava/lang/String;Ljava/lang/String;)I -HSPLandroid/util/Log;->printlns(IILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I +HSPLandroid/util/Log;->printlns(IILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/Log$ImmediateLogWriter;Landroid/util/Log$ImmediateLogWriter;]Lcom/android/internal/util/LineBreakBufferedWriter;Lcom/android/internal/util/LineBreakBufferedWriter;]Ljava/lang/Throwable;missing_types HSPLandroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I HSPLandroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I @@ -15914,7 +15755,7 @@ HSPLandroid/util/MapCollections$ArrayIterator;->next()Ljava/lang/Object;+]Landro HSPLandroid/util/MapCollections$ArrayIterator;->remove()V HSPLandroid/util/MapCollections$EntrySet;->(Landroid/util/MapCollections;)V HSPLandroid/util/MapCollections$EntrySet;->iterator()Ljava/util/Iterator; -HSPLandroid/util/MapCollections$EntrySet;->size()I +HSPLandroid/util/MapCollections$EntrySet;->size()I+]Landroid/util/MapCollections;Landroid/util/ArrayMap$1; HSPLandroid/util/MapCollections$KeySet;->(Landroid/util/MapCollections;)V HSPLandroid/util/MapCollections$KeySet;->contains(Ljava/lang/Object;)Z HSPLandroid/util/MapCollections$KeySet;->containsAll(Ljava/util/Collection;)Z @@ -15937,7 +15778,7 @@ HSPLandroid/util/MapCollections;->getKeySet()Ljava/util/Set; HSPLandroid/util/MapCollections;->getValues()Ljava/util/Collection; HSPLandroid/util/MapCollections;->retainAllHelper(Ljava/util/Map;Ljava/util/Collection;)Z HSPLandroid/util/MapCollections;->toArrayHelper(I)[Ljava/lang/Object; -HSPLandroid/util/MapCollections;->toArrayHelper([Ljava/lang/Object;I)[Ljava/lang/Object; +HSPLandroid/util/MapCollections;->toArrayHelper([Ljava/lang/Object;I)[Ljava/lang/Object;+]Ljava/lang/Object;[Ljava/lang/String;]Landroid/util/MapCollections;Landroid/util/ArrayMap$1;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/util/MathUtils;->addOrThrow(II)I HSPLandroid/util/MathUtils;->constrain(FFF)F HSPLandroid/util/MathUtils;->constrain(III)I @@ -15951,8 +15792,8 @@ HSPLandroid/util/MemoryIntArray$1;->createFromParcel(Landroid/os/Parcel;)Ljava/l HSPLandroid/util/MemoryIntArray;->(Landroid/os/Parcel;)V HSPLandroid/util/MemoryIntArray;->(Landroid/os/Parcel;Landroid/util/MemoryIntArray-IA;)V HSPLandroid/util/MemoryIntArray;->close()V -HSPLandroid/util/MemoryIntArray;->enforceNotClosed()V -HSPLandroid/util/MemoryIntArray;->enforceValidIndex(I)V +HSPLandroid/util/MemoryIntArray;->enforceNotClosed()V+]Landroid/util/MemoryIntArray;Landroid/util/MemoryIntArray; +HSPLandroid/util/MemoryIntArray;->enforceValidIndex(I)V+]Landroid/util/MemoryIntArray;Landroid/util/MemoryIntArray; HSPLandroid/util/MemoryIntArray;->finalize()V HSPLandroid/util/MemoryIntArray;->get(I)I HSPLandroid/util/MemoryIntArray;->isClosed()Z @@ -15973,7 +15814,7 @@ HSPLandroid/util/MutableBoolean;->(Z)V HSPLandroid/util/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair; HSPLandroid/util/Pair;->equals(Ljava/lang/Object;)Z -HSPLandroid/util/Pair;->hashCode()I +HSPLandroid/util/Pair;->hashCode()I+]Ljava/lang/Object;missing_types HSPLandroid/util/Pair;->toString()Ljava/lang/String; HSPLandroid/util/PathParser$PathData;->(Landroid/util/PathParser$PathData;)V HSPLandroid/util/PathParser$PathData;->(Ljava/lang/String;)V @@ -16032,7 +15873,7 @@ HSPLandroid/util/SparseArray;->append(ILjava/lang/Object;)V+]Landroid/util/Spars HSPLandroid/util/SparseArray;->clear()V HSPLandroid/util/SparseArray;->clone()Landroid/util/SparseArray; HSPLandroid/util/SparseArray;->contains(I)Z -HSPLandroid/util/SparseArray;->contentEquals(Landroid/util/SparseArray;)Z +HSPLandroid/util/SparseArray;->contentEquals(Landroid/util/SparseArray;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/util/SparseArray;->delete(I)V HSPLandroid/util/SparseArray;->gc()V HSPLandroid/util/SparseArray;->get(I)Ljava/lang/Object;+]Landroid/util/SparseArray;missing_types @@ -16041,7 +15882,7 @@ HSPLandroid/util/SparseArray;->indexOfKey(I)I HSPLandroid/util/SparseArray;->indexOfValue(Ljava/lang/Object;)I HSPLandroid/util/SparseArray;->keyAt(I)I HSPLandroid/util/SparseArray;->put(ILjava/lang/Object;)V -HSPLandroid/util/SparseArray;->remove(I)V +HSPLandroid/util/SparseArray;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/util/SparseArray;->removeAt(I)V HSPLandroid/util/SparseArray;->removeReturnOld(I)Ljava/lang/Object; HSPLandroid/util/SparseArray;->setValueAt(ILjava/lang/Object;)V @@ -16057,7 +15898,6 @@ HSPLandroid/util/SparseBooleanArray;->append(IZ)V HSPLandroid/util/SparseBooleanArray;->clear()V HSPLandroid/util/SparseBooleanArray;->clone()Landroid/util/SparseBooleanArray; HSPLandroid/util/SparseBooleanArray;->delete(I)V -HSPLandroid/util/SparseBooleanArray;->equals(Ljava/lang/Object;)Z HSPLandroid/util/SparseBooleanArray;->get(I)Z HSPLandroid/util/SparseBooleanArray;->get(IZ)Z HSPLandroid/util/SparseBooleanArray;->indexOfKey(I)I @@ -16223,8 +16063,8 @@ HSPLandroid/view/Choreographer$CallbackQueue;->extractDueCallbacksLocked(J)Landr HSPLandroid/view/Choreographer$CallbackQueue;->removeCallbacksLocked(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/view/Choreographer$CallbackRecord;->()V HSPLandroid/view/Choreographer$CallbackRecord;->(Landroid/view/Choreographer$CallbackRecord-IA;)V -HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V -HSPLandroid/view/Choreographer$CallbackRecord;->run(Landroid/view/Choreographer$FrameData;)V +HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V+]Landroid/view/Choreographer$FrameCallback;missing_types]Ljava/lang/Runnable;missing_types +HSPLandroid/view/Choreographer$CallbackRecord;->run(Landroid/view/Choreographer$FrameData;)V+]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord; HSPLandroid/view/Choreographer$FrameData;->-$$Nest$fgetmFrameTimeNanos(Landroid/view/Choreographer$FrameData;)J HSPLandroid/view/Choreographer$FrameData;->()V HSPLandroid/view/Choreographer$FrameData;->allocateFrameTimelines(I)V @@ -16237,8 +16077,8 @@ HSPLandroid/view/Choreographer$FrameData;->update(JI)V HSPLandroid/view/Choreographer$FrameData;->update(JLandroid/view/DisplayEventReceiver$VsyncEventData;)Landroid/view/Choreographer$FrameTimeline;+]Landroid/view/Choreographer$FrameTimeline;Landroid/view/Choreographer$FrameTimeline; HSPLandroid/view/Choreographer$FrameData;->update(JLandroid/view/DisplayEventReceiver;J)Landroid/view/Choreographer$FrameTimeline;+]Landroid/view/DisplayEventReceiver;Landroid/view/Choreographer$FrameDisplayEventReceiver;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData; HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->(Landroid/view/Choreographer;Landroid/os/Looper;IJ)V -HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJILandroid/view/DisplayEventReceiver$VsyncEventData;)V -HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->run()V +HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData; +HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->run()V+]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/Choreographer$FrameHandler;->(Landroid/view/Choreographer;Landroid/os/Looper;)V HSPLandroid/view/Choreographer$FrameHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/view/Choreographer$FrameTimeline;->-$$Nest$fgetmDeadlineNanos(Landroid/view/Choreographer$FrameTimeline;)J @@ -16254,8 +16094,8 @@ HSPLandroid/view/Choreographer;->-$$Nest$sfputmMainInstance(Landroid/view/Choreo HSPLandroid/view/Choreographer;->(Landroid/os/Looper;I)V HSPLandroid/view/Choreographer;->(Landroid/os/Looper;IJ)V HSPLandroid/view/Choreographer;->(Landroid/os/Looper;ILandroid/view/Choreographer-IA;)V -HSPLandroid/view/Choreographer;->doCallbacks(IJ)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord; -HSPLandroid/view/Choreographer;->doFrame(JILandroid/view/DisplayEventReceiver$VsyncEventData;)V +HSPLandroid/view/Choreographer;->doCallbacks(IJ)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData; +HSPLandroid/view/Choreographer;->doFrame(JILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/graphics/FrameInfo;Landroid/graphics/FrameInfo;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData; HSPLandroid/view/Choreographer;->doScheduleCallback(I)V HSPLandroid/view/Choreographer;->doScheduleVsync()V HSPLandroid/view/Choreographer;->getFrameIntervalNanos()J @@ -16268,17 +16108,17 @@ HSPLandroid/view/Choreographer;->getSfInstance()Landroid/view/Choreographer; HSPLandroid/view/Choreographer;->getVsyncId()J HSPLandroid/view/Choreographer;->isRunningOnLooperThreadLocked()Z HSPLandroid/view/Choreographer;->obtainCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord; -HSPLandroid/view/Choreographer;->postCallback(ILjava/lang/Runnable;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer;->postCallback(ILjava/lang/Runnable;Ljava/lang/Object;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/Choreographer;->postCallbackDelayed(ILjava/lang/Runnable;Ljava/lang/Object;J)V -HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V +HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler; HSPLandroid/view/Choreographer;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V HSPLandroid/view/Choreographer;->postFrameCallbackDelayed(Landroid/view/Choreographer$FrameCallback;J)V HSPLandroid/view/Choreographer;->recycleCallbackLocked(Landroid/view/Choreographer$CallbackRecord;)V HSPLandroid/view/Choreographer;->removeCallbacks(ILjava/lang/Runnable;Ljava/lang/Object;)V -HSPLandroid/view/Choreographer;->removeCallbacksInternal(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer;->removeCallbacksInternal(ILjava/lang/Object;Ljava/lang/Object;)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler; HSPLandroid/view/Choreographer;->removeFrameCallback(Landroid/view/Choreographer$FrameCallback;)V -HSPLandroid/view/Choreographer;->scheduleFrameLocked(J)V -HSPLandroid/view/Choreographer;->scheduleVsyncLocked()V +HSPLandroid/view/Choreographer;->scheduleFrameLocked(J)V+]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler; +HSPLandroid/view/Choreographer;->scheduleVsyncLocked()V+]Landroid/view/Choreographer$FrameDisplayEventReceiver;Landroid/view/Choreographer$FrameDisplayEventReceiver; HSPLandroid/view/Choreographer;->setFPSDivisor(I)V HSPLandroid/view/ContextThemeWrapper;->()V HSPLandroid/view/ContextThemeWrapper;->(Landroid/content/Context;I)V @@ -16288,18 +16128,18 @@ HSPLandroid/view/ContextThemeWrapper;->getAssets()Landroid/content/res/AssetMana HSPLandroid/view/ContextThemeWrapper;->getOverrideConfiguration()Landroid/content/res/Configuration; HSPLandroid/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources; HSPLandroid/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources; -HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme; +HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/content/Context;missing_types]Landroid/view/ContextThemeWrapper;missing_types +HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme;+]Landroid/view/ContextThemeWrapper;Landroid/view/ContextThemeWrapper; HSPLandroid/view/ContextThemeWrapper;->initializeTheme()V HSPLandroid/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V HSPLandroid/view/ContextThemeWrapper;->setTheme(I)V HSPLandroid/view/CrossWindowBlurListeners;->()V HSPLandroid/view/Display$HdrCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$HdrCapabilities; HSPLandroid/view/Display$HdrCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/view/Display$HdrCapabilities;->(Landroid/os/Parcel;)V+]Landroid/view/Display$HdrCapabilities;Landroid/view/Display$HdrCapabilities; +HSPLandroid/view/Display$HdrCapabilities;->(Landroid/os/Parcel;)V HSPLandroid/view/Display$HdrCapabilities;->(Landroid/os/Parcel;Landroid/view/Display$HdrCapabilities-IA;)V HSPLandroid/view/Display$HdrCapabilities;->equals(Ljava/lang/Object;)Z -HSPLandroid/view/Display$HdrCapabilities;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/view/Display$HdrCapabilities;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/view/Display$HdrCapabilities;->toString()Ljava/lang/String; HSPLandroid/view/Display$HdrCapabilities;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/Display$Mode$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$Mode; @@ -16320,7 +16160,7 @@ HSPLandroid/view/Display;->(Landroid/hardware/display/DisplayManagerGlobal HSPLandroid/view/Display;->(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/view/DisplayAdjustments;Landroid/content/res/Resources;)V HSPLandroid/view/Display;->getAppVsyncOffsetNanos()J HSPLandroid/view/Display;->getCutout()Landroid/view/DisplayCutout; -HSPLandroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; +HSPLandroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments; HSPLandroid/view/Display;->getDisplayId()I HSPLandroid/view/Display;->getDisplayInfo(Landroid/view/DisplayInfo;)Z HSPLandroid/view/Display;->getFlags()I @@ -16344,7 +16184,6 @@ HSPLandroid/view/Display;->getSupportedModes()[Landroid/view/Display$Mode; HSPLandroid/view/Display;->getSupportedWideColorGamut()[Landroid/graphics/ColorSpace; HSPLandroid/view/Display;->getWidth()I HSPLandroid/view/Display;->hasAccess(IIII)Z -HSPLandroid/view/Display;->isDozeState(I)Z HSPLandroid/view/Display;->isValid()Z HSPLandroid/view/Display;->isWideColorGamut()Z HSPLandroid/view/Display;->shouldReportMaxBounds()Z @@ -16411,13 +16250,13 @@ HSPLandroid/view/DisplayEventReceiver$VsyncEventData;->copyFrom(Landroid/view/Di HSPLandroid/view/DisplayEventReceiver$VsyncEventData;->preferredFrameTimeline()Landroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline; HSPLandroid/view/DisplayEventReceiver;->(Landroid/os/Looper;II)V HSPLandroid/view/DisplayEventReceiver;->(Landroid/os/Looper;IIJ)V -HSPLandroid/view/DisplayEventReceiver;->dispatchVsync(JJI)V +HSPLandroid/view/DisplayEventReceiver;->dispatchVsync(JJI)V+]Landroid/view/DisplayEventReceiver;Landroid/view/Choreographer$FrameDisplayEventReceiver; HSPLandroid/view/DisplayEventReceiver;->getLatestVsyncEventData()Landroid/view/DisplayEventReceiver$VsyncEventData; HSPLandroid/view/DisplayEventReceiver;->scheduleVsync()V HSPLandroid/view/DisplayInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayInfo; HSPLandroid/view/DisplayInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/DisplayInfo;->()V -HSPLandroid/view/DisplayInfo;->(Landroid/os/Parcel;)V+]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo; +HSPLandroid/view/DisplayInfo;->(Landroid/os/Parcel;)V HSPLandroid/view/DisplayInfo;->(Landroid/os/Parcel;Landroid/view/DisplayInfo-IA;)V HSPLandroid/view/DisplayInfo;->copyFrom(Landroid/view/DisplayInfo;)V HSPLandroid/view/DisplayInfo;->equals(Landroid/view/DisplayInfo;)Z @@ -16427,12 +16266,12 @@ HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landro HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landroid/view/DisplayAdjustments;)V HSPLandroid/view/DisplayInfo;->getLogicalMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V HSPLandroid/view/DisplayInfo;->getMaxBoundsMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V -HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V+]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; +HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V+]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/DisplayInfo;->getMode()Landroid/view/Display$Mode; HSPLandroid/view/DisplayInfo;->getRefreshRate()F HSPLandroid/view/DisplayInfo;->hasAccess(I)Z HSPLandroid/view/DisplayInfo;->isWideColorGamut()Z -HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/view/Display$Mode$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/DisplayInfo;->toString()Ljava/lang/String; HSPLandroid/view/DisplayInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/DisplayShape$1;->()V @@ -16482,7 +16321,7 @@ HSPLandroid/view/GestureDetector;->cancel()V HSPLandroid/view/GestureDetector;->cancelTaps()V HSPLandroid/view/GestureDetector;->init(Landroid/content/Context;)V HSPLandroid/view/GestureDetector;->isConsideredDoubleTap(Landroid/view/MotionEvent;Landroid/view/MotionEvent;Landroid/view/MotionEvent;)Z -HSPLandroid/view/GestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/GestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/VelocityTracker;Landroid/view/VelocityTracker;]Landroid/os/Handler;Landroid/view/GestureDetector$GestureHandler;]Landroid/view/MotionEvent;Landroid/view/MotionEvent; HSPLandroid/view/GestureDetector;->recordGestureClassification(I)V HSPLandroid/view/GestureDetector;->setContextClickListener(Landroid/view/GestureDetector$OnContextClickListener;)V HSPLandroid/view/GestureDetector;->setIsLongpressEnabled(Z)V @@ -16497,7 +16336,7 @@ HSPLandroid/view/Gravity;->isVertical(I)Z HSPLandroid/view/HandlerActionQueue$HandlerAction;->(Ljava/lang/Runnable;J)V HSPLandroid/view/HandlerActionQueue$HandlerAction;->matches(Ljava/lang/Runnable;)Z HSPLandroid/view/HandlerActionQueue;->()V -HSPLandroid/view/HandlerActionQueue;->executeActions(Landroid/os/Handler;)V +HSPLandroid/view/HandlerActionQueue;->executeActions(Landroid/os/Handler;)V+]Landroid/os/Handler;Landroid/view/ViewRootImpl$ViewRootHandler; HSPLandroid/view/HandlerActionQueue;->post(Ljava/lang/Runnable;)V HSPLandroid/view/HandlerActionQueue;->postDelayed(Ljava/lang/Runnable;J)V HSPLandroid/view/HandlerActionQueue;->removeCallbacks(Ljava/lang/Runnable;)V @@ -16557,7 +16396,6 @@ HSPLandroid/view/IWindowSession$Stub$Proxy;->reportSystemGestureExclusionChanged HSPLandroid/view/IWindowSession$Stub$Proxy;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V HSPLandroid/view/IWindowSession$Stub$Proxy;->setOnBackInvokedCallbackInfo(Landroid/view/IWindow;Landroid/window/OnBackInvokedCallbackInfo;)V HSPLandroid/view/IWindowSession$Stub$Proxy;->setWallpaperZoomOut(Landroid/os/IBinder;F)V -HSPLandroid/view/IWindowSession$Stub$Proxy;->updateRequestedVisibleTypes(Landroid/view/IWindow;I)V HSPLandroid/view/IWindowSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowSession; HSPLandroid/view/IWindowSessionCallback$Stub;->()V HSPLandroid/view/IWindowSessionCallback$Stub;->asBinder()Landroid/os/IBinder; @@ -16569,7 +16407,7 @@ HSPLandroid/view/ImeFocusController;->onPostWindowFocus(Landroid/view/View;ZLand HSPLandroid/view/ImeFocusController;->onPreWindowFocus(ZLandroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/ImeFocusController;->onProcessImeInputStage(Ljava/lang/Object;Landroid/view/InputEvent;Landroid/view/WindowManager$LayoutParams;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;)I HSPLandroid/view/ImeFocusController;->onTraversal(ZLandroid/view/WindowManager$LayoutParams;)V -HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V +HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V+]Landroid/view/ImeFocusController$InputMethodManagerDelegate;Landroid/view/inputmethod/InputMethodManager$DelegateImpl; HSPLandroid/view/ImeFocusController;->onViewFocusChanged(Landroid/view/View;Z)V HSPLandroid/view/ImeFocusController;->onWindowDismissed()V HSPLandroid/view/ImeInsetsSourceConsumer;->(ILandroid/view/InsetsState;Ljava/util/function/Supplier;Landroid/view/InsetsController;)V @@ -16592,7 +16430,7 @@ HSPLandroid/view/InputChannel;->setNativeInputChannel(J)V HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputDevice; HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/InputDevice$MotionRange;->(IIFFFFF)V -HSPLandroid/view/InputDevice;->(Landroid/os/Parcel;)V +HSPLandroid/view/InputDevice;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/view/KeyCharacterMap$1;,Landroid/hardware/input/HostUsiVersion$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/InputDevice;->addMotionRange(IIFFFFF)V HSPLandroid/view/InputDevice;->getDevice(I)Landroid/view/InputDevice; HSPLandroid/view/InputDevice;->getDeviceIds()[I @@ -16602,7 +16440,7 @@ HSPLandroid/view/InputDevice;->isVirtual()Z HSPLandroid/view/InputEvent;->()V HSPLandroid/view/InputEvent;->getSequenceNumber()I HSPLandroid/view/InputEvent;->isFromSource(I)Z -HSPLandroid/view/InputEvent;->prepareForReuse()V +HSPLandroid/view/InputEvent;->prepareForReuse()V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; HSPLandroid/view/InputEvent;->recycle()V HSPLandroid/view/InputEvent;->recycleIfNeededAfterDispatch()V HSPLandroid/view/InputEventAssigner;->()V @@ -16633,7 +16471,7 @@ HSPLandroid/view/InputMonitor;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/InsetsAnimationControlImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V HSPLandroid/view/InsetsAnimationControlImpl;->(Landroid/util/SparseArray;Landroid/graphics/Rect;Landroid/view/InsetsState;Landroid/view/WindowInsetsAnimationControlListener;ILandroid/view/InsetsAnimationControlCallbacks;JLandroid/view/animation/Interpolator;IILandroid/content/res/CompatibilityInfo$Translator;Landroid/view/inputmethod/ImeTracker$Token;)V HSPLandroid/view/InsetsAnimationControlImpl;->addTranslationToMatrix(IILandroid/graphics/Matrix;Landroid/graphics/Rect;)V -HSPLandroid/view/InsetsAnimationControlImpl;->applyChangeInsets(Landroid/view/InsetsState;)Z+]Landroid/view/InsetsAnimationControlCallbacks;Landroid/view/InsetsAnimationThreadControlRunner$1;]Landroid/view/WindowInsetsAnimation;Landroid/view/WindowInsetsAnimation;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/InsetsAnimationControlImpl;->applyChangeInsets(Landroid/view/InsetsState;)Z HSPLandroid/view/InsetsAnimationControlImpl;->buildSideControlsMap(Landroid/util/SparseSetArray;Landroid/util/SparseArray;)V HSPLandroid/view/InsetsAnimationControlImpl;->calculateInsets(Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/util/SparseArray;ZLandroid/util/SparseIntArray;)Landroid/graphics/Insets; HSPLandroid/view/InsetsAnimationControlImpl;->calculateInsets(Landroid/view/InsetsState;Landroid/util/SparseArray;Z)Landroid/graphics/Insets; @@ -16648,17 +16486,14 @@ HSPLandroid/view/InsetsAnimationControlImpl;->getCurrentAlpha()F HSPLandroid/view/InsetsAnimationControlImpl;->getHiddenStateInsets()Landroid/graphics/Insets; HSPLandroid/view/InsetsAnimationControlImpl;->getInsetsFromState(Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/util/SparseIntArray;)Landroid/graphics/Insets; HSPLandroid/view/InsetsAnimationControlImpl;->getShownStateInsets()Landroid/graphics/Insets; -HSPLandroid/view/InsetsAnimationControlImpl;->getStatsToken()Landroid/view/inputmethod/ImeTracker$Token; HSPLandroid/view/InsetsAnimationControlImpl;->getTypes()I HSPLandroid/view/InsetsAnimationControlImpl;->hasZeroInsetsIme()Z HSPLandroid/view/InsetsAnimationControlImpl;->isCancelled()Z HSPLandroid/view/InsetsAnimationControlImpl;->notifyControlRevoked(I)V HSPLandroid/view/InsetsAnimationControlImpl;->releaseLeashes()V HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FF)V -HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FFZ)V+]Landroid/view/InsetsAnimationControlCallbacks;Landroid/view/InsetsAnimationThreadControlRunner$1;]Ljava/lang/Boolean;Ljava/lang/Boolean; -HSPLandroid/view/InsetsAnimationControlImpl;->updateLeashesForSide(IIILjava/util/ArrayList;Landroid/view/InsetsState;F)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FFZ)V HSPLandroid/view/InsetsAnimationControlImpl;->updateSurfacePosition(Landroid/util/SparseArray;)V -HSPLandroid/view/InsetsAnimationControlRunner;->controlsType(I)Z HSPLandroid/view/InsetsAnimationThread;->ensureThreadLocked()V HSPLandroid/view/InsetsAnimationThread;->getHandler()Landroid/os/Handler; HSPLandroid/view/InsetsAnimationThread;->release()V @@ -16689,8 +16524,6 @@ HSPLandroid/view/InsetsController$$ExternalSyntheticLambda11;->(Landroid/v HSPLandroid/view/InsetsController$$ExternalSyntheticLambda1;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/view/InsetsController$$ExternalSyntheticLambda7;->()V HSPLandroid/view/InsetsController$$ExternalSyntheticLambda8;->get()Ljava/lang/Object; -HSPLandroid/view/InsetsController$1;->getDisplayContext()Landroid/content/Context; -HSPLandroid/view/InsetsController$1;->getTargetSurfaceControl()Landroid/view/SurfaceControl; HSPLandroid/view/InsetsController$2;->onFinish(Landroid/view/InsetsState;Landroid/view/InsetsState;)V HSPLandroid/view/InsetsController$2;->onIdNotFoundInState2(ILandroid/view/InsetsSource;)V HSPLandroid/view/InsetsController$3;->(Landroid/view/InsetsController;)V @@ -16703,9 +16536,6 @@ HSPLandroid/view/InsetsController$InternalAnimationControlListener$$ExternalSynt HSPLandroid/view/InsetsController$InternalAnimationControlListener$1;->initialValue()Landroid/animation/AnimationHandler; HSPLandroid/view/InsetsController$InternalAnimationControlListener$1;->initialValue()Ljava/lang/Object; HSPLandroid/view/InsetsController$InternalAnimationControlListener$2;->onAnimationEnd(Landroid/animation/Animator;)V -HSPLandroid/view/InsetsController$InternalAnimationControlListener$2;->onAnimationStart(Landroid/animation/Animator;)V -HSPLandroid/view/InsetsController$InternalAnimationControlListener;->-$$Nest$fgetmHasAnimationCallbacks(Landroid/view/InsetsController$InternalAnimationControlListener;)Z -HSPLandroid/view/InsetsController$InternalAnimationControlListener;->-$$Nest$fgetmInputMethodJankContext(Landroid/view/InsetsController$InternalAnimationControlListener;)Landroid/view/inputmethod/ImeTracker$InputMethodJankContext; HSPLandroid/view/InsetsController$InternalAnimationControlListener;->(ZZIIZILandroid/view/WindowInsetsAnimationControlListener;Landroid/view/inputmethod/ImeTracker$InputMethodJankContext;)V HSPLandroid/view/InsetsController$InternalAnimationControlListener;->calculateDurationMs()J HSPLandroid/view/InsetsController$InternalAnimationControlListener;->getAlphaInterpolator()Landroid/view/animation/Interpolator; @@ -16714,21 +16544,18 @@ HSPLandroid/view/InsetsController$InternalAnimationControlListener;->getInsetsIn HSPLandroid/view/InsetsController$InternalAnimationControlListener;->lambda$getAlphaInterpolator$2(F)F HSPLandroid/view/InsetsController$InternalAnimationControlListener;->lambda$getAlphaInterpolator$3(F)F HSPLandroid/view/InsetsController$InternalAnimationControlListener;->lambda$getAlphaInterpolator$4(F)F -HSPLandroid/view/InsetsController$InternalAnimationControlListener;->lambda$onReady$0(Landroid/view/animation/Interpolator;Landroid/view/WindowInsetsAnimationController;Landroid/graphics/Insets;Landroid/graphics/Insets;Landroid/view/animation/Interpolator;Landroid/animation/ValueAnimator;)V+]Landroid/view/animation/Interpolator;megamorphic_types]Landroid/animation/TypeEvaluator;Landroid/view/InsetsController$$ExternalSyntheticLambda1;]Landroid/view/WindowInsetsAnimationController;Landroid/view/InsetsAnimationControlImpl;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator; HSPLandroid/view/InsetsController$InternalAnimationControlListener;->onAnimationFinish()V HSPLandroid/view/InsetsController$InternalAnimationControlListener;->onCancelled(Landroid/view/WindowInsetsAnimationController;)V HSPLandroid/view/InsetsController$InternalAnimationControlListener;->onFinished(Landroid/view/WindowInsetsAnimationController;)V HSPLandroid/view/InsetsController$InternalAnimationControlListener;->onReady(Landroid/view/WindowInsetsAnimationController;I)V HSPLandroid/view/InsetsController$RunningAnimation;->(Landroid/view/InsetsAnimationControlRunner;I)V -HSPLandroid/view/InsetsController;->-$$Nest$fgetmHost(Landroid/view/InsetsController;)Landroid/view/InsetsController$Host; HSPLandroid/view/InsetsController;->-$$Nest$sfgetsEvaluator()Landroid/animation/TypeEvaluator; HSPLandroid/view/InsetsController;->(Landroid/view/InsetsController$Host;)V HSPLandroid/view/InsetsController;->abortPendingImeControlRequest()V HSPLandroid/view/InsetsController;->applyAnimation(IZZLandroid/view/inputmethod/ImeTracker$Token;)V HSPLandroid/view/InsetsController;->applyAnimation(IZZZLandroid/view/inputmethod/ImeTracker$Token;)V -HSPLandroid/view/InsetsController;->applyLocalVisibilityOverride()V -HSPLandroid/view/InsetsController;->calculateControllableTypes()I -HSPLandroid/view/InsetsController;->calculateInsets(ZZIIIII)Landroid/view/WindowInsets; +HSPLandroid/view/InsetsController;->applyLocalVisibilityOverride()V+]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/InsetsController;->calculateControllableTypes()I+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/InsetsController;->calculateVisibleInsets(IIII)Landroid/graphics/Insets; HSPLandroid/view/InsetsController;->cancelAnimation(Landroid/view/InsetsAnimationControlRunner;Z)V HSPLandroid/view/InsetsController;->cancelExistingAnimations()V @@ -16737,22 +16564,20 @@ HSPLandroid/view/InsetsController;->captionInsetsUnchanged()Z HSPLandroid/view/InsetsController;->collectSourceControls(ZILandroid/util/SparseArray;ILandroid/view/inputmethod/ImeTracker$Token;)Landroid/util/Pair; HSPLandroid/view/InsetsController;->controlAnimationUncheckedInner(ILandroid/os/CancellationSignal;Landroid/view/WindowInsetsAnimationControlListener;Landroid/graphics/Rect;ZJLandroid/view/animation/Interpolator;IIZLandroid/view/inputmethod/ImeTracker$Token;)V HSPLandroid/view/InsetsController;->dispatchAnimationEnd(Landroid/view/WindowInsetsAnimation;)V -HSPLandroid/view/InsetsController;->getAnimationType(I)I +HSPLandroid/view/InsetsController;->getAnimationType(I)I+]Landroid/view/InsetsAnimationControlRunner;Landroid/view/InsetsAnimationThreadControlRunner;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/InsetsController;->getHost()Landroid/view/InsetsController$Host; -HSPLandroid/view/InsetsController;->getImeSourceConsumer()Landroid/view/InsetsSourceConsumer; HSPLandroid/view/InsetsController;->getLastDispatchedState()Landroid/view/InsetsState; HSPLandroid/view/InsetsController;->getRequestedVisibleTypes()I HSPLandroid/view/InsetsController;->getState()Landroid/view/InsetsState; HSPLandroid/view/InsetsController;->getSystemBarsAppearance()I HSPLandroid/view/InsetsController;->hide(I)V HSPLandroid/view/InsetsController;->invokeControllableInsetsChangedListeners()I -HSPLandroid/view/InsetsController;->lambda$new$3()V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsAnimationControlRunner;Landroid/view/InsetsAnimationControlImpl;,Landroid/view/InsetsResizeAnimationRunner;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/view/InsetsController$Host;Landroid/view/ViewRootInsetsControllerHost;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/view/InternalInsetsAnimationController;Landroid/view/InsetsAnimationControlImpl;,Landroid/view/InsetsResizeAnimationRunner;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/InsetsController;->lambda$static$1(FLandroid/graphics/Insets;Landroid/graphics/Insets;)Landroid/graphics/Insets; HSPLandroid/view/InsetsController;->notifyControlRevoked(Landroid/view/InsetsSourceConsumer;)V HSPLandroid/view/InsetsController;->notifyFinished(Landroid/view/InsetsAnimationControlRunner;Z)V HSPLandroid/view/InsetsController;->notifyVisibilityChanged()V -HSPLandroid/view/InsetsController;->onAnimationStateChanged(IZ)V -HSPLandroid/view/InsetsController;->onControlsChanged([Landroid/view/InsetsSourceControl;)V +HSPLandroid/view/InsetsController;->onAnimationStateChanged(IZ)V+]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsController;Landroid/view/InsetsController; +HSPLandroid/view/InsetsController;->onControlsChanged([Landroid/view/InsetsSourceControl;)V+]Landroid/view/InsetsAnimationControlRunner;Landroid/view/InsetsAnimationThreadControlRunner;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/InsetsController;->onFrameChanged(Landroid/graphics/Rect;)V HSPLandroid/view/InsetsController;->onStateChanged(Landroid/view/InsetsState;)Z HSPLandroid/view/InsetsController;->onWindowFocusGained(Z)V @@ -16763,31 +16588,29 @@ HSPLandroid/view/InsetsController;->setRequestedVisibleTypes(II)V HSPLandroid/view/InsetsController;->show(I)V HSPLandroid/view/InsetsController;->show(IZLandroid/view/inputmethod/ImeTracker$Token;)V HSPLandroid/view/InsetsController;->updateCompatSysUiVisibility()V -HSPLandroid/view/InsetsController;->updateDisabledUserAnimationTypes(I)V -HSPLandroid/view/InsetsController;->updateState(Landroid/view/InsetsState;)V +HSPLandroid/view/InsetsController;->updateState(Landroid/view/InsetsState;)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsController;Landroid/view/InsetsController; HSPLandroid/view/InsetsFlags;->()V HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSource; -HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/InsetsSource$1;Landroid/view/InsetsSource$1; HSPLandroid/view/InsetsSource;->(II)V -HSPLandroid/view/InsetsSource;->(Landroid/os/Parcel;)V +HSPLandroid/view/InsetsSource;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/graphics/Rect$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/InsetsSource;->(Landroid/view/InsetsSource;)V -HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets; +HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Z)Landroid/graphics/Insets; HSPLandroid/view/InsetsSource;->calculateVisibleInsets(Landroid/graphics/Rect;)Landroid/graphics/Insets; -HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;)Z -HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z +HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource; +HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z+]Ljava/lang/Object;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/InsetsSource;->getFlags()I HSPLandroid/view/InsetsSource;->getFrame()Landroid/graphics/Rect; HSPLandroid/view/InsetsSource;->getId()I HSPLandroid/view/InsetsSource;->getIntersection(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z HSPLandroid/view/InsetsSource;->getType()I HSPLandroid/view/InsetsSource;->getVisibleFrame()Landroid/graphics/Rect; -HSPLandroid/view/InsetsSource;->isUserControllable()Z HSPLandroid/view/InsetsSource;->isVisible()Z HSPLandroid/view/InsetsSource;->setVisible(Z)Landroid/view/InsetsSource; HSPLandroid/view/InsetsSource;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/InsetsSourceConsumer;->(IILandroid/view/InsetsState;Ljava/util/function/Supplier;Landroid/view/InsetsController;)V -HSPLandroid/view/InsetsSourceConsumer;->applyLocalVisibilityOverride()Z +HSPLandroid/view/InsetsSourceConsumer;->applyLocalVisibilityOverride()Z+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsController;Landroid/view/InsetsController; HSPLandroid/view/InsetsSourceConsumer;->applyRequestedVisibilityToControl()V HSPLandroid/view/InsetsSourceConsumer;->getControl()Landroid/view/InsetsSourceControl; HSPLandroid/view/InsetsSourceConsumer;->getId()I @@ -16799,8 +16622,8 @@ HSPLandroid/view/InsetsSourceConsumer;->onPerceptible(Z)V HSPLandroid/view/InsetsSourceConsumer;->onWindowFocusGained(Z)V HSPLandroid/view/InsetsSourceConsumer;->onWindowFocusLost()V HSPLandroid/view/InsetsSourceConsumer;->removeSurface()V -HSPLandroid/view/InsetsSourceConsumer;->setControl(Landroid/view/InsetsSourceControl;[I[I)Z -HSPLandroid/view/InsetsSourceConsumer;->updateSource(Landroid/view/InsetsSource;I)V +HSPLandroid/view/InsetsSourceConsumer;->setControl(Landroid/view/InsetsSourceControl;[I[I)Z+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/view/InsetsController;Landroid/view/InsetsController; +HSPLandroid/view/InsetsSourceConsumer;->updateSource(Landroid/view/InsetsSource;I)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/InsetsSourceControl$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSourceControl; HSPLandroid/view/InsetsSourceControl$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/InsetsSourceControl$1;->newArray(I)[Landroid/view/InsetsSourceControl; @@ -16830,20 +16653,18 @@ HSPLandroid/view/InsetsState$OnTraverseCallbacks;->onStart(Landroid/view/InsetsS HSPLandroid/view/InsetsState;->()V HSPLandroid/view/InsetsState;->(Landroid/os/Parcel;)V HSPLandroid/view/InsetsState;->(Landroid/view/InsetsState;Z)V -HSPLandroid/view/InsetsState;->addSource(Landroid/view/InsetsSource;)V +HSPLandroid/view/InsetsState;->addSource(Landroid/view/InsetsSource;)V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;II)Landroid/graphics/Insets; HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;IZ)Landroid/graphics/Insets; -HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;ZZIIIIILandroid/util/SparseIntArray;)Landroid/view/WindowInsets; HSPLandroid/view/InsetsState;->calculateRelativeCutout(Landroid/graphics/Rect;)Landroid/view/DisplayCutout; HSPLandroid/view/InsetsState;->calculateRelativeDisplayShape(Landroid/graphics/Rect;)Landroid/view/DisplayShape; HSPLandroid/view/InsetsState;->calculateRelativePrivacyIndicatorBounds(Landroid/graphics/Rect;)Landroid/view/PrivacyIndicatorBounds; HSPLandroid/view/InsetsState;->calculateRelativeRoundedCorners(Landroid/graphics/Rect;)Landroid/view/RoundedCorners; -HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/graphics/Rect;)I +HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/graphics/Rect;)I+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/InsetsState;->calculateVisibleInsets(Landroid/graphics/Rect;IIII)Landroid/graphics/Insets; -HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z -HSPLandroid/view/InsetsState;->clearsCompatInsets(III)Z +HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;)Z -HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;ZZ)Z +HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;ZZ)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Ljava/lang/Object;Landroid/view/InsetsState;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/DisplayShape;Landroid/view/DisplayShape;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/view/RoundedCorners;Landroid/view/RoundedCorners;]Landroid/view/PrivacyIndicatorBounds;Landroid/view/PrivacyIndicatorBounds; HSPLandroid/view/InsetsState;->getDisplayCutout()Landroid/view/DisplayCutout; HSPLandroid/view/InsetsState;->getDisplayCutoutSafe(Landroid/graphics/Rect;)V HSPLandroid/view/InsetsState;->getDisplayFrame()Landroid/graphics/Rect; @@ -16852,21 +16673,20 @@ HSPLandroid/view/InsetsState;->getInsetSide(Landroid/graphics/Insets;)I HSPLandroid/view/InsetsState;->getPrivacyIndicatorBounds()Landroid/view/PrivacyIndicatorBounds; HSPLandroid/view/InsetsState;->getRoundedCorners()Landroid/view/RoundedCorners; HSPLandroid/view/InsetsState;->isSourceOrDefaultVisible(II)Z -HSPLandroid/view/InsetsState;->peekSource(I)Landroid/view/InsetsSource; -HSPLandroid/view/InsetsState;->processSource(Landroid/view/InsetsSource;Landroid/graphics/Rect;Z[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z)V -HSPLandroid/view/InsetsState;->processSourceAsPublicType(Landroid/view/InsetsSource;[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[ZLandroid/graphics/Insets;I)V -HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray; -HSPLandroid/view/InsetsState;->removeSourceAt(I)V +HSPLandroid/view/InsetsState;->peekSource(I)Landroid/view/InsetsSource;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/InsetsState;->processSource(Landroid/view/InsetsSource;Landroid/graphics/Rect;Z[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z)V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource; +HSPLandroid/view/InsetsState;->processSourceAsPublicType(Landroid/view/InsetsSource;[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[ZLandroid/graphics/Insets;I)V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource; +HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;I)V -HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V +HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper; HSPLandroid/view/InsetsState;->setDisplayCutout(Landroid/view/DisplayCutout;)V HSPLandroid/view/InsetsState;->setDisplayFrame(Landroid/graphics/Rect;)V HSPLandroid/view/InsetsState;->setPrivacyIndicatorBounds(Landroid/view/PrivacyIndicatorBounds;)V HSPLandroid/view/InsetsState;->setRoundedCorners(Landroid/view/RoundedCorners;)V -HSPLandroid/view/InsetsState;->sourceAt(I)Landroid/view/InsetsSource; -HSPLandroid/view/InsetsState;->sourceIdAt(I)I +HSPLandroid/view/InsetsState;->sourceAt(I)Landroid/view/InsetsSource;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/InsetsState;->sourceIdAt(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/InsetsState;->sourceSize()I -HSPLandroid/view/InsetsState;->traverse(Landroid/view/InsetsState;Landroid/view/InsetsState;Landroid/view/InsetsState$OnTraverseCallbacks;)V +HSPLandroid/view/InsetsState;->traverse(Landroid/view/InsetsState;Landroid/view/InsetsState;Landroid/view/InsetsState$OnTraverseCallbacks;)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsState$OnTraverseCallbacks;Landroid/view/InsetsController$2; HSPLandroid/view/InsetsState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/KeyCharacterMap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/KeyCharacterMap; HSPLandroid/view/KeyCharacterMap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -16914,34 +16734,34 @@ HSPLandroid/view/KeyEvent;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/LayoutInflater$FactoryMerger;->(Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;)V HSPLandroid/view/LayoutInflater$FactoryMerger;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; HSPLandroid/view/LayoutInflater;->(Landroid/content/Context;)V -HSPLandroid/view/LayoutInflater;->(Landroid/view/LayoutInflater;Landroid/content/Context;)V -HSPLandroid/view/LayoutInflater;->advanceToRootNode(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLandroid/view/LayoutInflater;->(Landroid/view/LayoutInflater;Landroid/content/Context;)V+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; +HSPLandroid/view/LayoutInflater;->advanceToRootNode(Lorg/xmlpull/v1/XmlPullParser;)V+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/view/LayoutInflater;->consumeChildElements(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor; -HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;]Landroid/view/LayoutInflater;missing_types]Landroid/view/ViewStub;Landroid/view/ViewStub;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Context;missing_types +HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; +HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater;missing_types +HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View;+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/LayoutInflater;missing_types]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser; HSPLandroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater; HSPLandroid/view/LayoutInflater;->getContext()Landroid/content/Context; HSPLandroid/view/LayoutInflater;->getFactory()Landroid/view/LayoutInflater$Factory; HSPLandroid/view/LayoutInflater;->getFactory2()Landroid/view/LayoutInflater$Factory2; HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;+]Landroid/view/LayoutInflater;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/Context;missing_types +HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;+]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/LayoutInflater;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/LayoutInflater;->initPrecompiledViews()V HSPLandroid/view/LayoutInflater;->initPrecompiledViews(Z)V -HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/content/Context;Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/content/Context;Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; +HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; HSPLandroid/view/LayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; HSPLandroid/view/LayoutInflater;->parseInclude(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/Context;Landroid/view/View;Landroid/util/AttributeSet;)V -HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V -HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V +HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/View;missing_types]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/view/ViewGroup;missing_types]Landroid/view/LayoutInflater;missing_types +HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V+]Landroid/view/View;missing_types]Landroid/view/LayoutInflater;missing_types HSPLandroid/view/LayoutInflater;->setFactory2(Landroid/view/LayoutInflater$Factory2;)V HSPLandroid/view/LayoutInflater;->setFilter(Landroid/view/LayoutInflater$Filter;)V HSPLandroid/view/LayoutInflater;->setPrivateFactory(Landroid/view/LayoutInflater$Factory2;)V -HSPLandroid/view/LayoutInflater;->tryCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->tryCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/LayoutInflater$Factory2;missing_types HSPLandroid/view/LayoutInflater;->tryInflatePrecompiled(ILandroid/content/res/Resources;Landroid/view/ViewGroup;Z)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z +HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;]Landroid/content/Context;missing_types HSPLandroid/view/MenuInflater;->(Landroid/content/Context;)V HSPLandroid/view/MotionEvent$PointerCoords;->()V HSPLandroid/view/MotionEvent$PointerProperties;->()V @@ -16959,6 +16779,7 @@ HSPLandroid/view/MotionEvent;->getDeviceId()I HSPLandroid/view/MotionEvent;->getDownTime()J HSPLandroid/view/MotionEvent;->getEdgeFlags()I HSPLandroid/view/MotionEvent;->getEventTime()J +HSPLandroid/view/MotionEvent;->getEventTimeNanos()J HSPLandroid/view/MotionEvent;->getFlags()I HSPLandroid/view/MotionEvent;->getHistoricalEventTime(I)J HSPLandroid/view/MotionEvent;->getHistoricalX(II)F @@ -16984,7 +16805,7 @@ HSPLandroid/view/MotionEvent;->getY(I)F HSPLandroid/view/MotionEvent;->initialize(IIIIIIIIIFFFFJJI[Landroid/view/MotionEvent$PointerProperties;[Landroid/view/MotionEvent$PointerCoords;)Z HSPLandroid/view/MotionEvent;->isTargetAccessibilityFocus()Z HSPLandroid/view/MotionEvent;->isTouchEvent()Z -HSPLandroid/view/MotionEvent;->obtain()Landroid/view/MotionEvent; +HSPLandroid/view/MotionEvent;->obtain()Landroid/view/MotionEvent;+]Landroid/view/MotionEvent;Landroid/view/MotionEvent; HSPLandroid/view/MotionEvent;->obtain(JJIFFFFIFFII)Landroid/view/MotionEvent; HSPLandroid/view/MotionEvent;->obtain(JJIFFFFIFFIIII)Landroid/view/MotionEvent; HSPLandroid/view/MotionEvent;->obtain(JJIFFI)Landroid/view/MotionEvent; @@ -17030,12 +16851,12 @@ HSPLandroid/view/RemoteAccessibilityController;->setRemoteAccessibilityEmbeddedC HSPLandroid/view/RemoteAnimationAdapter;->(Landroid/view/IRemoteAnimationRunner;JJ)V HSPLandroid/view/RemoteAnimationAdapter;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/RoundedCorner$1;->()V -HSPLandroid/view/RoundedCorner$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RoundedCorner; -HSPLandroid/view/RoundedCorner$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/RoundedCorner$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RoundedCorner;+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/view/RoundedCorner$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/RoundedCorner$1;Landroid/view/RoundedCorner$1; HSPLandroid/view/RoundedCorner;->()V HSPLandroid/view/RoundedCorner;->(I)V HSPLandroid/view/RoundedCorner;->(IIII)V -HSPLandroid/view/RoundedCorner;->equals(Ljava/lang/Object;)Z +HSPLandroid/view/RoundedCorner;->equals(Ljava/lang/Object;)Z+]Landroid/graphics/Point;Landroid/graphics/Point; HSPLandroid/view/RoundedCorner;->getCenter()Landroid/graphics/Point; HSPLandroid/view/RoundedCorner;->getRadius()I HSPLandroid/view/RoundedCorner;->isEmpty()Z @@ -17058,7 +16879,6 @@ HSPLandroid/view/ScaleGestureDetector;->onTouchEvent(Landroid/view/MotionEvent;) HSPLandroid/view/ScaleGestureDetector;->setQuickScaleEnabled(Z)V HSPLandroid/view/ScaleGestureDetector;->setStylusScaleEnabled(Z)V HSPLandroid/view/Surface$CompatibleCanvas;->(Landroid/view/Surface;)V -HSPLandroid/view/Surface$CompatibleCanvas;->(Landroid/view/Surface;Landroid/view/Surface$CompatibleCanvas-IA;)V HSPLandroid/view/Surface;->()V HSPLandroid/view/Surface;->(J)V HSPLandroid/view/Surface;->(Landroid/graphics/SurfaceTexture;)V @@ -17098,7 +16918,6 @@ HSPLandroid/view/SurfaceControl$Builder;->setName(Ljava/lang/String;)Landroid/vi HSPLandroid/view/SurfaceControl$Builder;->setOpaque(Z)Landroid/view/SurfaceControl$Builder; HSPLandroid/view/SurfaceControl$Builder;->setParent(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Builder; HSPLandroid/view/SurfaceControl$Builder;->unsetBufferSize()V -HSPLandroid/view/SurfaceControl$RefreshRateRange;->(FF)V HSPLandroid/view/SurfaceControl$Transaction;->()V HSPLandroid/view/SurfaceControl$Transaction;->(J)V HSPLandroid/view/SurfaceControl$Transaction;->apply()V @@ -17154,7 +16973,6 @@ HSPLandroid/view/SurfaceControl;->release()V HSPLandroid/view/SurfaceControl;->removeFromRegistry()V HSPLandroid/view/SurfaceControl;->rotationToBufferTransform(I)I HSPLandroid/view/SurfaceControl;->setTransformHint(I)V -HSPLandroid/view/SurfaceControl;->setUnreleasedWarningCallSite(Ljava/lang/String;)V HSPLandroid/view/SurfaceControlRegistry$DefaultReporter;->()V HSPLandroid/view/SurfaceControlRegistry$DefaultReporter;->(Landroid/view/SurfaceControlRegistry$DefaultReporter-IA;)V HSPLandroid/view/SurfaceControlRegistry;->()V @@ -17208,19 +17026,19 @@ HSPLandroid/view/SurfaceView;->updateBackgroundVisibility(Landroid/view/SurfaceC HSPLandroid/view/SurfaceView;->updateEmbeddedAccessibilityMatrix(Z)V HSPLandroid/view/SurfaceView;->updateRelativeZ(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/view/SurfaceView;->updateSurface()V -HSPLandroid/view/SurfaceView;->vriDrawStarted(Z)V +HSPLandroid/view/SurfaceView;->vriDrawStarted(Z)V+]Landroid/view/SurfaceView;Landroid/view/SurfaceView;]Landroid/util/ArraySet;Landroid/util/ArraySet; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->(Landroid/view/SurfaceControl;)V HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->build()Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->withAlpha(F)Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->withMatrix(Landroid/graphics/Matrix;)Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->withVisibility(Z)Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;->(Landroid/view/SurfaceControl;IFLandroid/graphics/Matrix;Landroid/graphics/Rect;IFIZLandroid/view/SurfaceControl$Transaction;)V -HSPLandroid/view/SyncRtSurfaceTransactionApplier;->applyParams(Landroid/view/SurfaceControl$Transaction;Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;[F)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction; +HSPLandroid/view/SyncRtSurfaceTransactionApplier;->applyParams(Landroid/view/SurfaceControl$Transaction;Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;[F)V HSPLandroid/view/TextureView;->(Landroid/content/Context;)V -HSPLandroid/view/TextureView;->applyUpdate()V +HSPLandroid/view/TextureView;->applyUpdate()V+]Landroid/graphics/TextureLayer;Landroid/graphics/TextureLayer; HSPLandroid/view/TextureView;->destroyHardwareLayer()V HSPLandroid/view/TextureView;->destroyHardwareResources()V -HSPLandroid/view/TextureView;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/view/TextureView;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/TextureLayer;Landroid/graphics/TextureLayer;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/view/TextureView;->getLayerType()I HSPLandroid/view/TextureView;->getTextureLayer()Landroid/graphics/TextureLayer; HSPLandroid/view/TextureView;->isOpaque()Z @@ -17250,7 +17068,7 @@ HSPLandroid/view/ThreadedRenderer;->create(Landroid/content/Context;ZLjava/lang/ HSPLandroid/view/ThreadedRenderer;->destroy()V HSPLandroid/view/ThreadedRenderer;->destroyHardwareResources(Landroid/view/View;)V HSPLandroid/view/ThreadedRenderer;->destroyResources(Landroid/view/View;)V -HSPLandroid/view/ThreadedRenderer;->draw(Landroid/view/View;Landroid/view/View$AttachInfo;Landroid/view/ThreadedRenderer$DrawCallbacks;)V +HSPLandroid/view/ThreadedRenderer;->draw(Landroid/view/View;Landroid/view/View$AttachInfo;Landroid/view/ThreadedRenderer$DrawCallbacks;)V+]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ThreadedRenderer;->dumpArgsToFlags([Ljava/lang/String;)I HSPLandroid/view/ThreadedRenderer;->getHeight()I HSPLandroid/view/ThreadedRenderer;->getWidth()I @@ -17271,9 +17089,9 @@ HSPLandroid/view/ThreadedRenderer;->setSurfaceControl(Landroid/view/SurfaceContr HSPLandroid/view/ThreadedRenderer;->setSurfaceControlOpaque(Z)Z HSPLandroid/view/ThreadedRenderer;->setup(IILandroid/view/View$AttachInfo;Landroid/graphics/Rect;)V HSPLandroid/view/ThreadedRenderer;->updateEnabledState(Landroid/view/Surface;)V -HSPLandroid/view/ThreadedRenderer;->updateRootDisplayList(Landroid/view/View;Landroid/view/ThreadedRenderer$DrawCallbacks;)V +HSPLandroid/view/ThreadedRenderer;->updateRootDisplayList(Landroid/view/View;Landroid/view/ThreadedRenderer$DrawCallbacks;)V+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/ThreadedRenderer$DrawCallbacks;Landroid/view/ViewRootImpl;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/ThreadedRenderer;->updateSurface(Landroid/view/Surface;)V -HSPLandroid/view/ThreadedRenderer;->updateViewTreeDisplayList(Landroid/view/View;)V +HSPLandroid/view/ThreadedRenderer;->updateViewTreeDisplayList(Landroid/view/View;)V+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout; HSPLandroid/view/ThreadedRenderer;->updateWebViewOverlayCallbacks()V HSPLandroid/view/TouchDelegate;->(Landroid/graphics/Rect;Landroid/view/View;)V HSPLandroid/view/VelocityTracker;->(I)V @@ -17329,7 +17147,7 @@ HSPLandroid/view/View$AccessibilityDelegate;->getAccessibilityNodeProvider(Landr HSPLandroid/view/View$AccessibilityDelegate;->sendAccessibilityEvent(Landroid/view/View;I)V HSPLandroid/view/View$AttachInfo;->(Landroid/view/IWindowSession;Landroid/view/IWindow;Landroid/view/Display;Landroid/view/ViewRootImpl;Landroid/os/Handler;Landroid/view/View$AttachInfo$Callbacks;Landroid/content/Context;)V HSPLandroid/view/View$AttachInfo;->delayNotifyContentCaptureInsetsEvent(Landroid/graphics/Insets;)V -HSPLandroid/view/View$AttachInfo;->ensureEvents(Landroid/view/contentcapture/ContentCaptureSession;)Ljava/util/ArrayList; +HSPLandroid/view/View$AttachInfo;->ensureEvents(Landroid/view/contentcapture/ContentCaptureSession;)Ljava/util/ArrayList;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/contentcapture/ContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; HSPLandroid/view/View$BaseSavedState$1;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/view/View$BaseSavedState; HSPLandroid/view/View$BaseSavedState$1;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object; HSPLandroid/view/View$BaseSavedState;->(Landroid/os/Parcel;)V @@ -17356,22 +17174,21 @@ HSPLandroid/view/View$MeasureSpec;->getSize(I)I HSPLandroid/view/View$MeasureSpec;->makeMeasureSpec(II)I HSPLandroid/view/View$MeasureSpec;->makeSafeMeasureSpec(II)I HSPLandroid/view/View$PerformClick;->run()V -HSPLandroid/view/View$ScrollabilityCache;->(Landroid/view/ViewConfiguration;Landroid/view/View;)V +HSPLandroid/view/View$ScrollabilityCache;->(Landroid/view/ViewConfiguration;Landroid/view/View;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration; HSPLandroid/view/View$ScrollabilityCache;->run()V HSPLandroid/view/View$TintInfo;->()V -HSPLandroid/view/View$TransformationInfo;->-$$Nest$fgetmAlpha(Landroid/view/View$TransformationInfo;)F HSPLandroid/view/View$TransformationInfo;->()V HSPLandroid/view/View$UnsetPressedState;->run()V HSPLandroid/view/View$VisibilityChangeForAutofillHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/view/View;->(Landroid/content/Context;)V+]Landroid/view/View;megamorphic_types]Ljava/lang/Object;megamorphic_types]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Landroid/content/Context;missing_types]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/view/View;megamorphic_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/content/Context;missing_types +HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/view/View;megamorphic_types]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;I)V HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;II)V HSPLandroid/view/View;->addFrameMetricsListener(Landroid/view/Window;Landroid/view/Window$OnFrameMetricsAvailableListener;Landroid/os/Handler;)V HSPLandroid/view/View;->addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V -HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V +HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/View;->animate()Landroid/view/ViewPropertyAnimator; HSPLandroid/view/View;->announceForAccessibility(Ljava/lang/CharSequence;)V HSPLandroid/view/View;->appendId(Ljava/lang/StringBuilder;)V @@ -17382,18 +17199,18 @@ HSPLandroid/view/View;->applyLegacyAnimation(Landroid/view/ViewGroup;JLandroid/v HSPLandroid/view/View;->areDrawablesResolved()Z HSPLandroid/view/View;->assignParent(Landroid/view/ViewParent;)V HSPLandroid/view/View;->awakenScrollBars()Z -HSPLandroid/view/View;->awakenScrollBars(IZ)Z +HSPLandroid/view/View;->awakenScrollBars(IZ)Z+]Landroid/os/Handler;Landroid/view/ViewRootImpl$ViewRootHandler; HSPLandroid/view/View;->bringToFront()V HSPLandroid/view/View;->buildDrawingCache(Z)V -HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V +HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Landroid/graphics/Canvas;Landroid/graphics/Canvas; HSPLandroid/view/View;->buildLayer()V HSPLandroid/view/View;->calculateAccessibilityDataSensitive()V -HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z +HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->canHaveDisplayList()Z HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z HSPLandroid/view/View;->canReceivePointerEvents()Z -HSPLandroid/view/View;->canResolveLayoutDirection()Z -HSPLandroid/view/View;->canResolveTextDirection()Z +HSPLandroid/view/View;->canResolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types +HSPLandroid/view/View;->canResolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->canScrollHorizontally(I)Z HSPLandroid/view/View;->canScrollVertically(I)Z HSPLandroid/view/View;->canTakeFocus()Z @@ -17402,17 +17219,17 @@ HSPLandroid/view/View;->cancelLongPress()V HSPLandroid/view/View;->cancelPendingInputEvents()V HSPLandroid/view/View;->checkForLongClick(JFFI)V HSPLandroid/view/View;->checkInputConnectionProxy(Landroid/view/View;)Z -HSPLandroid/view/View;->cleanupDraw()V -HSPLandroid/view/View;->clearAccessibilityFocus()V +HSPLandroid/view/View;->cleanupDraw()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; +HSPLandroid/view/View;->clearAccessibilityFocus()V+]Landroid/view/View;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/View;->clearAccessibilityFocusNoCallbacks(I)V HSPLandroid/view/View;->clearAccessibilityThrottles()V HSPLandroid/view/View;->clearAnimation()V HSPLandroid/view/View;->clearFocus()V HSPLandroid/view/View;->clearFocusInternal(Landroid/view/View;ZZ)V HSPLandroid/view/View;->clearParentsWantFocus()V -HSPLandroid/view/View;->clearTranslationState()V +HSPLandroid/view/View;->clearTranslationState()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->clearViewTranslationResponse()V -HSPLandroid/view/View;->collectPreferKeepClearRects()Ljava/util/List; +HSPLandroid/view/View;->collectPreferKeepClearRects()Ljava/util/List;+]Landroid/view/View;missing_types]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration; HSPLandroid/view/View;->collectUnrestrictedPreferKeepClearRects()Ljava/util/List; HSPLandroid/view/View;->combineMeasuredStates(II)I HSPLandroid/view/View;->combineVisibility(II)I @@ -17420,21 +17237,21 @@ HSPLandroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/ HSPLandroid/view/View;->computeHorizontalScrollExtent()I HSPLandroid/view/View;->computeHorizontalScrollOffset()I HSPLandroid/view/View;->computeHorizontalScrollRange()I -HSPLandroid/view/View;->computeOpaqueFlags()V +HSPLandroid/view/View;->computeOpaqueFlags()V+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/view/View;->computeScroll()V HSPLandroid/view/View;->computeSystemWindowInsets(Landroid/view/WindowInsets;Landroid/graphics/Rect;)Landroid/view/WindowInsets; HSPLandroid/view/View;->computeVerticalScrollExtent()I HSPLandroid/view/View;->computeVerticalScrollOffset()I HSPLandroid/view/View;->computeVerticalScrollRange()I -HSPLandroid/view/View;->damageInParent()V +HSPLandroid/view/View;->damageInParent()V+]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->destroyDrawingCache()V HSPLandroid/view/View;->destroyHardwareResources()V -HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; -HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;+]Landroid/view/View;missing_types +HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup; HSPLandroid/view/View;->dispatchCancelPendingInputEvents()V -HSPLandroid/view/View;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/View;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/view/View;->dispatchDetachedFromWindow()V+]Landroid/view/View;missing_types]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/View$OnAttachStateChangeListener;missing_types +HSPLandroid/view/View;->dispatchDetachedFromWindow()V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/View$OnAttachStateChangeListener;missing_types]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup; HSPLandroid/view/View;->dispatchDraw(Landroid/graphics/Canvas;)V HSPLandroid/view/View;->dispatchDrawableHotspotChanged(FF)V HSPLandroid/view/View;->dispatchFinishTemporaryDetach()V @@ -17457,22 +17274,21 @@ HSPLandroid/view/View;->dispatchSetPressed(Z)V HSPLandroid/view/View;->dispatchSetSelected(Z)V HSPLandroid/view/View;->dispatchStartTemporaryDetach()V HSPLandroid/view/View;->dispatchSystemUiVisibilityChanged(I)V -HSPLandroid/view/View;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z -HSPLandroid/view/View;->dispatchVisibilityAggregated(Z)Z +HSPLandroid/view/View;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/View;missing_types]Landroid/view/MotionEvent;Landroid/view/MotionEvent; +HSPLandroid/view/View;->dispatchVisibilityAggregated(Z)Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->dispatchVisibilityChanged(Landroid/view/View;I)V HSPLandroid/view/View;->dispatchWindowFocusChanged(Z)V HSPLandroid/view/View;->dispatchWindowInsetsAnimationEnd(Landroid/view/WindowInsetsAnimation;)V -HSPLandroid/view/View;->dispatchWindowInsetsAnimationProgress(Landroid/view/WindowInsets;Ljava/util/List;)Landroid/view/WindowInsets; HSPLandroid/view/View;->dispatchWindowSystemUiVisiblityChanged(I)V HSPLandroid/view/View;->dispatchWindowVisibilityChanged(I)V -HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;)V -HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z -HSPLandroid/view/View;->drawAutofilledHighlight(Landroid/graphics/Canvas;)V -HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z+]Landroid/view/View;missing_types]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/view/View;->drawAutofilledHighlight(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/view/View;->drawDefaultFocusHighlight(Landroid/graphics/Canvas;)V HSPLandroid/view/View;->drawableHotspotChanged(FF)V -HSPLandroid/view/View;->drawableStateChanged()V -HSPLandroid/view/View;->drawsWithRenderNode(Landroid/graphics/Canvas;)Z +HSPLandroid/view/View;->drawableStateChanged()V+]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator;]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/view/View;->drawsWithRenderNode(Landroid/graphics/Canvas;)Z+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/view/View;->ensureTransformationInfo()V HSPLandroid/view/View;->findAccessibilityFocusHost(Z)Landroid/view/View; HSPLandroid/view/View;->findFocus()Landroid/view/View; @@ -17481,7 +17297,7 @@ HSPLandroid/view/View;->findKeyboardNavigationCluster()Landroid/view/View; HSPLandroid/view/View;->findOnBackInvokedDispatcher()Landroid/window/OnBackInvokedDispatcher; HSPLandroid/view/View;->findUserSetNextFocus(Landroid/view/View;I)Landroid/view/View; HSPLandroid/view/View;->findViewByAutofillIdTraversal(I)Landroid/view/View; -HSPLandroid/view/View;->findViewById(I)Landroid/view/View; +HSPLandroid/view/View;->findViewById(I)Landroid/view/View;+]Landroid/view/View;megamorphic_types HSPLandroid/view/View;->findViewTraversal(I)Landroid/view/View; HSPLandroid/view/View;->findViewWithTag(Ljava/lang/Object;)Landroid/view/View; HSPLandroid/view/View;->findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View; @@ -17501,7 +17317,7 @@ HSPLandroid/view/View;->getAndCacheContentCaptureSession()Landroid/view/contentc HSPLandroid/view/View;->getAnimation()Landroid/view/animation/Animation; HSPLandroid/view/View;->getApplicationWindowToken()Landroid/os/IBinder; HSPLandroid/view/View;->getAutofillHints()[Ljava/lang/String; -HSPLandroid/view/View;->getAutofillId()Landroid/view/autofill/AutofillId; +HSPLandroid/view/View;->getAutofillId()Landroid/view/autofill/AutofillId;+]Landroid/view/View;missing_types HSPLandroid/view/View;->getAutofillType()I HSPLandroid/view/View;->getAutofillViewId()I HSPLandroid/view/View;->getBackground()Landroid/graphics/drawable/Drawable; @@ -17516,12 +17332,12 @@ HSPLandroid/view/View;->getContentDescription()Ljava/lang/CharSequence; HSPLandroid/view/View;->getContext()Landroid/content/Context; HSPLandroid/view/View;->getDefaultSize(II)I HSPLandroid/view/View;->getDisplay()Landroid/view/Display; -HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/graphics/RenderNode;)Landroid/graphics/RenderNode; -HSPLandroid/view/View;->getDrawableState()[I +HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/graphics/RenderNode;)Landroid/graphics/RenderNode;+]Ljava/lang/Object;megamorphic_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/view/View;->getDrawableState()[I+]Landroid/view/View;missing_types HSPLandroid/view/View;->getDrawingCache(Z)Landroid/graphics/Bitmap; HSPLandroid/view/View;->getDrawingRect(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getDrawingTime()J -HSPLandroid/view/View;->getElevation()F +HSPLandroid/view/View;->getElevation()F+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->getFilterTouchesWhenObscured()Z HSPLandroid/view/View;->getFinalAlpha()F HSPLandroid/view/View;->getFitsSystemWindows()Z @@ -17531,9 +17347,9 @@ HSPLandroid/view/View;->getFocusedRect(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getForeground()Landroid/graphics/drawable/Drawable; HSPLandroid/view/View;->getForegroundGravity()I HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;)Z -HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z +HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z+]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;Landroid/widget/FrameLayout; HSPLandroid/view/View;->getHandler()Landroid/os/Handler; -HSPLandroid/view/View;->getHasOverlappingRendering()Z +HSPLandroid/view/View;->getHasOverlappingRendering()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->getHeight()I HSPLandroid/view/View;->getHitRect(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getHorizontalFadingEdgeLength()I @@ -17546,7 +17362,7 @@ HSPLandroid/view/View;->getImportantForContentCapture()I HSPLandroid/view/View;->getInverseMatrix()Landroid/graphics/Matrix; HSPLandroid/view/View;->getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState; HSPLandroid/view/View;->getLayerType()I -HSPLandroid/view/View;->getLayoutDirection()I+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types +HSPLandroid/view/View;->getLayoutDirection()I+]Landroid/view/View;megamorphic_types]Landroid/content/Context;missing_types HSPLandroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/view/View;->getLeft()I HSPLandroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo; @@ -17554,8 +17370,8 @@ HSPLandroid/view/View;->getLocalVisibleRect(Landroid/graphics/Rect;)Z HSPLandroid/view/View;->getLocationInSurface([I)V HSPLandroid/view/View;->getLocationInWindow([I)V HSPLandroid/view/View;->getLocationOnScreen()[I -HSPLandroid/view/View;->getLocationOnScreen([I)V -HSPLandroid/view/View;->getMatrix()Landroid/graphics/Matrix; +HSPLandroid/view/View;->getLocationOnScreen([I)V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; +HSPLandroid/view/View;->getMatrix()Landroid/graphics/Matrix;+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->getMeasuredHeight()I HSPLandroid/view/View;->getMeasuredState()I HSPLandroid/view/View;->getMeasuredWidth()I @@ -17567,14 +17383,14 @@ HSPLandroid/view/View;->getOutlineProvider()Landroid/view/ViewOutlineProvider; HSPLandroid/view/View;->getOverScrollMode()I HSPLandroid/view/View;->getPaddingBottom()I HSPLandroid/view/View;->getPaddingEnd()I -HSPLandroid/view/View;->getPaddingLeft()I -HSPLandroid/view/View;->getPaddingRight()I +HSPLandroid/view/View;->getPaddingLeft()I+]Landroid/view/View;missing_types +HSPLandroid/view/View;->getPaddingRight()I+]Landroid/view/View;missing_types HSPLandroid/view/View;->getPaddingStart()I HSPLandroid/view/View;->getPaddingTop()I HSPLandroid/view/View;->getParent()Landroid/view/ViewParent; HSPLandroid/view/View;->getPivotX()F HSPLandroid/view/View;->getPivotY()F -HSPLandroid/view/View;->getProjectionReceiver()Landroid/view/View;+]Landroid/view/ViewParent;missing_types]Landroid/view/View;missing_types +HSPLandroid/view/View;->getProjectionReceiver()Landroid/view/View;+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->getRawLayoutDirection()I HSPLandroid/view/View;->getRawTextAlignment()I HSPLandroid/view/View;->getRawTextDirection()I @@ -17593,9 +17409,9 @@ HSPLandroid/view/View;->getScrollX()I HSPLandroid/view/View;->getScrollY()I HSPLandroid/view/View;->getSolidColor()I HSPLandroid/view/View;->getStateListAnimator()Landroid/animation/StateListAnimator; -HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V -HSPLandroid/view/View;->getSuggestedMinimumHeight()I -HSPLandroid/view/View;->getSuggestedMinimumWidth()I +HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->getSuggestedMinimumHeight()I+]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/view/View;->getSuggestedMinimumWidth()I+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/view/View;->getSystemGestureExclusionRects()Ljava/util/List; HSPLandroid/view/View;->getSystemUiVisibility()I HSPLandroid/view/View;->getTag()Ljava/lang/Object; @@ -17608,7 +17424,7 @@ HSPLandroid/view/View;->getTransitionAlpha()F HSPLandroid/view/View;->getTransitionName()Ljava/lang/String; HSPLandroid/view/View;->getTranslationX()F HSPLandroid/view/View;->getTranslationY()F -HSPLandroid/view/View;->getTranslationZ()F +HSPLandroid/view/View;->getTranslationZ()F+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->getVerticalFadingEdgeLength()I HSPLandroid/view/View;->getVerticalScrollbarWidth()I HSPLandroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl; @@ -17625,11 +17441,11 @@ HSPLandroid/view/View;->getWindowVisibility()I HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getX()F HSPLandroid/view/View;->getY()F -HSPLandroid/view/View;->getZ()F +HSPLandroid/view/View;->getZ()F+]Landroid/view/View;megamorphic_types HSPLandroid/view/View;->handleFocusGainInternal(ILandroid/graphics/Rect;)V HSPLandroid/view/View;->handleScrollBarDragging(Landroid/view/MotionEvent;)Z HSPLandroid/view/View;->hasAncestorThatBlocksDescendantFocus()Z -HSPLandroid/view/View;->hasDefaultFocus()Z +HSPLandroid/view/View;->hasDefaultFocus()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->hasExplicitFocusable()Z HSPLandroid/view/View;->hasFocus()Z HSPLandroid/view/View;->hasFocusable()Z @@ -17640,7 +17456,7 @@ HSPLandroid/view/View;->hasListenersForAccessibility()Z HSPLandroid/view/View;->hasNestedScrollingParent()Z HSPLandroid/view/View;->hasOnClickListeners()Z HSPLandroid/view/View;->hasOverlappingRendering()Z -HSPLandroid/view/View;->hasRtlSupport()Z +HSPLandroid/view/View;->hasRtlSupport()Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/Context;missing_types HSPLandroid/view/View;->hasSize()Z HSPLandroid/view/View;->hasTransientState()Z HSPLandroid/view/View;->hasTranslationTransientState()Z @@ -17653,22 +17469,22 @@ HSPLandroid/view/View;->includeForAccessibility()Z HSPLandroid/view/View;->includeForAccessibility(Z)Z HSPLandroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View; HSPLandroid/view/View;->initScrollCache()V -HSPLandroid/view/View;->initialAwakenScrollBars()Z +HSPLandroid/view/View;->initialAwakenScrollBars()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->initializeFadingEdgeInternal(Landroid/content/res/TypedArray;)V HSPLandroid/view/View;->initializeScrollIndicatorsInternal()V -HSPLandroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V -HSPLandroid/view/View;->internalSetPadding(IIII)V -HSPLandroid/view/View;->invalidate()V -HSPLandroid/view/View;->invalidate(IIII)V +HSPLandroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V+]Landroid/view/View;missing_types]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; +HSPLandroid/view/View;->internalSetPadding(IIII)V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->invalidate()V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->invalidate(IIII)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->invalidate(Landroid/graphics/Rect;)V -HSPLandroid/view/View;->invalidate(Z)V -HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/GhostView;Landroid/view/GhostView;]Landroid/view/ViewParent;missing_types]Landroid/graphics/drawable/Drawable;missing_types -HSPLandroid/view/View;->invalidateOutline()V +HSPLandroid/view/View;->invalidate(Z)V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;missing_types]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/view/View;->invalidateOutline()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->invalidateParentCaches()V HSPLandroid/view/View;->invalidateParentIfNeeded()V HSPLandroid/view/View;->invalidateParentIfNeededAndWasQuickRejected()V -HSPLandroid/view/View;->invalidateViewProperty(ZZ)V +HSPLandroid/view/View;->invalidateViewProperty(ZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->isAccessibilityFocused()Z HSPLandroid/view/View;->isAccessibilityFocusedViewOrHost()Z HSPLandroid/view/View;->isAccessibilityPane()Z @@ -17677,7 +17493,7 @@ HSPLandroid/view/View;->isActivated()Z HSPLandroid/view/View;->isAggregatedVisible()Z HSPLandroid/view/View;->isAttachedToWindow()Z HSPLandroid/view/View;->isAutoHandwritingEnabled()Z -HSPLandroid/view/View;->isAutofillable()Z +HSPLandroid/view/View;->isAutofillable()Z+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager; HSPLandroid/view/View;->isAutofilled()Z HSPLandroid/view/View;->isClickable()Z HSPLandroid/view/View;->isContextClickable()Z @@ -17703,73 +17519,71 @@ HSPLandroid/view/View;->isInScrollingContainer()Z HSPLandroid/view/View;->isInTouchMode()Z HSPLandroid/view/View;->isKeyboardNavigationCluster()Z HSPLandroid/view/View;->isLaidOut()Z -HSPLandroid/view/View;->isLayoutDirectionInherited()Z +HSPLandroid/view/View;->isLayoutDirectionInherited()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->isLayoutDirectionResolved()Z -HSPLandroid/view/View;->isLayoutModeOptical(Ljava/lang/Object;)Z +HSPLandroid/view/View;->isLayoutModeOptical(Ljava/lang/Object;)Z+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/View;->isLayoutRequested()Z -HSPLandroid/view/View;->isLayoutRtl()Z -HSPLandroid/view/View;->isLayoutValid()Z +HSPLandroid/view/View;->isLayoutRtl()Z+]Landroid/view/View;missing_types +HSPLandroid/view/View;->isLayoutValid()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->isLongClickable()Z HSPLandroid/view/View;->isNestedScrollingEnabled()Z HSPLandroid/view/View;->isOpaque()Z HSPLandroid/view/View;->isPaddingResolved()Z HSPLandroid/view/View;->isPressed()Z HSPLandroid/view/View;->isProjectionReceiver()Z -HSPLandroid/view/View;->isRelayoutTracingEnabled()Z HSPLandroid/view/View;->isRootNamespace()Z -HSPLandroid/view/View;->isRtlCompatibilityMode()Z +HSPLandroid/view/View;->isRtlCompatibilityMode()Z+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types HSPLandroid/view/View;->isSelected()Z HSPLandroid/view/View;->isShowingLayoutBounds()Z HSPLandroid/view/View;->isShown()Z HSPLandroid/view/View;->isSoundEffectsEnabled()Z HSPLandroid/view/View;->isTemporarilyDetached()Z -HSPLandroid/view/View;->isTextAlignmentInherited()Z +HSPLandroid/view/View;->isTextAlignmentInherited()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->isTextAlignmentResolved()Z -HSPLandroid/view/View;->isTextDirectionInherited()Z +HSPLandroid/view/View;->isTextDirectionInherited()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->isTextDirectionResolved()Z -HSPLandroid/view/View;->isTraversalTracingEnabled()Z HSPLandroid/view/View;->isVerticalFadingEdgeEnabled()Z HSPLandroid/view/View;->isVerticalScrollBarEnabled()Z HSPLandroid/view/View;->isVerticalScrollBarHidden()Z HSPLandroid/view/View;->isViewIdGenerated(I)Z HSPLandroid/view/View;->isVisibleToUser()Z HSPLandroid/view/View;->isVisibleToUser(Landroid/graphics/Rect;)Z+]Landroid/view/View;missing_types -HSPLandroid/view/View;->jumpDrawablesToCurrentState()V -HSPLandroid/view/View;->layout(IIII)V +HSPLandroid/view/View;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator; +HSPLandroid/view/View;->layout(IIII)V+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/View;->makeFrameworkOptionalFitsSystemWindows()V HSPLandroid/view/View;->makeOptionalFitsSystemWindows()V HSPLandroid/view/View;->mapRectFromViewToScreenCoords(Landroid/graphics/RectF;Z)V HSPLandroid/view/View;->mapRectFromViewToWindowCoords(Landroid/graphics/RectF;Z)V -HSPLandroid/view/View;->measure(II)V +HSPLandroid/view/View;->measure(II)V+]Landroid/view/View;missing_types]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray; HSPLandroid/view/View;->mergeDrawableStates([I[I)[I HSPLandroid/view/View;->needGlobalAttributesUpdate(Z)V HSPLandroid/view/View;->needRtlPropertiesResolution()Z -HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeeded(Z)V +HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeeded(Z)V+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types HSPLandroid/view/View;->notifyAutofillManagerOnClick()V -HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V +HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager; HSPLandroid/view/View;->notifyGlobalFocusCleared(Landroid/view/View;)V HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedByParentIfNeeded()V -HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V -HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V +HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; +HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/View;->offsetLeftAndRight(I)V -HSPLandroid/view/View;->offsetTopAndBottom(I)V +HSPLandroid/view/View;->offsetTopAndBottom(I)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->onAnimationEnd()V HSPLandroid/view/View;->onAnimationStart()V HSPLandroid/view/View;->onApplyFrameworkOptionalFitSystemWindows(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; HSPLandroid/view/View;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; -HSPLandroid/view/View;->onAttachedToWindow()V +HSPLandroid/view/View;->onAttachedToWindow()V+]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;]Landroid/view/View;missing_types HSPLandroid/view/View;->onCancelPendingInputEvents()V HSPLandroid/view/View;->onCheckIsTextEditor()Z HSPLandroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V HSPLandroid/view/View;->onConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/view/View;->onCreateDrawableState(I)[I +HSPLandroid/view/View;->onCreateDrawableState(I)[I+]Landroid/view/View;missing_types HSPLandroid/view/View;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; HSPLandroid/view/View;->onDetachedFromWindow()V HSPLandroid/view/View;->onDetachedFromWindowInternal()V+]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->onDraw(Landroid/graphics/Canvas;)V -HSPLandroid/view/View;->onDrawForeground(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->onDrawForeground(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/view/View;->onDrawHorizontalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V -HSPLandroid/view/View;->onDrawScrollBars(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->onDrawScrollBars(Landroid/graphics/Canvas;)V+]Landroid/graphics/Interpolator;Landroid/graphics/Interpolator;]Landroid/view/View;missing_types]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable; HSPLandroid/view/View;->onDrawScrollIndicators(Landroid/graphics/Canvas;)V HSPLandroid/view/View;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V HSPLandroid/view/View;->onFilterTouchEventForSecurity(Landroid/view/MotionEvent;)Z @@ -17785,7 +17599,7 @@ HSPLandroid/view/View;->onMeasure(II)V HSPLandroid/view/View;->onProvideAutofillStructure(Landroid/view/ViewStructure;I)V HSPLandroid/view/View;->onProvideAutofillVirtualStructure(Landroid/view/ViewStructure;I)V HSPLandroid/view/View;->onProvideContentCaptureStructure(Landroid/view/ViewStructure;I)V -HSPLandroid/view/View;->onProvideStructure(Landroid/view/ViewStructure;II)V +HSPLandroid/view/View;->onProvideStructure(Landroid/view/ViewStructure;II)V+]Landroid/view/View;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ViewStructure;Landroid/view/contentcapture/ViewNode$ViewStructureImpl;,Landroid/app/assist/AssistStructure$ViewNodeBuilder;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/view/View;->onResolveDrawables(I)V HSPLandroid/view/View;->onRestoreInstanceState(Landroid/os/Parcelable;)V HSPLandroid/view/View;->onRtlPropertiesChanged(I)V @@ -17796,7 +17610,7 @@ HSPLandroid/view/View;->onSetAlpha(I)Z HSPLandroid/view/View;->onSizeChanged(IIII)V HSPLandroid/view/View;->onStartTemporaryDetach()V HSPLandroid/view/View;->onTouchEvent(Landroid/view/MotionEvent;)Z -HSPLandroid/view/View;->onVisibilityAggregated(Z)V +HSPLandroid/view/View;->onVisibilityAggregated(Z)V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/os/Handler;Landroid/view/View$VisibilityChangeForAutofillHandler;]Landroid/os/Message;Landroid/os/Message; HSPLandroid/view/View;->onVisibilityChanged(Landroid/view/View;I)V HSPLandroid/view/View;->onWindowFocusChanged(Z)V HSPLandroid/view/View;->onWindowSystemUiVisibilityChanged(I)V @@ -17817,20 +17631,20 @@ HSPLandroid/view/View;->post(Ljava/lang/Runnable;)Z HSPLandroid/view/View;->postDelayed(Ljava/lang/Runnable;J)Z HSPLandroid/view/View;->postInvalidate()V HSPLandroid/view/View;->postInvalidateDelayed(J)V -HSPLandroid/view/View;->postInvalidateOnAnimation()V +HSPLandroid/view/View;->postInvalidateOnAnimation()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/View;->postOnAnimation(Ljava/lang/Runnable;)V HSPLandroid/view/View;->postOnAnimationDelayed(Ljava/lang/Runnable;J)V -HSPLandroid/view/View;->postSendViewScrolledAccessibilityEventCallback(II)V +HSPLandroid/view/View;->postSendViewScrolledAccessibilityEventCallback(II)V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/View;->postUpdate(Ljava/lang/Runnable;)V -HSPLandroid/view/View;->rebuildOutline()V +HSPLandroid/view/View;->rebuildOutline()V+]Landroid/view/ViewOutlineProvider;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Outline;Landroid/graphics/Outline; HSPLandroid/view/View;->recomputePadding()V -HSPLandroid/view/View;->refreshDrawableState()V +HSPLandroid/view/View;->refreshDrawableState()V+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->registerPendingFrameMetricsObservers()V -HSPLandroid/view/View;->removeCallbacks(Ljava/lang/Runnable;)Z +HSPLandroid/view/View;->removeCallbacks(Ljava/lang/Runnable;)Z+]Landroid/os/Handler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/View;->removeFrameMetricsListener(Landroid/view/Window$OnFrameMetricsAvailableListener;)V HSPLandroid/view/View;->removeLongPressCallback()V HSPLandroid/view/View;->removeOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V -HSPLandroid/view/View;->removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V +HSPLandroid/view/View;->removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/View;->removePerformClickCallback()V HSPLandroid/view/View;->removeTapCallback()V HSPLandroid/view/View;->removeUnsetPressCallback()V @@ -17840,30 +17654,30 @@ HSPLandroid/view/View;->requestFocus()Z HSPLandroid/view/View;->requestFocus(I)Z HSPLandroid/view/View;->requestFocus(ILandroid/graphics/Rect;)Z HSPLandroid/view/View;->requestFocusNoSearch(ILandroid/graphics/Rect;)Z -HSPLandroid/view/View;->requestLayout()V +HSPLandroid/view/View;->requestLayout()V+]Landroid/view/View;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;)Z HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z HSPLandroid/view/View;->requireViewById(I)Landroid/view/View; -HSPLandroid/view/View;->resetDisplayList()V +HSPLandroid/view/View;->resetDisplayList()V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->resetPressedState()V -HSPLandroid/view/View;->resetResolvedDrawables()V +HSPLandroid/view/View;->resetResolvedDrawables()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->resetResolvedDrawablesInternal()V HSPLandroid/view/View;->resetResolvedLayoutDirection()V -HSPLandroid/view/View;->resetResolvedPadding()V +HSPLandroid/view/View;->resetResolvedPadding()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->resetResolvedPaddingInternal()V HSPLandroid/view/View;->resetResolvedTextAlignment()V HSPLandroid/view/View;->resetResolvedTextDirection()V -HSPLandroid/view/View;->resetRtlProperties()V +HSPLandroid/view/View;->resetRtlProperties()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->resetSubtreeAccessibilityStateChanged()V -HSPLandroid/view/View;->resolveDrawables()V -HSPLandroid/view/View;->resolveLayoutDirection()Z -HSPLandroid/view/View;->resolveLayoutParams()V -HSPLandroid/view/View;->resolvePadding()V -HSPLandroid/view/View;->resolveRtlPropertiesIfNeeded()Z +HSPLandroid/view/View;->resolveDrawables()V+]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/view/View;->resolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types +HSPLandroid/view/View;->resolveLayoutParams()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup$LayoutParams;missing_types +HSPLandroid/view/View;->resolvePadding()V+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types +HSPLandroid/view/View;->resolveRtlPropertiesIfNeeded()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->resolveSize(II)I HSPLandroid/view/View;->resolveSizeAndState(III)I -HSPLandroid/view/View;->resolveTextAlignment()Z -HSPLandroid/view/View;->resolveTextDirection()Z +HSPLandroid/view/View;->resolveTextAlignment()Z+]Landroid/view/View;missing_types +HSPLandroid/view/View;->resolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->restoreHierarchyState(Landroid/util/SparseArray;)V HSPLandroid/view/View;->retrieveExplicitStyle(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V HSPLandroid/view/View;->rootViewRequestFocus()Z @@ -17875,7 +17689,7 @@ HSPLandroid/view/View;->scheduleDrawable(Landroid/graphics/drawable/Drawable;Lja HSPLandroid/view/View;->scrollBy(II)V HSPLandroid/view/View;->scrollTo(II)V HSPLandroid/view/View;->sendAccessibilityEvent(I)V -HSPLandroid/view/View;->sendAccessibilityEventInternal(I)V +HSPLandroid/view/View;->sendAccessibilityEventInternal(I)V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/View;->setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V HSPLandroid/view/View;->setAccessibilityHeading(Z)V HSPLandroid/view/View;->setAccessibilityLiveRegion(I)V @@ -17889,39 +17703,38 @@ HSPLandroid/view/View;->setAlphaNoInvalidation(F)Z HSPLandroid/view/View;->setAnimation(Landroid/view/animation/Animation;)V HSPLandroid/view/View;->setAutofilled(ZZ)V HSPLandroid/view/View;->setBackground(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/view/View;->setBackgroundBounds()V +HSPLandroid/view/View;->setBackgroundBounds()V+]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/view/View;->setBackgroundColor(I)V -HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types -HSPLandroid/view/View;->setBackgroundRenderNodeProperties(Landroid/graphics/RenderNode;)V +HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/view/View;->setBackgroundRenderNodeProperties(Landroid/graphics/RenderNode;)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->setBackgroundResource(I)V HSPLandroid/view/View;->setBackgroundTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/view/View;->setBottom(I)V HSPLandroid/view/View;->setClickable(Z)V HSPLandroid/view/View;->setClipBounds(Landroid/graphics/Rect;)V HSPLandroid/view/View;->setClipToOutline(Z)V -HSPLandroid/view/View;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroid/view/View;->setContentDescription(Ljava/lang/CharSequence;)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;]Landroid/view/View;missing_types]Ljava/lang/Object;Ljava/lang/StringBuilder;,Ljava/lang/String; HSPLandroid/view/View;->setDefaultFocusHighlightEnabled(Z)V HSPLandroid/view/View;->setDetached(Z)V -HSPLandroid/view/View;->setDisplayListProperties(Landroid/graphics/RenderNode;)V +HSPLandroid/view/View;->setDisplayListProperties(Landroid/graphics/RenderNode;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->setDrawingCacheEnabled(Z)V HSPLandroid/view/View;->setElevation(F)V HSPLandroid/view/View;->setEnabled(Z)V HSPLandroid/view/View;->setFitsSystemWindows(Z)V -HSPLandroid/view/View;->setFlags(II)V +HSPLandroid/view/View;->setFlags(II)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->setFocusable(I)V HSPLandroid/view/View;->setFocusable(Z)V HSPLandroid/view/View;->setFocusableInTouchMode(Z)V -HSPLandroid/view/View;->setForceDarkAllowed(Z)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->setForeground(Landroid/graphics/drawable/Drawable;)V HSPLandroid/view/View;->setForegroundGravity(I)V -HSPLandroid/view/View;->setFrame(IIII)Z +HSPLandroid/view/View;->setFrame(IIII)Z+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->setHandwritingArea(Landroid/graphics/Rect;)V HSPLandroid/view/View;->setHapticFeedbackEnabled(Z)V HSPLandroid/view/View;->setHasTransientState(Z)V HSPLandroid/view/View;->setHorizontalFadingEdgeEnabled(Z)V HSPLandroid/view/View;->setHorizontalScrollBarEnabled(Z)V HSPLandroid/view/View;->setId(I)V -HSPLandroid/view/View;->setImportantForAccessibility(I)V +HSPLandroid/view/View;->setImportantForAccessibility(I)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->setImportantForAutofill(I)V HSPLandroid/view/View;->setImportantForContentCapture(I)V HSPLandroid/view/View;->setIsRootNamespace(Z)V @@ -17931,7 +17744,7 @@ HSPLandroid/view/View;->setKeyedTag(ILjava/lang/Object;)V HSPLandroid/view/View;->setLayerPaint(Landroid/graphics/Paint;)V HSPLandroid/view/View;->setLayerType(ILandroid/graphics/Paint;)V HSPLandroid/view/View;->setLayoutDirection(I)V -HSPLandroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/View;->setLeft(I)V HSPLandroid/view/View;->setLeftTopRightBottom(IIII)V HSPLandroid/view/View;->setLongClickable(Z)V @@ -17956,7 +17769,7 @@ HSPLandroid/view/View;->setOutlineProvider(Landroid/view/ViewOutlineProvider;)V HSPLandroid/view/View;->setOutlineProviderFromAttribute(I)V HSPLandroid/view/View;->setOutlineSpotShadowColor(I)V HSPLandroid/view/View;->setOverScrollMode(I)V -HSPLandroid/view/View;->setPadding(IIII)V +HSPLandroid/view/View;->setPadding(IIII)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->setPaddingRelative(IIII)V HSPLandroid/view/View;->setPivotX(F)V HSPLandroid/view/View;->setPivotY(F)V @@ -17985,7 +17798,7 @@ HSPLandroid/view/View;->setTag(Ljava/lang/Object;)V HSPLandroid/view/View;->setTagInternal(ILjava/lang/Object;)V HSPLandroid/view/View;->setTextAlignment(I)V HSPLandroid/view/View;->setTextDirection(I)V -HSPLandroid/view/View;->setTooltipText(Ljava/lang/CharSequence;)V +HSPLandroid/view/View;->setTooltipText(Ljava/lang/CharSequence;)V+]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration; HSPLandroid/view/View;->setTop(I)V HSPLandroid/view/View;->setTouchDelegate(Landroid/view/TouchDelegate;)V HSPLandroid/view/View;->setTransitionAlpha(F)V @@ -17995,13 +17808,13 @@ HSPLandroid/view/View;->setTranslationX(F)V HSPLandroid/view/View;->setTranslationY(F)V HSPLandroid/view/View;->setTranslationZ(F)V HSPLandroid/view/View;->setVerticalScrollBarEnabled(Z)V -HSPLandroid/view/View;->setVisibility(I)V +HSPLandroid/view/View;->setVisibility(I)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->setWillNotDraw(Z)V HSPLandroid/view/View;->setWindowInsetsAnimationCallback(Landroid/view/WindowInsetsAnimation$Callback;)V HSPLandroid/view/View;->setX(F)V HSPLandroid/view/View;->setY(F)V -HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z -HSPLandroid/view/View;->sizeChange(IIII)V +HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/Configuration;Landroid/content/res/Configuration; +HSPLandroid/view/View;->sizeChange(IIII)V+]Landroid/view/View;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewGroup;missing_types HSPLandroid/view/View;->skipInvalidate()Z+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V HSPLandroid/view/View;->startNestedScroll(I)Z @@ -18013,7 +17826,7 @@ HSPLandroid/view/View;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V+]Lan HSPLandroid/view/View;->unFocus(Landroid/view/View;)V HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V -HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;+]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;+]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/View;missing_types]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->updateFocusedInCluster(Landroid/view/View;I)V HSPLandroid/view/View;->updateHandwritingArea()V HSPLandroid/view/View;->updateKeepClearRects()V @@ -18029,7 +17842,7 @@ HSPLandroid/view/ViewAnimationHostBridge;->isAttached()Z HSPLandroid/view/ViewAnimationHostBridge;->registerAnimatingRenderNode(Landroid/graphics/RenderNode;)V HSPLandroid/view/ViewAnimationHostBridge;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V HSPLandroid/view/ViewConfiguration;->(Landroid/content/Context;)V -HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration; +HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;missing_types HSPLandroid/view/ViewConfiguration;->getDoubleTapTimeout()I HSPLandroid/view/ViewConfiguration;->getLongPressTimeout()I HSPLandroid/view/ViewConfiguration;->getPressedStateDuration()I @@ -18076,9 +17889,9 @@ HSPLandroid/view/ViewGroup$LayoutParams;->(II)V HSPLandroid/view/ViewGroup$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/ViewGroup$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/view/ViewGroup$LayoutParams;->resolveLayoutDirection(I)V -HSPLandroid/view/ViewGroup$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V +HSPLandroid/view/ViewGroup$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/ViewGroup$MarginLayoutParams;->(II)V -HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/view/ViewGroup$MarginLayoutParams;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/view/ViewGroup$MarginLayoutParams;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/view/ViewGroup$MarginLayoutParams;)V HSPLandroid/view/ViewGroup$MarginLayoutParams;->doResolveMargins()V @@ -18086,7 +17899,7 @@ HSPLandroid/view/ViewGroup$MarginLayoutParams;->getLayoutDirection()I HSPLandroid/view/ViewGroup$MarginLayoutParams;->getMarginEnd()I HSPLandroid/view/ViewGroup$MarginLayoutParams;->getMarginStart()I HSPLandroid/view/ViewGroup$MarginLayoutParams;->isMarginRelative()Z -HSPLandroid/view/ViewGroup$MarginLayoutParams;->resolveLayoutDirection(I)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->resolveLayoutDirection(I)V+]Landroid/view/ViewGroup$MarginLayoutParams;missing_types HSPLandroid/view/ViewGroup$MarginLayoutParams;->setLayoutDirection(I)V HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginEnd(I)V HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginStart(I)V @@ -18102,14 +17915,14 @@ HSPLandroid/view/ViewGroup;->addFocusables(Ljava/util/ArrayList;II)V HSPLandroid/view/ViewGroup;->addInArray(Landroid/view/View;I)V HSPLandroid/view/ViewGroup;->addTouchTarget(Landroid/view/View;I)Landroid/view/ViewGroup$TouchTarget; HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;)V -HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;I)V +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;I)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;II)V -HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V -HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)Z HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z -HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types -HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/animation/LayoutTransition;Landroid/animation/LayoutTransition; +HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->bringChildToFront(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->buildOrderedChildList()Ljava/util/ArrayList; HSPLandroid/view/ViewGroup;->buildTouchDispatchChildList()Ljava/util/ArrayList; @@ -18126,20 +17939,20 @@ HSPLandroid/view/ViewGroup;->clearDisappearingChildren()V HSPLandroid/view/ViewGroup;->clearFocus()V HSPLandroid/view/ViewGroup;->clearFocusedInCluster()V HSPLandroid/view/ViewGroup;->clearTouchTargets()V -HSPLandroid/view/ViewGroup;->destroyHardwareResources()V +HSPLandroid/view/ViewGroup;->destroyHardwareResources()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->detachAllViewsFromParent()V HSPLandroid/view/ViewGroup;->detachViewFromParent(I)V HSPLandroid/view/ViewGroup;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; -HSPLandroid/view/ViewGroup;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/ViewGroup;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->dispatchCancelPendingInputEvents()V -HSPLandroid/view/ViewGroup;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/ViewGroup;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V -HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/view/ViewGroup;->dispatchDrawableHotspotChanged(FF)V HSPLandroid/view/ViewGroup;->dispatchFinishTemporaryDetach()V HSPLandroid/view/ViewGroup;->dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V -HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V+]Landroid/view/View;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V+]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewGroup;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z HSPLandroid/view/ViewGroup;->dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z HSPLandroid/view/ViewGroup;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V @@ -18153,19 +17966,18 @@ HSPLandroid/view/ViewGroup;->dispatchSetSelected(Z)V HSPLandroid/view/ViewGroup;->dispatchStartTemporaryDetach()V HSPLandroid/view/ViewGroup;->dispatchSystemUiVisibilityChanged(I)V HSPLandroid/view/ViewGroup;->dispatchThawSelfOnly(Landroid/util/SparseArray;)V -HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/View;megamorphic_types]Landroid/view/ViewGroup;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/MotionEvent;Landroid/view/MotionEvent; +HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/View;megamorphic_types]Landroid/view/ViewGroup;megamorphic_types]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/ViewGroup$TouchTarget;Landroid/view/ViewGroup$TouchTarget; HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z+]Landroid/view/View;missing_types]Landroid/view/MotionEvent;Landroid/view/MotionEvent; HSPLandroid/view/ViewGroup;->dispatchUnhandledKeyEvent(Landroid/view/KeyEvent;)Landroid/view/View; -HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->dispatchViewRemoved(Landroid/view/View;)V -HSPLandroid/view/ViewGroup;->dispatchVisibilityAggregated(Z)Z -HSPLandroid/view/ViewGroup;->dispatchVisibilityChanged(Landroid/view/View;I)V -HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V +HSPLandroid/view/ViewGroup;->dispatchVisibilityAggregated(Z)Z+]Landroid/view/View;missing_types +HSPLandroid/view/ViewGroup;->dispatchVisibilityChanged(Landroid/view/View;I)V+]Landroid/view/View;missing_types +HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->dispatchWindowInsetsAnimationEnd(Landroid/view/WindowInsetsAnimation;)V -HSPLandroid/view/ViewGroup;->dispatchWindowInsetsAnimationProgress(Landroid/view/WindowInsets;Ljava/util/List;)Landroid/view/WindowInsets;+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->dispatchWindowSystemUiVisiblityChanged(I)V -HSPLandroid/view/ViewGroup;->dispatchWindowVisibilityChanged(I)V -HSPLandroid/view/ViewGroup;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z +HSPLandroid/view/ViewGroup;->dispatchWindowVisibilityChanged(I)V+]Landroid/view/View;missing_types +HSPLandroid/view/ViewGroup;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->drawableStateChanged()V HSPLandroid/view/ViewGroup;->endViewTransition(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->exitHoverTargets()V @@ -18179,18 +17991,18 @@ HSPLandroid/view/ViewGroup;->findViewWithTagTraversal(Ljava/lang/Object;)Landroi HSPLandroid/view/ViewGroup;->finishAnimatingView(Landroid/view/View;Landroid/view/animation/Animation;)V HSPLandroid/view/ViewGroup;->focusSearch(Landroid/view/View;I)Landroid/view/View; HSPLandroid/view/ViewGroup;->focusableViewAvailable(Landroid/view/View;)V -HSPLandroid/view/ViewGroup;->gatherTransparentRegion(Landroid/graphics/Region;)Z +HSPLandroid/view/ViewGroup;->gatherTransparentRegion(Landroid/graphics/Region;)Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewGroup;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/view/ViewGroup;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; HSPLandroid/view/ViewGroup;->getAccessibilityClassName()Ljava/lang/CharSequence; HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedIndex(IIZ)I -HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedView(Ljava/util/ArrayList;[Landroid/view/View;I)Landroid/view/View; +HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedView(Ljava/util/ArrayList;[Landroid/view/View;I)Landroid/view/View;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewGroup;->getChildAt(I)Landroid/view/View; HSPLandroid/view/ViewGroup;->getChildCount()I HSPLandroid/view/ViewGroup;->getChildMeasureSpec(III)I HSPLandroid/view/ViewGroup;->getChildTransformation()Landroid/view/animation/Transformation; HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z -HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/view/View;missing_types]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/ViewGroup;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;Landroid/view/ViewRootImpl; +HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;Landroid/view/ViewRootImpl;]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/view/ViewGroup;->getChildrenForAutofill(I)Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture; HSPLandroid/view/ViewGroup;->getChildrenForContentCapture()Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture; HSPLandroid/view/ViewGroup;->getClipChildren()Z @@ -18207,7 +18019,7 @@ HSPLandroid/view/ViewGroup;->getTouchTarget(Landroid/view/View;)Landroid/view/Vi HSPLandroid/view/ViewGroup;->getTouchscreenBlocksFocus()Z HSPLandroid/view/ViewGroup;->handleFocusGainInternal(ILandroid/graphics/Rect;)V HSPLandroid/view/ViewGroup;->hasBooleanFlag(I)Z -HSPLandroid/view/ViewGroup;->hasChildWithZ()Z +HSPLandroid/view/ViewGroup;->hasChildWithZ()Z+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->hasDefaultFocus()Z HSPLandroid/view/ViewGroup;->hasFocus()Z HSPLandroid/view/ViewGroup;->hasFocusable(ZZ)Z @@ -18216,25 +18028,25 @@ HSPLandroid/view/ViewGroup;->hasTransientState()Z HSPLandroid/view/ViewGroup;->hasUnhandledKeyListener()Z HSPLandroid/view/ViewGroup;->hasWindowInsetsAnimationCallback()Z HSPLandroid/view/ViewGroup;->indexOfChild(Landroid/view/View;)I -HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V -HSPLandroid/view/ViewGroup;->initViewGroup()V +HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/view/ViewGroup;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/Context;missing_types +HSPLandroid/view/ViewGroup;->initViewGroup()V+]Landroid/view/ViewGroup;missing_types]Landroid/content/Context;missing_types HSPLandroid/view/ViewGroup;->internalSetPadding(IIII)V -HSPLandroid/view/ViewGroup;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroid/view/ViewGroup;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent; HSPLandroid/view/ViewGroup;->isChildrenDrawingOrderEnabled()Z HSPLandroid/view/ViewGroup;->isLayoutModeOptical()Z HSPLandroid/view/ViewGroup;->isLayoutSuppressed()Z HSPLandroid/view/ViewGroup;->isTransformedTouchPointInView(FFLandroid/view/View;Landroid/graphics/PointF;)Z HSPLandroid/view/ViewGroup;->isViewTransitioning(Landroid/view/View;)Z -HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V -HSPLandroid/view/ViewGroup;->layout(IIII)V +HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V+]Landroid/view/View;missing_types +HSPLandroid/view/ViewGroup;->layout(IIII)V+]Landroid/animation/LayoutTransition;Landroid/animation/LayoutTransition; HSPLandroid/view/ViewGroup;->makeFrameworkOptionalFitsSystemWindows()V HSPLandroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V HSPLandroid/view/ViewGroup;->measureChild(Landroid/view/View;II)V -HSPLandroid/view/ViewGroup;->measureChildWithMargins(Landroid/view/View;IIII)V +HSPLandroid/view/ViewGroup;->measureChildWithMargins(Landroid/view/View;IIII)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->measureChildren(II)V HSPLandroid/view/ViewGroup;->newDispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; -HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V +HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/ViewGroup;->offsetDescendantRectToMyCoords(Landroid/view/View;Landroid/graphics/Rect;)V HSPLandroid/view/ViewGroup;->offsetRectBetweenParentAndChild(Landroid/view/View;Landroid/graphics/Rect;ZZ)V HSPLandroid/view/ViewGroup;->onAttachedToWindow()V @@ -18262,7 +18074,7 @@ HSPLandroid/view/ViewGroup;->removePointersFromTouchTargets(I)V HSPLandroid/view/ViewGroup;->removeView(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->removeViewAt(I)V HSPLandroid/view/ViewGroup;->removeViewInLayout(Landroid/view/View;)V -HSPLandroid/view/ViewGroup;->removeViewInternal(ILandroid/view/View;)V +HSPLandroid/view/ViewGroup;->removeViewInternal(ILandroid/view/View;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->removeViewInternal(Landroid/view/View;)Z HSPLandroid/view/ViewGroup;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V HSPLandroid/view/ViewGroup;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z @@ -18271,20 +18083,20 @@ HSPLandroid/view/ViewGroup;->requestFocus(ILandroid/graphics/Rect;)Z HSPLandroid/view/ViewGroup;->requestTransitionStart(Landroid/animation/LayoutTransition;)V HSPLandroid/view/ViewGroup;->requestTransparentRegion(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->resetCancelNextUpFlag(Landroid/view/View;)Z -HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V -HSPLandroid/view/ViewGroup;->resetResolvedLayoutDirection()V -HSPLandroid/view/ViewGroup;->resetResolvedPadding()V -HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V -HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V -HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V +HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetResolvedLayoutDirection()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetResolvedPadding()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->resetTouchState()V -HSPLandroid/view/ViewGroup;->resolveDrawables()V -HSPLandroid/view/ViewGroup;->resolveLayoutDirection()Z -HSPLandroid/view/ViewGroup;->resolveLayoutParams()V -HSPLandroid/view/ViewGroup;->resolvePadding()V -HSPLandroid/view/ViewGroup;->resolveRtlPropertiesIfNeeded()Z -HSPLandroid/view/ViewGroup;->resolveTextAlignment()Z -HSPLandroid/view/ViewGroup;->resolveTextDirection()Z +HSPLandroid/view/ViewGroup;->resolveDrawables()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveLayoutParams()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolvePadding()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveRtlPropertiesIfNeeded()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveTextAlignment()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->restoreDefaultFocus()Z HSPLandroid/view/ViewGroup;->setAddStatesFromChildren(Z)V HSPLandroid/view/ViewGroup;->setAlwaysDrawnWithCacheEnabled(Z)V @@ -18298,18 +18110,17 @@ HSPLandroid/view/ViewGroup;->setLayoutTransition(Landroid/animation/LayoutTransi HSPLandroid/view/ViewGroup;->setMotionEventSplittingEnabled(Z)V HSPLandroid/view/ViewGroup;->setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V HSPLandroid/view/ViewGroup;->setTouchscreenBlocksFocus(Z)V -HSPLandroid/view/ViewGroup;->setWindowInsetsAnimationCallback(Landroid/view/WindowInsetsAnimation$Callback;)V HSPLandroid/view/ViewGroup;->shouldBlockFocusForTouchscreen()Z HSPLandroid/view/ViewGroup;->shouldDelayChildPressedState()Z HSPLandroid/view/ViewGroup;->startViewTransition(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->suppressLayout(Z)V -HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V+]Landroid/content/Context;missing_types HSPLandroid/view/ViewGroup;->transformPointToViewLocal([FLandroid/view/View;)V HSPLandroid/view/ViewGroup;->unFocus(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->updateLocalSystemUiVisibility(II)Z HSPLandroid/view/ViewGroupOverlay;->add(Landroid/view/View;)V HSPLandroid/view/ViewGroupOverlay;->remove(Landroid/view/View;)V -HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V +HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V+]Landroid/view/View;missing_types]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/view/ViewOutlineProvider$2;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V HSPLandroid/view/ViewOutlineProvider;->()V HSPLandroid/view/ViewOverlay$OverlayViewGroup;->(Landroid/content/Context;Landroid/view/View;)V @@ -18335,7 +18146,7 @@ HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->(Landroid/vi HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationCancel(Landroid/animation/Animator;)V HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationEnd(Landroid/animation/Animator;)V HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationStart(Landroid/animation/Animator;)V -HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V +HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/view/View;Landroid/widget/LinearLayout;,Landroid/widget/FrameLayout;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator; HSPLandroid/view/ViewPropertyAnimator$NameValuesHolder;->(IFF)V HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;->(ILjava/util/ArrayList;)V HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;->cancel(I)Z @@ -18343,7 +18154,7 @@ HSPLandroid/view/ViewPropertyAnimator;->(Landroid/view/View;)V HSPLandroid/view/ViewPropertyAnimator;->alpha(F)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->animateProperty(IF)V HSPLandroid/view/ViewPropertyAnimator;->animatePropertyBy(IFF)V -HSPLandroid/view/ViewPropertyAnimator;->cancel()V +HSPLandroid/view/ViewPropertyAnimator;->cancel()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewPropertyAnimator;->getValue(I)F HSPLandroid/view/ViewPropertyAnimator;->scaleX(F)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->scaleY(F)Landroid/view/ViewPropertyAnimator; @@ -18353,7 +18164,7 @@ HSPLandroid/view/ViewPropertyAnimator;->setListener(Landroid/animation/Animator$ HSPLandroid/view/ViewPropertyAnimator;->setStartDelay(J)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->setValue(IF)V HSPLandroid/view/ViewPropertyAnimator;->start()V -HSPLandroid/view/ViewPropertyAnimator;->startAnimation()V +HSPLandroid/view/ViewPropertyAnimator;->startAnimation()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator; HSPLandroid/view/ViewPropertyAnimator;->translationX(F)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->translationY(F)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator; @@ -18403,19 +18214,19 @@ HSPLandroid/view/ViewRootImpl$InputMetricsListener;->(Landroid/view/ViewRo HSPLandroid/view/ViewRootImpl$InputMetricsListener;->onFrameMetricsAvailable(I)V HSPLandroid/view/ViewRootImpl$InputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V HSPLandroid/view/ViewRootImpl$InputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V -HSPLandroid/view/ViewRootImpl$InputStage;->deliver(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$InputStage;->deliver(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Landroid/view/ViewRootImpl$InputStage;Landroid/view/ViewRootImpl$NativePostImeInputStage;,Landroid/view/ViewRootImpl$ViewPostImeInputStage;,Landroid/view/ViewRootImpl$EarlyPostImeInputStage;,Landroid/view/ViewRootImpl$SyntheticInputStage; HSPLandroid/view/ViewRootImpl$InputStage;->finish(Landroid/view/ViewRootImpl$QueuedInputEvent;Z)V HSPLandroid/view/ViewRootImpl$InputStage;->forward(Landroid/view/ViewRootImpl$QueuedInputEvent;)V HSPLandroid/view/ViewRootImpl$InputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V HSPLandroid/view/ViewRootImpl$InputStage;->onDetachedFromWindow()V HSPLandroid/view/ViewRootImpl$InputStage;->onWindowFocusChanged(Z)V -HSPLandroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z -HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V +HSPLandroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z+]Landroid/view/InputEvent;Landroid/view/MotionEvent; +HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/InputEvent;Landroid/view/MotionEvent; HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V -HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V -HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V -HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V+]Landroid/view/Choreographer;Landroid/view/Choreographer; +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I HSPLandroid/view/ViewRootImpl$NativePreImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V @@ -18439,7 +18250,7 @@ HSPLandroid/view/ViewRootImpl$SyntheticTrackballHandler;->(Landroid/view/V HSPLandroid/view/ViewRootImpl$SystemUiVisibilityInfo;->()V HSPLandroid/view/ViewRootImpl$TrackballAxis;->()V HSPLandroid/view/ViewRootImpl$TraversalRunnable;->(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$TraversalRunnable;->run()V +HSPLandroid/view/ViewRootImpl$TraversalRunnable;->run()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->()V HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->(Landroid/view/ViewRootImpl$UnhandledKeyManager-IA;)V HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->dispatch(Landroid/view/View;Landroid/view/KeyEvent;)Z @@ -18469,7 +18280,7 @@ HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->(Landroid/view/Vi HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onBatchedInputEventPending(I)V HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onFocusEvent(Z)V -HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V +HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/InputEventCompatProcessor;Landroid/view/InputEventCompatProcessor;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ViewRootImpl;->$r8$lambda$cb26dxdYlLa0pFTTRhgboKYoMu0(Landroid/view/ViewRootImpl;)V HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmBlastBufferQueue(Landroid/view/ViewRootImpl;)Landroid/graphics/BLASTBufferQueue; HSPLandroid/view/ViewRootImpl;->-$$Nest$fputmProfileRendering(Landroid/view/ViewRootImpl;Z)V @@ -18479,24 +18290,24 @@ HSPLandroid/view/ViewRootImpl;->-$$Nest$mprofileRendering(Landroid/view/ViewRoot HSPLandroid/view/ViewRootImpl;->(Landroid/content/Context;Landroid/view/Display;)V HSPLandroid/view/ViewRootImpl;->(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;Landroid/view/WindowLayout;)V HSPLandroid/view/ViewRootImpl;->addConfigCallback(Landroid/view/ViewRootImpl$ConfigChangedCallback;)V -HSPLandroid/view/ViewRootImpl;->addFrameCommitCallbackIfNeeded()V +HSPLandroid/view/ViewRootImpl;->addFrameCommitCallbackIfNeeded()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ViewRootImpl;->addSurfaceChangedCallback(Landroid/view/ViewRootImpl$SurfaceChangedCallback;)V HSPLandroid/view/ViewRootImpl;->addWindowCallbacks(Landroid/view/WindowCallbacks;)V HSPLandroid/view/ViewRootImpl;->adjustLayoutParamsForCompatibility(Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/ViewRootImpl;->applyKeepScreenOnFlag(Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/ViewRootImpl;->applyTransactionOnDraw(Landroid/view/SurfaceControl$Transaction;)Z HSPLandroid/view/ViewRootImpl;->canResolveTextDirection()Z -HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V+]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable; HSPLandroid/view/ViewRootImpl;->checkForLeavingTouchModeAndConsume(Landroid/view/KeyEvent;)Z HSPLandroid/view/ViewRootImpl;->checkThread()V HSPLandroid/view/ViewRootImpl;->childDrawableStateChanged(Landroid/view/View;)V HSPLandroid/view/ViewRootImpl;->childHasTransientStateChanged(Landroid/view/View;Z)V HSPLandroid/view/ViewRootImpl;->clearChildFocus(Landroid/view/View;)V HSPLandroid/view/ViewRootImpl;->clearLowProfileModeIfNeeded(IZ)V -HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z +HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z+]Landroid/view/View;Lcom/android/internal/policy/DecorView; HSPLandroid/view/ViewRootImpl;->controlInsetsForCompatibility(Landroid/view/WindowManager$LayoutParams;)V -HSPLandroid/view/ViewRootImpl;->createSyncIfNeeded()V -HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl;->createSyncIfNeeded()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup; +HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Landroid/view/ViewRootImpl$InputStage;Landroid/view/ViewRootImpl$EarlyPostImeInputStage;]Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/view/ViewRootImpl;->destroyHardwareRenderer()V HSPLandroid/view/ViewRootImpl;->destroyHardwareResources()V HSPLandroid/view/ViewRootImpl;->destroySurface()V @@ -18510,24 +18321,24 @@ HSPLandroid/view/ViewRootImpl;->dispatchDispatchSystemUiVisibilityChanged()V HSPLandroid/view/ViewRootImpl;->dispatchFocusEvent(ZZ)V HSPLandroid/view/ViewRootImpl;->dispatchInsetsControlChanged(Landroid/view/InsetsState;[Landroid/view/InsetsSourceControl;)V HSPLandroid/view/ViewRootImpl;->dispatchInvalidateDelayed(Landroid/view/View;J)V -HSPLandroid/view/ViewRootImpl;->dispatchInvalidateOnAnimation(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->dispatchInvalidateOnAnimation(Landroid/view/View;)V+]Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable; HSPLandroid/view/ViewRootImpl;->dispatchMoved(II)V HSPLandroid/view/ViewRootImpl;->dispatchResized(Landroid/window/ClientWindowFrames;ZLandroid/util/MergedConfiguration;Landroid/view/InsetsState;ZZIIZ)V HSPLandroid/view/ViewRootImpl;->doConsumeBatchedInput(J)Z HSPLandroid/view/ViewRootImpl;->doDie()V HSPLandroid/view/ViewRootImpl;->doProcessInputEvents()V+]Landroid/view/InputEventAssigner;Landroid/view/InputEventAssigner;]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo; -HSPLandroid/view/ViewRootImpl;->doTraversal()V +HSPLandroid/view/ViewRootImpl;->doTraversal()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/os/MessageQueue;Landroid/os/MessageQueue; HSPLandroid/view/ViewRootImpl;->drawAccessibilityFocusedDrawableIfNeeded(Landroid/graphics/Canvas;)V HSPLandroid/view/ViewRootImpl;->drawSoftware(Landroid/view/Surface;Landroid/view/View$AttachInfo;IIZLandroid/graphics/Rect;Landroid/graphics/Rect;)Z HSPLandroid/view/ViewRootImpl;->enableHardwareAcceleration(Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/ViewRootImpl;->endDragResizing()V HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;)V -HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)V +HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)V+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/MotionEvent;Landroid/view/MotionEvent; HSPLandroid/view/ViewRootImpl;->ensureTouchMode(Z)Z HSPLandroid/view/ViewRootImpl;->ensureTouchModeLocally(Z)Z HSPLandroid/view/ViewRootImpl;->enterTouchMode()Z HSPLandroid/view/ViewRootImpl;->findOnBackInvokedDispatcherForChild(Landroid/view/View;Landroid/view/View;)Landroid/window/OnBackInvokedDispatcher; -HSPLandroid/view/ViewRootImpl;->finishInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl;->finishInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Landroid/view/InputEventReceiver;Landroid/view/ViewRootImpl$WindowInputEventReceiver;]Landroid/view/InputEvent;Landroid/view/MotionEvent; HSPLandroid/view/ViewRootImpl;->fireAccessibilityFocusEventIfHasFocusedNode()V HSPLandroid/view/ViewRootImpl;->focusableViewAvailable(Landroid/view/View;)V HSPLandroid/view/ViewRootImpl;->forceLayout(Landroid/view/View;)V @@ -18539,9 +18350,9 @@ HSPLandroid/view/ViewRootImpl;->getBufferTransformHint()I HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z HSPLandroid/view/ViewRootImpl;->getCompatWindowConfiguration()Landroid/app/WindowConfiguration; HSPLandroid/view/ViewRootImpl;->getConfiguration()Landroid/content/res/Configuration; -HSPLandroid/view/ViewRootImpl;->getDisplayId()I +HSPLandroid/view/ViewRootImpl;->getDisplayId()I+]Landroid/view/Display;Landroid/view/Display; HSPLandroid/view/ViewRootImpl;->getHandwritingInitiator()Landroid/view/HandwritingInitiator; -HSPLandroid/view/ViewRootImpl;->getHostVisibility()I +HSPLandroid/view/ViewRootImpl;->getHostVisibility()I+]Landroid/view/View;Lcom/android/internal/policy/DecorView; HSPLandroid/view/ViewRootImpl;->getImeFocusController()Landroid/view/ImeFocusController; HSPLandroid/view/ViewRootImpl;->getImpliedSystemUiVisibility(Landroid/view/WindowManager$LayoutParams;)I HSPLandroid/view/ViewRootImpl;->getInsetsController()Landroid/view/InsetsController; @@ -18550,12 +18361,12 @@ HSPLandroid/view/ViewRootImpl;->getOnBackInvokedDispatcher()Landroid/window/Wind HSPLandroid/view/ViewRootImpl;->getOrCreateSurfaceSyncGroup()Landroid/window/SurfaceSyncGroup; HSPLandroid/view/ViewRootImpl;->getParent()Landroid/view/ViewParent; HSPLandroid/view/ViewRootImpl;->getRootMeasureSpec(III)I -HSPLandroid/view/ViewRootImpl;->getRunQueue()Landroid/view/HandlerActionQueue; +HSPLandroid/view/ViewRootImpl;->getRunQueue()Landroid/view/HandlerActionQueue;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/view/ViewRootImpl;->getSurfaceControl()Landroid/view/SurfaceControl; HSPLandroid/view/ViewRootImpl;->getSurfaceSequenceId()I HSPLandroid/view/ViewRootImpl;->getTextDirection()I HSPLandroid/view/ViewRootImpl;->getTitle()Ljava/lang/CharSequence; -HSPLandroid/view/ViewRootImpl;->getUpdatedFrameInfo()Landroid/graphics/FrameInfo; +HSPLandroid/view/ViewRootImpl;->getUpdatedFrameInfo()Landroid/graphics/FrameInfo;+]Landroid/view/InputEventAssigner;Landroid/view/InputEventAssigner;]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo; HSPLandroid/view/ViewRootImpl;->getValidLayoutRequesters(Ljava/util/ArrayList;Z)Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl;->getView()Landroid/view/View; HSPLandroid/view/ViewRootImpl;->getViewBoundsSandboxingEnabled()Z @@ -18574,7 +18385,7 @@ HSPLandroid/view/ViewRootImpl;->invalidateChildInParent([ILandroid/graphics/Rect HSPLandroid/view/ViewRootImpl;->invalidateRectOnScreen(Landroid/graphics/Rect;)V HSPLandroid/view/ViewRootImpl;->isContentCaptureEnabled()Z HSPLandroid/view/ViewRootImpl;->isContentCaptureReallyEnabled()Z -HSPLandroid/view/ViewRootImpl;->isHardwareEnabled()Z +HSPLandroid/view/ViewRootImpl;->isHardwareEnabled()Z+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer; HSPLandroid/view/ViewRootImpl;->isInLayout()Z HSPLandroid/view/ViewRootImpl;->isInTouchMode()Z HSPLandroid/view/ViewRootImpl;->isInWMSRequestedSync()Z @@ -18592,10 +18403,10 @@ HSPLandroid/view/ViewRootImpl;->maybeHandleWindowMove(Landroid/graphics/Rect;)V HSPLandroid/view/ViewRootImpl;->maybeUpdateTooltip(Landroid/view/MotionEvent;)V HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;IIZ)Z HSPLandroid/view/ViewRootImpl;->mergeWithNextTransaction(Landroid/view/SurfaceControl$Transaction;J)V -HSPLandroid/view/ViewRootImpl;->notifyContentCaptureEvents()V -HSPLandroid/view/ViewRootImpl;->notifyDrawStarted(Z)V +HSPLandroid/view/ViewRootImpl;->notifyContentCaptureEvents()V+]Landroid/view/View;missing_types]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/contentcapture/ContentCaptureManager;Landroid/view/contentcapture/ContentCaptureManager;]Landroid/view/contentcapture/ContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/contentcapture/MainContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; +HSPLandroid/view/ViewRootImpl;->notifyDrawStarted(Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl;->notifyInsetsChanged()V -HSPLandroid/view/ViewRootImpl;->notifyRendererOfFramePending()V +HSPLandroid/view/ViewRootImpl;->notifyRendererOfFramePending()V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer; HSPLandroid/view/ViewRootImpl;->notifySurfaceCreated(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/view/ViewRootImpl;->notifySurfaceDestroyed()V HSPLandroid/view/ViewRootImpl;->obtainQueuedInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;I)Landroid/view/ViewRootImpl$QueuedInputEvent; @@ -18610,7 +18421,7 @@ HSPLandroid/view/ViewRootImpl;->performContentCaptureInitialReport()V HSPLandroid/view/ViewRootImpl;->performHapticFeedback(IZ)Z HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V HSPLandroid/view/ViewRootImpl;->performMeasure(II)V -HSPLandroid/view/ViewRootImpl;->performTraversals()V +HSPLandroid/view/ViewRootImpl;->performTraversals()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/View;missing_types]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/content/Context;missing_types]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/Surface;Landroid/view/Surface;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/window/WindowOnBackInvokedDispatcher;Landroid/window/WindowOnBackInvokedDispatcher;]Landroid/view/Display;Landroid/view/Display;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/ViewRootImpl;->playSoundEffect(I)V HSPLandroid/view/ViewRootImpl;->pokeDrawLockIfNeeded()V HSPLandroid/view/ViewRootImpl;->prepareSurfaces()V @@ -18634,9 +18445,9 @@ HSPLandroid/view/ViewRootImpl;->requestChildRectangleOnScreen(Landroid/view/View HSPLandroid/view/ViewRootImpl;->requestDisallowInterceptTouchEvent(Z)V HSPLandroid/view/ViewRootImpl;->requestFitSystemWindows()V HSPLandroid/view/ViewRootImpl;->requestLayout()V -HSPLandroid/view/ViewRootImpl;->requestLayoutDuringLayout(Landroid/view/View;)Z +HSPLandroid/view/ViewRootImpl;->requestLayoutDuringLayout(Landroid/view/View;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl;->requestTransparentRegion(Landroid/view/View;)V -HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V +HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/ViewRootImpl;->scrollToRectOrFocus(Landroid/graphics/Rect;Z)Z HSPLandroid/view/ViewRootImpl;->sendBackKeyEvent(I)V @@ -18645,7 +18456,7 @@ HSPLandroid/view/ViewRootImpl;->setAccessibilityWindowAttributesIfNeeded()V HSPLandroid/view/ViewRootImpl;->setActivityConfigCallback(Landroid/view/ViewRootImpl$ActivityConfigCallback;)V HSPLandroid/view/ViewRootImpl;->setBoundsLayerCrop(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/view/ViewRootImpl;->setFrame(Landroid/graphics/Rect;Z)V -HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V +HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ViewRootImpl;->setOnContentApplyWindowInsetsListener(Landroid/view/Window$OnContentApplyWindowInsetsListener;)V HSPLandroid/view/ViewRootImpl;->setTag()V HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;I)V @@ -18654,7 +18465,6 @@ HSPLandroid/view/ViewRootImpl;->shouldDispatchCutout()Z HSPLandroid/view/ViewRootImpl;->shouldOptimizeMeasure(Landroid/view/WindowManager$LayoutParams;)Z HSPLandroid/view/ViewRootImpl;->shouldUseDisplaySize(Landroid/view/WindowManager$LayoutParams;)Z HSPLandroid/view/ViewRootImpl;->systemGestureExclusionChanged()V -HSPLandroid/view/ViewRootImpl;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/view/ViewRootImpl;->unscheduleConsumeBatchedInput()V HSPLandroid/view/ViewRootImpl;->unscheduleTraversals()V HSPLandroid/view/ViewRootImpl;->updateBlastSurfaceIfNeeded()V @@ -18664,7 +18474,7 @@ HSPLandroid/view/ViewRootImpl;->updateColorModeIfNeeded(I)V HSPLandroid/view/ViewRootImpl;->updateCompatSysUiVisibility(III)V HSPLandroid/view/ViewRootImpl;->updateCompatSystemUiVisibilityInfo(IIII)V HSPLandroid/view/ViewRootImpl;->updateConfiguration(I)V -HSPLandroid/view/ViewRootImpl;->updateContentDrawBounds()Z +HSPLandroid/view/ViewRootImpl;->updateContentDrawBounds()Z+]Landroid/view/WindowCallbacks;Lcom/android/internal/policy/DecorView;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl;->updateForceDarkMode()V HSPLandroid/view/ViewRootImpl;->updateInternalDisplay(ILandroid/content/res/Resources;)V HSPLandroid/view/ViewRootImpl;->updateKeepClearForAccessibilityFocusRect()V @@ -18680,7 +18490,6 @@ HSPLandroid/view/ViewRootInsetsControllerHost;->dipToPx(I)I HSPLandroid/view/ViewRootInsetsControllerHost;->dispatchWindowInsetsAnimationEnd(Landroid/view/WindowInsetsAnimation;)V HSPLandroid/view/ViewRootInsetsControllerHost;->getHandler()Landroid/os/Handler; HSPLandroid/view/ViewRootInsetsControllerHost;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager; -HSPLandroid/view/ViewRootInsetsControllerHost;->getRootViewContext()Landroid/content/Context; HSPLandroid/view/ViewRootInsetsControllerHost;->getSystemBarsAppearance()I HSPLandroid/view/ViewRootInsetsControllerHost;->getSystemBarsBehavior()I HSPLandroid/view/ViewRootInsetsControllerHost;->getTranslator()Landroid/content/res/CompatibilityInfo$Translator; @@ -18689,7 +18498,6 @@ HSPLandroid/view/ViewRootInsetsControllerHost;->hasAnimationCallbacks()Z HSPLandroid/view/ViewRootInsetsControllerHost;->isSystemBarsAppearanceControlled()Z HSPLandroid/view/ViewRootInsetsControllerHost;->notifyInsetsChanged()V HSPLandroid/view/ViewRootInsetsControllerHost;->updateCompatSysUiVisibility(III)V -HSPLandroid/view/ViewRootInsetsControllerHost;->updateRequestedVisibleTypes(I)V HSPLandroid/view/ViewRootRectTracker$ViewInfo;->(Landroid/view/ViewRootRectTracker;Landroid/view/View;)V HSPLandroid/view/ViewRootRectTracker$ViewInfo;->getView()Landroid/view/View; HSPLandroid/view/ViewRootRectTracker$ViewInfo;->update()I @@ -18703,23 +18511,23 @@ HSPLandroid/view/ViewStructure;->()V HSPLandroid/view/ViewStructure;->setImportantForAutofill(I)V HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/view/ViewStub;Landroid/view/ViewStub; HSPLandroid/view/ViewStub;->inflate()Landroid/view/View; HSPLandroid/view/ViewStub;->setLayoutInflater(Landroid/view/LayoutInflater;)V HSPLandroid/view/ViewStub;->setLayoutResource(I)V HSPLandroid/view/ViewStub;->setOnInflateListener(Landroid/view/ViewStub$OnInflateListener;)V HSPLandroid/view/ViewStub;->setVisibility(I)V HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->()V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->get(I)Ljava/lang/Object; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->get(I)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->size()I HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->()V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->add(Ljava/lang/Object;)V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->addAll(Landroid/view/ViewTreeObserver$CopyOnWriteArray;)V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->end()V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->add(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->addAll(Landroid/view/ViewTreeObserver$CopyOnWriteArray;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->end()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->getArray()Ljava/util/ArrayList; -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->remove(Ljava/lang/Object;)V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->size()I -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->start()Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->remove(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->size()I+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->start()Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->()V HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->isEmpty()Z @@ -18728,18 +18536,17 @@ HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->set(Landroid/view/ViewTre HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->setTouchableInsets(I)V HSPLandroid/view/ViewTreeObserver;->(Landroid/content/Context;)V HSPLandroid/view/ViewTreeObserver;->addOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V -HSPLandroid/view/ViewTreeObserver;->addOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver;->addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V -HSPLandroid/view/ViewTreeObserver;->addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V+]Landroid/view/ViewTreeObserver$CopyOnWriteArray;Landroid/view/ViewTreeObserver$CopyOnWriteArray; HSPLandroid/view/ViewTreeObserver;->addOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V -HSPLandroid/view/ViewTreeObserver;->addOnWindowFocusChangeListener(Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;)V HSPLandroid/view/ViewTreeObserver;->captureFrameCommitCallbacks()Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver;->checkIsAlive()V HSPLandroid/view/ViewTreeObserver;->dispatchOnComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V -HSPLandroid/view/ViewTreeObserver;->dispatchOnDraw()V +HSPLandroid/view/ViewTreeObserver;->dispatchOnDraw()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/ViewTreeObserver$OnDrawListener;Landroid/widget/Editor$2; HSPLandroid/view/ViewTreeObserver;->dispatchOnEnterAnimationComplete()V HSPLandroid/view/ViewTreeObserver;->dispatchOnGlobalLayout()V -HSPLandroid/view/ViewTreeObserver;->dispatchOnPreDraw()Z +HSPLandroid/view/ViewTreeObserver;->dispatchOnPreDraw()Z+]Landroid/view/ViewTreeObserver$OnPreDrawListener;missing_types]Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;]Landroid/view/ViewTreeObserver$CopyOnWriteArray;Landroid/view/ViewTreeObserver$CopyOnWriteArray; HSPLandroid/view/ViewTreeObserver;->dispatchOnScrollChanged()V HSPLandroid/view/ViewTreeObserver;->dispatchOnSystemGestureExclusionRectsChanged(Ljava/util/List;)V HSPLandroid/view/ViewTreeObserver;->dispatchOnTouchModeChanged(Z)V @@ -18750,12 +18557,12 @@ HSPLandroid/view/ViewTreeObserver;->dispatchOnWindowVisibilityChange(I)V HSPLandroid/view/ViewTreeObserver;->hasComputeInternalInsetsListeners()Z HSPLandroid/view/ViewTreeObserver;->isAlive()Z HSPLandroid/view/ViewTreeObserver;->kill()V -HSPLandroid/view/ViewTreeObserver;->merge(Landroid/view/ViewTreeObserver;)V +HSPLandroid/view/ViewTreeObserver;->merge(Landroid/view/ViewTreeObserver;)V+]Landroid/view/ViewTreeObserver$CopyOnWriteArray;Landroid/view/ViewTreeObserver$CopyOnWriteArray; HSPLandroid/view/ViewTreeObserver;->removeGlobalOnLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V HSPLandroid/view/ViewTreeObserver;->removeOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V -HSPLandroid/view/ViewTreeObserver;->removeOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->removeOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver;->removeOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V -HSPLandroid/view/ViewTreeObserver;->removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V+]Landroid/view/ViewTreeObserver$CopyOnWriteArray;Landroid/view/ViewTreeObserver$CopyOnWriteArray; HSPLandroid/view/ViewTreeObserver;->removeOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V HSPLandroid/view/Window;->(Landroid/content/Context;)V HSPLandroid/view/Window;->addFlags(I)V @@ -18821,7 +18628,7 @@ HSPLandroid/view/WindowInsets$Type;->navigationBars()I HSPLandroid/view/WindowInsets$Type;->statusBars()I HSPLandroid/view/WindowInsets$Type;->systemBars()I HSPLandroid/view/WindowInsets$Type;->systemGestures()I -HSPLandroid/view/WindowInsets$Type;->toString(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/view/WindowInsets$Type;->toString(I)Ljava/lang/String; HSPLandroid/view/WindowInsets;->assignCompatInsets([Landroid/graphics/Insets;Landroid/graphics/Rect;)V HSPLandroid/view/WindowInsets;->consumeDisplayCutout()Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->consumeStableInsets()Landroid/view/WindowInsets; @@ -18843,12 +18650,12 @@ HSPLandroid/view/WindowInsets;->getSystemWindowInsetBottom()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetLeft()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetRight()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetTop()I -HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets; -HSPLandroid/view/WindowInsets;->getSystemWindowInsetsAsRect()Landroid/graphics/Rect; +HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets;+]Landroid/view/WindowInsets;Landroid/view/WindowInsets; +HSPLandroid/view/WindowInsets;->getSystemWindowInsetsAsRect()Landroid/graphics/Rect;+]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/WindowInsets;->inset(IIII)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->inset(Landroid/graphics/Insets;)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->insetInsets(Landroid/graphics/Insets;IIII)Landroid/graphics/Insets; -HSPLandroid/view/WindowInsets;->insetInsets([Landroid/graphics/Insets;IIII)[Landroid/graphics/Insets; +HSPLandroid/view/WindowInsets;->insetInsets([Landroid/graphics/Insets;IIII)[Landroid/graphics/Insets;+][Landroid/graphics/Insets;[Landroid/graphics/Insets; HSPLandroid/view/WindowInsets;->insetUnchecked(IIII)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->isConsumed()Z HSPLandroid/view/WindowInsets;->isRound()Z @@ -18856,7 +18663,6 @@ HSPLandroid/view/WindowInsets;->isVisible(I)Z HSPLandroid/view/WindowInsets;->replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsetsAnimation$Bounds;->(Landroid/graphics/Insets;Landroid/graphics/Insets;)V HSPLandroid/view/WindowInsetsAnimation$Callback;->(I)V -HSPLandroid/view/WindowInsetsAnimation$Callback;->getDispatchMode()I HSPLandroid/view/WindowInsetsAnimation;->(ILandroid/view/animation/Interpolator;J)V HSPLandroid/view/WindowInsetsAnimation;->getTypeMask()I HSPLandroid/view/WindowInsetsAnimation;->setAlpha(F)V @@ -18870,7 +18676,7 @@ HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Par HSPLandroid/view/WindowManager$LayoutParams;->()V HSPLandroid/view/WindowManager$LayoutParams;->(IIIII)V HSPLandroid/view/WindowManager$LayoutParams;->(Landroid/os/Parcel;)V -HSPLandroid/view/WindowManager$LayoutParams;->copyFrom(Landroid/view/WindowManager$LayoutParams;)I +HSPLandroid/view/WindowManager$LayoutParams;->copyFrom(Landroid/view/WindowManager$LayoutParams;)I+]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/WindowManager$LayoutParams;->forRotation(I)Landroid/view/WindowManager$LayoutParams; HSPLandroid/view/WindowManager$LayoutParams;->getColorMode()I HSPLandroid/view/WindowManager$LayoutParams;->getFitInsetsSides()I @@ -18885,7 +18691,7 @@ HSPLandroid/view/WindowManager$LayoutParams;->setFitInsetsSides(I)V HSPLandroid/view/WindowManager$LayoutParams;->setFitInsetsTypes(I)V HSPLandroid/view/WindowManager$LayoutParams;->setSurfaceInsets(Landroid/view/View;ZZ)V HSPLandroid/view/WindowManager$LayoutParams;->setTitle(Ljava/lang/CharSequence;)V -HSPLandroid/view/WindowManager$LayoutParams;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/WindowManager$LayoutParams;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/WindowManager;->hasWindowExtensionsEnabled()Z HSPLandroid/view/WindowManagerGlobal$1;->()V HSPLandroid/view/WindowManagerGlobal$2;->(Landroid/view/WindowManagerGlobal;)V @@ -18946,7 +18752,7 @@ HSPLandroid/view/accessibility/AccessibilityManager;->getRecommendedTimeoutMilli HSPLandroid/view/accessibility/AccessibilityManager;->getServiceLocked()Landroid/view/accessibility/IAccessibilityManager; HSPLandroid/view/accessibility/AccessibilityManager;->hasAnyDirectConnection()Z HSPLandroid/view/accessibility/AccessibilityManager;->initialFocusAppearanceLocked(Landroid/content/res/Resources;)V -HSPLandroid/view/accessibility/AccessibilityManager;->isEnabled()Z +HSPLandroid/view/accessibility/AccessibilityManager;->isEnabled()Z+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/accessibility/AccessibilityManager;->isHighTextContrastEnabled()Z HSPLandroid/view/accessibility/AccessibilityManager;->isTouchExplorationEnabled()Z HSPLandroid/view/accessibility/AccessibilityManager;->notifyAccessibilityStateChanged()V @@ -18962,8 +18768,8 @@ HSPLandroid/view/accessibility/AccessibilityManager;->updateFocusAppearanceLocke HSPLandroid/view/accessibility/AccessibilityManager;->updateUiTimeout(J)V HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->()V HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->getInstance()Landroid/view/accessibility/AccessibilityNodeIdManager; -HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V -HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V +HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V+]Landroid/view/accessibility/WeakSparseArray;Landroid/view/accessibility/WeakSparseArray; +HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V+]Landroid/view/accessibility/WeakSparseArray;Landroid/view/accessibility/WeakSparseArray; HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->(ILjava/lang/CharSequence;)V HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->equals(Ljava/lang/Object;)Z HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->getId()I @@ -19003,9 +18809,9 @@ HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->getTransaction HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/view/accessibility/WeakSparseArray$WeakReferenceWithId;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;I)V HSPLandroid/view/accessibility/WeakSparseArray;->()V -HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V -HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V -HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V +HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue; HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->()V HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->createNativeInterpolator()J HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->getInterpolation(F)F @@ -19033,12 +18839,12 @@ HSPLandroid/view/animation/Animation;->ensureInterpolator()V HSPLandroid/view/animation/Animation;->finalize()V HSPLandroid/view/animation/Animation;->getDuration()J HSPLandroid/view/animation/Animation;->getFillAfter()Z -HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation; HSPLandroid/view/animation/Animation;->getScaleFactor()F HSPLandroid/view/animation/Animation;->getStartOffset()J -HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z +HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z+]Landroid/view/animation/Animation;missing_types]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;F)Z -HSPLandroid/view/animation/Animation;->getTransformationAt(FLandroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Animation;->getTransformationAt(FLandroid/view/animation/Transformation;)V+]Landroid/view/animation/Interpolator;missing_types HSPLandroid/view/animation/Animation;->hasAlpha()Z HSPLandroid/view/animation/Animation;->hasEnded()Z HSPLandroid/view/animation/Animation;->hasStarted()Z @@ -19073,7 +18879,7 @@ HSPLandroid/view/animation/AnimationSet;->(Landroid/content/Context;Landro HSPLandroid/view/animation/AnimationSet;->(Z)V HSPLandroid/view/animation/AnimationSet;->addAnimation(Landroid/view/animation/Animation;)V HSPLandroid/view/animation/AnimationSet;->getDuration()J -HSPLandroid/view/animation/AnimationSet;->getTransformation(JLandroid/view/animation/Transformation;)Z +HSPLandroid/view/animation/AnimationSet;->getTransformation(JLandroid/view/animation/Transformation;)Z+]Landroid/view/animation/AnimationSet;missing_types]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Landroid/view/animation/Animation;Landroid/view/animation/AnimationSet;,Landroid/view/animation/TranslateAnimation;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/animation/AnimationSet;->hasAlpha()Z HSPLandroid/view/animation/AnimationSet;->init()V HSPLandroid/view/animation/AnimationSet;->initialize(IIII)V @@ -19095,12 +18901,12 @@ HSPLandroid/view/animation/AnimationUtils$AnimationState;->()V HSPLandroid/view/animation/AnimationUtils$AnimationState;->(Landroid/view/animation/AnimationUtils$AnimationState-IA;)V HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Animation; HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/view/animation/AnimationSet;Landroid/util/AttributeSet;)Landroid/view/animation/Animation; -HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator; -HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J +HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator;+]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser; +HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J+]Ljava/lang/ThreadLocal;Landroid/view/animation/AnimationUtils$1; HSPLandroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation; -HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator; +HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;I)Landroid/view/animation/Interpolator; -HSPLandroid/view/animation/AnimationUtils;->unlockAnimationClock()V +HSPLandroid/view/animation/AnimationUtils;->unlockAnimationClock()V+]Ljava/lang/ThreadLocal;Landroid/view/animation/AnimationUtils$1; HSPLandroid/view/animation/BaseInterpolator;->()V HSPLandroid/view/animation/BaseInterpolator;->getChangingConfiguration()I HSPLandroid/view/animation/BaseInterpolator;->setChangingConfiguration(I)V @@ -19115,12 +18921,12 @@ HSPLandroid/view/animation/OvershootInterpolator;->()V HSPLandroid/view/animation/OvershootInterpolator;->(F)V HSPLandroid/view/animation/OvershootInterpolator;->getInterpolation(F)F HSPLandroid/view/animation/PathInterpolator;->(FFFF)V -HSPLandroid/view/animation/PathInterpolator;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/PathInterpolator;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V+]Landroid/view/animation/PathInterpolator;Landroid/view/animation/PathInterpolator;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/animation/PathInterpolator;->createNativeInterpolator()J HSPLandroid/view/animation/PathInterpolator;->getInterpolation(F)F -HSPLandroid/view/animation/PathInterpolator;->initCubic(FFFF)V -HSPLandroid/view/animation/PathInterpolator;->initPath(Landroid/graphics/Path;)V -HSPLandroid/view/animation/PathInterpolator;->parseInterpolatorFromTypeArray(Landroid/content/res/TypedArray;)V +HSPLandroid/view/animation/PathInterpolator;->initCubic(FFFF)V+]Landroid/graphics/Path;Landroid/graphics/Path; +HSPLandroid/view/animation/PathInterpolator;->initPath(Landroid/graphics/Path;)V+]Landroid/graphics/Path;Landroid/graphics/Path; +HSPLandroid/view/animation/PathInterpolator;->parseInterpolatorFromTypeArray(Landroid/content/res/TypedArray;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/animation/ScaleAnimation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/animation/ScaleAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V HSPLandroid/view/animation/ScaleAnimation;->initialize(IIII)V @@ -19128,16 +18934,16 @@ HSPLandroid/view/animation/ScaleAnimation;->initializePivotPoint()V HSPLandroid/view/animation/ScaleAnimation;->resolveScale(FIIII)F HSPLandroid/view/animation/Transformation;->()V HSPLandroid/view/animation/Transformation;->clear()V -HSPLandroid/view/animation/Transformation;->compose(Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Transformation;->compose(Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation; HSPLandroid/view/animation/Transformation;->getAlpha()F HSPLandroid/view/animation/Transformation;->getInsets()Landroid/graphics/Insets; HSPLandroid/view/animation/Transformation;->getMatrix()Landroid/graphics/Matrix; HSPLandroid/view/animation/Transformation;->getTransformationType()I -HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/animation/Transformation;->setAlpha(F)V HSPLandroid/view/animation/Transformation;->setInsets(Landroid/graphics/Insets;)V HSPLandroid/view/animation/TranslateAnimation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V -HSPLandroid/view/animation/TranslateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HSPLandroid/view/animation/TranslateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation; HSPLandroid/view/animation/TranslateAnimation;->initialize(IIII)V HSPLandroid/view/autofill/AutofillClientController;->()V HSPLandroid/view/autofill/AutofillClientController;->(Landroid/app/Activity;)V @@ -19173,8 +18979,8 @@ HSPLandroid/view/autofill/AutofillFeatureFlags;->isTriggerFillRequestOnUnimporta HSPLandroid/view/autofill/AutofillFeatureFlags;->lambda$getFillDialogEnabledHints$1(Ljava/lang/String;)Z HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeAllChildrenViewInAssistStructure()Z HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeAllViewsAutofillTypeNotNoneInAssistStructrue()Z -HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillId;+]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/autofill/AutofillId$1;Landroid/view/autofill/AutofillId$1; +HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillId; +HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/autofill/AutofillId;->(I)V HSPLandroid/view/autofill/AutofillId;->(IIJI)V HSPLandroid/view/autofill/AutofillId;->equals(Ljava/lang/Object;)Z @@ -19184,8 +18990,8 @@ HSPLandroid/view/autofill/AutofillId;->hashCode()I HSPLandroid/view/autofill/AutofillId;->isVirtualInt()Z HSPLandroid/view/autofill/AutofillId;->isVirtualLong()Z HSPLandroid/view/autofill/AutofillId;->resetSessionId()V -HSPLandroid/view/autofill/AutofillId;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillId; -HSPLandroid/view/autofill/AutofillId;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/autofill/AutofillId;->toString()Ljava/lang/String; +HSPLandroid/view/autofill/AutofillId;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillId;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/autofill/AutofillManager$$ExternalSyntheticLambda0;->(Landroid/view/autofill/IAutoFillManager;Landroid/view/autofill/IAutoFillManagerClient;I)V HSPLandroid/view/autofill/AutofillManager$AugmentedAutofillManagerClient;->(Landroid/view/autofill/AutofillManager;)V HSPLandroid/view/autofill/AutofillManager$AugmentedAutofillManagerClient;->getView(Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillId;)Landroid/view/View; @@ -19207,11 +19013,9 @@ HSPLandroid/view/autofill/AutofillManager;->hasFillDialogUiFeature()Z HSPLandroid/view/autofill/AutofillManager;->isActiveLocked()Z HSPLandroid/view/autofill/AutofillManager;->isActivityAllowedForAutofill()Z HSPLandroid/view/autofill/AutofillManager;->isActivityDeniedForAutofill()Z -HSPLandroid/view/autofill/AutofillManager;->isAutofillable(Landroid/view/View;)Z+]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/view/View;missing_types +HSPLandroid/view/autofill/AutofillManager;->isAutofillable(Landroid/view/View;)Z+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager; HSPLandroid/view/autofill/AutofillManager;->isDisabledByServiceLocked()Z HSPLandroid/view/autofill/AutofillManager;->isEnabled()Z -HSPLandroid/view/autofill/AutofillManager;->isPassingImeActionCheck(Landroid/widget/EditText;)Z+]Ljava/util/Set;Landroid/util/ArraySet; -HSPLandroid/view/autofill/AutofillManager;->isPassingMultilineCheck(Landroid/widget/EditText;)Z HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V HSPLandroid/view/autofill/AutofillManager;->notifyViewEntered(Landroid/view/View;I)V HSPLandroid/view/autofill/AutofillManager;->notifyViewEnteredForAugmentedAutofill(Landroid/view/View;)V @@ -19251,7 +19055,7 @@ HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->getAutofillServiceCompon HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->removeClient(Landroid/view/autofill/IAutoFillManagerClient;I)V HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->setHasCallback(IIZ)V HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILandroid/content/ComponentName;ZLcom/android/internal/os/IResultReceiver;)V -HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V +HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/view/autofill/IAutoFillManager$Stub$Proxy;Landroid/view/autofill/IAutoFillManager$Stub$Proxy; HSPLandroid/view/autofill/IAutoFillManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManager; HSPLandroid/view/autofill/IAutoFillManagerClient$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/view/autofill/IAutoFillManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -19271,7 +19075,7 @@ HSPLandroid/view/contentcapture/ContentCaptureEvent;->setInsets(Landroid/graphic HSPLandroid/view/contentcapture/ContentCaptureEvent;->setSelectionIndex(II)Landroid/view/contentcapture/ContentCaptureEvent; HSPLandroid/view/contentcapture/ContentCaptureEvent;->setText(Ljava/lang/CharSequence;)Landroid/view/contentcapture/ContentCaptureEvent; HSPLandroid/view/contentcapture/ContentCaptureEvent;->setViewNode(Landroid/view/contentcapture/ViewNode;)Landroid/view/contentcapture/ContentCaptureEvent; -HSPLandroid/view/contentcapture/ContentCaptureEvent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/contentcapture/ContentCaptureEvent;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/contentcapture/ContentCaptureHelper;->getLoggingLevelAsString(I)Ljava/lang/String; HSPLandroid/view/contentcapture/ContentCaptureHelper;->setLoggingLevel(I)V HSPLandroid/view/contentcapture/ContentCaptureManager$LocalDataShareAdapterResourceManager;->()V @@ -19279,7 +19083,7 @@ HSPLandroid/view/contentcapture/ContentCaptureManager$StrippedContext;->(L HSPLandroid/view/contentcapture/ContentCaptureManager;->(Landroid/content/Context;Landroid/view/contentcapture/IContentCaptureManager;Landroid/content/ContentCaptureOptions;)V HSPLandroid/view/contentcapture/ContentCaptureManager;->getFlushViewTreeAppearingEventDisabled()Z HSPLandroid/view/contentcapture/ContentCaptureManager;->getMainContentCaptureSession()Landroid/view/contentcapture/MainContentCaptureSession; -HSPLandroid/view/contentcapture/ContentCaptureManager;->isContentCaptureEnabled()Z +HSPLandroid/view/contentcapture/ContentCaptureManager;->isContentCaptureEnabled()Z+]Landroid/view/contentcapture/MainContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; HSPLandroid/view/contentcapture/ContentCaptureManager;->onActivityCreated(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/content/ComponentName;)V HSPLandroid/view/contentcapture/ContentCaptureManager;->setFlushViewTreeAppearingEventDisabled(Z)V HSPLandroid/view/contentcapture/ContentCaptureManager;->updateWindowAttributes(Landroid/view/WindowManager$LayoutParams;)V @@ -19328,7 +19132,7 @@ HSPLandroid/view/contentcapture/MainContentCaptureSession$SessionStateReceiver;- HSPLandroid/view/contentcapture/MainContentCaptureSession;->(Landroid/view/contentcapture/ContentCaptureManager$StrippedContext;Landroid/view/contentcapture/ContentCaptureManager;Landroid/os/Handler;Landroid/view/contentcapture/IContentCaptureManager;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->clearEvents()Landroid/content/pm/ParceledListSlice; HSPLandroid/view/contentcapture/MainContentCaptureSession;->destroySession()V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->flush(I)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->flush(I)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Handler;Landroid/os/Handler;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/view/contentcapture/IContentCaptureDirectManager;Landroid/view/contentcapture/IContentCaptureDirectManager$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/LocalLog;Landroid/util/LocalLog; HSPLandroid/view/contentcapture/MainContentCaptureSession;->flushIfNeeded(I)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->getActivityName()Ljava/lang/String; HSPLandroid/view/contentcapture/MainContentCaptureSession;->getDebugState()Ljava/lang/String; @@ -19337,24 +19141,24 @@ HSPLandroid/view/contentcapture/MainContentCaptureSession;->hasStarted()Z HSPLandroid/view/contentcapture/MainContentCaptureSession;->internalNotifyViewAppeared(Landroid/view/contentcapture/ViewNode$ViewStructureImpl;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->internalNotifyViewTextChanged(Landroid/view/autofill/AutofillId;Ljava/lang/CharSequence;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->internalNotifyViewTreeEvent(Z)V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->isContentCaptureEnabled()Z -HSPLandroid/view/contentcapture/MainContentCaptureSession;->isDisabled()Z -HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewAppeared(ILandroid/view/contentcapture/ViewNode$ViewStructureImpl;)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->isContentCaptureEnabled()Z+]Landroid/view/contentcapture/ContentCaptureManager;Landroid/view/contentcapture/ContentCaptureManager; +HSPLandroid/view/contentcapture/MainContentCaptureSession;->isDisabled()Z+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean; +HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewAppeared(ILandroid/view/contentcapture/ViewNode$ViewStructureImpl;)V+]Landroid/os/Handler;Landroid/os/Handler; HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewDisappeared(ILandroid/view/autofill/AutofillId;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewInsetsChanged(ILandroid/graphics/Insets;)V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewTextChanged(ILandroid/view/autofill/AutofillId;Ljava/lang/CharSequence;)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewTextChanged(ILandroid/view/autofill/AutofillId;Ljava/lang/CharSequence;)V+]Landroid/os/Handler;Landroid/os/Handler;]Ljava/lang/CharSequence;missing_types HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewTreeEvent(IZ)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyWindowBoundsChanged(ILandroid/graphics/Rect;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->onDestroy()V HSPLandroid/view/contentcapture/MainContentCaptureSession;->onSessionStarted(ILandroid/os/IBinder;)V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->scheduleFlush(IZ)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->scheduleFlush(IZ)V+]Landroid/os/Handler;Landroid/os/Handler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean; HSPLandroid/view/contentcapture/MainContentCaptureSession;->sendEvent(Landroid/view/contentcapture/ContentCaptureEvent;)V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->sendEvent(Landroid/view/contentcapture/ContentCaptureEvent;Z)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->sendEvent(Landroid/view/contentcapture/ContentCaptureEvent;Z)V+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/view/contentcapture/ContentCaptureEvent;Landroid/view/contentcapture/ContentCaptureEvent;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/contentcapture/MainContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; HSPLandroid/view/contentcapture/MainContentCaptureSession;->start(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/content/ComponentName;I)V HSPLandroid/view/contentcapture/ViewNode$ViewNodeText;->()V HSPLandroid/view/contentcapture/ViewNode$ViewNodeText;->isSimple()Z -HSPLandroid/view/contentcapture/ViewNode$ViewNodeText;->writeToParcel(Landroid/os/Parcel;Z)V -HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->(Landroid/view/View;)V +HSPLandroid/view/contentcapture/ViewNode$ViewNodeText;->writeToParcel(Landroid/os/Parcel;Z)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableStringBuilder;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->(Landroid/view/View;)V+]Landroid/view/View;missing_types HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->getNodeText()Landroid/view/contentcapture/ViewNode$ViewNodeText; HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->setAutofillHints([Ljava/lang/String;)V HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->setAutofillType(I)V @@ -19385,7 +19189,7 @@ HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->setTextStyle(FIII)V HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->setVisibility(I)V HSPLandroid/view/contentcapture/ViewNode;->-$$Nest$fputmReceiveContentMimeTypes(Landroid/view/contentcapture/ViewNode;[Ljava/lang/String;)V HSPLandroid/view/contentcapture/ViewNode;->()V -HSPLandroid/view/contentcapture/ViewNode;->writeSelfToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/contentcapture/ViewNode;->writeSelfToParcel(Landroid/os/Parcel;I)V+]Landroid/view/contentcapture/ViewNode$ViewNodeText;Landroid/view/contentcapture/ViewNode$ViewNodeText;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/contentcapture/ViewNode;->writeToParcel(Landroid/os/Parcel;Landroid/view/contentcapture/ViewNode;I)V HSPLandroid/view/inputmethod/BaseInputConnection;->(Landroid/view/View;Z)V HSPLandroid/view/inputmethod/BaseInputConnection;->(Landroid/view/inputmethod/InputMethodManager;Z)V @@ -19411,16 +19215,10 @@ HSPLandroid/view/inputmethod/BaseInputConnection;->setComposingRegion(II)Z HSPLandroid/view/inputmethod/BaseInputConnection;->setComposingSpans(Landroid/text/Spannable;II)V HSPLandroid/view/inputmethod/BaseInputConnection;->setComposingText(Ljava/lang/CharSequence;I)Z HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->()V -HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->addVisibleLineBounds(FFFF)Landroid/view/inputmethod/CursorAnchorInfo$Builder; HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->reset()V+]Landroid/view/inputmethod/CursorAnchorInfo$Builder;Landroid/view/inputmethod/CursorAnchorInfo$Builder;]Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder; -HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->setInsertionMarkerLocation(FFFFI)Landroid/view/inputmethod/CursorAnchorInfo$Builder; -HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->setMatrix(Landroid/graphics/Matrix;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;+]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/view/inputmethod/CursorAnchorInfo;->(IIILjava/lang/CharSequence;IFFFFLandroid/view/inputmethod/SparseRectFArray;Landroid/view/inputmethod/EditorBoundsInfo;[F[FLandroid/view/inputmethod/TextAppearanceInfo;)V HSPLandroid/view/inputmethod/CursorAnchorInfo;->create(Landroid/view/inputmethod/CursorAnchorInfo$Builder;)Landroid/view/inputmethod/CursorAnchorInfo;+]Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder; HSPLandroid/view/inputmethod/CursorAnchorInfo;->equals(Ljava/lang/Object;)Z+]Landroid/view/inputmethod/CursorAnchorInfo;Landroid/view/inputmethod/CursorAnchorInfo; -HSPLandroid/view/inputmethod/CursorAnchorInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/view/inputmethod/EditorBoundsInfo;->(Landroid/view/inputmethod/EditorBoundsInfo$Builder;)V -HSPLandroid/view/inputmethod/EditorBoundsInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/view/inputmethod/EditorInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/EditorInfo; HSPLandroid/view/inputmethod/EditorInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/inputmethod/EditorInfo;->()V @@ -19436,7 +19234,7 @@ HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->getImeTrackerSer HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->getService()Lcom/android/internal/view/IInputMethodManager; HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->isAvailable()Z HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->isImeTraceEnabled()Z -HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->onFailed(Landroid/view/inputmethod/ImeTracker$Token;I)V +HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->onFailed(Landroid/view/inputmethod/ImeTracker$Token;I)V+]Lcom/android/internal/inputmethod/IImeTracker;Lcom/android/internal/inputmethod/IImeTracker$Stub$Proxy; HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->onRequestHide(Ljava/lang/String;III)Landroid/view/inputmethod/ImeTracker$Token; HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->removeImeSurfaceFromWindowAsync(Landroid/os/IBinder;)V HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->reportPerceptibleAsync(Landroid/os/IBinder;Z)V @@ -19467,7 +19265,6 @@ HSPLandroid/view/inputmethod/ImeTracker$Debug;->getFieldValue(Ljava/lang/reflect HSPLandroid/view/inputmethod/ImeTracker$Debug;->lambda$getFieldMapping$0(Ljava/lang/String;Ljava/lang/reflect/Field;)Z HSPLandroid/view/inputmethod/ImeTracker$Debug;->originToString(I)Ljava/lang/String; HSPLandroid/view/inputmethod/ImeTracker$Debug;->phaseToString(I)Ljava/lang/String; -HSPLandroid/view/inputmethod/ImeTracker$ImeJankTracker;->onRequestAnimation(Landroid/view/inputmethod/ImeTracker$InputMethodJankContext;IZ)V HSPLandroid/view/inputmethod/ImeTracker$Token$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/ImeTracker$Token; HSPLandroid/view/inputmethod/ImeTracker$Token$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/inputmethod/ImeTracker$Token;->-$$Nest$fgetmTag(Landroid/view/inputmethod/ImeTracker$Token;)Ljava/lang/String; @@ -19475,7 +19272,6 @@ HSPLandroid/view/inputmethod/ImeTracker$Token;->(Landroid/os/Parcel;)V HSPLandroid/view/inputmethod/ImeTracker$Token;->(Landroid/os/Parcel;Landroid/view/inputmethod/ImeTracker$Token-IA;)V HSPLandroid/view/inputmethod/ImeTracker$Token;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/inputmethod/ImeTracker;->()V -HSPLandroid/view/inputmethod/ImeTracker;->forJank()Landroid/view/inputmethod/ImeTracker$ImeJankTracker; HSPLandroid/view/inputmethod/ImeTracker;->forLogging()Landroid/view/inputmethod/ImeTracker; HSPLandroid/view/inputmethod/InlineSuggestionsRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InlineSuggestionsRequest; HSPLandroid/view/inputmethod/InlineSuggestionsRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -19515,8 +19311,7 @@ HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->(Landroid/v HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onPostWindowGainedFocus(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onPreWindowGainedFocus(Landroid/view/ViewRootImpl;)V HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onScheduledCheckFocus(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onViewDetachedFromWindow(Landroid/view/View;Landroid/view/ViewRootImpl;)V -HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onViewFocusChanged(Landroid/view/View;Z)V +HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onViewDetachedFromWindow(Landroid/view/View;Landroid/view/ViewRootImpl;)V+]Landroid/view/View;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onWindowDismissed(Landroid/view/ViewRootImpl;)V HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onWindowLostFocus(Landroid/view/ViewRootImpl;)V HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->setCurrentRootViewLocked(Landroid/view/ViewRootImpl;)V @@ -19525,7 +19320,6 @@ HSPLandroid/view/inputmethod/InputMethodManager$H;->(Landroid/view/inputme HSPLandroid/view/inputmethod/InputMethodManager$H;->handleMessage(Landroid/os/Message;)V HSPLandroid/view/inputmethod/InputMethodManager$ImeInputEventSender;->onInputEventFinished(IZ)V HSPLandroid/view/inputmethod/InputMethodManager$PendingEvent;->run()V -HSPLandroid/view/inputmethod/InputMethodManager;->-$$Nest$fgetmFallbackInputConnection(Landroid/view/inputmethod/InputMethodManager;)Landroid/view/inputmethod/RemoteInputConnectionImpl; HSPLandroid/view/inputmethod/InputMethodManager;->-$$Nest$fgetmFullscreenMode(Landroid/view/inputmethod/InputMethodManager;)Z HSPLandroid/view/inputmethod/InputMethodManager;->-$$Nest$fgetmImeDispatcher(Landroid/view/inputmethod/InputMethodManager;)Landroid/window/ImeOnBackInvokedDispatcher; HSPLandroid/view/inputmethod/InputMethodManager;->-$$Nest$fgetmImeInsetsConsumer(Landroid/view/inputmethod/InputMethodManager;)Landroid/view/ImeInsetsSourceConsumer; @@ -19546,7 +19340,7 @@ HSPLandroid/view/inputmethod/InputMethodManager;->(Lcom/android/internal/v HSPLandroid/view/inputmethod/InputMethodManager;->areSameInputChannel(Landroid/view/InputChannel;Landroid/view/InputChannel;)Z HSPLandroid/view/inputmethod/InputMethodManager;->canStartInput(Landroid/view/View;)Z HSPLandroid/view/inputmethod/InputMethodManager;->checkFocus()V -HSPLandroid/view/inputmethod/InputMethodManager;->checkFocusInternalLocked(ZLandroid/view/ViewRootImpl;)Z +HSPLandroid/view/inputmethod/InputMethodManager;->checkFocusInternalLocked(ZLandroid/view/ViewRootImpl;)Z+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager; HSPLandroid/view/inputmethod/InputMethodManager;->clearConnectionLocked()V HSPLandroid/view/inputmethod/InputMethodManager;->clearCurRootViewIfNeeded()Z HSPLandroid/view/inputmethod/InputMethodManager;->closeCurrentInput()V @@ -19560,12 +19354,12 @@ HSPLandroid/view/inputmethod/InputMethodManager;->finishInputLocked()V HSPLandroid/view/inputmethod/InputMethodManager;->finishedInputEvent(IZZ)V HSPLandroid/view/inputmethod/InputMethodManager;->flushPendingEventsLocked()V HSPLandroid/view/inputmethod/InputMethodManager;->forAccessibilitySessionsLocked(Ljava/util/function/Consumer;)V -HSPLandroid/view/inputmethod/InputMethodManager;->forContext(Landroid/content/Context;)Landroid/view/inputmethod/InputMethodManager; -HSPLandroid/view/inputmethod/InputMethodManager;->forContextInternal(ILandroid/os/Looper;)Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/view/inputmethod/InputMethodManager;->forContext(Landroid/content/Context;)Landroid/view/inputmethod/InputMethodManager;+]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/view/inputmethod/InputMethodManager;->forContextInternal(ILandroid/os/Looper;)Landroid/view/inputmethod/InputMethodManager;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/inputmethod/InputMethodManager;->getDelegate()Landroid/view/inputmethod/InputMethodManager$DelegateImpl; HSPLandroid/view/inputmethod/InputMethodManager;->getEnabledInputMethodList()Ljava/util/List; HSPLandroid/view/inputmethod/InputMethodManager;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List; -HSPLandroid/view/inputmethod/InputMethodManager;->getFallbackInputMethodManagerIfNecessary(Landroid/view/View;)Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/view/inputmethod/InputMethodManager;->getFallbackInputMethodManagerIfNecessary(Landroid/view/View;)Landroid/view/inputmethod/InputMethodManager;+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/inputmethod/InputMethodManager;->getServedViewLocked()Landroid/view/View; HSPLandroid/view/inputmethod/InputMethodManager;->getStartInputFlags(Landroid/view/View;I)I HSPLandroid/view/inputmethod/InputMethodManager;->hasServedByInputMethodLocked(Landroid/view/View;)Z @@ -19574,7 +19368,7 @@ HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landro HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;I)Z HSPLandroid/view/inputmethod/InputMethodManager;->invalidateInput(Landroid/view/View;)V HSPLandroid/view/inputmethod/InputMethodManager;->isActive()Z -HSPLandroid/view/inputmethod/InputMethodManager;->isActive(Landroid/view/View;)Z +HSPLandroid/view/inputmethod/InputMethodManager;->isActive(Landroid/view/View;)Z+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager; HSPLandroid/view/inputmethod/InputMethodManager;->isCursorAnchorInfoEnabled()Z HSPLandroid/view/inputmethod/InputMethodManager;->isFullscreenMode()Z HSPLandroid/view/inputmethod/InputMethodManager;->isImeSessionAvailableLocked()Z @@ -19607,8 +19401,6 @@ HSPLandroid/view/inputmethod/InputMethodSubtype;->getLocale()Ljava/lang/String; HSPLandroid/view/inputmethod/InputMethodSubtype;->getMode()Ljava/lang/String; HSPLandroid/view/inputmethod/InputMethodSubtype;->hashCode()I HSPLandroid/view/inputmethod/InputMethodSubtypeArray;->get(I)Landroid/view/inputmethod/InputMethodSubtype; -HSPLandroid/view/inputmethod/RemoteInputConnectionImpl$$ExternalSyntheticLambda36;->(Landroid/view/inputmethod/RemoteInputConnectionImpl;I)V -HSPLandroid/view/inputmethod/RemoteInputConnectionImpl$$ExternalSyntheticLambda36;->run()V HSPLandroid/view/inputmethod/RemoteInputConnectionImpl$1;->(Landroid/view/inputmethod/RemoteInputConnectionImpl;)V HSPLandroid/view/inputmethod/RemoteInputConnectionImpl;->$r8$lambda$qFXKyAWDZEWw0AFK9ybLLKWARnY(Landroid/view/inputmethod/RemoteInputConnectionImpl;I)V HSPLandroid/view/inputmethod/RemoteInputConnectionImpl;->(Landroid/os/Looper;Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputMethodManager;Landroid/view/View;)V @@ -19625,7 +19417,7 @@ HSPLandroid/view/inputmethod/SurroundingText;->copyWithParcelableSpans(Ljava/lan HSPLandroid/view/inputmethod/SurroundingText;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/inputmethod/TextAppearanceInfo$Builder;->()V HSPLandroid/view/inputmethod/TextAppearanceInfo;->(Landroid/view/inputmethod/TextAppearanceInfo$Builder;)V -HSPLandroid/view/inputmethod/TextAppearanceInfo;->createFromTextView(Landroid/widget/TextView;)Landroid/view/inputmethod/TextAppearanceInfo;+]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/view/inputmethod/TextAppearanceInfo$Builder;Landroid/view/inputmethod/TextAppearanceInfo$Builder;]Landroid/graphics/Typeface;Landroid/graphics/Typeface;]Landroid/text/style/CharacterStyle;missing_types]Landroid/widget/TextView;missing_types]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types +HSPLandroid/view/inputmethod/TextAppearanceInfo;->createFromTextView(Landroid/widget/TextView;)Landroid/view/inputmethod/TextAppearanceInfo;+]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types]Landroid/view/inputmethod/TextAppearanceInfo$Builder;Landroid/view/inputmethod/TextAppearanceInfo$Builder;]Landroid/graphics/Typeface;Landroid/graphics/Typeface;]Landroid/text/style/CharacterStyle;megamorphic_types HSPLandroid/view/inputmethod/TextAppearanceInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/view/inputmethod/TextAppearanceInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/inputmethod/ViewFocusParameterInfo;->(Landroid/view/inputmethod/EditorInfo;IIII)V @@ -20013,7 +19805,7 @@ HSPLandroid/widget/AutoCompleteTextView$DropDownItemClickListener;->(Landr HSPLandroid/widget/AutoCompleteTextView$MyWatcher;->(Landroid/widget/AutoCompleteTextView;)V HSPLandroid/widget/AutoCompleteTextView$PassThroughClickListener;->(Landroid/widget/AutoCompleteTextView;)V HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V -HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILandroid/content/res/Resources$Theme;)V +HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILandroid/content/res/Resources$Theme;)V+]Landroid/widget/ListPopupWindow;Landroid/widget/ListPopupWindow;]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/AutoCompleteTextView;->setCompletionHint(Ljava/lang/CharSequence;)V HSPLandroid/widget/BaseAdapter;->()V HSPLandroid/widget/BaseAdapter;->areAllItemsEnabled()Z @@ -20092,7 +19884,7 @@ HSPLandroid/widget/Editor$AccessibilitySmartActions;->(Landroid/widget/Tex HSPLandroid/widget/Editor$Blink;->cancel()V HSPLandroid/widget/Editor$Blink;->run()V HSPLandroid/widget/Editor$Blink;->uncancel()V -HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;->updatePosition(IIZZ)V +HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;->updatePosition(IIZZ)V+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager; HSPLandroid/widget/Editor$EditOperation;->(Landroid/widget/Editor;Ljava/lang/String;ILjava/lang/String;Z)V HSPLandroid/widget/Editor$EditOperation;->commit()V HSPLandroid/widget/Editor$EditOperation;->forceMergeWith(Landroid/widget/Editor$EditOperation;)V @@ -20135,10 +19927,10 @@ HSPLandroid/widget/Editor$InsertionPointCursorController;->isCursorBeingModified HSPLandroid/widget/Editor$InsertionPointCursorController;->onDetached()V HSPLandroid/widget/Editor$InsertionPointCursorController;->onTouchEvent(Landroid/view/MotionEvent;)V HSPLandroid/widget/Editor$InsertionPointCursorController;->show()V -HSPLandroid/widget/Editor$PositionListener;->addSubscriber(Landroid/widget/Editor$TextViewPositionListener;Z)V +HSPLandroid/widget/Editor$PositionListener;->addSubscriber(Landroid/widget/Editor$TextViewPositionListener;Z)V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver; HSPLandroid/widget/Editor$PositionListener;->onPreDraw()Z+]Landroid/widget/Editor$TextViewPositionListener;Landroid/widget/Editor$CursorAnchorInfoNotifier; HSPLandroid/widget/Editor$PositionListener;->onScrollChanged()V -HSPLandroid/widget/Editor$PositionListener;->removeSubscriber(Landroid/widget/Editor$TextViewPositionListener;)V +HSPLandroid/widget/Editor$PositionListener;->removeSubscriber(Landroid/widget/Editor$TextViewPositionListener;)V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver; HSPLandroid/widget/Editor$PositionListener;->updatePosition()V HSPLandroid/widget/Editor$ProcessTextIntentActionsHandler;->(Landroid/widget/Editor;)V HSPLandroid/widget/Editor$SelectionModifierCursorController;->getMinTouchOffset()I @@ -20167,8 +19959,8 @@ HSPLandroid/widget/Editor$UndoInputFilter;->restoreInstanceState(Landroid/os/Par HSPLandroid/widget/Editor$UndoInputFilter;->saveInstanceState(Landroid/os/Parcel;)V HSPLandroid/widget/Editor;->-$$Nest$fgetmTextView(Landroid/widget/Editor;)Landroid/widget/TextView; HSPLandroid/widget/Editor;->-$$Nest$mgetInputMethodManager(Landroid/widget/Editor;)Landroid/view/inputmethod/InputMethodManager; -HSPLandroid/widget/Editor;->(Landroid/widget/TextView;)V -HSPLandroid/widget/Editor;->addSpanWatchers(Landroid/text/Spannable;)V +HSPLandroid/widget/Editor;->(Landroid/widget/TextView;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/UndoManager;Landroid/content/UndoManager;]Landroid/content/Context;missing_types +HSPLandroid/widget/Editor;->addSpanWatchers(Landroid/text/Spannable;)V+]Landroid/text/Spannable;Landroid/text/SpannableString; HSPLandroid/widget/Editor;->adjustInputType(ZZZZ)V HSPLandroid/widget/Editor;->beginBatchEdit()V HSPLandroid/widget/Editor;->clampHorizontalPosition(Landroid/graphics/drawable/Drawable;F)I @@ -20176,17 +19968,17 @@ HSPLandroid/widget/Editor;->createInputContentTypeIfNeeded()V HSPLandroid/widget/Editor;->createInputMethodStateIfNeeded()V HSPLandroid/widget/Editor;->discardTextDisplayLists()V HSPLandroid/widget/Editor;->downgradeEasyCorrectionSpans()V -HSPLandroid/widget/Editor;->drawHardwareAccelerated(Landroid/graphics/Canvas;Landroid/text/Layout;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/util/ArraySet;Landroid/util/ArraySet; +HSPLandroid/widget/Editor;->drawHardwareAccelerated(Landroid/graphics/Canvas;Landroid/text/Layout;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/util/ArraySet;Landroid/util/ArraySet; HSPLandroid/widget/Editor;->drawHardwareAcceleratedInner(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I[I[IIII)I HSPLandroid/widget/Editor;->endBatchEdit()V HSPLandroid/widget/Editor;->ensureEndedBatchEdit()V HSPLandroid/widget/Editor;->ensureNoSelectionIfNonSelectable()V -HSPLandroid/widget/Editor;->extractedTextModeWillBeStarted()Z +HSPLandroid/widget/Editor;->extractedTextModeWillBeStarted()Z+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager; HSPLandroid/widget/Editor;->finishBatchEdit(Landroid/widget/Editor$InputMethodState;)V HSPLandroid/widget/Editor;->forgetUndoRedo()V HSPLandroid/widget/Editor;->getAvailableDisplayListIndex([III)I HSPLandroid/widget/Editor;->getDefaultOnReceiveContentListener()Landroid/widget/TextViewOnReceiveContentListener; -HSPLandroid/widget/Editor;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/widget/Editor;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager;+]Landroid/content/Context;missing_types HSPLandroid/widget/Editor;->getInsertionController()Landroid/widget/Editor$InsertionPointCursorController; HSPLandroid/widget/Editor;->getLastTapPosition()I HSPLandroid/widget/Editor;->getPositionListener()Landroid/widget/Editor$PositionListener; @@ -20206,9 +19998,9 @@ HSPLandroid/widget/Editor;->loadCursorDrawable()V HSPLandroid/widget/Editor;->loadHandleDrawables(Z)V HSPLandroid/widget/Editor;->makeBlink()V HSPLandroid/widget/Editor;->maybeFireScheduledRestartInputForSetText()V -HSPLandroid/widget/Editor;->onAttachedToWindow()V -HSPLandroid/widget/Editor;->onDetachedFromWindow()V -HSPLandroid/widget/Editor;->onDraw(Landroid/graphics/Canvas;Landroid/text/Layout;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V +HSPLandroid/widget/Editor;->onAttachedToWindow()V+]Landroid/widget/Editor$PositionListener;Landroid/widget/Editor$PositionListener;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Ljava/lang/CharSequence;Landroid/text/SpannableString; +HSPLandroid/widget/Editor;->onDetachedFromWindow()V+]Landroid/widget/Editor$PositionListener;Landroid/widget/Editor$PositionListener;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/widget/TextViewOnReceiveContentListener;Landroid/widget/TextViewOnReceiveContentListener;]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/Editor;->onDraw(Landroid/graphics/Canvas;Landroid/text/Layout;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager;]Landroid/widget/SelectionActionModeHelper;Landroid/widget/SelectionActionModeHelper;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/widget/Editor;->onFocusChanged(ZI)V HSPLandroid/widget/Editor;->onLocaleChanged()V HSPLandroid/widget/Editor;->onScreenStateChanged(I)V @@ -20216,14 +20008,14 @@ HSPLandroid/widget/Editor;->onScrollChanged()V HSPLandroid/widget/Editor;->onTouchEvent(Landroid/view/MotionEvent;)V HSPLandroid/widget/Editor;->onTouchUpEvent(Landroid/view/MotionEvent;)V HSPLandroid/widget/Editor;->onWindowFocusChanged(Z)V -HSPLandroid/widget/Editor;->prepareCursorControllers()V -HSPLandroid/widget/Editor;->refreshTextActionMode()V +HSPLandroid/widget/Editor;->prepareCursorControllers()V+]Landroid/view/View;missing_types]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/Editor;->refreshTextActionMode()V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/Editor;->reportExtractedText()Z HSPLandroid/widget/Editor;->restoreInstanceState(Landroid/os/ParcelableParcel;)V -HSPLandroid/widget/Editor;->resumeBlink()V +HSPLandroid/widget/Editor;->resumeBlink()V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/Editor;->saveInstanceState()Landroid/os/ParcelableParcel; HSPLandroid/widget/Editor;->scheduleRestartInputForSetText()V -HSPLandroid/widget/Editor;->sendOnTextChanged(III)V +HSPLandroid/widget/Editor;->sendOnTextChanged(III)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/SelectionActionModeHelper;Landroid/widget/SelectionActionModeHelper; HSPLandroid/widget/Editor;->sendUpdateSelection()V HSPLandroid/widget/Editor;->setFrame()V HSPLandroid/widget/Editor;->setTransformationMethod(Landroid/text/method/TransformationMethod;)V @@ -20248,12 +20040,12 @@ HSPLandroid/widget/ForwardingListener;->onViewAttachedToWindow(Landroid/view/Vie HSPLandroid/widget/ForwardingListener;->onViewDetachedFromWindow(Landroid/view/View;)V HSPLandroid/widget/FrameLayout$LayoutParams;->(II)V HSPLandroid/widget/FrameLayout$LayoutParams;->(III)V -HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;)V HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/FrameLayout;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/FrameLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/widget/FrameLayout$LayoutParams; @@ -20261,13 +20053,13 @@ HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/util/AttributeSet HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/FrameLayout$LayoutParams; HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/FrameLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; -HSPLandroid/widget/FrameLayout;->getPaddingBottomWithForeground()I -HSPLandroid/widget/FrameLayout;->getPaddingLeftWithForeground()I -HSPLandroid/widget/FrameLayout;->getPaddingRightWithForeground()I -HSPLandroid/widget/FrameLayout;->getPaddingTopWithForeground()I -HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V +HSPLandroid/widget/FrameLayout;->getPaddingBottomWithForeground()I+]Landroid/widget/FrameLayout;missing_types +HSPLandroid/widget/FrameLayout;->getPaddingLeftWithForeground()I+]Landroid/widget/FrameLayout;missing_types +HSPLandroid/widget/FrameLayout;->getPaddingRightWithForeground()I+]Landroid/widget/FrameLayout;missing_types +HSPLandroid/widget/FrameLayout;->getPaddingTopWithForeground()I+]Landroid/widget/FrameLayout;missing_types +HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V+]Landroid/widget/FrameLayout;missing_types]Landroid/view/View;missing_types HSPLandroid/widget/FrameLayout;->onLayout(ZIIII)V -HSPLandroid/widget/FrameLayout;->onMeasure(II)V +HSPLandroid/widget/FrameLayout;->onMeasure(II)V+]Landroid/widget/FrameLayout;missing_types]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/widget/FrameLayout;->setForegroundGravity(I)V HSPLandroid/widget/FrameLayout;->setMeasureAllChildren(Z)V HSPLandroid/widget/FrameLayout;->shouldDelayChildPressedState()Z @@ -20344,7 +20136,7 @@ HSPLandroid/widget/HorizontalScrollView;->getAccessibilityClassName()Ljava/lang/ HSPLandroid/widget/HorizontalScrollView;->getScrollRange()I HSPLandroid/widget/HorizontalScrollView;->inChild(II)Z HSPLandroid/widget/HorizontalScrollView;->initScrollView()V -HSPLandroid/widget/HorizontalScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V +HSPLandroid/widget/HorizontalScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V+]Landroid/view/View;Landroid/widget/LinearLayout; HSPLandroid/widget/HorizontalScrollView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/widget/HorizontalScrollView;->onLayout(ZIIII)V HSPLandroid/widget/HorizontalScrollView;->onMeasure(II)V @@ -20364,13 +20156,13 @@ HSPLandroid/widget/ImageView$ScaleType;->values()[Landroid/widget/ImageView$Scal HSPLandroid/widget/ImageView;->(Landroid/content/Context;)V HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/ImageView;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/ImageView;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/Context;missing_types HSPLandroid/widget/ImageView;->applyAlpha()V -HSPLandroid/widget/ImageView;->applyColorFilter()V -HSPLandroid/widget/ImageView;->applyImageTint()V +HSPLandroid/widget/ImageView;->applyColorFilter()V+]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/widget/ImageView;->applyImageTint()V+]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/widget/ImageView;->applyXfermode()V HSPLandroid/widget/ImageView;->clearColorFilter()V -HSPLandroid/widget/ImageView;->configureBounds()V +HSPLandroid/widget/ImageView;->configureBounds()V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/ImageView;missing_types HSPLandroid/widget/ImageView;->drawableHotspotChanged(FF)V HSPLandroid/widget/ImageView;->drawableStateChanged()V HSPLandroid/widget/ImageView;->getAccessibilityClassName()Ljava/lang/CharSequence; @@ -20379,18 +20171,18 @@ HSPLandroid/widget/ImageView;->getDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/ImageView;->getImageMatrix()Landroid/graphics/Matrix; HSPLandroid/widget/ImageView;->getScaleType()Landroid/widget/ImageView$ScaleType; HSPLandroid/widget/ImageView;->hasOverlappingRendering()Z -HSPLandroid/widget/ImageView;->initImageView()V -HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->initImageView()V+]Landroid/widget/ImageView;missing_types +HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/widget/ImageView;->isFilledByImage()Z -HSPLandroid/widget/ImageView;->isOpaque()Z -HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/ImageView;->isOpaque()Z+]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/widget/ImageView;->onAttachedToWindow()V HSPLandroid/widget/ImageView;->onCreateDrawableState(I)[I HSPLandroid/widget/ImageView;->onDetachedFromWindow()V -HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V -HSPLandroid/widget/ImageView;->onMeasure(II)V +HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;,Landroid/graphics/Canvas;]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/widget/ImageView;->onMeasure(II)V+]Landroid/widget/ImageView;missing_types HSPLandroid/widget/ImageView;->onRtlPropertiesChanged(I)V -HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V +HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V+]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/widget/ImageView;->resizeFromDrawable()V HSPLandroid/widget/ImageView;->resolveAdjustedSize(III)I HSPLandroid/widget/ImageView;->resolveUri()V @@ -20404,7 +20196,7 @@ HSPLandroid/widget/ImageView;->setCropToPadding(Z)V HSPLandroid/widget/ImageView;->setFrame(IIII)Z HSPLandroid/widget/ImageView;->setImageAlpha(I)V HSPLandroid/widget/ImageView;->setImageBitmap(Landroid/graphics/Bitmap;)V -HSPLandroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ImageView;missing_types HSPLandroid/widget/ImageView;->setImageMatrix(Landroid/graphics/Matrix;)V HSPLandroid/widget/ImageView;->setImageResource(I)V HSPLandroid/widget/ImageView;->setImageTintBlendMode(Landroid/graphics/BlendMode;)V @@ -20414,24 +20206,24 @@ HSPLandroid/widget/ImageView;->setMaxWidth(I)V HSPLandroid/widget/ImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V HSPLandroid/widget/ImageView;->setSelected(Z)V HSPLandroid/widget/ImageView;->setVisibility(I)V -HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/widget/ImageView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z HSPLandroid/widget/LinearLayout$LayoutParams;->(II)V HSPLandroid/widget/LinearLayout$LayoutParams;->(IIF)V -HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/Context;missing_types HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;)V HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/LinearLayout;missing_types HSPLandroid/widget/LinearLayout;->allViewsAreGoneBefore(I)Z HSPLandroid/widget/LinearLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z HSPLandroid/widget/LinearLayout;->forceUniformHeight(II)V HSPLandroid/widget/LinearLayout;->forceUniformWidth(II)V HSPLandroid/widget/LinearLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/LinearLayout;->generateDefaultLayoutParams()Landroid/widget/LinearLayout$LayoutParams; -HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; -HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/LinearLayout$LayoutParams; +HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; +HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/LinearLayout$LayoutParams;+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/LinearLayout$LayoutParams; HSPLandroid/widget/LinearLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; @@ -20442,23 +20234,23 @@ HSPLandroid/widget/LinearLayout;->getGravity()I HSPLandroid/widget/LinearLayout;->getLocationOffset(Landroid/view/View;)I HSPLandroid/widget/LinearLayout;->getNextLocationOffset(Landroid/view/View;)I HSPLandroid/widget/LinearLayout;->getOrientation()I -HSPLandroid/widget/LinearLayout;->getVirtualChildAt(I)Landroid/view/View; -HSPLandroid/widget/LinearLayout;->getVirtualChildCount()I +HSPLandroid/widget/LinearLayout;->getVirtualChildAt(I)Landroid/view/View;+]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->getVirtualChildCount()I+]Landroid/widget/LinearLayout;missing_types HSPLandroid/widget/LinearLayout;->hasDividerBeforeChildAt(I)Z -HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V -HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V -HSPLandroid/widget/LinearLayout;->measureChildBeforeLayout(Landroid/view/View;IIIII)V -HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V -HSPLandroid/widget/LinearLayout;->measureVertical(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; +HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->measureChildBeforeLayout(Landroid/view/View;IIIII)V+]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->measureVertical(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types HSPLandroid/widget/LinearLayout;->onDraw(Landroid/graphics/Canvas;)V -HSPLandroid/widget/LinearLayout;->onLayout(ZIIII)V -HSPLandroid/widget/LinearLayout;->onMeasure(II)V -HSPLandroid/widget/LinearLayout;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/LinearLayout;->onLayout(ZIIII)V+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; +HSPLandroid/widget/LinearLayout;->onMeasure(II)V+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; +HSPLandroid/widget/LinearLayout;->onRtlPropertiesChanged(I)V+]Landroid/widget/LinearLayout;missing_types HSPLandroid/widget/LinearLayout;->setBaselineAligned(Z)V -HSPLandroid/widget/LinearLayout;->setChildFrame(Landroid/view/View;IIII)V +HSPLandroid/widget/LinearLayout;->setChildFrame(Landroid/view/View;IIII)V+]Landroid/view/View;missing_types HSPLandroid/widget/LinearLayout;->setDividerDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/LinearLayout;->setGravity(I)V -HSPLandroid/widget/LinearLayout;->setOrientation(I)V +HSPLandroid/widget/LinearLayout;->setOrientation(I)V+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; HSPLandroid/widget/LinearLayout;->shouldDelayChildPressedState()Z HSPLandroid/widget/ListPopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/ListPopupWindow;->isShowing()Z @@ -20525,7 +20317,7 @@ HSPLandroid/widget/OverScroller$SplineOverScroller;->updateScroll(F)V HSPLandroid/widget/OverScroller;->(Landroid/content/Context;)V HSPLandroid/widget/OverScroller;->(Landroid/content/Context;Landroid/view/animation/Interpolator;)V HSPLandroid/widget/OverScroller;->(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V -HSPLandroid/widget/OverScroller;->abortAnimation()V +HSPLandroid/widget/OverScroller;->abortAnimation()V+]Landroid/widget/OverScroller$SplineOverScroller;Landroid/widget/OverScroller$SplineOverScroller; HSPLandroid/widget/OverScroller;->computeScrollOffset()Z HSPLandroid/widget/OverScroller;->fling(IIIIIIII)V HSPLandroid/widget/OverScroller;->fling(IIIIIIIIII)V @@ -20545,7 +20337,7 @@ HSPLandroid/widget/PopupWindow$PopupDecorView;->onAttachedToWindow()V HSPLandroid/widget/PopupWindow$PopupDecorView;->onDetachedFromWindow()V HSPLandroid/widget/PopupWindow;->-$$Nest$munregisterBackCallback(Landroid/widget/PopupWindow;Landroid/window/OnBackInvokedDispatcher;)V HSPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/PopupWindow;Landroid/widget/PopupWindow;]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/PopupWindow;->(Landroid/view/View;II)V HSPLandroid/widget/PopupWindow;->(Landroid/view/View;IIZ)V HSPLandroid/widget/PopupWindow;->attachToAnchor(Landroid/view/View;III)V @@ -20616,7 +20408,7 @@ HSPLandroid/widget/ProgressBar;->getMin()I HSPLandroid/widget/ProgressBar;->getProgress()I HSPLandroid/widget/ProgressBar;->getProgressDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/ProgressBar;->initProgressBar()V -HSPLandroid/widget/ProgressBar;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ProgressBar;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ProgressBar;missing_types]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/widget/ProgressBar;->isIndeterminate()Z HSPLandroid/widget/ProgressBar;->jumpDrawablesToCurrentState()V HSPLandroid/widget/ProgressBar;->needsTileify(Landroid/graphics/drawable/Drawable;)Z @@ -20665,7 +20457,7 @@ HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fgetmTop(Landroid/widge HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fputmBottom(Landroid/widget/RelativeLayout$LayoutParams;I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fputmTop(Landroid/widget/RelativeLayout$LayoutParams;I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->(II)V -HSPLandroid/widget/RelativeLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(II)V HSPLandroid/widget/RelativeLayout$LayoutParams;->getRules()[I @@ -20674,7 +20466,7 @@ HSPLandroid/widget/RelativeLayout$LayoutParams;->hasRelativeRules()Z HSPLandroid/widget/RelativeLayout$LayoutParams;->removeRule(I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->resolveLayoutDirection(I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->resolveRules(I)V -HSPLandroid/widget/RelativeLayout$LayoutParams;->shouldResolveLayoutDirection(I)Z +HSPLandroid/widget/RelativeLayout$LayoutParams;->shouldResolveLayoutDirection(I)Z+]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;)V HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V @@ -20692,16 +20484,16 @@ HSPLandroid/widget/RelativeLayout;->generateLayoutParams(Landroid/view/ViewGroup HSPLandroid/widget/RelativeLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; HSPLandroid/widget/RelativeLayout;->getBaseline()I HSPLandroid/widget/RelativeLayout;->getChildMeasureSpec(IIIIIIII)I -HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;+]Landroid/view/View;missing_types]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->getRelatedViewBaselineOffset([I)I HSPLandroid/widget/RelativeLayout;->getRelatedViewParams([II)Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/RelativeLayout;->measureChild(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/view/View;missing_types HSPLandroid/widget/RelativeLayout;->measureChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/view/View;missing_types -HSPLandroid/widget/RelativeLayout;->onLayout(ZIIII)V+]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;]Landroid/view/View;missing_types -HSPLandroid/widget/RelativeLayout;->onMeasure(II)V+]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;]Landroid/view/View;missing_types]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; -HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V -HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;]Landroid/view/View;Landroid/widget/Switch;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; +HSPLandroid/widget/RelativeLayout;->onLayout(ZIIII)V+]Landroid/widget/RelativeLayout;missing_types]Landroid/view/View;missing_types +HSPLandroid/widget/RelativeLayout;->onMeasure(II)V+]Landroid/widget/RelativeLayout;missing_types]Landroid/view/View;missing_types]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; +HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V+]Landroid/widget/RelativeLayout;missing_types]Landroid/view/View;missing_types +HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/widget/RelativeLayout;missing_types]Landroid/view/View;Landroid/widget/Switch;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/view/View;missing_types]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->queryCompatibilityModes(Landroid/content/Context;)V HSPLandroid/widget/RelativeLayout;->requestLayout()V @@ -20783,16 +20575,16 @@ HSPLandroid/widget/RtlSpacingHelper;->setAbsolute(II)V HSPLandroid/widget/RtlSpacingHelper;->setDirection(Z)V HSPLandroid/widget/RtlSpacingHelper;->setRelative(II)V HSPLandroid/widget/ScrollBarDrawable;->()V -HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V -HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V +HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; HSPLandroid/widget/ScrollBarDrawable;->getSize(Z)I -HSPLandroid/widget/ScrollBarDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/widget/ScrollBarDrawable;->isStateful()Z +HSPLandroid/widget/ScrollBarDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable; +HSPLandroid/widget/ScrollBarDrawable;->isStateful()Z+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; HSPLandroid/widget/ScrollBarDrawable;->mutate()Landroid/widget/ScrollBarDrawable; HSPLandroid/widget/ScrollBarDrawable;->onBoundsChange(Landroid/graphics/Rect;)V -HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z -HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V +HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; +HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; +HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; HSPLandroid/widget/ScrollBarDrawable;->setAlwaysDrawVerticalTrack(Z)V HSPLandroid/widget/ScrollBarDrawable;->setHorizontalThumbDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/ScrollBarDrawable;->setHorizontalTrackDrawable(Landroid/graphics/drawable/Drawable;)V @@ -20843,16 +20635,13 @@ HSPLandroid/widget/SelectionActionModeHelper$$ExternalSyntheticLambda8;->( HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;->isSelectionStarted()Z HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;->onTextChanged(IILandroid/view/textclassifier/TextClassification;)V HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;->resetSelection(ILandroid/widget/Editor;)Z -HSPLandroid/widget/SelectionActionModeHelper$TextClassificationHelper;->init(Ljava/util/function/Supplier;Ljava/lang/CharSequence;IILandroid/os/LocaleList;)V -HSPLandroid/widget/SelectionActionModeHelper;->(Landroid/widget/Editor;)V +HSPLandroid/widget/SelectionActionModeHelper$TextClassificationHelper;->init(Ljava/util/function/Supplier;Ljava/lang/CharSequence;IILandroid/os/LocaleList;)V+]Ljava/lang/CharSequence;Landroid/text/SpannableString; +HSPLandroid/widget/SelectionActionModeHelper;->(Landroid/widget/Editor;)V+]Landroid/view/textclassifier/TextClassificationConstants;Landroid/view/textclassifier/TextClassificationConstants;]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/SelectionActionModeHelper;->getText(Landroid/widget/TextView;)Ljava/lang/CharSequence; HSPLandroid/widget/SelectionActionModeHelper;->getTextClassificationSettings()Landroid/view/textclassifier/TextClassificationConstants; -HSPLandroid/widget/SelectionActionModeHelper;->isDrawingHighlight()Z+]Landroid/widget/SmartSelectSprite;Landroid/widget/SmartSelectSprite; -HSPLandroid/widget/SelectionActionModeHelper;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/widget/SelectionActionModeHelper;Landroid/widget/SelectionActionModeHelper; -HSPLandroid/widget/SelectionActionModeHelper;->onTextChanged(II)V +HSPLandroid/widget/SelectionActionModeHelper;->onTextChanged(II)V+]Landroid/widget/SelectionActionModeHelper$SelectionTracker;Landroid/widget/SelectionActionModeHelper$SelectionTracker; HSPLandroid/widget/SelectionActionModeHelper;->sortSelectionIndices(II)[I HSPLandroid/widget/SmartSelectSprite;->(Landroid/content/Context;ILjava/lang/Runnable;)V -HSPLandroid/widget/SmartSelectSprite;->isAnimationActive()Z HSPLandroid/widget/Space;->(Landroid/content/Context;)V HSPLandroid/widget/Space;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/Space;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V @@ -20911,21 +20700,21 @@ HSPLandroid/widget/TextView$TextAppearanceAttributes;->(Landroid/widget/Te HSPLandroid/widget/TextView;->(Landroid/content/Context;)V HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/content/Context;missing_types]Landroid/widget/TextView;megamorphic_types +HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/content/Context;missing_types]Landroid/widget/TextView;megamorphic_types]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration; HSPLandroid/widget/TextView;->addSearchHighlightPaths()V HSPLandroid/widget/TextView;->addTextChangedListener(Landroid/text/TextWatcher;)V HSPLandroid/widget/TextView;->applyCompoundDrawableTint()V HSPLandroid/widget/TextView;->applySingleLine(ZZZZ)V -HSPLandroid/widget/TextView;->applyTextAppearance(Landroid/widget/TextView$TextAppearanceAttributes;)V +HSPLandroid/widget/TextView;->applyTextAppearance(Landroid/widget/TextView$TextAppearanceAttributes;)V+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->assumeLayout()V HSPLandroid/widget/TextView;->autoSizeText()V HSPLandroid/widget/TextView;->beginBatchEdit()V HSPLandroid/widget/TextView;->bringPointIntoView(I)Z -HSPLandroid/widget/TextView;->bringPointIntoView(IZ)Z +HSPLandroid/widget/TextView;->bringPointIntoView(IZ)Z+]Landroid/text/Layout$Alignment;Landroid/text/Layout$Alignment;]Landroid/text/Layout;Landroid/text/DynamicLayout; HSPLandroid/widget/TextView;->bringTextIntoView()Z HSPLandroid/widget/TextView;->canMarquee()Z HSPLandroid/widget/TextView;->cancelLongPress()V -HSPLandroid/widget/TextView;->checkForRelayout()V +HSPLandroid/widget/TextView;->checkForRelayout()V+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout; HSPLandroid/widget/TextView;->checkForResize()V HSPLandroid/widget/TextView;->cleanupAutoSizePresetSizes([I)[I HSPLandroid/widget/TextView;->compressText(F)Z+]Landroid/text/Layout;Landroid/text/BoringLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint; @@ -20935,11 +20724,10 @@ HSPLandroid/widget/TextView;->computeVerticalScrollExtent()I+]Landroid/widget/Te HSPLandroid/widget/TextView;->computeVerticalScrollRange()I HSPLandroid/widget/TextView;->convertToLocalHorizontalCoordinate(F)F HSPLandroid/widget/TextView;->createEditorIfNeeded()V -HSPLandroid/widget/TextView;->desired(Landroid/text/Layout;)I HSPLandroid/widget/TextView;->didTouchFocusSelect()Z HSPLandroid/widget/TextView;->doKeyDown(ILandroid/view/KeyEvent;Landroid/view/KeyEvent;)I HSPLandroid/widget/TextView;->drawableHotspotChanged(FF)V -HSPLandroid/widget/TextView;->drawableStateChanged()V +HSPLandroid/widget/TextView;->drawableStateChanged()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/widget/TextView;->endBatchEdit()V HSPLandroid/widget/TextView;->findLargestTextSizeWhichFits(Landroid/graphics/RectF;)I HSPLandroid/widget/TextView;->fixFocusableAndClickableSettings()V @@ -20966,13 +20754,12 @@ HSPLandroid/widget/TextView;->getCursorAnchorInfo(ILandroid/view/inputmethod/Cur HSPLandroid/widget/TextView;->getDefaultEditable()Z HSPLandroid/widget/TextView;->getDefaultMovementMethod()Landroid/text/method/MovementMethod; HSPLandroid/widget/TextView;->getDesiredHeight()I -HSPLandroid/widget/TextView;->getDesiredHeight(Landroid/text/Layout;Z)I -HSPLandroid/widget/TextView;->getDisplayMetricsOrSystem()Landroid/util/DisplayMetrics; +HSPLandroid/widget/TextView;->getDesiredHeight(Landroid/text/Layout;Z)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->getEditableText()Landroid/text/Editable; HSPLandroid/widget/TextView;->getEllipsize()Landroid/text/TextUtils$TruncateAt; HSPLandroid/widget/TextView;->getError()Ljava/lang/CharSequence; -HSPLandroid/widget/TextView;->getExtendedPaddingBottom()I -HSPLandroid/widget/TextView;->getExtendedPaddingTop()I +HSPLandroid/widget/TextView;->getExtendedPaddingBottom()I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types +HSPLandroid/widget/TextView;->getExtendedPaddingTop()I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->getFilters()[Landroid/text/InputFilter; HSPLandroid/widget/TextView;->getFocusedRect(Landroid/graphics/Rect;)V HSPLandroid/widget/TextView;->getFreezesText()Z @@ -20999,23 +20786,22 @@ HSPLandroid/widget/TextView;->getLineSpacingMultiplier()F HSPLandroid/widget/TextView;->getMaxEms()I HSPLandroid/widget/TextView;->getMaxLines()I HSPLandroid/widget/TextView;->getMinEms()I -HSPLandroid/widget/TextView;->getMinLines()I HSPLandroid/widget/TextView;->getMinWidth()I HSPLandroid/widget/TextView;->getOffsetAtCoordinate(IF)I HSPLandroid/widget/TextView;->getOffsetForPosition(FF)I HSPLandroid/widget/TextView;->getPaint()Landroid/text/TextPaint; -HSPLandroid/widget/TextView;->getSelectionEnd()I +HSPLandroid/widget/TextView;->getSelectionEnd()I+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->getSelectionEndTransformed()I -HSPLandroid/widget/TextView;->getSelectionStart()I +HSPLandroid/widget/TextView;->getSelectionStart()I+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->getSelectionStartTransformed()I HSPLandroid/widget/TextView;->getServiceManagerForUser(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; HSPLandroid/widget/TextView;->getSpellCheckerLocale()Ljava/util/Locale; HSPLandroid/widget/TextView;->getText()Ljava/lang/CharSequence; HSPLandroid/widget/TextView;->getTextColors()Landroid/content/res/ColorStateList; HSPLandroid/widget/TextView;->getTextCursorDrawable()Landroid/graphics/drawable/Drawable; -HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; -HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale; -HSPLandroid/widget/TextView;->getTextLocales()Landroid/os/LocaleList; +HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;+]Landroid/widget/TextView;missing_types +HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale;+]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/widget/TextView;->getTextLocales()Landroid/os/LocaleList;+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/widget/TextView;->getTextSelectHandle()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/TextView;->getTextSelectHandleLeft()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/TextView;->getTextSelectHandleRight()Landroid/graphics/drawable/Drawable; @@ -21027,23 +20813,23 @@ HSPLandroid/widget/TextView;->getTotalPaddingTop()I HSPLandroid/widget/TextView;->getTransformationMethod()Landroid/text/method/TransformationMethod; HSPLandroid/widget/TextView;->getTypeface()Landroid/graphics/Typeface; HSPLandroid/widget/TextView;->getTypefaceStyle()I -HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path; -HSPLandroid/widget/TextView;->getVerticalOffset(Z)I +HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path;+]Landroid/graphics/Path;Landroid/graphics/Path;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/text/Layout;Landroid/text/DynamicLayout;]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/TextView;->getVerticalOffset(Z)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Ljava/lang/CharSequence;missing_types HSPLandroid/widget/TextView;->handleBackInTextActionModeIfNeeded(Landroid/view/KeyEvent;)Z HSPLandroid/widget/TextView;->handleTextChanged(Ljava/lang/CharSequence;III)V HSPLandroid/widget/TextView;->hasGesturePreviewHighlight()Z HSPLandroid/widget/TextView;->hasOverlappingRendering()Z HSPLandroid/widget/TextView;->hasPasswordTransformationMethod()Z -HSPLandroid/widget/TextView;->hasSelection()Z +HSPLandroid/widget/TextView;->hasSelection()Z+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->hideErrorIfUnchanged()V HSPLandroid/widget/TextView;->invalidateCursor()V -HSPLandroid/widget/TextView;->invalidateCursorPath()V -HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->invalidateCursorPath()V+]Landroid/graphics/Path;Landroid/graphics/Path;]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/TextView;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/widget/TextView;->invalidateRegion(IIZ)V HSPLandroid/widget/TextView;->isAnyPasswordInputType()Z HSPLandroid/widget/TextView;->isAutoHandwritingEnabled()Z+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->isAutoSizeEnabled()Z -HSPLandroid/widget/TextView;->isAutofillable()Z +HSPLandroid/widget/TextView;->isAutofillable()Z+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->isFallbackLineSpacingForStaticLayout()Z HSPLandroid/widget/TextView;->isFromPrimePointer(Landroid/view/MotionEvent;Z)Z HSPLandroid/widget/TextView;->isInBatchEditMode()Z @@ -21052,28 +20838,28 @@ HSPLandroid/widget/TextView;->isInputMethodTarget()Z HSPLandroid/widget/TextView;->isMarqueeFadeEnabled()Z HSPLandroid/widget/TextView;->isMultilineInputType(I)Z HSPLandroid/widget/TextView;->isPasswordInputType(I)Z -HSPLandroid/widget/TextView;->isPositionVisible(FF)Z +HSPLandroid/widget/TextView;->isPositionVisible(FF)Z+]Landroid/view/View;missing_types]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/widget/TextView;->isShowingHint()Z HSPLandroid/widget/TextView;->isSuggestionsEnabled()Z HSPLandroid/widget/TextView;->isTextEditable()Z HSPLandroid/widget/TextView;->isTextSelectable()Z HSPLandroid/widget/TextView;->isVisibleToAccessibility()Z -HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/widget/TextView;->length()I -HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V -HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout; -HSPLandroid/widget/TextView;->maybeUpdateHighlightPaths()V -HSPLandroid/widget/TextView;->notifyContentCaptureTextChanged()V -HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V -HSPLandroid/widget/TextView;->nullLayouts()V -HSPLandroid/widget/TextView;->onAttachedToWindow()V +HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder; +HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout;+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder;]Landroid/text/DynamicLayout$Builder;Landroid/text/DynamicLayout$Builder;]Landroid/widget/TextView;missing_types +HSPLandroid/widget/TextView;->maybeUpdateHighlightPaths()V+]Ljava/util/List;Ljava/util/ArrayList; +HSPLandroid/widget/TextView;->notifyContentCaptureTextChanged()V+]Landroid/view/contentcapture/ContentCaptureManager;Landroid/view/contentcapture/ContentCaptureManager;]Landroid/view/contentcapture/ContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; +HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V+]Landroid/widget/TextView;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/content/Context;missing_types +HSPLandroid/widget/TextView;->nullLayouts()V+]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/TextView;->onAttachedToWindow()V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/TextView;->onBeginBatchEdit()V HSPLandroid/widget/TextView;->onCheckIsTextEditor()Z HSPLandroid/widget/TextView;->onConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I +HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; -HSPLandroid/widget/TextView;->onDetachedFromWindowInternal()V -HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/TextView;->onDetachedFromWindowInternal()V+]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;,Landroid/text/DynamicLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/BitmapDrawable;,Landroid/graphics/drawable/VectorDrawable;]Landroid/widget/Editor;Landroid/widget/Editor;]Ljava/lang/CharSequence;Landroid/text/SpannableStringBuilder;]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->onEditorAction(I)V HSPLandroid/widget/TextView;->onEndBatchEdit()V HSPLandroid/widget/TextView;->onFocusChanged(ZILandroid/graphics/Rect;)V @@ -21084,12 +20870,12 @@ HSPLandroid/widget/TextView;->onKeyPreIme(ILandroid/view/KeyEvent;)Z HSPLandroid/widget/TextView;->onKeyUp(ILandroid/view/KeyEvent;)Z HSPLandroid/widget/TextView;->onLayout(ZIIII)V HSPLandroid/widget/TextView;->onLocaleChanged()V -HSPLandroid/widget/TextView;->onMeasure(II)V+]Landroid/text/Layout;Landroid/text/BoringLayout; +HSPLandroid/widget/TextView;->onMeasure(II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;,Landroid/text/DynamicLayout;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; HSPLandroid/widget/TextView;->onPreDraw()Z -HSPLandroid/widget/TextView;->onProvideStructure(Landroid/view/ViewStructure;II)V +HSPLandroid/widget/TextView;->onProvideStructure(Landroid/view/ViewStructure;II)V+]Landroid/view/View;missing_types]Landroid/widget/TextViewOnReceiveContentListener;Landroid/widget/TextViewOnReceiveContentListener;]Landroid/text/InputFilter$LengthFilter;Landroid/text/InputFilter$LengthFilter;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/view/ViewStructure;Landroid/app/assist/AssistStructure$ViewNodeBuilder;,Landroid/view/contentcapture/ViewNode$ViewStructureImpl;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; HSPLandroid/widget/TextView;->onResolveDrawables(I)V HSPLandroid/widget/TextView;->onRestoreInstanceState(Landroid/os/Parcelable;)V -HSPLandroid/widget/TextView;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/TextView;->onRtlPropertiesChanged(I)V+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->onSaveInstanceState()Landroid/os/Parcelable; HSPLandroid/widget/TextView;->onScreenStateChanged(I)V HSPLandroid/widget/TextView;->onScrollChanged(IIII)V @@ -21101,12 +20887,12 @@ HSPLandroid/widget/TextView;->onVisibilityChanged(Landroid/view/View;I)V HSPLandroid/widget/TextView;->onWindowFocusChanged(Z)V HSPLandroid/widget/TextView;->originalToTransformed(II)I HSPLandroid/widget/TextView;->preloadFontCache()V -HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V -HSPLandroid/widget/TextView;->registerForPreDraw()V +HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/Context;missing_types +HSPLandroid/widget/TextView;->registerForPreDraw()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver; HSPLandroid/widget/TextView;->removeAdjacentSuggestionSpans(I)V -HSPLandroid/widget/TextView;->removeIntersectingNonAdjacentSpans(IILjava/lang/Class;)V +HSPLandroid/widget/TextView;->removeIntersectingNonAdjacentSpans(IILjava/lang/Class;)V+]Landroid/text/Editable;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/widget/TextView;->removeMisspelledSpans(Landroid/text/Spannable;)V -HSPLandroid/widget/TextView;->removeSuggestionSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->removeSuggestionSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Landroid/text/SpannableString;]Landroid/text/Spannable;Landroid/text/SpannableString; HSPLandroid/widget/TextView;->removeTextChangedListener(Landroid/text/TextWatcher;)V HSPLandroid/widget/TextView;->resetErrorChangedFlag()V HSPLandroid/widget/TextView;->resetResolvedDrawables()V @@ -21114,14 +20900,14 @@ HSPLandroid/widget/TextView;->resolveStyleAndSetTypeface(Landroid/graphics/Typef HSPLandroid/widget/TextView;->restartMarqueeIfNeeded()V HSPLandroid/widget/TextView;->sendAccessibilityEventInternal(I)V HSPLandroid/widget/TextView;->sendAfterTextChanged(Landroid/text/Editable;)V -HSPLandroid/widget/TextView;->sendBeforeTextChanged(Ljava/lang/CharSequence;III)V -HSPLandroid/widget/TextView;->sendOnTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/widget/TextView;->sendBeforeTextChanged(Ljava/lang/CharSequence;III)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/text/TextWatcher;missing_types +HSPLandroid/widget/TextView;->sendOnTextChanged(Ljava/lang/CharSequence;III)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/text/TextWatcher;missing_types HSPLandroid/widget/TextView;->setAllCaps(Z)V HSPLandroid/widget/TextView;->setAutoSizeTextTypeUniformWithPresetSizes([II)V HSPLandroid/widget/TextView;->setBreakStrategy(I)V -HSPLandroid/widget/TextView;->setCompoundDrawablePadding(I)V +HSPLandroid/widget/TextView;->setCompoundDrawablePadding(I)V+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->setCompoundDrawableTintList(Landroid/content/res/ColorStateList;)V -HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/TextView;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/widget/TextView;->setCompoundDrawablesRelative(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/TextView;->setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V @@ -21129,16 +20915,16 @@ HSPLandroid/widget/TextView;->setCursorVisible(Z)V HSPLandroid/widget/TextView;->setEditableFactory(Landroid/text/Editable$Factory;)V HSPLandroid/widget/TextView;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)V HSPLandroid/widget/TextView;->setEnabled(Z)V -HSPLandroid/widget/TextView;->setFilters(Landroid/text/Editable;[Landroid/text/InputFilter;)V +HSPLandroid/widget/TextView;->setFilters(Landroid/text/Editable;[Landroid/text/InputFilter;)V+]Landroid/text/Editable;missing_types HSPLandroid/widget/TextView;->setFilters([Landroid/text/InputFilter;)V HSPLandroid/widget/TextView;->setFontFeatureSettings(Ljava/lang/String;)V -HSPLandroid/widget/TextView;->setFrame(IIII)Z +HSPLandroid/widget/TextView;->setFrame(IIII)Z+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/TextView;->setGravity(I)V HSPLandroid/widget/TextView;->setHeight(I)V HSPLandroid/widget/TextView;->setHighlightColor(I)V HSPLandroid/widget/TextView;->setHint(I)V HSPLandroid/widget/TextView;->setHint(Ljava/lang/CharSequence;)V -HSPLandroid/widget/TextView;->setHintInternal(Ljava/lang/CharSequence;)V +HSPLandroid/widget/TextView;->setHintInternal(Ljava/lang/CharSequence;)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Ljava/lang/CharSequence;missing_types HSPLandroid/widget/TextView;->setHintTextColor(I)V HSPLandroid/widget/TextView;->setHintTextColor(Landroid/content/res/ColorStateList;)V HSPLandroid/widget/TextView;->setHorizontallyScrolling(Z)V @@ -21151,10 +20937,8 @@ HSPLandroid/widget/TextView;->setInputTypeFromEditor()V HSPLandroid/widget/TextView;->setInputTypeSingleLine(Z)V HSPLandroid/widget/TextView;->setKeyListener(Landroid/text/method/KeyListener;)V HSPLandroid/widget/TextView;->setKeyListenerOnly(Landroid/text/method/KeyListener;)V -HSPLandroid/widget/TextView;->setLetterSpacing(F)V +HSPLandroid/widget/TextView;->setLetterSpacing(F)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/widget/TextView;->setLineHeight(I)V -HSPLandroid/widget/TextView;->setLineHeight(IF)V+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/widget/TextView;Landroid/widget/TextView; -HSPLandroid/widget/TextView;->setLineHeightPx(F)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/widget/TextView;Landroid/widget/TextView; HSPLandroid/widget/TextView;->setLineSpacing(FF)V HSPLandroid/widget/TextView;->setLines(I)V HSPLandroid/widget/TextView;->setLinkTextColor(Landroid/content/res/ColorStateList;)V @@ -21164,13 +20948,13 @@ HSPLandroid/widget/TextView;->setMaxWidth(I)V HSPLandroid/widget/TextView;->setMinHeight(I)V HSPLandroid/widget/TextView;->setMinLines(I)V HSPLandroid/widget/TextView;->setMinWidth(I)V -HSPLandroid/widget/TextView;->setMovementMethod(Landroid/text/method/MovementMethod;)V +HSPLandroid/widget/TextView;->setMovementMethod(Landroid/text/method/MovementMethod;)V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/TextView;->setOnEditorActionListener(Landroid/widget/TextView$OnEditorActionListener;)V HSPLandroid/widget/TextView;->setPadding(IIII)V HSPLandroid/widget/TextView;->setPaddingRelative(IIII)V HSPLandroid/widget/TextView;->setPrivateImeOptions(Ljava/lang/String;)V HSPLandroid/widget/TextView;->setRawInputType(I)V -HSPLandroid/widget/TextView;->setRawTextSize(FZ)V +HSPLandroid/widget/TextView;->setRawTextSize(FZ)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/widget/TextView;->setRelativeDrawablesIfNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/TextView;->setSelected(Z)V HSPLandroid/widget/TextView;->setShadowLayer(FFFI)V @@ -21179,36 +20963,35 @@ HSPLandroid/widget/TextView;->setSingleLine(Z)V HSPLandroid/widget/TextView;->setText(I)V HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V -HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V +HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V+]Landroid/text/method/TransformationMethod;missing_types]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;missing_types]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/text/Spanned;missing_types]Landroid/text/method/MovementMethod;missing_types]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/text/Spannable$Factory;Landroid/text/Spannable$Factory;]Landroid/text/Spannable;missing_types]Landroid/text/Editable$Factory;missing_types]Landroid/text/InputFilter;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/widget/TextView;->setTextAppearance(I)V HSPLandroid/widget/TextView;->setTextAppearance(Landroid/content/Context;I)V HSPLandroid/widget/TextView;->setTextColor(I)V HSPLandroid/widget/TextView;->setTextColor(Landroid/content/res/ColorStateList;)V HSPLandroid/widget/TextView;->setTextInternal(Ljava/lang/CharSequence;)V -HSPLandroid/widget/TextView;->setTextIsSelectable(Z)V +HSPLandroid/widget/TextView;->setTextIsSelectable(Z)V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/TextView;->setTextSize(F)V HSPLandroid/widget/TextView;->setTextSize(IF)V HSPLandroid/widget/TextView;->setTextSizeInternal(IFZ)V HSPLandroid/widget/TextView;->setTransformationMethod(Landroid/text/method/TransformationMethod;)V -HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V -HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V +HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V+]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Typeface;Landroid/graphics/Typeface; HSPLandroid/widget/TextView;->setTypefaceFromAttrs(Landroid/graphics/Typeface;Ljava/lang/String;III)V HSPLandroid/widget/TextView;->setupAutoSizeText()Z HSPLandroid/widget/TextView;->setupAutoSizeUniformPresetSizesConfiguration()Z HSPLandroid/widget/TextView;->shouldAdvanceFocusOnEnter()Z -HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V +HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/text/Spanned;missing_types HSPLandroid/widget/TextView;->startMarquee()V HSPLandroid/widget/TextView;->startStopMarquee(Z)V HSPLandroid/widget/TextView;->stopMarquee()V HSPLandroid/widget/TextView;->stopTextActionMode()V HSPLandroid/widget/TextView;->suggestedSizeFitsInSpace(ILandroid/graphics/RectF;)Z HSPLandroid/widget/TextView;->supportsAutoSizeText()Z -HSPLandroid/widget/TextView;->textCanBeSelected()Z -HSPLandroid/widget/TextView;->transformedToOriginal(II)I -HSPLandroid/widget/TextView;->unregisterForPreDraw()V +HSPLandroid/widget/TextView;->textCanBeSelected()Z+]Landroid/text/method/MovementMethod;Landroid/text/method/ArrowKeyMovementMethod; +HSPLandroid/widget/TextView;->unregisterForPreDraw()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver; HSPLandroid/widget/TextView;->updateAfterEdit()V HSPLandroid/widget/TextView;->updateCursorVisibleInternal()V -HSPLandroid/widget/TextView;->updateTextColors()V +HSPLandroid/widget/TextView;->updateTextColors()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;missing_types HSPLandroid/widget/TextView;->useDynamicLayout()Z HSPLandroid/widget/TextView;->validateAndSetAutoSizeTextTypeUniformConfiguration(FFF)V HSPLandroid/widget/TextView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z @@ -21258,7 +21041,6 @@ HSPLandroid/widget/Toolbar;->setTitle(Ljava/lang/CharSequence;)V HSPLandroid/widget/Toolbar;->shouldCollapse()Z HSPLandroid/widget/ViewAnimator;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ViewAnimator;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V -HSPLandroid/widget/ViewAnimator;->getCurrentView()Landroid/view/View;+]Landroid/widget/ViewAnimator;Landroid/widget/ViewFlipper; HSPLandroid/widget/ViewAnimator;->initViewAnimator(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ViewAnimator;->setAnimateFirstView(Z)V HSPLandroid/widget/ViewAnimator;->setDisplayedChild(I)V @@ -21322,14 +21104,12 @@ HSPLandroid/window/OnBackInvokedCallbackInfo;->writeToParcel(Landroid/os/Parcel; HSPLandroid/window/ProxyOnBackInvokedDispatcher$$ExternalSyntheticLambda0;->(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->clearCallbacksOnDispatcher()V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->registerOnBackInvokedCallback(ILandroid/window/OnBackInvokedCallback;)V -HSPLandroid/window/ProxyOnBackInvokedDispatcher;->registerOnBackInvokedCallbackUnchecked(Landroid/window/OnBackInvokedCallback;I)V -HSPLandroid/window/ProxyOnBackInvokedDispatcher;->registerSystemOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->setActualDispatcher(Landroid/window/OnBackInvokedDispatcher;)V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->transferCallbacksToDispatcher()V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->unregisterOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/SizeConfigurationBuckets$1;->()V HSPLandroid/window/SizeConfigurationBuckets;->()V -HSPLandroid/window/SizeConfigurationBuckets;->([Landroid/content/res/Configuration;)V +HSPLandroid/window/SizeConfigurationBuckets;->([Landroid/content/res/Configuration;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLandroid/window/SizeConfigurationBuckets;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V @@ -21352,7 +21132,6 @@ HSPLandroid/window/SurfaceSyncGroup;->add(Landroid/window/ISurfaceSyncGroup;ZLja HSPLandroid/window/SurfaceSyncGroup;->addLocalSync(Landroid/window/ISurfaceSyncGroup;Z)Z HSPLandroid/window/SurfaceSyncGroup;->addSyncCompleteCallback(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V HSPLandroid/window/SurfaceSyncGroup;->addTimeout()V+]Landroid/os/HandlerThread;Landroid/os/HandlerThread;]Landroid/os/Handler;Landroid/os/Handler; -HSPLandroid/window/SurfaceSyncGroup;->addTransaction(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/window/SurfaceSyncGroup;->checkIfSyncIsComplete()V HSPLandroid/window/SurfaceSyncGroup;->createTransactionReadyCallback(Z)Landroid/window/ITransactionReadyCallback; HSPLandroid/window/SurfaceSyncGroup;->getSurfaceSyncGroup(Landroid/window/ISurfaceSyncGroup;)Landroid/window/SurfaceSyncGroup; @@ -21423,7 +21202,6 @@ HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnable HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled(Landroid/content/Context;)Z HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerOnBackInvokedCallback(ILandroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerOnBackInvokedCallbackUnchecked(Landroid/window/OnBackInvokedCallback;I)V -HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerSystemOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->sendCancelledIfInProgress(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->setTopOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->unregisterOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V @@ -21437,7 +21215,7 @@ HSPLandroid/window/WindowTokenClient;->onConfigurationChanged(Landroid/content/r HSPLcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap;->getCountryCodeToRegionCodeMap()Ljava/util/Map; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->buildNationalNumberForParsing(Ljava/lang/String;Ljava/lang/StringBuilder;)V HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->checkRegionForParsing(Ljava/lang/CharSequence;Ljava/lang/String;)Z -HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->chooseFormattingPatternForNumber(Ljava/util/List;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;+]Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Lcom/android/i18n/phonenumbers/internal/RegexCache;Lcom/android/i18n/phonenumbers/internal/RegexCache; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->chooseFormattingPatternForNumber(Ljava/util/List;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;+]Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/i18n/phonenumbers/internal/RegexCache;Lcom/android/i18n/phonenumbers/internal/RegexCache; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->createInstance(Lcom/android/i18n/phonenumbers/MetadataLoader;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->extractCountryCode(Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map;Ljava/util/HashMap; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->extractPossibleNumber(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern; @@ -21471,7 +21249,7 @@ HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalize(Ljava/lang/StringB HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDiallableCharsOnly(Ljava/lang/CharSequence;)Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDigits(Ljava/lang/CharSequence;Z)Ljava/lang/StringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDigitsOnly(Ljava/lang/CharSequence;)Ljava/lang/String; -HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeHelper(Ljava/lang/CharSequence;Ljava/util/Map;Z)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/String; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeHelper(Ljava/lang/CharSequence;Ljava/util/Map;Z)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/CharSequence;Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parseAndKeepRawInput(Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; @@ -21482,7 +21260,7 @@ HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->prefixNumberWithCountryCalli HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->setInstance(Lcom/android/i18n/phonenumbers/PhoneNumberUtil;)V HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->setItalianLeadingZerosForPhoneNumber(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->testNumberLength(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult; -HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->testNumberLength(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;]Lcom/android/i18n/phonenumbers/PhoneNumberUtil;Lcom/android/i18n/phonenumbers/PhoneNumberUtil; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->testNumberLength(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/ArrayList;]Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;]Lcom/android/i18n/phonenumbers/PhoneNumberUtil;Lcom/android/i18n/phonenumbers/PhoneNumberUtil; HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->()V HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getFormat()Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getLeadingDigitsPattern(I)Ljava/lang/String; @@ -21599,18 +21377,18 @@ HSPLcom/android/i18n/timezone/ZoneInfoData;->(Lcom/android/i18n/timezone/Z HSPLcom/android/i18n/timezone/ZoneInfoData;->(Lcom/android/i18n/timezone/ZoneInfoData;I)V HSPLcom/android/i18n/timezone/ZoneInfoData;->(Ljava/lang/String;[J[B[I[B)V HSPLcom/android/i18n/timezone/ZoneInfoData;->checkTzifVersionAcceptable(Ljava/lang/String;B)V -HSPLcom/android/i18n/timezone/ZoneInfoData;->findOffsetIndexForTimeInMilliseconds(J)I -HSPLcom/android/i18n/timezone/ZoneInfoData;->findOffsetIndexForTimeInSeconds(J)I +HSPLcom/android/i18n/timezone/ZoneInfoData;->findOffsetIndexForTimeInMilliseconds(J)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; +HSPLcom/android/i18n/timezone/ZoneInfoData;->findOffsetIndexForTimeInSeconds(J)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; HSPLcom/android/i18n/timezone/ZoneInfoData;->findTransitionIndex(J)I HSPLcom/android/i18n/timezone/ZoneInfoData;->getID()Ljava/lang/String; HSPLcom/android/i18n/timezone/ZoneInfoData;->getLatestDstSavingsMillis(J)Ljava/lang/Integer; -HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffset(J)I +HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffset(J)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffsetsByUtcTime(J[I)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; HSPLcom/android/i18n/timezone/ZoneInfoData;->getRawOffset()I HSPLcom/android/i18n/timezone/ZoneInfoData;->getTransitions()[J+][J[J HSPLcom/android/i18n/timezone/ZoneInfoData;->hashCode()I HSPLcom/android/i18n/timezone/ZoneInfoData;->isInDaylightTime(J)Z -HSPLcom/android/i18n/timezone/ZoneInfoData;->read64BitData(Ljava/lang/String;Lcom/android/i18n/timezone/internal/BufferIterator;)Lcom/android/i18n/timezone/ZoneInfoData; +HSPLcom/android/i18n/timezone/ZoneInfoData;->read64BitData(Ljava/lang/String;Lcom/android/i18n/timezone/internal/BufferIterator;)Lcom/android/i18n/timezone/ZoneInfoData;+]Lcom/android/i18n/timezone/internal/BufferIterator;Lcom/android/i18n/timezone/internal/NioBufferIterator; HSPLcom/android/i18n/timezone/ZoneInfoData;->readTimeZone(Ljava/lang/String;Lcom/android/i18n/timezone/internal/BufferIterator;)Lcom/android/i18n/timezone/ZoneInfoData; HSPLcom/android/i18n/timezone/ZoneInfoData;->roundDownMillisToSeconds(J)J HSPLcom/android/i18n/timezone/ZoneInfoData;->roundUpMillisToSeconds(J)J @@ -21641,37 +21419,37 @@ HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readInt()I HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readLongArray([JII)V HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->skip(I)V HSPLcom/android/icu/charset/CharsetDecoderICU;->(Ljava/nio/charset/Charset;FJ)V -HSPLcom/android/icu/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; -HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I -HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/CharBuffer;)I +HSPLcom/android/icu/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/CharBuffer;)I+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLcom/android/icu/charset/CharsetDecoderICU;->implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;+]Lcom/android/icu/charset/CharsetDecoderICU;Lcom/android/icu/charset/CharsetDecoderICU; HSPLcom/android/icu/charset/CharsetDecoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V HSPLcom/android/icu/charset/CharsetDecoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V HSPLcom/android/icu/charset/CharsetDecoderICU;->implReplaceWith(Ljava/lang/String;)V HSPLcom/android/icu/charset/CharsetDecoderICU;->implReset()V HSPLcom/android/icu/charset/CharsetDecoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Lcom/android/icu/charset/CharsetDecoderICU; -HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/ByteBuffer;)V -HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/CharBuffer;)V +HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/ByteBuffer;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/CharBuffer;)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLcom/android/icu/charset/CharsetDecoderICU;->updateCallback()V HSPLcom/android/icu/charset/CharsetEncoderICU;->(Ljava/nio/charset/Charset;FF[BJ)V -HSPLcom/android/icu/charset/CharsetEncoderICU;->encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; -HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/ByteBuffer;)I -HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/CharBuffer;)I +HSPLcom/android/icu/charset/CharsetEncoderICU;->encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; +HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/ByteBuffer;)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/CharBuffer;)I+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLcom/android/icu/charset/CharsetEncoderICU;->implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;+]Lcom/android/icu/charset/CharsetEncoderICU;Lcom/android/icu/charset/CharsetEncoderICU; HSPLcom/android/icu/charset/CharsetEncoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V HSPLcom/android/icu/charset/CharsetEncoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V HSPLcom/android/icu/charset/CharsetEncoderICU;->implReset()V HSPLcom/android/icu/charset/CharsetEncoderICU;->makeReplacement(Ljava/lang/String;J)[B HSPLcom/android/icu/charset/CharsetEncoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Lcom/android/icu/charset/CharsetEncoderICU; -HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/ByteBuffer;)V -HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/CharBuffer;)V +HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/ByteBuffer;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/CharBuffer;)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLcom/android/icu/charset/CharsetEncoderICU;->updateCallback()V HSPLcom/android/icu/charset/CharsetFactory;->create(Ljava/lang/String;)Ljava/nio/charset/Charset; HSPLcom/android/icu/charset/CharsetICU;->(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V HSPLcom/android/icu/charset/CharsetICU;->newDecoder()Ljava/nio/charset/CharsetDecoder; HSPLcom/android/icu/charset/CharsetICU;->newEncoder()Ljava/nio/charset/CharsetEncoder; HSPLcom/android/icu/charset/NativeConverter;->U_FAILURE(I)Z -HSPLcom/android/icu/charset/NativeConverter;->registerConverter(Ljava/lang/Object;J)V +HSPLcom/android/icu/charset/NativeConverter;->registerConverter(Ljava/lang/Object;J)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLcom/android/icu/charset/NativeConverter;->setCallbackDecode(JLjava/nio/charset/CharsetDecoder;)V+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLcom/android/icu/charset/NativeConverter;->setCallbackEncode(JLjava/nio/charset/CharsetEncoder;)V HSPLcom/android/icu/charset/NativeConverter;->translateCodingErrorAction(Ljava/nio/charset/CodingErrorAction;)I @@ -21771,7 +21549,6 @@ HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->startActiv HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->trackProcState(IIJ)V HSPLcom/android/internal/app/procstats/AssociationState;->getProcess()Lcom/android/internal/app/procstats/ProcessState; HSPLcom/android/internal/app/procstats/ProcessState;->getCombinedState()I -HSPLcom/android/internal/app/procstats/ProcessState;->setCombinedState(IJ)V HSPLcom/android/internal/app/procstats/ProcessStats;->splitAndParseNumbers(Ljava/lang/String;)[I HSPLcom/android/internal/app/procstats/ProcessStats;->updateTrackingAssociationsLocked(IJ)V HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->assertConsistency()V @@ -21784,13 +21561,13 @@ HSPLcom/android/internal/appwidget/IAppWidgetService$Stub;->asInterface(Landroid HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->getMainColor()I HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->supportsDarkText()Z HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->(JI)V -HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->equals(Ljava/lang/Object;)Z +HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Lcom/android/internal/compat/ChangeReporter$ChangeReport; HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->hashCode()I HSPLcom/android/internal/compat/ChangeReporter;->(I)V HSPLcom/android/internal/compat/ChangeReporter;->debugLog(IJI)V -HSPLcom/android/internal/compat/ChangeReporter;->isAlreadyReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)Z -HSPLcom/android/internal/compat/ChangeReporter;->markAsReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)V -HSPLcom/android/internal/compat/ChangeReporter;->reportChange(IJI)V +HSPLcom/android/internal/compat/ChangeReporter;->isAlreadyReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)Z+]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashSet; +HSPLcom/android/internal/compat/ChangeReporter;->markAsReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)V+]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashSet; +HSPLcom/android/internal/compat/ChangeReporter;->reportChange(IJI)V+]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter; HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToDebug(IJI)Z HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToStatsLog(IJI)Z HSPLcom/android/internal/compat/ChangeReporter;->stateToString(I)Ljava/lang/String; @@ -21823,7 +21600,6 @@ HSPLcom/android/internal/dynamicanimation/animation/SpringForce;->setValueThresh HSPLcom/android/internal/graphics/ColorUtils;->HSLToColor([F)I HSPLcom/android/internal/graphics/ColorUtils;->RGBToHSL(III[F)V HSPLcom/android/internal/graphics/ColorUtils;->colorToHSL(I[F)V -HSPLcom/android/internal/graphics/ColorUtils;->colorToXYZ(I[D)V HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->()V HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->getFrameTime()J HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V @@ -21931,27 +21707,17 @@ HSPLcom/android/internal/inputmethod/InputConnectionCommandHeader;->()V HSPLcom/android/internal/inputmethod/InputConnectionCommandHeader;->(I)V HSPLcom/android/internal/inputmethod/InputMethodDebug;->softInputDisplayReasonToString(I)Ljava/lang/String; HSPLcom/android/internal/inputmethod/SubtypeLocaleUtils;->constructLocaleFromString(Ljava/lang/String;)Ljava/util/Locale; -HSPLcom/android/internal/jank/EventLogTags;->writeJankCujEventsEndRequest(IJJJ)V HSPLcom/android/internal/jank/FrameTracker$FrameMetricsWrapper;->()V HSPLcom/android/internal/jank/FrameTracker$FrameMetricsWrapper;->getMetric(I)J HSPLcom/android/internal/jank/FrameTracker$FrameMetricsWrapper;->getTiming()[J HSPLcom/android/internal/jank/FrameTracker$ThreadedRendererWrapper;->(Landroid/view/ThreadedRenderer;)V HSPLcom/android/internal/jank/FrameTracker$ThreadedRendererWrapper;->addObserver(Landroid/graphics/HardwareRendererObserver;)V HSPLcom/android/internal/jank/FrameTracker$ThreadedRendererWrapper;->removeObserver(Landroid/graphics/HardwareRendererObserver;)V -HSPLcom/android/internal/jank/FrameTracker;->(Lcom/android/internal/jank/InteractionJankMonitor;Lcom/android/internal/jank/InteractionJankMonitor$Session;Landroid/os/Handler;Lcom/android/internal/jank/FrameTracker$ThreadedRendererWrapper;Lcom/android/internal/jank/FrameTracker$ViewRootWrapper;Lcom/android/internal/jank/FrameTracker$SurfaceControlWrapper;Lcom/android/internal/jank/FrameTracker$ChoreographerWrapper;Lcom/android/internal/jank/FrameTracker$FrameMetricsWrapper;Lcom/android/internal/jank/FrameTracker$StatsLogWrapper;IILcom/android/internal/jank/FrameTracker$FrameTrackerListener;Lcom/android/internal/jank/InteractionJankMonitor$Configuration;)V HSPLcom/android/internal/jank/FrameTracker;->begin()V -HSPLcom/android/internal/jank/FrameTracker;->beginInternal()V -HSPLcom/android/internal/jank/FrameTracker;->end(I)Z -HSPLcom/android/internal/jank/FrameTracker;->finish()V+]Landroid/os/Handler;Landroid/app/ActivityThread$H;,Landroid/view/ViewRootImpl$ViewRootHandler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/jank/FrameTracker$StatsLogWrapper;Lcom/android/internal/jank/FrameTracker$StatsLogWrapper;]Lcom/android/internal/jank/FrameTracker;Lcom/android/internal/jank/FrameTracker;]Lcom/android/internal/jank/InteractionJankMonitor$Session;Lcom/android/internal/jank/InteractionJankMonitor$Session; -HSPLcom/android/internal/jank/FrameTracker;->getHandler()Landroid/os/Handler; HSPLcom/android/internal/jank/FrameTracker;->onFrameMetricsAvailable(I)V HSPLcom/android/internal/jank/FrameTracker;->triggerPerfetto()V HSPLcom/android/internal/jank/InteractionJankMonitor$$ExternalSyntheticLambda5;->(Lcom/android/internal/jank/InteractionJankMonitor$TimeFunction;JJJ)V HSPLcom/android/internal/jank/InteractionJankMonitor$$ExternalSyntheticLambda5;->run()V -HSPLcom/android/internal/jank/InteractionJankMonitor$$ExternalSyntheticLambda9;->invoke(JJJ)V -HSPLcom/android/internal/jank/InteractionJankMonitor$Configuration$Builder;->(I)V -HSPLcom/android/internal/jank/InteractionJankMonitor$Configuration$Builder;->build()Lcom/android/internal/jank/InteractionJankMonitor$Configuration; -HSPLcom/android/internal/jank/InteractionJankMonitor$Configuration;->(ILandroid/view/View;Ljava/lang/String;JZLandroid/content/Context;Landroid/view/SurfaceControl;Z)V HSPLcom/android/internal/jank/InteractionJankMonitor$InstanceHolder;->()V HSPLcom/android/internal/jank/InteractionJankMonitor$Session;->getName()Ljava/lang/String; HSPLcom/android/internal/jank/InteractionJankMonitor$Session;->getStatsdInteractionType()I @@ -21959,14 +21725,10 @@ HSPLcom/android/internal/jank/InteractionJankMonitor$Session;->logToStatsd()Z HSPLcom/android/internal/jank/InteractionJankMonitor;->-$$Nest$sfgetDEFAULT_WORKER_NAME()Ljava/lang/String; HSPLcom/android/internal/jank/InteractionJankMonitor;->()V HSPLcom/android/internal/jank/InteractionJankMonitor;->(Landroid/os/HandlerThread;)V -HSPLcom/android/internal/jank/InteractionJankMonitor;->begin(Lcom/android/internal/jank/InteractionJankMonitor$Configuration$Builder;)Z -HSPLcom/android/internal/jank/InteractionJankMonitor;->beginInternal(Lcom/android/internal/jank/InteractionJankMonitor$Configuration;)Z HSPLcom/android/internal/jank/InteractionJankMonitor;->cancel(I)Z -HSPLcom/android/internal/jank/InteractionJankMonitor;->createFrameTracker(Lcom/android/internal/jank/InteractionJankMonitor$Configuration;Lcom/android/internal/jank/InteractionJankMonitor$Session;)Lcom/android/internal/jank/FrameTracker; HSPLcom/android/internal/jank/InteractionJankMonitor;->end(I)Z HSPLcom/android/internal/jank/InteractionJankMonitor;->getInstance()Lcom/android/internal/jank/InteractionJankMonitor; HSPLcom/android/internal/jank/InteractionJankMonitor;->getTracker(I)Lcom/android/internal/jank/FrameTracker; -HSPLcom/android/internal/jank/InteractionJankMonitor;->lambda$end$6(IJJJ)V HSPLcom/android/internal/jank/InteractionJankMonitor;->lambda$postEventLogToWorkerThread$11(Lcom/android/internal/jank/InteractionJankMonitor$TimeFunction;JJJ)V HSPLcom/android/internal/jank/InteractionJankMonitor;->postEventLogToWorkerThread(Lcom/android/internal/jank/InteractionJankMonitor$TimeFunction;)V HSPLcom/android/internal/listeners/ListenerExecutor$$ExternalSyntheticLambda0;->(Ljava/lang/Object;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V @@ -21975,7 +21737,7 @@ HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onComple HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onPostExecute(Z)V HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onPreExecute()V HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;)V+]Lcom/android/internal/listeners/ListenerExecutor;Landroid/location/LocationManager$LocationListenerTransport; -HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V+]Ljava/util/concurrent/Executor;missing_types]Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Landroid/location/LocationManager$LocationListenerTransport$1;]Ljava/util/function/Supplier;Landroid/location/LocationManager$LocationListenerTransport$$ExternalSyntheticLambda2; +HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V+]Ljava/util/concurrent/Executor;missing_types]Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Landroid/location/LocationManager$LocationListenerTransport$1;,Landroid/location/LocationManager$LocationListenerTransport$$ExternalSyntheticLambda4;]Ljava/util/function/Supplier;Landroid/location/LocationManager$LocationListenerTransport$$ExternalSyntheticLambda2;,Landroid/location/LocationManager$LocationListenerTransport$$ExternalSyntheticLambda3; HSPLcom/android/internal/listeners/ListenerExecutor;->lambda$executeSafely$0(Ljava/lang/Object;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V HSPLcom/android/internal/logging/AndroidConfig;->()V HSPLcom/android/internal/logging/AndroidHandler$1;->format(Ljava/util/logging/LogRecord;)Ljava/lang/String; @@ -22202,7 +21964,7 @@ HSPLcom/android/internal/os/ZygoteServer;->setForkChild()V HSPLcom/android/internal/policy/DecorContext;->(Landroid/content/Context;Lcom/android/internal/policy/PhoneWindow;)V HSPLcom/android/internal/policy/DecorContext;->getAutofillOptions()Landroid/content/AutofillOptions; HSPLcom/android/internal/policy/DecorContext;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions; -HSPLcom/android/internal/policy/DecorContext;->getResources()Landroid/content/res/Resources; +HSPLcom/android/internal/policy/DecorContext;->getResources()Landroid/content/res/Resources;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference; HSPLcom/android/internal/policy/DecorContext;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; HSPLcom/android/internal/policy/DecorContext;->isUiContext()Z HSPLcom/android/internal/policy/DecorContext;->setPhoneWindow(Lcom/android/internal/policy/PhoneWindow;)V @@ -22276,7 +22038,7 @@ HSPLcom/android/internal/policy/DecorView;->updateBackgroundBlurRadius()V HSPLcom/android/internal/policy/DecorView;->updateBackgroundDrawable()V HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIZZIZZI)V HSPLcom/android/internal/policy/DecorView;->updateColorViewTranslations()V -HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets; +HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets;+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/view/ViewGroup;Landroid/widget/LinearLayout;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/WindowInsetsController;Landroid/view/InsetsController;,Landroid/view/PendingInsetsController; HSPLcom/android/internal/policy/DecorView;->updateDecorCaptionStatus(Landroid/content/res/Configuration;)V HSPLcom/android/internal/policy/DecorView;->updateElevation()V HSPLcom/android/internal/policy/DecorView;->updateLogTag(Landroid/view/WindowManager$LayoutParams;)V @@ -22299,7 +22061,7 @@ HSPLcom/android/internal/policy/PhoneFallbackEventHandler;->setView(Landroid/vie HSPLcom/android/internal/policy/PhoneLayoutInflater;->(Landroid/content/Context;)V HSPLcom/android/internal/policy/PhoneLayoutInflater;->(Landroid/view/LayoutInflater;Landroid/content/Context;)V HSPLcom/android/internal/policy/PhoneLayoutInflater;->cloneInContext(Landroid/content/Context;)Landroid/view/LayoutInflater; -HSPLcom/android/internal/policy/PhoneLayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLcom/android/internal/policy/PhoneLayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Lcom/android/internal/policy/PhoneLayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; HSPLcom/android/internal/policy/PhoneWindow$$ExternalSyntheticLambda0;->onContentApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/util/Pair; HSPLcom/android/internal/policy/PhoneWindow$1;->(Lcom/android/internal/policy/PhoneWindow;)V HSPLcom/android/internal/policy/PhoneWindow$1;->run()V @@ -22407,7 +22169,7 @@ HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->asBinder()Landroid HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->getMaxTransactionId()I HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->getTransactionName(I)Ljava/lang/String; -HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z+]Lcom/android/internal/telephony/IPhoneStateListener$Stub;Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getGroupIdLevel1ForSubscriber(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; @@ -22429,7 +22191,7 @@ HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getAvailableSubscriptionInf HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultDataSubId()I HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultSmsSubId()I HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultSubId()I -HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultVoiceSubId()I +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultVoiceSubId()I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/internal/telephony/ISub$Stub$Proxy;Lcom/android/internal/telephony/ISub$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getPhoneId(I)I HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getSlotIndex(I)I HSPLcom/android/internal/telephony/ISub$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ISub; @@ -22452,7 +22214,7 @@ HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getSubscriptionCarrie HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getSubscriptionSpecificCarrierId(I)I HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getVoiceNetworkTypeForSubscriber(ILjava/lang/String;Ljava/lang/String;)I HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isDataEnabledForReason(II)Z -HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isEmergencyNumber(Ljava/lang/String;Z)Z +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isEmergencyNumber(Ljava/lang/String;Z)Z+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/internal/telephony/ITelephony$Stub$Proxy;Lcom/android/internal/telephony/ITelephony$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLcom/android/internal/telephony/ITelephony$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephony; HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->addOnSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V @@ -22514,7 +22276,7 @@ HSPLcom/android/internal/util/ArrayUtils;->convertToIntArray(Ljava/util/List;)[I HSPLcom/android/internal/util/ArrayUtils;->deepToString(Ljava/lang/Object;)Ljava/lang/String; HSPLcom/android/internal/util/ArrayUtils;->defeatNullable([Ljava/io/File;)[Ljava/io/File; HSPLcom/android/internal/util/ArrayUtils;->defeatNullable([Ljava/lang/String;)[Ljava/lang/String; -HSPLcom/android/internal/util/ArrayUtils;->emptyArray(Ljava/lang/Class;)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->emptyArray(Ljava/lang/Class;)[Ljava/lang/Object;+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class; HSPLcom/android/internal/util/ArrayUtils;->emptyIfNull([Ljava/lang/Object;Ljava/lang/Class;)[Ljava/lang/Object; HSPLcom/android/internal/util/ArrayUtils;->filter([Ljava/lang/Object;Ljava/util/function/IntFunction;Ljava/util/function/Predicate;)[Ljava/lang/Object; HSPLcom/android/internal/util/ArrayUtils;->getOrNull([Ljava/lang/Object;I)Ljava/lang/Object; @@ -22522,14 +22284,14 @@ HSPLcom/android/internal/util/ArrayUtils;->indexOf([Ljava/lang/Object;Ljava/lang HSPLcom/android/internal/util/ArrayUtils;->isEmpty(Ljava/util/Collection;)Z HSPLcom/android/internal/util/ArrayUtils;->isEmpty([I)Z HSPLcom/android/internal/util/ArrayUtils;->isEmpty([Ljava/lang/Object;)Z -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedArray(Ljava/lang/Class;I)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedArray(Ljava/lang/Class;I)[Ljava/lang/Object;+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedBooleanArray(I)[Z -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedByteArray(I)[B +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedByteArray(I)[B+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedCharArray(I)[C -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedFloatArray(I)[F -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedIntArray(I)[I -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedLongArray(I)[J -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedObjectArray(I)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedFloatArray(I)[F+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedIntArray(I)[I+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedLongArray(I)[J+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedObjectArray(I)[Ljava/lang/Object;+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; HSPLcom/android/internal/util/ArrayUtils;->remove(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList; HSPLcom/android/internal/util/ArrayUtils;->removeElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; HSPLcom/android/internal/util/ArrayUtils;->size([Ljava/lang/Object;)I @@ -22547,8 +22309,6 @@ HSPLcom/android/internal/util/CollectionUtils;->isEmpty(Ljava/util/Collection;)Z HSPLcom/android/internal/util/CollectionUtils;->size(Ljava/util/Collection;)I HSPLcom/android/internal/util/CollectionUtils;->size(Ljava/util/Map;)I HSPLcom/android/internal/util/ConcurrentUtils$DirectExecutor;->execute(Ljava/lang/Runnable;)V -HSPLcom/android/internal/util/ContrastColorUtil$ColorUtilsFromCompat;->RGBToXYZ(III[D)V -HSPLcom/android/internal/util/ContrastColorUtil$ColorUtilsFromCompat;->getTempDouble3Array()[D+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->(I)V HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->add(I)V HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->log(Ljava/lang/String;Ljava/lang/CharSequence;)V @@ -22576,7 +22336,7 @@ HSPLcom/android/internal/util/FastPrintWriter;->write(Ljava/lang/String;)V+]Ljav HSPLcom/android/internal/util/FastPrintWriter;->write([CII)V HSPLcom/android/internal/util/FastXmlSerializer;->()V HSPLcom/android/internal/util/FastXmlSerializer;->(I)V -HSPLcom/android/internal/util/FastXmlSerializer;->append(C)V +HSPLcom/android/internal/util/FastXmlSerializer;->append(C)V+]Lcom/android/internal/util/FastXmlSerializer;Lcom/android/internal/util/FastXmlSerializer; HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String;]Lcom/android/internal/util/FastXmlSerializer;Lcom/android/internal/util/FastXmlSerializer; HSPLcom/android/internal/util/FastXmlSerializer;->appendIndent(I)V+]Ljava/lang/String;Ljava/lang/String; @@ -22590,7 +22350,7 @@ HSPLcom/android/internal/util/FastXmlSerializer;->setFeature(Ljava/lang/String;Z HSPLcom/android/internal/util/FastXmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V HSPLcom/android/internal/util/FastXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V HSPLcom/android/internal/util/FastXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; -HSPLcom/android/internal/util/FastXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLcom/android/internal/util/FastXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Ljava/lang/String;Ljava/lang/String; HSPLcom/android/internal/util/FrameworkStatsLog;->write(III)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(IIII)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(IIILjava/lang/String;I)V @@ -22605,7 +22365,7 @@ HSPLcom/android/internal/util/GrowingArrayUtils;->append([ZIZ)[Z HSPLcom/android/internal/util/GrowingArrayUtils;->growSize(I)I HSPLcom/android/internal/util/GrowingArrayUtils;->insert([IIII)[I HSPLcom/android/internal/util/GrowingArrayUtils;->insert([JIIJ)[J -HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object; +HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;[Ljava/lang/Object;]Ljava/lang/Class;Ljava/lang/Class; HSPLcom/android/internal/util/GrowingArrayUtils;->insert([ZIIZ)[Z HSPLcom/android/internal/util/IndentingPrintWriter;->decreaseIndent()Lcom/android/internal/util/IndentingPrintWriter; HSPLcom/android/internal/util/IndentingPrintWriter;->increaseIndent()Lcom/android/internal/util/IndentingPrintWriter; @@ -22614,14 +22374,11 @@ HSPLcom/android/internal/util/IntPair;->first(J)I HSPLcom/android/internal/util/IntPair;->of(II)J HSPLcom/android/internal/util/IntPair;->second(J)I HSPLcom/android/internal/util/LatencyTracker$$ExternalSyntheticLambda0;->(Lcom/android/internal/util/LatencyTracker;I)V -HSPLcom/android/internal/util/LatencyTracker$$ExternalSyntheticLambda1;->(Lcom/android/internal/util/LatencyTracker;Landroid/content/Context;)V -HSPLcom/android/internal/util/LatencyTracker$$ExternalSyntheticLambda1;->run()V HSPLcom/android/internal/util/LatencyTracker$SLatencyTrackerHolder;->-$$Nest$sfgetsLatencyTracker()Lcom/android/internal/util/LatencyTracker; HSPLcom/android/internal/util/LatencyTracker$SLatencyTrackerHolder;->()V HSPLcom/android/internal/util/LatencyTracker$Session;->(ILjava/lang/String;)V HSPLcom/android/internal/util/LatencyTracker$Session;->begin(Ljava/lang/Runnable;)V HSPLcom/android/internal/util/LatencyTracker$Session;->traceName()Ljava/lang/String; -HSPLcom/android/internal/util/LatencyTracker;->$r8$lambda$uPhaBjaIKsSqJgZ3Mw-LznEJiBg(Lcom/android/internal/util/LatencyTracker;Landroid/content/Context;)V HSPLcom/android/internal/util/LatencyTracker;->-$$Nest$smgetTraceNameOfAction(ILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/util/LatencyTracker;->()V HSPLcom/android/internal/util/LatencyTracker;->getInstance(Landroid/content/Context;)Lcom/android/internal/util/LatencyTracker; @@ -22629,19 +22386,17 @@ HSPLcom/android/internal/util/LatencyTracker;->getNameOfAction(I)Ljava/lang/Stri HSPLcom/android/internal/util/LatencyTracker;->getTraceNameOfAction(ILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/util/LatencyTracker;->isEnabled()Z HSPLcom/android/internal/util/LatencyTracker;->isEnabled(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; -HSPLcom/android/internal/util/LatencyTracker;->lambda$startListeningForLatencyTrackerConfigChanges$0(Landroid/content/Context;)V HSPLcom/android/internal/util/LatencyTracker;->logAction(II)V HSPLcom/android/internal/util/LatencyTracker;->onActionCancel(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/internal/util/LatencyTracker;->onActionEnd(I)V HSPLcom/android/internal/util/LatencyTracker;->onActionStart(ILjava/lang/String;)V -HSPLcom/android/internal/util/LatencyTracker;->onDeviceConfigPropertiesUpdated(Landroid/util/SparseArray;)V HSPLcom/android/internal/util/LatencyTracker;->startListeningForLatencyTrackerConfigChanges()V HSPLcom/android/internal/util/LatencyTracker;->updateProperties(Landroid/provider/DeviceConfig$Properties;)V HSPLcom/android/internal/util/LineBreakBufferedWriter;->(Ljava/io/Writer;I)V HSPLcom/android/internal/util/LineBreakBufferedWriter;->(Ljava/io/Writer;II)V HSPLcom/android/internal/util/LineBreakBufferedWriter;->ensureCapacity(I)V HSPLcom/android/internal/util/LineBreakBufferedWriter;->flush()V -HSPLcom/android/internal/util/LineBreakBufferedWriter;->println()V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->println()V+]Lcom/android/internal/util/LineBreakBufferedWriter;Lcom/android/internal/util/LineBreakBufferedWriter; HSPLcom/android/internal/util/LineBreakBufferedWriter;->write(Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String; HSPLcom/android/internal/util/LineBreakBufferedWriter;->writeBuffer(I)V HSPLcom/android/internal/util/MemInfoReader;->()V @@ -22675,7 +22430,7 @@ HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(J)J HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(JLjava/lang/String;)J HSPLcom/android/internal/util/Preconditions;->checkArgumentPositive(ILjava/lang/String;)I HSPLcom/android/internal/util/Preconditions;->checkArrayElementsNotNull([Ljava/lang/Object;Ljava/lang/String;)[Ljava/lang/Object; -HSPLcom/android/internal/util/Preconditions;->checkCollectionElementsNotNull(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/Collection;+]Ljava/util/Collection;Ljava/util/ArrayList; +HSPLcom/android/internal/util/Preconditions;->checkCollectionElementsNotNull(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/Collection;+]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLcom/android/internal/util/Preconditions;->checkFlagsArgument(II)I HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -22722,14 +22477,14 @@ HSPLcom/android/internal/util/VirtualRefBasePtr;->finalize()V HSPLcom/android/internal/util/VirtualRefBasePtr;->get()J HSPLcom/android/internal/util/VirtualRefBasePtr;->release()V HSPLcom/android/internal/util/XmlPullParserWrapper;->(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeCount()I +HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeCount()I+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser; HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeName(I)Ljava/lang/String; HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeValue(I)Ljava/lang/String; -HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser; HSPLcom/android/internal/util/XmlPullParserWrapper;->getEventType()I -HSPLcom/android/internal/util/XmlPullParserWrapper;->getName()Ljava/lang/String; +HSPLcom/android/internal/util/XmlPullParserWrapper;->getName()Ljava/lang/String;+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser; HSPLcom/android/internal/util/XmlPullParserWrapper;->getText()Ljava/lang/String; -HSPLcom/android/internal/util/XmlPullParserWrapper;->next()I +HSPLcom/android/internal/util/XmlPullParserWrapper;->next()I+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser; HSPLcom/android/internal/util/XmlPullParserWrapper;->setInput(Ljava/io/InputStream;Ljava/lang/String;)V HSPLcom/android/internal/util/XmlSerializerWrapper;->(Lorg/xmlpull/v1/XmlSerializer;)V HSPLcom/android/internal/util/XmlSerializerWrapper;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/FastXmlSerializer; @@ -22739,9 +22494,9 @@ HSPLcom/android/internal/util/XmlSerializerWrapper;->setFeature(Ljava/lang/Strin HSPLcom/android/internal/util/XmlSerializerWrapper;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V HSPLcom/android/internal/util/XmlSerializerWrapper;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V HSPLcom/android/internal/util/XmlSerializerWrapper;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/FastXmlSerializer; -HSPLcom/android/internal/util/XmlSerializerWrapper;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLcom/android/internal/util/XmlSerializerWrapper;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/FastXmlSerializer; HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeBoolean(I)Z +HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeBoolean(I)Z+]Ljava/lang/String;Ljava/lang/String;]Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeFloat(I)F HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeInt(I)I HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeLong(I)J @@ -22764,10 +22519,10 @@ HSPLcom/android/internal/util/XmlUtils;->readStringAttribute(Lorg/xmlpull/v1/Xml HSPLcom/android/internal/util/XmlUtils;->readThisMapXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;)Ljava/util/HashMap;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/HashMap;Ljava/util/HashMap;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/internal/util/XmlUtils;->readThisPrimitiveValueXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/internal/util/XmlUtils;->readThisSetXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/util/HashSet; -HSPLcom/android/internal/util/XmlUtils;->readThisValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; +HSPLcom/android/internal/util/XmlUtils;->readThisValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/lang/Object;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/internal/util/XmlUtils;->readValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;)Ljava/lang/Object; -HSPLcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V+]Ljava/util/Map;Ljava/util/HashMap; +HSPLcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser; +HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/io/OutputStream;)V HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V @@ -22882,7 +22637,6 @@ HSPLcom/android/internal/widget/LockPatternUtils;->getKeyguardStoredPasswordQual HSPLcom/android/internal/widget/LockPatternUtils;->getLockSettings()Lcom/android/internal/widget/ILockSettings; HSPLcom/android/internal/widget/LockPatternUtils;->getPowerButtonInstantlyLocks(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->getString(Ljava/lang/String;I)Ljava/lang/String; -HSPLcom/android/internal/widget/LockPatternUtils;->getUserManager(I)Landroid/os/UserManager;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/content/Context;Landroid/app/ContextImpl; HSPLcom/android/internal/widget/LockPatternUtils;->hasSeparateChallenge(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isManagedProfile(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isOwnerInfoEnabled(I)Z @@ -22890,9 +22644,9 @@ HSPLcom/android/internal/widget/LockPatternUtils;->isSecure(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isSeparateProfileChallengeEnabled(I)Z HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeBoolean(Ljava/lang/String;Ljava/lang/String;)Z HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeFloat(Ljava/lang/String;Ljava/lang/String;)F -HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndex(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; -HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndexOrThrow(Ljava/lang/String;Ljava/lang/String;)I -HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeInt(Ljava/lang/String;Ljava/lang/String;)I +HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndex(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;]Ljava/lang/String;Ljava/lang/String; +HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndexOrThrow(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; +HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeInt(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeLong(Ljava/lang/String;Ljava/lang/String;)J HSPLcom/android/net/module/util/LinkPropertiesUtils;->isIdenticalAddresses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)Z HSPLcom/android/net/module/util/LinkPropertiesUtils;->isIdenticalDnses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)Z @@ -23539,8 +23293,6 @@ Landroid/app/IWallpaperManager; Landroid/app/IWallpaperManagerCallback$Stub$Proxy; Landroid/app/IWallpaperManagerCallback$Stub; Landroid/app/IWallpaperManagerCallback; -Landroid/app/IWindowToken$Stub; -Landroid/app/IWindowToken; Landroid/app/InstantAppResolverService$1; Landroid/app/InstantAppResolverService$InstantAppResolutionCallback; Landroid/app/InstantAppResolverService$ServiceHandler; @@ -23688,7 +23440,6 @@ Landroid/app/ServiceStartNotAllowedException; Landroid/app/SharedElementCallback$1; Landroid/app/SharedElementCallback; Landroid/app/SharedPreferencesImpl$1; -Landroid/app/SharedPreferencesImpl$2; Landroid/app/SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0; Landroid/app/SharedPreferencesImpl$EditorImpl$1; Landroid/app/SharedPreferencesImpl$EditorImpl$2; @@ -23744,12 +23495,10 @@ Landroid/app/SystemServiceRegistry$137; Landroid/app/SystemServiceRegistry$138; Landroid/app/SystemServiceRegistry$139; Landroid/app/SystemServiceRegistry$13; -Landroid/app/SystemServiceRegistry$140; Landroid/app/SystemServiceRegistry$14; Landroid/app/SystemServiceRegistry$15; Landroid/app/SystemServiceRegistry$16; Landroid/app/SystemServiceRegistry$17; -Landroid/app/SystemServiceRegistry$18$$ExternalSyntheticLambda0; Landroid/app/SystemServiceRegistry$18; Landroid/app/SystemServiceRegistry$19; Landroid/app/SystemServiceRegistry$1; @@ -28651,6 +28400,7 @@ Landroid/net/vcn/VcnTransportInfo; Landroid/net/vcn/VcnUnderlyingNetworkPolicy$1; Landroid/net/vcn/VcnUnderlyingNetworkPolicy; Landroid/net/wifi/SoftApConfToXmlMigrationUtil; +Landroid/net/wifi/WifiConfiguration; Landroid/net/wifi/WifiMigration$1; Landroid/net/wifi/WifiMigration; Landroid/net/wifi/WifiNetworkScoreCache$CacheListener$1; @@ -29621,7 +29371,6 @@ Landroid/security/KeyPairGeneratorSpec; Landroid/security/KeyStore$State; Landroid/security/KeyStore2$$ExternalSyntheticLambda0; Landroid/security/KeyStore2$$ExternalSyntheticLambda1; -Landroid/security/KeyStore2$$ExternalSyntheticLambda2; Landroid/security/KeyStore2$$ExternalSyntheticLambda3; Landroid/security/KeyStore2$$ExternalSyntheticLambda4; Landroid/security/KeyStore2$CheckedRemoteRequest; @@ -32292,7 +32041,6 @@ Landroid/view/inputmethod/TextAttribute$1; Landroid/view/inputmethod/TextAttribute; Landroid/view/inputmethod/TextSnapshot; Landroid/view/inputmethod/ViewFocusParameterInfo; -Landroid/view/selectiontoolbar/SelectionToolbarManager; Landroid/view/textclassifier/ConversationAction$1; Landroid/view/textclassifier/ConversationAction$Builder; Landroid/view/textclassifier/ConversationAction; @@ -33027,7 +32775,6 @@ Landroid/window/WindowOrganizer$1; Landroid/window/WindowOrganizer; Landroid/window/WindowProvider; Landroid/window/WindowProviderService; -Landroid/window/WindowTokenClient$$ExternalSyntheticLambda1; Landroid/window/WindowTokenClient; Lcom/android/apex/ApexInfo; Lcom/android/apex/ApexInfoList; @@ -33695,7 +33442,6 @@ Lcom/android/internal/app/IntentForwarderActivity; Lcom/android/internal/app/MessageSamplingConfig$1; Lcom/android/internal/app/MessageSamplingConfig; Lcom/android/internal/app/MicroAlertController; -Lcom/android/internal/app/NetInitiatedActivity; Lcom/android/internal/app/ProcessMap; Lcom/android/internal/app/ResolverActivity$ActionTitle; Lcom/android/internal/app/ResolverActivity; @@ -33920,8 +33666,6 @@ Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation; Lcom/android/internal/listeners/ListenerExecutor; Lcom/android/internal/listeners/ListenerTransport; Lcom/android/internal/listeners/ListenerTransportManager; -Lcom/android/internal/location/GpsNetInitiatedHandler$1; -Lcom/android/internal/location/GpsNetInitiatedHandler$GpsNiNotification; Lcom/android/internal/location/GpsNetInitiatedHandler; Lcom/android/internal/location/altitude/nano/MapParamsProto; Lcom/android/internal/location/altitude/nano/S2TileProto; @@ -34117,9 +33861,6 @@ Lcom/android/internal/policy/DecorView$ActionModeCallback2Wrapper; Lcom/android/internal/policy/DecorView$ColorViewAttributes; Lcom/android/internal/policy/DecorView$ColorViewState; Lcom/android/internal/policy/DecorView; -Lcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget; -Lcom/android/internal/policy/DividerSnapAlgorithm; -Lcom/android/internal/policy/DockedDividerUtils; Lcom/android/internal/policy/GestureNavigationSettingsObserver$$ExternalSyntheticLambda0; Lcom/android/internal/policy/GestureNavigationSettingsObserver$1; Lcom/android/internal/policy/GestureNavigationSettingsObserver; @@ -34535,7 +34276,6 @@ Lcom/android/internal/telephony/Phone$$ExternalSyntheticLambda0; Lcom/android/internal/telephony/Phone$NetworkSelectMessage; Lcom/android/internal/telephony/Phone$SilentRedialParam; Lcom/android/internal/telephony/Phone; -Lcom/android/internal/telephony/PhoneConfigurationManager$$ExternalSyntheticLambda0; Lcom/android/internal/telephony/PhoneConfigurationManager$ConfigManagerHandler; Lcom/android/internal/telephony/PhoneConfigurationManager$MockableInterface; Lcom/android/internal/telephony/PhoneConfigurationManager; @@ -36953,7 +36693,6 @@ Lorg/ccil/cowan/tagsoup/jaxp/SAXParserImpl; [Landroid/net/NetworkKey; [Landroid/net/Uri; [Landroid/net/rtp/AudioCodec; -[Landroid/opengl/EGLConfig; [Landroid/os/AsyncTask$Status; [Landroid/os/BatteryConsumer$Key; [Landroid/os/BatteryStats$BitDescription; diff --git a/boot/preloaded-classes b/boot/preloaded-classes index d4dda3acd212d5de1372eb9d030c63a17e518180..39af567bef0d5a277d57c752540e3596bfd03628 100644 --- a/boot/preloaded-classes +++ b/boot/preloaded-classes @@ -554,8 +554,6 @@ android.app.IWallpaperManager android.app.IWallpaperManagerCallback$Stub$Proxy android.app.IWallpaperManagerCallback$Stub android.app.IWallpaperManagerCallback -android.app.IWindowToken$Stub -android.app.IWindowToken android.app.InstantAppResolverService$1 android.app.InstantAppResolverService$InstantAppResolutionCallback android.app.InstantAppResolverService$ServiceHandler @@ -702,7 +700,6 @@ android.app.ServiceStartNotAllowedException android.app.SharedElementCallback$1 android.app.SharedElementCallback android.app.SharedPreferencesImpl$1 -android.app.SharedPreferencesImpl$2 android.app.SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0 android.app.SharedPreferencesImpl$EditorImpl$1 android.app.SharedPreferencesImpl$EditorImpl$2 @@ -758,12 +755,10 @@ android.app.SystemServiceRegistry$137 android.app.SystemServiceRegistry$138 android.app.SystemServiceRegistry$139 android.app.SystemServiceRegistry$13 -android.app.SystemServiceRegistry$140 android.app.SystemServiceRegistry$14 android.app.SystemServiceRegistry$15 android.app.SystemServiceRegistry$16 android.app.SystemServiceRegistry$17 -android.app.SystemServiceRegistry$18$$ExternalSyntheticLambda0 android.app.SystemServiceRegistry$18 android.app.SystemServiceRegistry$19 android.app.SystemServiceRegistry$1 @@ -5658,6 +5653,7 @@ android.net.vcn.VcnTransportInfo android.net.vcn.VcnUnderlyingNetworkPolicy$1 android.net.vcn.VcnUnderlyingNetworkPolicy android.net.wifi.SoftApConfToXmlMigrationUtil +android.net.wifi.WifiConfiguration android.net.wifi.WifiMigration$1 android.net.wifi.WifiMigration android.net.wifi.WifiNetworkScoreCache$CacheListener$1 @@ -9289,7 +9285,6 @@ android.view.inputmethod.TextAttribute$1 android.view.inputmethod.TextAttribute android.view.inputmethod.TextSnapshot android.view.inputmethod.ViewFocusParameterInfo -android.view.selectiontoolbar.SelectionToolbarManager android.view.textclassifier.ConversationAction$1 android.view.textclassifier.ConversationAction$Builder android.view.textclassifier.ConversationAction @@ -10023,7 +10018,6 @@ android.window.WindowOrganizer$1 android.window.WindowOrganizer android.window.WindowProvider android.window.WindowProviderService -android.window.WindowTokenClient$$ExternalSyntheticLambda1 android.window.WindowTokenClient com.android.apex.ApexInfo com.android.apex.ApexInfoList @@ -10691,7 +10685,6 @@ com.android.internal.app.IntentForwarderActivity com.android.internal.app.MessageSamplingConfig$1 com.android.internal.app.MessageSamplingConfig com.android.internal.app.MicroAlertController -com.android.internal.app.NetInitiatedActivity com.android.internal.app.ProcessMap com.android.internal.app.ResolverActivity$ActionTitle com.android.internal.app.ResolverActivity @@ -10914,8 +10907,6 @@ com.android.internal.listeners.ListenerExecutor$ListenerOperation com.android.internal.listeners.ListenerExecutor com.android.internal.listeners.ListenerTransport com.android.internal.listeners.ListenerTransportManager -com.android.internal.location.GpsNetInitiatedHandler$1 -com.android.internal.location.GpsNetInitiatedHandler$GpsNiNotification com.android.internal.location.GpsNetInitiatedHandler com.android.internal.location.altitude.nano.MapParamsProto com.android.internal.location.altitude.nano.S2TileProto @@ -11109,9 +11100,6 @@ com.android.internal.policy.DecorView$ActionModeCallback2Wrapper com.android.internal.policy.DecorView$ColorViewAttributes com.android.internal.policy.DecorView$ColorViewState com.android.internal.policy.DecorView -com.android.internal.policy.DividerSnapAlgorithm$SnapTarget -com.android.internal.policy.DividerSnapAlgorithm -com.android.internal.policy.DockedDividerUtils com.android.internal.policy.GestureNavigationSettingsObserver$$ExternalSyntheticLambda0 com.android.internal.policy.GestureNavigationSettingsObserver$1 com.android.internal.policy.GestureNavigationSettingsObserver @@ -12695,10 +12683,8 @@ com.android.internal.util.LatencyTracker$$ExternalSyntheticLambda2 com.android.internal.util.LatencyTracker$Action com.android.internal.util.LatencyTracker$ActionProperties com.android.internal.util.LatencyTracker$FrameworkStatsLogEvent -com.android.internal.util.LatencyTracker$SLatencyTrackerHolder com.android.internal.util.LatencyTracker$Session$$ExternalSyntheticLambda0 com.android.internal.util.LatencyTracker$Session -com.android.internal.util.LatencyTracker com.android.internal.util.LineBreakBufferedWriter com.android.internal.util.LocalLog com.android.internal.util.MemInfoReader diff --git a/cmds/app_process/app_main.cpp b/cmds/app_process/app_main.cpp index 28db61f7d98a243dc4e867db7603d5b2ac55bc15..4e41f2c1ac35aeb7fca364daf496d4f675011a2d 100644 --- a/cmds/app_process/app_main.cpp +++ b/cmds/app_process/app_main.cpp @@ -49,7 +49,7 @@ public: virtual void onVmCreated(JNIEnv* env) { - if (mClassName.isEmpty()) { + if (mClassName.empty()) { return; // Zygote. Nothing to do here. } @@ -66,10 +66,10 @@ public: * executing boot class Java code and thereby deny ourselves access to * non-boot classes. */ - char* slashClassName = toSlashClassName(mClassName.string()); + char* slashClassName = toSlashClassName(mClassName.c_str()); mClass = env->FindClass(slashClassName); if (mClass == NULL) { - ALOGE("ERROR: could not find class '%s'\n", mClassName.string()); + ALOGE("ERROR: could not find class '%s'\n", mClassName.c_str()); } free(slashClassName); @@ -98,7 +98,7 @@ public: virtual void onExit(int code) { - if (mClassName.isEmpty()) { + if (mClassName.empty()) { // if zygote IPCThreadState::self()->stopProcess(); hardware::IPCThreadState::self()->stopProcess(); @@ -179,7 +179,7 @@ int main(int argc, char* const argv[]) argv_String.append(argv[i]); argv_String.append("\" "); } - ALOGV("app_process main with argv: %s", argv_String.string()); + ALOGV("app_process main with argv: %s", argv_String.c_str()); } AppRuntime runtime(argv[0], computeArgBlockSize(argc, argv)); @@ -271,9 +271,9 @@ int main(int argc, char* const argv[]) } else if (strcmp(arg, "--application") == 0) { application = true; } else if (strncmp(arg, "--nice-name=", 12) == 0) { - niceName.setTo(arg + 12); + niceName = (arg + 12); } else if (strncmp(arg, "--", 2) != 0) { - className.setTo(arg); + className = arg; break; } else { --i; @@ -282,7 +282,7 @@ int main(int argc, char* const argv[]) } Vector args; - if (!className.isEmpty()) { + if (!className.empty()) { // We're not in zygote mode, the only argument we need to pass // to RuntimeInit is the application argument. // @@ -300,7 +300,7 @@ int main(int argc, char* const argv[]) restOfArgs.append(argv_new[k]); restOfArgs.append("\" "); } - ALOGV("Class name = %s, args = %s", className.string(), restOfArgs.string()); + ALOGV("Class name = %s, args = %s", className.c_str(), restOfArgs.c_str()); } } else { // We're in zygote mode. @@ -328,13 +328,13 @@ int main(int argc, char* const argv[]) } } - if (!niceName.isEmpty()) { - runtime.setArgv0(niceName.string(), true /* setProcName */); + if (!niceName.empty()) { + runtime.setArgv0(niceName.c_str(), true /* setProcName */); } if (zygote) { runtime.start("com.android.internal.os.ZygoteInit", args, zygote); - } else if (!className.isEmpty()) { + } else if (!className.empty()) { runtime.start("com.android.internal.os.RuntimeInit", args, zygote); } else { fprintf(stderr, "Error: no class name or --zygote supplied.\n"); diff --git a/cmds/backup/backup.cpp b/cmds/backup/backup.cpp index 8d9b528ae6a94976f2a4c7491c2da59f3300df06..c2ce69011d92a1a0469374196ef7c06f6a72597e 100644 --- a/cmds/backup/backup.cpp +++ b/cmds/backup/backup.cpp @@ -75,7 +75,7 @@ static int perform_list(const char* filename) size_t dataSize; err = reader.ReadEntityHeader(&key, &dataSize); if (err == 0) { - printf(" entity: %s (%zu bytes)\n", key.string(), dataSize); + printf(" entity: %s (%zu bytes)\n", key.c_str(), dataSize); } else { printf(" Error reading entity header\n"); } diff --git a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java index b6dc32a29f048d39826b5eb6040f19e4c282896d..9dedf70251430e7f87895aa4b0a9570f182e1e71 100644 --- a/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java +++ b/cmds/bmgr/src/com/android/commands/bmgr/Bmgr.java @@ -192,7 +192,7 @@ public class Bmgr { } if ("whitelist".equals(op)) { - doPrintWhitelist(); + doPrintAllowlist(); return; } @@ -911,7 +911,7 @@ public class Bmgr { } } - private void doPrintWhitelist() { + private void doPrintAllowlist() { try { final String[] whitelist = mBmgr.getTransportWhitelist(); if (whitelist != null) { diff --git a/cmds/bootanimation/Android.bp b/cmds/bootanimation/Android.bp index 3534624a58a2357e62184520127f752b319abd38..98767ee733ad46912ac375ba617102e25cad7cdf 100644 --- a/cmds/bootanimation/Android.bp +++ b/cmds/bootanimation/Android.bp @@ -74,4 +74,7 @@ cc_library_shared { "libGLESv2", "libgui", ], + whole_static_libs: [ + "libc++fs", + ], } diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index 10ce3b8d8161221dbb208224ec59bbc0ae84b666..89776dba787857bf067e0b3aca3699a9bdca08ff 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -18,6 +18,7 @@ #define LOG_TAG "BootAnimation" #define ATRACE_TAG ATRACE_TAG_GRAPHICS +#include #include #include @@ -722,7 +723,7 @@ void BootAnimation::resizeSurface(int newWidth, int newHeight) { bool BootAnimation::preloadAnimation() { ATRACE_CALL(); findBootAnimationFile(); - if (!mZipFileName.isEmpty()) { + if (!mZipFileName.empty()) { mAnimation = loadAnimation(mZipFileName); return (mAnimation != nullptr); } @@ -841,7 +842,7 @@ bool BootAnimation::threadLoop() { // We have no bootanimation file, so we use the stock android logo // animation. - if (mZipFileName.isEmpty()) { + if (mZipFileName.empty()) { ALOGD("No animation file"); result = android(); } else { @@ -1040,7 +1041,7 @@ static bool readFile(ZipFileRO* zip, const char* name, String8& outString) { return false; } - outString.setTo((char const*)entryMap->getDataPtr(), entryMap->getDataLength()); + outString = String8((char const*)entryMap->getDataPtr(), entryMap->getDataLength()); delete entryMap; return true; } @@ -1170,7 +1171,7 @@ bool BootAnimation::parseAnimationDesc(Animation& animation) { if (!readFile(animation.zip, "desc.txt", desString)) { return false; } - char const* s = desString.string(); + char const* s = desString.c_str(); std::string dynamicColoringPartName = ""; bool postDynamicColoring = false; @@ -1179,7 +1180,7 @@ bool BootAnimation::parseAnimationDesc(Animation& animation) { const char* endl = strstr(s, "\n"); if (endl == nullptr) break; String8 line(s, endl - s); - const char* l = line.string(); + const char* l = line.c_str(); int fps = 0; int width = 0; int height = 0; @@ -1306,10 +1307,10 @@ bool BootAnimation::preloadZip(Animation& animation) { continue; } - const String8 entryName(name); - const String8 path(entryName.getPathDir()); - const String8 leaf(entryName.getPathLeaf()); - if (leaf.size() > 0) { + const std::filesystem::path entryName(name); + const std::filesystem::path path(entryName.parent_path()); + const std::filesystem::path leaf(entryName.filename()); + if (!leaf.empty()) { if (entryName == CLOCK_FONT_ZIP_NAME) { FileMap* map = zip->createEntryFileMap(entry); if (map) { @@ -1327,7 +1328,7 @@ bool BootAnimation::preloadZip(Animation& animation) { } for (size_t j = 0; j < pcount; j++) { - if (path == animation.parts[j].path) { + if (path.string() == animation.parts[j].path.c_str()) { uint16_t method; // supports only stored png files if (zip->getEntryInfo(entry, &method, nullptr, nullptr, nullptr, nullptr, nullptr)) { @@ -1340,11 +1341,11 @@ bool BootAnimation::preloadZip(Animation& animation) { part.audioData = (uint8_t *)map->getDataPtr(); part.audioLength = map->getDataLength(); } else if (leaf == "trim.txt") { - part.trimData.setTo((char const*)map->getDataPtr(), + part.trimData = String8((char const*)map->getDataPtr(), map->getDataLength()); } else { Animation::Frame frame; - frame.name = leaf; + frame.name = leaf.c_str(); frame.map = map; frame.trimWidth = animation.width; frame.trimHeight = animation.height; @@ -1364,7 +1365,7 @@ bool BootAnimation::preloadZip(Animation& animation) { // If there is trimData present, override the positioning defaults. for (Animation::Part& part : animation.parts) { - const char* trimDataStr = part.trimData.string(); + const char* trimDataStr = part.trimData.c_str(); for (size_t frameIdx = 0; frameIdx < part.frames.size(); frameIdx++) { const char* endl = strstr(trimDataStr, "\n"); // No more trimData for this part. @@ -1372,7 +1373,7 @@ bool BootAnimation::preloadZip(Animation& animation) { break; } String8 line(trimDataStr, endl - trimDataStr); - const char* lineStr = line.string(); + const char* lineStr = line.c_str(); trimDataStr = ++endl; int width = 0, height = 0, x = 0, y = 0; if (sscanf(lineStr, "%dx%d+%d+%d", &width, &height, &x, &y) == 4) { @@ -1431,7 +1432,7 @@ bool BootAnimation::movie() { if (!exts) { glGetError(); } else { - gl_extensions.setTo(exts); + gl_extensions = exts; if ((gl_extensions.find("GL_ARB_texture_non_power_of_two") != -1) || (gl_extensions.find("GL_OES_texture_npot") != -1)) { mUseNpotTextures = true; @@ -1565,6 +1566,7 @@ bool BootAnimation::playAnimation(const Animation& animation) { for (size_t i=0 ; i 0) { glBindTexture(GL_TEXTURE_2D, frame.tid); } else { - glGenTextures(1, &frame.tid); - glBindTexture(GL_TEXTURE_2D, frame.tid); + if (part.count != 1) { + glGenTextures(1, &frame.tid); + glBindTexture(GL_TEXTURE_2D, frame.tid); + } int w, h; // Set decoding option to alpha unpremultiplied so that the R, G, B channels // of transparent pixels are preserved. @@ -1827,17 +1831,17 @@ BootAnimation::Animation* BootAnimation::loadAnimation(const String8& fn) { ATRACE_CALL(); if (mLoadedFiles.indexOf(fn) >= 0) { SLOGE("File \"%s\" is already loaded. Cyclic ref is not allowed", - fn.string()); + fn.c_str()); return nullptr; } - ZipFileRO *zip = ZipFileRO::open(fn); + ZipFileRO *zip = ZipFileRO::open(fn.c_str()); if (zip == nullptr) { SLOGE("Failed to open animation zip \"%s\": %s", - fn.string(), strerror(errno)); + fn.c_str(), strerror(errno)); return nullptr; } - ALOGD("%s is loaded successfully", fn.string()); + ALOGD("%s is loaded successfully", fn.c_str()); Animation *animation = new Animation; animation->fileName = fn; diff --git a/cmds/idmap2/idmap2/Lookup.cpp b/cmds/idmap2/idmap2/Lookup.cpp index 3704b4aff6c7e1018651252a938fc33291f17b12..34d91795fc298d441bad3b37bb569f805f59b0d6 100644 --- a/cmds/idmap2/idmap2/Lookup.cpp +++ b/cmds/idmap2/idmap2/Lookup.cpp @@ -94,7 +94,7 @@ void PrintValue(AssetManager2* const am, const AssetManager2::SelectedValue& val const ResStringPool* pool = am->GetStringPoolForCookie(value.cookie); out->append("\""); if (auto str = pool->string8ObjectAt(value.data); str.ok()) { - out->append(*str); + out->append(str->c_str()); } } break; default: diff --git a/cmds/idmap2/libidmap2/CommandLineOptions.cpp b/cmds/idmap2/libidmap2/CommandLineOptions.cpp index 888b3a5b129d3569298e64877330460f85a20977..2da05b36b7750d492d2895a14ebc4137a161b657 100644 --- a/cmds/idmap2/libidmap2/CommandLineOptions.cpp +++ b/cmds/idmap2/libidmap2/CommandLineOptions.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/cmds/idmap2/libidmap2/RawPrintVisitor.cpp b/cmds/idmap2/libidmap2/RawPrintVisitor.cpp index 174d85c718284b0a57b5c3cf2b19496ce430666f..9d04a7f87400ab1189d784e654c07d8fa1ac8ada 100644 --- a/cmds/idmap2/libidmap2/RawPrintVisitor.cpp +++ b/cmds/idmap2/libidmap2/RawPrintVisitor.cpp @@ -96,7 +96,7 @@ void RawPrintVisitor::visit(const IdmapData& data ATTRIBUTE_UNUSED) { auto value = target_entry_value.second; print(target_entry_value.first.to_string(), false, "config: %s", - target_entry_value.first.toString().string()); + target_entry_value.first.toString().c_str()); print(value.data_type, "type: %s", utils::DataTypeToString(value.data_type).data()); diff --git a/cmds/idmap2/libidmap2/XmlParser.cpp b/cmds/idmap2/libidmap2/XmlParser.cpp index 766ca565a23cbf357257c9bc6684b01a7ca1fa4a..7807155610066870e2ad64b21167917ba34a1db0 100644 --- a/cmds/idmap2/libidmap2/XmlParser.cpp +++ b/cmds/idmap2/libidmap2/XmlParser.cpp @@ -109,7 +109,7 @@ Result GetStringValue(const ResXMLParser& parser, const Res_value& switch (value.dataType) { case Res_value::TYPE_STRING: { if (auto str = parser.getStrings().string8ObjectAt(value.data); str.ok()) { - return std::string(str->string()); + return std::string(str->c_str()); } break; } @@ -130,11 +130,14 @@ Result XmlParser::Node::GetAttributeValue(ResourceId attr, } Result XmlParser::Node::GetAttributeValue(const std::string& name) const { + String16 name16; return FindAttribute(parser_, name, [&](size_t index) -> bool { - size_t len; - const String16 key16(parser_.getAttributeName(index, &len)); - std::string key = String8(key16).c_str(); - return key == name; + if (name16.empty()) { + name16 = String16(name.c_str(), name.size()); + } + size_t key_len; + const auto key16 = parser_.getAttributeName(index, &key_len); + return key16 && name16.size() == key_len && name16 == key16; }); } diff --git a/cmds/incident/main.cpp b/cmds/incident/main.cpp index 6e0bd06292746ef303387e5043b35fd5ac916916..0d9f4e92662b66a904e516bd0c351194d548659d 100644 --- a/cmds/incident/main.cpp +++ b/cmds/incident/main.cpp @@ -83,8 +83,8 @@ StatusListener::onReportSectionStatus(int32_t section, int32_t status) Status StatusListener::onReportServiceStatus(const String16& service, int32_t status) { - fprintf(stderr, "service '%s' status %d\n", String8(service).string(), status); - ALOGD("service '%s' status %d\n", String8(service).string(), status); + fprintf(stderr, "service '%s' status %d\n", String8(service).c_str(), status); + ALOGD("service '%s' status %d\n", String8(service).c_str(), status); return Status::ok(); } @@ -384,7 +384,7 @@ main(int argc, char** argv) status = service->reportIncidentToStream(args, listener, std::move(writeEnd)); if (!status.isOk()) { - fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().string()); + fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().c_str()); return 1; } @@ -396,14 +396,14 @@ main(int argc, char** argv) sp listener(new StatusListener()); status = service->reportIncidentToDumpstate(std::move(writeEnd), listener); if (!status.isOk()) { - fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().string()); + fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().c_str()); return 1; } return listener->getExitCodeOrElse(stream_output(fds[0], STDOUT_FILENO)); } else { status = service->reportIncident(args); if (!status.isOk()) { - fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().string()); + fprintf(stderr, "reportIncident returned \"%s\"\n", status.toString8().c_str()); return 1; } else { return 0; diff --git a/cmds/incident_helper/src/TextParserBase.cpp b/cmds/incident_helper/src/TextParserBase.cpp index e9bc70f370261e0f7ca60c91c4493551afa3307c..e625afa626ec1fa1f84b218393f12f446d754eda 100644 --- a/cmds/incident_helper/src/TextParserBase.cpp +++ b/cmds/incident_helper/src/TextParserBase.cpp @@ -27,11 +27,11 @@ status_t NoopParser::Parse(const int in, const int out) const { string content; if (!ReadFdToString(in, &content)) { - fprintf(stderr, "[%s]Failed to read data from incidentd\n", this->name.string()); + fprintf(stderr, "[%s]Failed to read data from incidentd\n", this->name.c_str()); return -1; } if (!WriteStringToFd(content, out)) { - fprintf(stderr, "[%s]Failed to write data to incidentd\n", this->name.string()); + fprintf(stderr, "[%s]Failed to write data to incidentd\n", this->name.c_str()); return -1; } return NO_ERROR; @@ -42,13 +42,13 @@ status_t ReverseParser::Parse(const int in, const int out) const { string content; if (!ReadFdToString(in, &content)) { - fprintf(stderr, "[%s]Failed to read data from incidentd\n", this->name.string()); + fprintf(stderr, "[%s]Failed to read data from incidentd\n", this->name.c_str()); return -1; } // reverse the content reverse(content.begin(), content.end()); if (!WriteStringToFd(content, out)) { - fprintf(stderr, "[%s]Failed to write data to incidentd\n", this->name.string()); + fprintf(stderr, "[%s]Failed to write data to incidentd\n", this->name.c_str()); return -1; } return NO_ERROR; diff --git a/cmds/incident_helper/src/main.cpp b/cmds/incident_helper/src/main.cpp index ff5fd86cf11eedd85f9bf4b7848d26df7c779614..cc03d4a65f1789ade1ad5b5de656e4af002d559f 100644 --- a/cmds/incident_helper/src/main.cpp +++ b/cmds/incident_helper/src/main.cpp @@ -101,7 +101,7 @@ int main(int argc, char** argv) { fprintf(stderr, "Pasring section %d...\n", sectionID); TextParserBase* parser = selectParser(sectionID); if (parser != nullptr) { - fprintf(stderr, "Running parser: %s\n", parser->name.string()); + fprintf(stderr, "Running parser: %s\n", parser->name.c_str()); status_t err = parser->Parse(STDIN_FILENO, STDOUT_FILENO); if (err != NO_ERROR) { fprintf(stderr, "Parse error in section %d: %s\n", sectionID, strerror(-err)); diff --git a/cmds/incident_helper/src/parsers/BatteryTypeParser.cpp b/cmds/incident_helper/src/parsers/BatteryTypeParser.cpp index ced6cf807e0d9de1b08350952d94a6000a0134ea..2a032fbf3aa60edb9d6dc9d20b939f3798cdf6e7 100644 --- a/cmds/incident_helper/src/parsers/BatteryTypeParser.cpp +++ b/cmds/incident_helper/src/parsers/BatteryTypeParser.cpp @@ -52,9 +52,9 @@ BatteryTypeParser::Parse(const int in, const int out) const } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incident_helper/src/parsers/CpuFreqParser.cpp b/cmds/incident_helper/src/parsers/CpuFreqParser.cpp index 43a12f603ba38dc75cf3bb2ba6ecb2bac7725220..c9bf4c5281092d1eec4b6d7eafb6c5f1162293c6 100644 --- a/cmds/incident_helper/src/parsers/CpuFreqParser.cpp +++ b/cmds/incident_helper/src/parsers/CpuFreqParser.cpp @@ -82,9 +82,9 @@ CpuFreqParser::Parse(const int in, const int out) const } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incident_helper/src/parsers/CpuInfoParser.cpp b/cmds/incident_helper/src/parsers/CpuInfoParser.cpp index 5d525e6c7f3ea941e02bca582c9bf383728bca63..77751a2fdfc0eaa464564ed49a1552eb6a295b25 100644 --- a/cmds/incident_helper/src/parsers/CpuInfoParser.cpp +++ b/cmds/incident_helper/src/parsers/CpuInfoParser.cpp @@ -130,11 +130,11 @@ CpuInfoParser::Parse(const int in, const int out) const record = parseRecordByColumns(line, columnIndices); diff = record.size() - header.size(); if (diff < 0) { - fprintf(stderr, "[%s]Line %d has %d missing fields\n%s\n", this->name.string(), nline, -diff, line.c_str()); + fprintf(stderr, "[%s]Line %d has %d missing fields\n%s\n", this->name.c_str(), nline, -diff, line.c_str()); printRecord(record); continue; } else if (diff > 0) { - fprintf(stderr, "[%s]Line %d has %d extra fields\n%s\n", this->name.string(), nline, diff, line.c_str()); + fprintf(stderr, "[%s]Line %d has %d extra fields\n%s\n", this->name.c_str(), nline, diff, line.c_str()); printRecord(record); continue; } @@ -143,7 +143,7 @@ CpuInfoParser::Parse(const int in, const int out) const for (int i=0; i<(int)record.size(); i++) { if (!table.insertField(&proto, header[i], record[i])) { fprintf(stderr, "[%s]Line %d fails to insert field %s with value %s\n", - this->name.string(), nline, header[i].c_str(), record[i].c_str()); + this->name.c_str(), nline, header[i].c_str(), record[i].c_str()); } } proto.end(token); @@ -155,9 +155,9 @@ CpuInfoParser::Parse(const int in, const int out) const } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incident_helper/src/parsers/EventLogTagsParser.cpp b/cmds/incident_helper/src/parsers/EventLogTagsParser.cpp index 4fd6b068cf1e9cc94a626bd2b1a1698ab9d285e6..0474a5055bf250b5722b3633803cf14f1559060d 100644 --- a/cmds/incident_helper/src/parsers/EventLogTagsParser.cpp +++ b/cmds/incident_helper/src/parsers/EventLogTagsParser.cpp @@ -76,9 +76,9 @@ EventLogTagsParser::Parse(const int in, const int out) const } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incident_helper/src/parsers/KernelWakesParser.cpp b/cmds/incident_helper/src/parsers/KernelWakesParser.cpp index 85beaf06eeb8d1e5ceb7eb1ea2b2069260fd602b..d16c23cce29b59cf8012e95be9838146e0f471db 100644 --- a/cmds/incident_helper/src/parsers/KernelWakesParser.cpp +++ b/cmds/incident_helper/src/parsers/KernelWakesParser.cpp @@ -51,11 +51,11 @@ KernelWakesParser::Parse(const int in, const int out) const if (record.size() < header.size()) { // TODO: log this to incident report! - fprintf(stderr, "[%s]Line %d has missing fields\n%s\n", this->name.string(), nline, line.c_str()); + fprintf(stderr, "[%s]Line %d has missing fields\n%s\n", this->name.c_str(), nline, line.c_str()); continue; } else if (record.size() > header.size()) { // TODO: log this to incident report! - fprintf(stderr, "[%s]Line %d has extra fields\n%s\n", this->name.string(), nline, line.c_str()); + fprintf(stderr, "[%s]Line %d has extra fields\n%s\n", this->name.c_str(), nline, line.c_str()); continue; } @@ -63,7 +63,7 @@ KernelWakesParser::Parse(const int in, const int out) const for (int i=0; i<(int)record.size(); i++) { if (!table.insertField(&proto, header[i], record[i])) { fprintf(stderr, "[%s]Line %d has bad value %s of %s\n", - this->name.string(), nline, header[i].c_str(), record[i].c_str()); + this->name.c_str(), nline, header[i].c_str(), record[i].c_str()); } } proto.end(token); @@ -75,9 +75,9 @@ KernelWakesParser::Parse(const int in, const int out) const } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp b/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp index 2a89c920c1195595123ac9a6c1286bb2690b9ad6..36710dfea8f1f7e6f25511a97d4fb8cb3cd24de2 100644 --- a/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp +++ b/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp @@ -114,10 +114,10 @@ PageTypeInfoParser::Parse(const int in, const int out) const } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incident_helper/src/parsers/ProcrankParser.cpp b/cmds/incident_helper/src/parsers/ProcrankParser.cpp index 4763b482e36889308b19bb006fa070ce9a2d51d8..997d2e50a14be1f1fbe8a4a3a26cb6d1c39eb6c2 100644 --- a/cmds/incident_helper/src/parsers/ProcrankParser.cpp +++ b/cmds/incident_helper/src/parsers/ProcrankParser.cpp @@ -60,7 +60,7 @@ ProcrankParser::Parse(const int in, const int out) const if (record[record.size() - 1] == "TOTAL") { // TOTAL record total = line; } else { - fprintf(stderr, "[%s]Line %d has missing fields\n%s\n", this->name.string(), nline, + fprintf(stderr, "[%s]Line %d has missing fields\n%s\n", this->name.c_str(), nline, line.c_str()); } continue; @@ -70,7 +70,7 @@ ProcrankParser::Parse(const int in, const int out) const for (int i=0; i<(int)record.size(); i++) { if (!table.insertField(&proto, header[i], record[i])) { fprintf(stderr, "[%s]Line %d has bad value %s of %s\n", - this->name.string(), nline, header[i].c_str(), record[i].c_str()); + this->name.c_str(), nline, header[i].c_str(), record[i].c_str()); } } proto.end(token); @@ -104,9 +104,9 @@ ProcrankParser::Parse(const int in, const int out) const } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incident_helper/src/parsers/PsParser.cpp b/cmds/incident_helper/src/parsers/PsParser.cpp index d3cb4be59f66cc5e91fc1734d1dfa757324496f5..55aa555794c09e808240175f98d4ca4ebb2502e8 100644 --- a/cmds/incident_helper/src/parsers/PsParser.cpp +++ b/cmds/incident_helper/src/parsers/PsParser.cpp @@ -61,12 +61,12 @@ status_t PsParser::Parse(const int in, const int out) const { diff = record.size() - header.size(); if (diff < 0) { // TODO: log this to incident report! - fprintf(stderr, "[%s]Line %d has %d missing fields\n%s\n", this->name.string(), nline, -diff, line.c_str()); + fprintf(stderr, "[%s]Line %d has %d missing fields\n%s\n", this->name.c_str(), nline, -diff, line.c_str()); printRecord(record); continue; } else if (diff > 0) { // TODO: log this to incident report! - fprintf(stderr, "[%s]Line %d has %d extra fields\n%s\n", this->name.string(), nline, diff, line.c_str()); + fprintf(stderr, "[%s]Line %d has %d extra fields\n%s\n", this->name.c_str(), nline, diff, line.c_str()); printRecord(record); continue; } @@ -75,7 +75,7 @@ status_t PsParser::Parse(const int in, const int out) const { for (int i=0; i<(int)record.size(); i++) { if (!table.insertField(&proto, header[i], record[i])) { fprintf(stderr, "[%s]Line %d has bad value %s of %s\n", - this->name.string(), nline, header[i].c_str(), record[i].c_str()); + this->name.c_str(), nline, header[i].c_str(), record[i].c_str()); } } proto.end(token); @@ -87,9 +87,9 @@ status_t PsParser::Parse(const int in, const int out) const { } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incident_helper/src/parsers/SystemPropertiesParser.cpp b/cmds/incident_helper/src/parsers/SystemPropertiesParser.cpp index eba536bd9e9cc10a01069c983f192930bd584c53..86c34bc25bd8e3266c5c7fc4a8d7aab5f7aed290 100644 --- a/cmds/incident_helper/src/parsers/SystemPropertiesParser.cpp +++ b/cmds/incident_helper/src/parsers/SystemPropertiesParser.cpp @@ -219,9 +219,9 @@ SystemPropertiesParser::Parse(const int in, const int out) const } if (!proto.flush(out)) { - fprintf(stderr, "[%s]Error writing proto back\n", this->name.string()); + fprintf(stderr, "[%s]Error writing proto back\n", this->name.c_str()); return -1; } - fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); + fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.c_str(), proto.size()); return NO_ERROR; } diff --git a/cmds/incidentd/src/IncidentService.cpp b/cmds/incidentd/src/IncidentService.cpp index 4f9059f0228102c0e8cf2461db19cecb368f7097..5ebf3e2c3047abed4aabf8b5ab680757eca5d626 100644 --- a/cmds/incidentd/src/IncidentService.cpp +++ b/cmds/incidentd/src/IncidentService.cpp @@ -407,8 +407,8 @@ Status IncidentService::systemRunning() { Status IncidentService::getIncidentReportList(const String16& pkg16, const String16& cls16, vector* result) { status_t err; - const string pkg(String8(pkg16).string()); - const string cls(String8(cls16).string()); + const string pkg(String8(pkg16).c_str()); + const string cls(String8(cls16).c_str()); // List the reports vector> all; @@ -441,9 +441,9 @@ Status IncidentService::getIncidentReport(const String16& pkg16, const String16& const String16& id16, IncidentManager::IncidentReport* result) { status_t err; - const string pkg(String8(pkg16).string()); - const string cls(String8(cls16).string()); - const string id(String8(id16).string()); + const string pkg(String8(pkg16).c_str()); + const string cls(String8(cls16).c_str()); + const string id(String8(id16).c_str()); IncidentReportArgs args; sp file = mWorkDirectory->getReport(pkg, cls, id, &args); @@ -470,9 +470,9 @@ Status IncidentService::getIncidentReport(const String16& pkg16, const String16& Status IncidentService::deleteIncidentReports(const String16& pkg16, const String16& cls16, const String16& id16) { - const string pkg(String8(pkg16).string()); - const string cls(String8(cls16).string()); - const string id(String8(id16).string()); + const string pkg(String8(pkg16).c_str()); + const string cls(String8(cls16).c_str()); + const string id(String8(id16).c_str()); sp file = mWorkDirectory->getReport(pkg, cls, id, nullptr); if (file != nullptr) { @@ -484,7 +484,7 @@ Status IncidentService::deleteIncidentReports(const String16& pkg16, const Strin } Status IncidentService::deleteAllIncidentReports(const String16& pkg16) { - const string pkg(String8(pkg16).string()); + const string pkg(String8(pkg16).c_str()); mWorkDirectory->commitAll(pkg); mBroadcaster->clearPackageBroadcasts(pkg); @@ -567,12 +567,12 @@ status_t IncidentService::command(FILE* in, FILE* out, FILE* err, Vectorid == id) { - fprintf(out, "Section[%d] %s\n", id, section->name.string()); + fprintf(out, "Section[%d] %s\n", id, section->name.c_str()); break; } idx++; @@ -596,7 +596,7 @@ status_t IncidentService::cmd_help(FILE* out) { static void printPrivacy(const Privacy* p, FILE* out, String8 indent) { if (p == NULL) return; - fprintf(out, "%sid:%d, type:%d, dest:%d\n", indent.string(), p->field_id, p->type, p->policy); + fprintf(out, "%sid:%d, type:%d, dest:%d\n", indent.c_str(), p->field_id, p->type, p->policy); if (p->children == NULL) return; for (int i = 0; p->children[i] != NULL; i++) { // NULL-terminated. printPrivacy(p->children[i], out, indent + " "); @@ -609,7 +609,7 @@ status_t IncidentService::cmd_privacy(FILE* in, FILE* out, FILE* err, Vector= 3) { String8 opt = args[1]; - int sectionId = atoi(args[2].string()); + int sectionId = atoi(args[2].c_str()); const Privacy* p = get_privacy_of_section(sectionId); if (p == NULL) { diff --git a/cmds/incidentd/src/Reporter.cpp b/cmds/incidentd/src/Reporter.cpp index 86a78f095f52c0cf0bef5cca059ae4ad40d3a999..c9cf7275a8211436399d58753a0107064ee68f91 100644 --- a/cmds/incidentd/src/Reporter.cpp +++ b/cmds/incidentd/src/Reporter.cpp @@ -711,7 +711,7 @@ status_t Reporter::execute_section(const Section* section, IncidentMetadata* met return NO_ERROR; } - ALOGD("Start incident report section %d '%s'", sectionId, section->name.string()); + ALOGD("Start incident report section %d '%s'", sectionId, section->name.c_str()); IncidentMetadata::SectionStats* sectionMetadata = metadata->add_sections(); // Notify listener of starting @@ -747,7 +747,7 @@ status_t Reporter::execute_section(const Section* section, IncidentMetadata* met sectionId, IIncidentReportStatusListener::STATUS_FINISHED); }); - ALOGD("Finish incident report section %d '%s'", sectionId, section->name.string()); + ALOGD("Finish incident report section %d '%s'", sectionId, section->name.c_str()); return NO_ERROR; } diff --git a/cmds/incidentd/src/Section.cpp b/cmds/incidentd/src/Section.cpp index 581367a758046933c8253af493a0efc0bb8d6e86..c2aa26948146421c95c0b9a33d962b35cda79a10 100644 --- a/cmds/incidentd/src/Section.cpp +++ b/cmds/incidentd/src/Section.cpp @@ -60,7 +60,7 @@ const char INCIDENT_HELPER[] = "/system/bin/incident_helper"; const char* GZIP[] = {"/system/bin/gzip", NULL}; static pid_t fork_execute_incident_helper(const int id, Fpipe* p2cPipe, Fpipe* c2pPipe) { - const char* ihArgs[]{INCIDENT_HELPER, "-s", String8::format("%d", id).string(), NULL}; + const char* ihArgs[]{INCIDENT_HELPER, "-s", String8::format("%d", id).c_str(), NULL}; return fork_execute_cmd(const_cast(ihArgs), p2cPipe, c2pPipe); } @@ -100,7 +100,7 @@ status_t FileSection::Execute(ReportWriter* writer) const { // add O_CLOEXEC to make sure it is closed when exec incident helper unique_fd fd(open(mFilename, O_RDONLY | O_CLOEXEC)); if (fd.get() == -1) { - ALOGW("[%s] failed to open file", this->name.string()); + ALOGW("[%s] failed to open file", this->name.c_str()); // There may be some devices/architectures that won't have the file. // Just return here without an error. return NO_ERROR; @@ -110,13 +110,13 @@ status_t FileSection::Execute(ReportWriter* writer) const { Fpipe c2pPipe; // initiate pipes to pass data to/from incident_helper if (!p2cPipe.init() || !c2pPipe.init()) { - ALOGW("[%s] failed to setup pipes", this->name.string()); + ALOGW("[%s] failed to setup pipes", this->name.c_str()); return -errno; } pid_t pid = fork_execute_incident_helper(this->id, &p2cPipe, &c2pPipe); if (pid == -1) { - ALOGW("[%s] failed to fork", this->name.string()); + ALOGW("[%s] failed to fork", this->name.c_str()); return -errno; } @@ -128,14 +128,14 @@ status_t FileSection::Execute(ReportWriter* writer) const { writer->setSectionStats(buffer); if (readStatus != NO_ERROR || buffer.timedOut()) { ALOGW("[%s] failed to read data from incident helper: %s, timedout: %s", - this->name.string(), strerror(-readStatus), buffer.timedOut() ? "true" : "false"); + this->name.c_str(), strerror(-readStatus), buffer.timedOut() ? "true" : "false"); kill_child(pid); return readStatus; } status_t ihStatus = wait_child(pid); if (ihStatus != NO_ERROR) { - ALOGW("[%s] abnormal child process: %s", this->name.string(), strerror(-ihStatus)); + ALOGW("[%s] abnormal child process: %s", this->name.c_str(), strerror(-ihStatus)); return OK; // Not a fatal error. } @@ -169,7 +169,7 @@ status_t GZipSection::Execute(ReportWriter* writer) const { index++; // look at the next file. } if (fd.get() == -1) { - ALOGW("[%s] can't open all the files", this->name.string()); + ALOGW("[%s] can't open all the files", this->name.c_str()); return NO_ERROR; // e.g. LAST_KMSG will reach here in user build. } FdBuffer buffer; @@ -177,13 +177,13 @@ status_t GZipSection::Execute(ReportWriter* writer) const { Fpipe c2pPipe; // initiate pipes to pass data to/from gzip if (!p2cPipe.init() || !c2pPipe.init()) { - ALOGW("[%s] failed to setup pipes", this->name.string()); + ALOGW("[%s] failed to setup pipes", this->name.c_str()); return -errno; } pid_t pid = fork_execute_cmd((char* const*)GZIP, &p2cPipe, &c2pPipe); if (pid == -1) { - ALOGW("[%s] failed to fork", this->name.string()); + ALOGW("[%s] failed to fork", this->name.c_str()); return -errno; } // parent process @@ -202,14 +202,14 @@ status_t GZipSection::Execute(ReportWriter* writer) const { size_t editPos = internalBuffer->wp()->pos(); internalBuffer->wp()->move(8); // reserve 8 bytes for the varint of the data size. size_t dataBeginAt = internalBuffer->wp()->pos(); - VLOG("[%s] editPos=%zu, dataBeginAt=%zu", this->name.string(), editPos, dataBeginAt); + VLOG("[%s] editPos=%zu, dataBeginAt=%zu", this->name.c_str(), editPos, dataBeginAt); status_t readStatus = buffer.readProcessedDataInStream( fd.get(), std::move(p2cPipe.writeFd()), std::move(c2pPipe.readFd()), this->timeoutMs, isSysfs(mFilenames[index])); writer->setSectionStats(buffer); if (readStatus != NO_ERROR || buffer.timedOut()) { - ALOGW("[%s] failed to read data from gzip: %s, timedout: %s", this->name.string(), + ALOGW("[%s] failed to read data from gzip: %s, timedout: %s", this->name.c_str(), strerror(-readStatus), buffer.timedOut() ? "true" : "false"); kill_child(pid); return readStatus; @@ -217,7 +217,7 @@ status_t GZipSection::Execute(ReportWriter* writer) const { status_t gzipStatus = wait_child(pid); if (gzipStatus != NO_ERROR) { - ALOGW("[%s] abnormal child process: %s", this->name.string(), strerror(-gzipStatus)); + ALOGW("[%s] abnormal child process: %s", this->name.c_str(), strerror(-gzipStatus)); return gzipStatus; } // Revisit the actual size from gzip result and edit the internal buffer accordingly. @@ -290,7 +290,7 @@ status_t WorkerThreadSection::Execute(ReportWriter* writer) const { FdBuffer buffer; err = buffer.read(data->pipe.readFd().get(), this->timeoutMs); if (err != NO_ERROR) { - ALOGE("[%s] reader failed with error '%s'", this->name.string(), strerror(-err)); + ALOGE("[%s] reader failed with error '%s'", this->name.c_str(), strerror(-err)); } // If the worker side is finished, then return its error (which may overwrite @@ -300,7 +300,7 @@ status_t WorkerThreadSection::Execute(ReportWriter* writer) const { data->pipe.close(); if (data->workerError != NO_ERROR) { err = data->workerError; - ALOGE("[%s] worker failed with error '%s'", this->name.string(), strerror(-err)); + ALOGE("[%s] worker failed with error '%s'", this->name.c_str(), strerror(-err)); } workerDone = data->workerDone; } @@ -309,17 +309,17 @@ status_t WorkerThreadSection::Execute(ReportWriter* writer) const { if (err != NO_ERROR) { char errMsg[128]; snprintf(errMsg, 128, "[%s] failed with error '%s'", - this->name.string(), strerror(-err)); + this->name.c_str(), strerror(-err)); writer->error(this, err, "WorkerThreadSection failed."); return NO_ERROR; } if (buffer.truncated()) { - ALOGW("[%s] too large, truncating", this->name.string()); + ALOGW("[%s] too large, truncating", this->name.c_str()); // Do not write a truncated section. It won't pass through the PrivacyFilter. return NO_ERROR; } if (!workerDone || buffer.timedOut()) { - ALOGW("[%s] timed out", this->name.string()); + ALOGW("[%s] timed out", this->name.c_str()); return NO_ERROR; } @@ -360,18 +360,18 @@ status_t CommandSection::Execute(ReportWriter* writer) const { Fpipe ihPipe; if (!cmdPipe.init() || !ihPipe.init()) { - ALOGW("[%s] failed to setup pipes", this->name.string()); + ALOGW("[%s] failed to setup pipes", this->name.c_str()); return -errno; } pid_t cmdPid = fork_execute_cmd((char* const*)mCommand, NULL, &cmdPipe); if (cmdPid == -1) { - ALOGW("[%s] failed to fork", this->name.string()); + ALOGW("[%s] failed to fork", this->name.c_str()); return -errno; } pid_t ihPid = fork_execute_incident_helper(this->id, &cmdPipe, &ihPipe); if (ihPid == -1) { - ALOGW("[%s] failed to fork", this->name.string()); + ALOGW("[%s] failed to fork", this->name.c_str()); return -errno; } @@ -381,7 +381,7 @@ status_t CommandSection::Execute(ReportWriter* writer) const { writer->setSectionStats(buffer); if (readStatus != NO_ERROR || buffer.timedOut()) { ALOGW("[%s] failed to read data from incident helper: %s, timedout: %s", - this->name.string(), strerror(-readStatus), buffer.timedOut() ? "true" : "false"); + this->name.c_str(), strerror(-readStatus), buffer.timedOut() ? "true" : "false"); kill_child(cmdPid); kill_child(ihPid); return readStatus; @@ -393,7 +393,7 @@ status_t CommandSection::Execute(ReportWriter* writer) const { status_t ihStatus = wait_child(ihPid); if (cmdStatus != NO_ERROR || ihStatus != NO_ERROR) { ALOGW("[%s] abnormal child processes, return status: command: %s, incident helper: %s", - this->name.string(), strerror(-cmdStatus), strerror(-ihStatus)); + this->name.c_str(), strerror(-cmdStatus), strerror(-ihStatus)); // Not a fatal error. return NO_ERROR; } @@ -428,7 +428,7 @@ status_t DumpsysSection::BlockingCall(unique_fd& pipeWriteFd) const { sp service = defaultServiceManager()->checkService(mService); if (service == NULL) { - ALOGW("DumpsysSection: Can't lookup service: %s", String8(mService).string()); + ALOGW("DumpsysSection: Can't lookup service: %s", String8(mService).c_str()); return NAME_NOT_FOUND; } @@ -463,14 +463,14 @@ status_t TextDumpsysSection::Execute(ReportWriter* writer) const { // checkService won't wait for the service to show up like getService will. sp service = defaultServiceManager()->checkService(mService); if (service == NULL) { - ALOGW("TextDumpsysSection: Can't lookup service: %s", String8(mService).string()); + ALOGW("TextDumpsysSection: Can't lookup service: %s", String8(mService).c_str()); return NAME_NOT_FOUND; } // Create pipe Fpipe dumpPipe; if (!dumpPipe.init()) { - ALOGW("[%s] failed to setup pipe", this->name.string()); + ALOGW("[%s] failed to setup pipe", this->name.c_str()); return -errno; } @@ -482,7 +482,7 @@ status_t TextDumpsysSection::Execute(ReportWriter* writer) const { signal(SIGPIPE, sigpipe_handler); status_t err = service->dump(write_fd.get(), this->mArgs); if (err != OK) { - ALOGW("[%s] dump thread failed. Error: %s", this->name.string(), strerror(-err)); + ALOGW("[%s] dump thread failed. Error: %s", this->name.c_str(), strerror(-err)); } write_fd.reset(); }); @@ -490,7 +490,7 @@ status_t TextDumpsysSection::Execute(ReportWriter* writer) const { // Collect dump content FdBuffer buffer; ProtoOutputStream proto; - proto.write(TextDumpProto::COMMAND, std::string(name.string())); + proto.write(TextDumpProto::COMMAND, std::string(name.c_str())); proto.write(TextDumpProto::DUMP_DURATION_NS, int64_t(Nanotime() - start)); buffer.write(proto.data()); @@ -504,7 +504,7 @@ status_t TextDumpsysSection::Execute(ReportWriter* writer) const { dumpPipe.readFd().reset(); writer->setSectionStats(buffer); if (readStatus != OK || buffer.timedOut()) { - ALOGW("[%s] failed to read from dumpsys: %s, timedout: %s", this->name.string(), + ALOGW("[%s] failed to read from dumpsys: %s, timedout: %s", this->name.c_str(), strerror(-readStatus), buffer.timedOut() ? "true" : "false"); worker.detach(); return readStatus; @@ -579,7 +579,7 @@ status_t LogSection::BlockingCall(unique_fd& pipeWriteFd) const { // Hence forking a new process to prevent memory fragmentation. pid_t pid = fork(); if (pid < 0) { - ALOGW("[%s] failed to fork", this->name.string()); + ALOGW("[%s] failed to fork", this->name.c_str()); return errno; } if (pid > 0) { @@ -593,7 +593,7 @@ status_t LogSection::BlockingCall(unique_fd& pipeWriteFd) const { android_logger_list_free); if (android_logger_open(loggers.get(), mLogID) == NULL) { - ALOGE("[%s] Can't get logger.", this->name.string()); + ALOGE("[%s] Can't get logger.", this->name.c_str()); _exit(EXIT_FAILURE); } @@ -610,7 +610,7 @@ status_t LogSection::BlockingCall(unique_fd& pipeWriteFd) const { // status = -EAGAIN, graceful indication for ANDRODI_LOG_NONBLOCK that this is the end. if (status <= 0) { if (status != -EAGAIN) { - ALOGW("[%s] fails to read a log_msg.\n", this->name.string()); + ALOGW("[%s] fails to read a log_msg.\n", this->name.c_str()); err = -status; } break; @@ -680,7 +680,7 @@ status_t LogSection::BlockingCall(unique_fd& pipeWriteFd) const { AndroidLogEntry entry; status = android_log_processLogBuffer(&msg.entry, &entry); if (status != OK) { - ALOGW("[%s] fails to process to an entry.\n", this->name.string()); + ALOGW("[%s] fails to process to an entry.\n", this->name.c_str()); err = status; break; } @@ -702,7 +702,7 @@ status_t LogSection::BlockingCall(unique_fd& pipeWriteFd) const { } if (!proto.flush(pipeWriteFd.get())) { if (errno == EPIPE) { - ALOGW("[%s] wrote to a broken pipe\n", this->name.string()); + ALOGW("[%s] wrote to a broken pipe\n", this->name.c_str()); } err = errno; break; @@ -757,7 +757,7 @@ status_t TombstoneSection::BlockingCall(unique_fd& pipeWriteFd) const { } ssize_t exe_name_len = readlink(link_name, exe_name, EXE_NAME_LEN); if (exe_name_len < 0 || exe_name_len >= EXE_NAME_LEN) { - ALOGE("[%s] Can't read '%s': %s", name.string(), link_name, strerror(errno)); + ALOGE("[%s] Can't read '%s': %s", name.c_str(), link_name, strerror(errno)); continue; } // readlink(2) does not put a null terminator at the end @@ -788,7 +788,7 @@ status_t TombstoneSection::BlockingCall(unique_fd& pipeWriteFd) const { Fpipe dumpPipe; if (!dumpPipe.init()) { - ALOGW("[%s] failed to setup dump pipe", this->name.string()); + ALOGW("[%s] failed to setup dump pipe", this->name.c_str()); err = -errno; break; } @@ -822,12 +822,12 @@ status_t TombstoneSection::BlockingCall(unique_fd& pipeWriteFd) const { // Wait on the child to avoid it becoming a zombie process. status_t cStatus = wait_child(child); if (err != NO_ERROR) { - ALOGW("[%s] failed to read stack dump: %d", this->name.string(), err); + ALOGW("[%s] failed to read stack dump: %d", this->name.c_str(), err); dumpPipe.readFd().reset(); break; } if (cStatus != NO_ERROR) { - ALOGE("[%s] child had an issue: %s\n", this->name.string(), strerror(-cStatus)); + ALOGE("[%s] child had an issue: %s\n", this->name.c_str(), strerror(-cStatus)); } // Resize dump buffer @@ -852,7 +852,7 @@ status_t TombstoneSection::BlockingCall(unique_fd& pipeWriteFd) const { dumpPipe.readFd().reset(); if (!proto.flush(pipeWriteFd.get())) { if (errno == EPIPE) { - ALOGE("[%s] wrote to a broken pipe\n", this->name.string()); + ALOGE("[%s] wrote to a broken pipe\n", this->name.c_str()); } err = errno; break; diff --git a/cmds/incidentd/src/report_directory.cpp b/cmds/incidentd/src/report_directory.cpp index 7d20a74437ce8bb3d752105c7bd0b900f4ba0166..6b2fb8ec308a2252dcd8c284e2749aa0ce2c58c6 100644 --- a/cmds/incidentd/src/report_directory.cpp +++ b/cmds/incidentd/src/report_directory.cpp @@ -62,8 +62,8 @@ void clean_directory(const char* directory, off_t maxSize, size_t maxCount) { continue; } String8 filename = dirbase + entry->d_name; - if (stat(filename.string(), &st) != 0) { - ALOGE("Unable to stat file %s", filename.string()); + if (stat(filename.c_str(), &st) != 0) { + ALOGE("Unable to stat file %s", filename.c_str()); continue; } if (!S_ISREG(st.st_mode)) { @@ -88,7 +88,7 @@ void clean_directory(const char* directory, off_t maxSize, size_t maxCount) { // Remove files until we're under our limits. for (std::vector>::iterator it = files.begin(); it != files.end() && totalSize >= maxSize && totalCount >= maxCount; it++) { - remove(it->first.string()); + remove(it->first.c_str()); totalSize -= it->second.st_size; totalCount--; } diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt index b09695687a3c0f28bfb39e727b61bce6a7dde667..eca622adf8ed54ad9af4bcb9a6865fd67b5ed156 100644 --- a/config/boot-image-profile.txt +++ b/config/boot-image-profile.txt @@ -123,15 +123,15 @@ HSPLandroid/accounts/IAccountManagerResponse$Stub;->onTransact(ILandroid/os/Parc HSPLandroid/animation/AnimationHandler$$ExternalSyntheticLambda0;->(Landroid/animation/AnimationHandler;)V HSPLandroid/animation/AnimationHandler$$ExternalSyntheticLambda0;->doFrame(J)V HSPLandroid/animation/AnimationHandler$1;->(Landroid/animation/AnimationHandler;)V -HSPLandroid/animation/AnimationHandler$1;->doFrame(J)V +HSPLandroid/animation/AnimationHandler$1;->doFrame(J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;Landroid/animation/AnimationHandler$MyFrameCallbackProvider;,Lcom/android/internal/graphics/SfVsyncFrameCallbackProvider;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->(Landroid/animation/AnimationHandler;)V -HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J +HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J+]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V HSPLandroid/animation/AnimationHandler;->()V HSPLandroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V HSPLandroid/animation/AnimationHandler;->autoCancelBasedOn(Landroid/animation/ObjectAnimator;)V HSPLandroid/animation/AnimationHandler;->cleanUpList()V -HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V +HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V+]Landroid/animation/AnimationHandler$AnimationFrameCallback;Landroid/animation/ValueAnimator;,Landroid/animation/ObjectAnimator;,Lcom/android/internal/dynamicanimation/animation/SpringAnimation;,Landroid/animation/AnimatorSet;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/animation/AnimationHandler;->getAnimationCount()I HSPLandroid/animation/AnimationHandler;->getInstance()Landroid/animation/AnimationHandler; HSPLandroid/animation/AnimationHandler;->getProvider()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider; @@ -163,7 +163,7 @@ HSPLandroid/animation/Animator$AnimatorConstantState;->getChangingConfigurations HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Landroid/animation/Animator; HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Ljava/lang/Object; HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types -HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;missing_types +HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V+]Landroid/animation/Animator$AnimatorListener;megamorphic_types HSPLandroid/animation/Animator;->()V HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V HSPLandroid/animation/Animator;->addPauseListener(Landroid/animation/Animator$AnimatorPauseListener;)V @@ -231,7 +231,7 @@ HSPLandroid/animation/AnimatorSet;->cancel()V HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/Animator; HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/AnimatorSet; HSPLandroid/animation/AnimatorSet;->createDependencyGraph()V -HSPLandroid/animation/AnimatorSet;->doAnimationFrame(J)Z +HSPLandroid/animation/AnimatorSet;->doAnimationFrame(J)Z+]Landroid/animation/AnimatorSet$SeekState;Landroid/animation/AnimatorSet$SeekState;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/animation/AnimatorSet;->end()V HSPLandroid/animation/AnimatorSet;->endAnimation()V HSPLandroid/animation/AnimatorSet;->ensureChildStartAndEndTimes()[J @@ -274,12 +274,12 @@ HSPLandroid/animation/AnimatorSet;->startWithoutPulsing(Z)V HSPLandroid/animation/AnimatorSet;->updateAnimatorsDuration()V HSPLandroid/animation/AnimatorSet;->updatePlayTime(Landroid/animation/AnimatorSet$Node;Ljava/util/ArrayList;)V HSPLandroid/animation/ArgbEvaluator;->()V -HSPLandroid/animation/ArgbEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/animation/ArgbEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Integer;Ljava/lang/Integer; HSPLandroid/animation/ArgbEvaluator;->getInstance()Landroid/animation/ArgbEvaluator; HSPLandroid/animation/FloatKeyframeSet;->([Landroid/animation/Keyframe$FloatKeyframe;)V HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/FloatKeyframeSet; HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/Keyframes; -HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F +HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F+]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Landroid/animation/Keyframe$FloatKeyframe;Landroid/animation/Keyframe$FloatKeyframe; HSPLandroid/animation/FloatKeyframeSet;->getValue(F)Ljava/lang/Object; HSPLandroid/animation/IntKeyframeSet;->([Landroid/animation/Keyframe$IntKeyframe;)V HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/IntKeyframeSet; @@ -313,11 +313,11 @@ HSPLandroid/animation/Keyframe;->ofObject(FLjava/lang/Object;)Landroid/animation HSPLandroid/animation/Keyframe;->setInterpolator(Landroid/animation/TimeInterpolator;)V HSPLandroid/animation/Keyframe;->setValueWasSetOnStart(Z)V HSPLandroid/animation/Keyframe;->valueWasSetOnStart()Z -HSPLandroid/animation/KeyframeSet;->([Landroid/animation/Keyframe;)V +HSPLandroid/animation/KeyframeSet;->([Landroid/animation/Keyframe;)V+]Landroid/animation/Keyframe;Landroid/animation/Keyframe$ObjectKeyframe;,Landroid/animation/Keyframe$IntKeyframe;,Landroid/animation/Keyframe$FloatKeyframe; HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/KeyframeSet; HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/Keyframes; HSPLandroid/animation/KeyframeSet;->getKeyframes()Ljava/util/List; -HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object; +HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object;+]Landroid/animation/TypeEvaluator;Landroid/animation/ArgbEvaluator;]Landroid/animation/Keyframe;Landroid/animation/Keyframe$ObjectKeyframe; HSPLandroid/animation/KeyframeSet;->ofFloat([F)Landroid/animation/KeyframeSet; HSPLandroid/animation/KeyframeSet;->ofInt([I)Landroid/animation/KeyframeSet; HSPLandroid/animation/KeyframeSet;->ofObject([Ljava/lang/Object;)Landroid/animation/KeyframeSet; @@ -357,7 +357,7 @@ HSPLandroid/animation/LayoutTransition;->startChangingAnimations()V HSPLandroid/animation/ObjectAnimator;->()V HSPLandroid/animation/ObjectAnimator;->(Ljava/lang/Object;Landroid/util/Property;)V HSPLandroid/animation/ObjectAnimator;->(Ljava/lang/Object;Ljava/lang/String;)V -HSPLandroid/animation/ObjectAnimator;->animateValue(F)V +HSPLandroid/animation/ObjectAnimator;->animateValue(F)V+]Landroid/animation/ObjectAnimator;Landroid/animation/ObjectAnimator;]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/Animator; HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/ObjectAnimator; HSPLandroid/animation/ObjectAnimator;->getNameForTrace()Ljava/lang/String; @@ -399,7 +399,7 @@ HSPLandroid/animation/PathKeyframes;->interpolateInRange(FII)Landroid/graphics/P HSPLandroid/animation/PropertyValuesHolder$1;->getValueAtFraction(F)Ljava/lang/Object; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->(Landroid/util/Property;[F)V HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->(Ljava/lang/String;[F)V -HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->calculateValue(F)V +HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->calculateValue(F)V+]Landroid/animation/Keyframes$FloatKeyframes;Landroid/animation/FloatKeyframeSet; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder; HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->getAnimatedValue()Ljava/lang/Object; @@ -417,7 +417,6 @@ HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setIntValue HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V HSPLandroid/animation/PropertyValuesHolder$PropertyValues;->()V HSPLandroid/animation/PropertyValuesHolder;->(Landroid/util/Property;)V -HSPLandroid/animation/PropertyValuesHolder;->(Landroid/util/Property;Landroid/animation/PropertyValuesHolder-IA;)V HSPLandroid/animation/PropertyValuesHolder;->(Ljava/lang/String;)V HSPLandroid/animation/PropertyValuesHolder;->(Ljava/lang/String;Landroid/animation/PropertyValuesHolder-IA;)V HSPLandroid/animation/PropertyValuesHolder;->calculateValue(F)V @@ -473,18 +472,18 @@ HSPLandroid/animation/TimeAnimator;->setTimeListener(Landroid/animation/TimeAnim HSPLandroid/animation/ValueAnimator;->()V HSPLandroid/animation/ValueAnimator;->addAnimationCallback(J)V HSPLandroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V -HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z -HSPLandroid/animation/ValueAnimator;->animateValue(F)V +HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;,Landroid/animation/ObjectAnimator; +HSPLandroid/animation/ValueAnimator;->animateValue(F)V+]Landroid/animation/TimeInterpolator;megamorphic_types]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;,Landroid/animation/PropertyValuesHolder;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;,Landroid/animation/ObjectAnimator; HSPLandroid/animation/ValueAnimator;->areAnimatorsEnabled()Z HSPLandroid/animation/ValueAnimator;->cancel()V HSPLandroid/animation/ValueAnimator;->clampFraction(F)F HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/Animator; HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator; -HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z +HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z+]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;,Landroid/animation/ObjectAnimator; HSPLandroid/animation/ValueAnimator;->end()V -HSPLandroid/animation/ValueAnimator;->endAnimation()V +HSPLandroid/animation/ValueAnimator;->endAnimation()V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator; HSPLandroid/animation/ValueAnimator;->getAnimatedFraction()F -HSPLandroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object; +HSPLandroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object;+]Landroid/animation/PropertyValuesHolder;Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder; HSPLandroid/animation/ValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler; HSPLandroid/animation/ValueAnimator;->getCurrentAnimationsCount()I HSPLandroid/animation/ValueAnimator;->getCurrentIteration(F)I @@ -532,7 +531,7 @@ HSPLandroid/animation/ValueAnimator;->setValues([Landroid/animation/PropertyValu HSPLandroid/animation/ValueAnimator;->shouldPlayBackward(IZ)Z HSPLandroid/animation/ValueAnimator;->skipToEndValue(Z)V HSPLandroid/animation/ValueAnimator;->start()V -HSPLandroid/animation/ValueAnimator;->start(Z)V +HSPLandroid/animation/ValueAnimator;->start(Z)V+]Landroid/animation/ValueAnimator;Landroid/animation/ObjectAnimator;,Landroid/animation/ValueAnimator; HSPLandroid/animation/ValueAnimator;->startAnimation()V HSPLandroid/animation/ValueAnimator;->startWithoutPulsing(Z)V HSPLandroid/app/Activity$1;->(Landroid/app/Activity;)V @@ -583,7 +582,7 @@ HSPLandroid/app/Activity;->getNextAutofillId()I HSPLandroid/app/Activity;->getOnBackInvokedDispatcher()Landroid/window/OnBackInvokedDispatcher; HSPLandroid/app/Activity;->getReferrer()Landroid/net/Uri; HSPLandroid/app/Activity;->getRequestedOrientation()I -HSPLandroid/app/Activity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; +HSPLandroid/app/Activity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/app/Activity;->getTaskId()I HSPLandroid/app/Activity;->getTitle()Ljava/lang/CharSequence; HSPLandroid/app/Activity;->getTitleColor()I @@ -821,7 +820,7 @@ HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPersistable()Z HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPreHoneycomb()Z HSPLandroid/app/ActivityThread$ActivityClientRecord;->setState(I)V HSPLandroid/app/ActivityThread$AndroidOs;->(Llibcore/io/Os;)V -HSPLandroid/app/ActivityThread$AndroidOs;->access(Ljava/lang/String;I)Z +HSPLandroid/app/ActivityThread$AndroidOs;->access(Ljava/lang/String;I)Z+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/app/ActivityThread$AndroidOs;->install()V HSPLandroid/app/ActivityThread$AndroidOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor; HSPLandroid/app/ActivityThread$AndroidOs;->remove(Ljava/lang/String;)V @@ -868,11 +867,11 @@ HSPLandroid/app/ActivityThread$ApplicationThread;->setProcessState(I)V HSPLandroid/app/ActivityThread$ApplicationThread;->unstableProviderDied(Landroid/os/IBinder;)V HSPLandroid/app/ActivityThread$ApplicationThread;->updateCompatOverrideScale(Landroid/content/res/CompatibilityInfo;)V HSPLandroid/app/ActivityThread$BindServiceData;->()V -HSPLandroid/app/ActivityThread$BindServiceData;->toString()Ljava/lang/String; +HSPLandroid/app/ActivityThread$BindServiceData;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/app/ActivityThread$ContextCleanupInfo;->()V HSPLandroid/app/ActivityThread$CreateBackupAgentData;->()V HSPLandroid/app/ActivityThread$CreateServiceData;->()V -HSPLandroid/app/ActivityThread$CreateServiceData;->toString()Ljava/lang/String; +HSPLandroid/app/ActivityThread$CreateServiceData;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/app/ActivityThread$DumpResourcesData;->()V HSPLandroid/app/ActivityThread$GcIdler;->(Landroid/app/ActivityThread;)V HSPLandroid/app/ActivityThread$GcIdler;->queueIdle()Z @@ -884,16 +883,15 @@ HSPLandroid/app/ActivityThread$Idler;->queueIdle()Z HSPLandroid/app/ActivityThread$Profiler;->()V HSPLandroid/app/ActivityThread$ProviderKey;->(Ljava/lang/String;I)V HSPLandroid/app/ActivityThread$ProviderKey;->equals(Ljava/lang/Object;)Z -HSPLandroid/app/ActivityThread$ProviderKey;->hashCode()I +HSPLandroid/app/ActivityThread$ProviderKey;->hashCode()I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/app/ActivityThread$ProviderRefCount;->(Landroid/app/ContentProviderHolder;Landroid/app/ActivityThread$ProviderClientRecord;II)V HSPLandroid/app/ActivityThread$PurgeIdler;->(Landroid/app/ActivityThread;)V HSPLandroid/app/ActivityThread$PurgeIdler;->queueIdle()Z HSPLandroid/app/ActivityThread$ReceiverData;->(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZZLandroid/os/IBinder;IILjava/lang/String;)V HSPLandroid/app/ActivityThread$RequestAssistContextExtras;->()V HSPLandroid/app/ActivityThread$ServiceArgsData;->()V -HSPLandroid/app/ActivityThread$ServiceArgsData;->toString()Ljava/lang/String; +HSPLandroid/app/ActivityThread$ServiceArgsData;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/app/ActivityThread;->-$$Nest$fgetmTransactionExecutor(Landroid/app/ActivityThread;)Landroid/app/servertransaction/TransactionExecutor; -HSPLandroid/app/ActivityThread;->-$$Nest$mgetGetProviderKey(Landroid/app/ActivityThread;Ljava/lang/String;I)Landroid/app/ActivityThread$ProviderKey; HSPLandroid/app/ActivityThread;->-$$Nest$mhandleBindApplication(Landroid/app/ActivityThread;Landroid/app/ActivityThread$AppBindData;)V HSPLandroid/app/ActivityThread;->-$$Nest$mhandleBindService(Landroid/app/ActivityThread;Landroid/app/ActivityThread$BindServiceData;)V HSPLandroid/app/ActivityThread;->-$$Nest$mhandleCreateBackupAgent(Landroid/app/ActivityThread;Landroid/app/ActivityThread$CreateBackupAgentData;)V @@ -913,8 +911,8 @@ HSPLandroid/app/ActivityThread;->-$$Nest$mhandleUnbindService(Landroid/app/Activ HSPLandroid/app/ActivityThread;->-$$Nest$mpurgePendingResources(Landroid/app/ActivityThread;)V HSPLandroid/app/ActivityThread;->-$$Nest$msendMessage(Landroid/app/ActivityThread;ILjava/lang/Object;IIZ)V HSPLandroid/app/ActivityThread;->()V -HSPLandroid/app/ActivityThread;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider; -HSPLandroid/app/ActivityThread;->acquireProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider; +HSPLandroid/app/ActivityThread;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;,Landroid/content/ContentProvider$Transport;]Landroid/os/IBinder;Landroid/content/ContentProvider$Transport;,Landroid/os/BinderProxy; +HSPLandroid/app/ActivityThread;->acquireProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider;+]Landroid/app/ActivityThread;Landroid/app/ActivityThread;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy; HSPLandroid/app/ActivityThread;->attach(ZJ)V HSPLandroid/app/ActivityThread;->callActivityOnSaveInstanceState(Landroid/app/ActivityThread$ActivityClientRecord;)V HSPLandroid/app/ActivityThread;->callActivityOnStop(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;)V @@ -985,13 +983,13 @@ HSPLandroid/app/ActivityThread;->handleLaunchActivity(Landroid/app/ActivityThrea HSPLandroid/app/ActivityThread;->handleLowMemory()V HSPLandroid/app/ActivityThread;->handleNewIntent(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/util/List;)V HSPLandroid/app/ActivityThread;->handlePauseActivity(Landroid/app/ActivityThread$ActivityClientRecord;ZZIZLandroid/app/servertransaction/PendingTransactionActions;Ljava/lang/String;)V -HSPLandroid/app/ActivityThread;->handleReceiver(Landroid/app/ActivityThread$ReceiverData;)V +HSPLandroid/app/ActivityThread;->handleReceiver(Landroid/app/ActivityThread$ReceiverData;)V+]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ActivityThread;Landroid/app/ActivityThread;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/app/ActivityThread$ReceiverData;Landroid/app/ActivityThread$ReceiverData;]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/app/ActivityThread;->handleRelaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;)V HSPLandroid/app/ActivityThread;->handleRelaunchActivityInner(Landroid/app/ActivityThread$ActivityClientRecord;ILjava/util/List;Ljava/util/List;Landroid/app/servertransaction/PendingTransactionActions;ZLandroid/content/res/Configuration;Ljava/lang/String;)V HSPLandroid/app/ActivityThread;->handleRequestAssistContextExtras(Landroid/app/ActivityThread$RequestAssistContextExtras;)V HSPLandroid/app/ActivityThread;->handleResumeActivity(Landroid/app/ActivityThread$ActivityClientRecord;ZZZLjava/lang/String;)V HSPLandroid/app/ActivityThread;->handleSendResult(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/util/List;Ljava/lang/String;)V -HSPLandroid/app/ActivityThread;->handleServiceArgs(Landroid/app/ActivityThread$ServiceArgsData;)V +HSPLandroid/app/ActivityThread;->handleServiceArgs(Landroid/app/ActivityThread$ServiceArgsData;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/app/ActivityThread;->handleSetContentCaptureOptionsCallback(Ljava/lang/String;)V HSPLandroid/app/ActivityThread;->handleSetCoreSettings(Landroid/os/Bundle;)V HSPLandroid/app/ActivityThread;->handleStartActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;Landroid/app/ActivityOptions;)V @@ -1031,7 +1029,7 @@ HSPLandroid/app/ActivityThread;->prepareRelaunchActivity(Landroid/os/IBinder;Lja HSPLandroid/app/ActivityThread;->printRow(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/app/ActivityThread;->purgePendingResources()V HSPLandroid/app/ActivityThread;->relaunchAllActivities(ZLjava/lang/String;)V -HSPLandroid/app/ActivityThread;->releaseProvider(Landroid/content/IContentProvider;Z)Z +HSPLandroid/app/ActivityThread;->releaseProvider(Landroid/content/IContentProvider;Z)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;,Landroid/content/ContentProvider$Transport;]Landroid/app/ActivityThread$H;Landroid/app/ActivityThread$H;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy; HSPLandroid/app/ActivityThread;->reportSizeConfigurations(Landroid/app/ActivityThread$ActivityClientRecord;)V HSPLandroid/app/ActivityThread;->reportStop(Landroid/app/servertransaction/PendingTransactionActions;)V HSPLandroid/app/ActivityThread;->reportTopResumedActivityChanged(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;)V @@ -1087,7 +1085,7 @@ HSPLandroid/app/AlertDialog;->resolveDialogTheme(Landroid/content/Context;I)I HSPLandroid/app/AppCompatCallbacks;->([J)V HSPLandroid/app/AppCompatCallbacks;->install([J)V HSPLandroid/app/AppCompatCallbacks;->isChangeEnabled(J)Z -HSPLandroid/app/AppCompatCallbacks;->reportChange(JI)V +HSPLandroid/app/AppCompatCallbacks;->reportChange(JI)V+]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter; HSPLandroid/app/AppComponentFactory;->()V HSPLandroid/app/AppComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity; HSPLandroid/app/AppComponentFactory;->instantiateApplication(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/app/Application; @@ -1138,7 +1136,7 @@ HSPLandroid/app/AppOpsManager;->getNotedOpCollectionMode(ILjava/lang/String;I)I HSPLandroid/app/AppOpsManager;->getPackagesForOps([I)Ljava/util/List; HSPLandroid/app/AppOpsManager;->getService()Lcom/android/internal/app/IAppOpsService; HSPLandroid/app/AppOpsManager;->getToken(Lcom/android/internal/app/IAppOpsService;)Landroid/os/IBinder; -HSPLandroid/app/AppOpsManager;->isCollectingStackTraces()Z +HSPLandroid/app/AppOpsManager;->isCollectingStackTraces()Z+]Lcom/android/internal/app/MessageSamplingConfig;Lcom/android/internal/app/MessageSamplingConfig; HSPLandroid/app/AppOpsManager;->isListeningForOpNoted()Z HSPLandroid/app/AppOpsManager;->lambda$new$0(Landroid/provider/DeviceConfig$Properties;)V HSPLandroid/app/AppOpsManager;->leftCircularDistance(III)I @@ -1154,7 +1152,7 @@ HSPLandroid/app/AppOpsManager;->opToDefaultMode(I)I HSPLandroid/app/AppOpsManager;->opToPermission(I)Ljava/lang/String; HSPLandroid/app/AppOpsManager;->opToPublicName(I)Ljava/lang/String; HSPLandroid/app/AppOpsManager;->opToSwitch(I)I -HSPLandroid/app/AppOpsManager;->pauseNotedAppOpsCollection()Landroid/app/AppOpsManager$PausedNotedAppOpsCollection; +HSPLandroid/app/AppOpsManager;->pauseNotedAppOpsCollection()Landroid/app/AppOpsManager$PausedNotedAppOpsCollection;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/app/AppOpsManager;->permissionToOp(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/app/AppOpsManager;->permissionToOpCode(Ljava/lang/String;)I HSPLandroid/app/AppOpsManager;->prefixParcelWithAppOpsIfNeeded(Landroid/os/Parcel;)V @@ -1316,7 +1314,7 @@ HSPLandroid/app/ApplicationPackageManager;->getProviderInfo(Landroid/content/Com HSPLandroid/app/ApplicationPackageManager;->getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo; HSPLandroid/app/ApplicationPackageManager;->getReceiverInfo(Landroid/content/ComponentName;Landroid/content/pm/PackageManager$ComponentInfoFlags;)Landroid/content/pm/ActivityInfo; HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources; -HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;Landroid/content/res/Configuration;)Landroid/content/res/Resources; +HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;Landroid/content/res/Configuration;)Landroid/content/res/Resources;+]Ljava/lang/String;Ljava/lang/String;]Landroid/app/ActivityThread;Landroid/app/ActivityThread; HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources; HSPLandroid/app/ApplicationPackageManager;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo; HSPLandroid/app/ApplicationPackageManager;->getServiceInfo(Landroid/content/ComponentName;Landroid/content/pm/PackageManager$ComponentInfoFlags;)Landroid/content/pm/ServiceInfo; @@ -1333,7 +1331,6 @@ HSPLandroid/app/ApplicationPackageManager;->handlePackageBroadcast(I[Ljava/lang/ HSPLandroid/app/ApplicationPackageManager;->hasSystemFeature(Ljava/lang/String;)Z HSPLandroid/app/ApplicationPackageManager;->hasSystemFeature(Ljava/lang/String;I)Z HSPLandroid/app/ApplicationPackageManager;->hasUserBadge(I)Z -HSPLandroid/app/ApplicationPackageManager;->isDeviceUpgrading()Z HSPLandroid/app/ApplicationPackageManager;->isInstantApp()Z HSPLandroid/app/ApplicationPackageManager;->isInstantApp(Ljava/lang/String;)Z HSPLandroid/app/ApplicationPackageManager;->isPackageSuspended(Ljava/lang/String;)Z @@ -1405,13 +1402,10 @@ HSPLandroid/app/BackStackRecord;->runOnCommitRunnables()V HSPLandroid/app/BroadcastOptions;->()V HSPLandroid/app/BroadcastOptions;->isTemporaryAppAllowlistSet()Z HSPLandroid/app/BroadcastOptions;->makeBasic()Landroid/app/BroadcastOptions; -HSPLandroid/app/BroadcastOptions;->resetTemporaryAppAllowlist()V HSPLandroid/app/BroadcastOptions;->setTemporaryAppWhitelistDuration(J)V HSPLandroid/app/BroadcastOptions;->toBundle()Landroid/os/Bundle; HSPLandroid/app/ClientTransactionHandler;->()V HSPLandroid/app/ClientTransactionHandler;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V -HSPLandroid/app/ComponentOptions;->()V -HSPLandroid/app/ComponentOptions;->toBundle()Landroid/os/Bundle;+]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLandroid/app/ConfigurationController;->(Landroid/app/ActivityThreadInternal;)V HSPLandroid/app/ConfigurationController;->applyCompatConfiguration()Landroid/content/res/Configuration; HSPLandroid/app/ConfigurationController;->createNewConfigAndUpdateIfNotNull(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration; @@ -1440,7 +1434,7 @@ HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireProvider(Landroi HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireUnstableProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseProvider(Landroid/content/IContentProvider;)Z HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z -HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I +HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I+]Landroid/app/ContextImpl$ApplicationContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/app/ContextImpl$ApplicationContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V HSPLandroid/app/ContextImpl;->(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/ContextParams;Ljava/lang/String;Landroid/content/AttributionSource;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;)V+]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/content/ContextParams;Landroid/content/ContextParams; HSPLandroid/app/ContextImpl;->bindIsolatedService(Landroid/content/Intent;ILjava/lang/String;Ljava/util/concurrent/Executor;Landroid/content/ServiceConnection;)Z @@ -1448,7 +1442,7 @@ HSPLandroid/app/ContextImpl;->bindService(Landroid/content/Intent;Landroid/conte HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z HSPLandroid/app/ContextImpl;->bindServiceCommon(Landroid/content/Intent;Landroid/content/ServiceConnection;JLjava/lang/String;Landroid/os/Handler;Ljava/util/concurrent/Executor;Landroid/os/UserHandle;)Z -HSPLandroid/app/ContextImpl;->canLoadUnsafeResources()Z +HSPLandroid/app/ContextImpl;->canLoadUnsafeResources()Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->checkCallingOrSelfPermission(Ljava/lang/String;)I+]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->checkCallingPermission(Ljava/lang/String;)I HSPLandroid/app/ContextImpl;->checkMode(I)V @@ -1462,7 +1456,6 @@ HSPLandroid/app/ContextImpl;->createAppContext(Landroid/app/ActivityThread;Landr HSPLandroid/app/ContextImpl;->createAppContext(Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;)Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context; HSPLandroid/app/ContextImpl;->createAttributionContext(Ljava/lang/String;)Landroid/content/Context; -HSPLandroid/app/ContextImpl;->createAttributionSource(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;)Landroid/content/AttributionSource; HSPLandroid/app/ContextImpl;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context; HSPLandroid/app/ContextImpl;->createContext(Landroid/content/ContextParams;)Landroid/content/Context; HSPLandroid/app/ContextImpl;->createContextAsUser(Landroid/os/UserHandle;I)Landroid/content/Context; @@ -1489,19 +1482,19 @@ HSPLandroid/app/ContextImpl;->enforce(Ljava/lang/String;IZILjava/lang/String;)V HSPLandroid/app/ContextImpl;->enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/app/ContextImpl;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/app/ContextImpl;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V -HSPLandroid/app/ContextImpl;->ensureExternalDirsExistOrFilter([Ljava/io/File;Z)[Ljava/io/File; +HSPLandroid/app/ContextImpl;->ensureExternalDirsExistOrFilter([Ljava/io/File;Z)[Ljava/io/File;+]Ljava/io/File;Ljava/io/File;]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->ensurePrivateCacheDirExists(Ljava/io/File;Ljava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->ensurePrivateDirExists(Ljava/io/File;)Ljava/io/File; HSPLandroid/app/ContextImpl;->ensurePrivateDirExists(Ljava/io/File;IILjava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->fileList()[Ljava/lang/String; HSPLandroid/app/ContextImpl;->finalize()V HSPLandroid/app/ContextImpl;->getActivityToken()Landroid/os/IBinder; -HSPLandroid/app/ContextImpl;->getApplicationContext()Landroid/content/Context; +HSPLandroid/app/ContextImpl;->getApplicationContext()Landroid/content/Context;+]Landroid/app/LoadedApk;Landroid/app/LoadedApk; HSPLandroid/app/ContextImpl;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;+]Landroid/app/LoadedApk;Landroid/app/LoadedApk; HSPLandroid/app/ContextImpl;->getAssets()Landroid/content/res/AssetManager; HSPLandroid/app/ContextImpl;->getAssociatedDisplayId()I HSPLandroid/app/ContextImpl;->getAttributionSource()Landroid/content/AttributionSource; -HSPLandroid/app/ContextImpl;->getAttributionTag()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getAttributionTag()Ljava/lang/String;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource; HSPLandroid/app/ContextImpl;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient; HSPLandroid/app/ContextImpl;->getAutofillOptions()Landroid/content/AutofillOptions; HSPLandroid/app/ContextImpl;->getBasePackageName()Ljava/lang/String; @@ -1511,19 +1504,19 @@ HSPLandroid/app/ContextImpl;->getCodeCacheDir()Ljava/io/File; HSPLandroid/app/ContextImpl;->getCodeCacheDirBeforeBind(Ljava/io/File;)Ljava/io/File; HSPLandroid/app/ContextImpl;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions; HSPLandroid/app/ContextImpl;->getContentResolver()Landroid/content/ContentResolver; -HSPLandroid/app/ContextImpl;->getDataDir()Ljava/io/File; +HSPLandroid/app/ContextImpl;->getDataDir()Ljava/io/File;+]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Ljava/io/File;Ljava/io/File;]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->getDatabasePath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->getDatabasesDir()Ljava/io/File; HSPLandroid/app/ContextImpl;->getDeviceId()I HSPLandroid/app/ContextImpl;->getDir(Ljava/lang/String;I)Ljava/io/File; HSPLandroid/app/ContextImpl;->getDisplay()Landroid/view/Display; HSPLandroid/app/ContextImpl;->getDisplayAdjustments(I)Landroid/view/DisplayAdjustments; -HSPLandroid/app/ContextImpl;->getDisplayId()I -HSPLandroid/app/ContextImpl;->getDisplayNoVerify()Landroid/view/Display; +HSPLandroid/app/ContextImpl;->getDisplayId()I+]Landroid/app/ContextImpl;Landroid/app/ContextImpl;]Landroid/view/Display;Landroid/view/Display; +HSPLandroid/app/ContextImpl;->getDisplayNoVerify()Landroid/view/Display;+]Landroid/app/ResourcesManager;Landroid/app/ResourcesManager; HSPLandroid/app/ContextImpl;->getExternalCacheDir()Ljava/io/File; HSPLandroid/app/ContextImpl;->getExternalCacheDirs()[Ljava/io/File; HSPLandroid/app/ContextImpl;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File; -HSPLandroid/app/ContextImpl;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/app/ContextImpl;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File;+]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->getExternalMediaDirs()[Ljava/io/File; HSPLandroid/app/ContextImpl;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->getFilesDir()Ljava/io/File;+]Landroid/app/ContextImpl;Landroid/app/ContextImpl; @@ -1532,17 +1525,17 @@ HSPLandroid/app/ContextImpl;->getMainExecutor()Ljava/util/concurrent/Executor; HSPLandroid/app/ContextImpl;->getMainLooper()Landroid/os/Looper; HSPLandroid/app/ContextImpl;->getMainThreadHandler()Landroid/os/Handler; HSPLandroid/app/ContextImpl;->getNoBackupFilesDir()Ljava/io/File; -HSPLandroid/app/ContextImpl;->getOpPackageName()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getOpPackageName()Ljava/lang/String;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource; HSPLandroid/app/ContextImpl;->getOuterContext()Landroid/content/Context; HSPLandroid/app/ContextImpl;->getPackageCodePath()Ljava/lang/String; HSPLandroid/app/ContextImpl;->getPackageManager()Landroid/content/pm/PackageManager; -HSPLandroid/app/ContextImpl;->getPackageName()Ljava/lang/String; +HSPLandroid/app/ContextImpl;->getPackageName()Ljava/lang/String;+]Landroid/app/LoadedApk;Landroid/app/LoadedApk; HSPLandroid/app/ContextImpl;->getPackageResourcePath()Ljava/lang/String; HSPLandroid/app/ContextImpl;->getPreferencesDir()Ljava/io/File; HSPLandroid/app/ContextImpl;->getReceiverRestrictedContext()Landroid/content/Context; HSPLandroid/app/ContextImpl;->getResources()Landroid/content/res/Resources; HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences; -HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences; +HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/app/LoadedApk;Landroid/app/LoadedApk;]Landroid/app/ContextImpl;Landroid/app/ContextImpl; HSPLandroid/app/ContextImpl;->getSharedPreferencesCacheLocked()Landroid/util/ArrayMap; HSPLandroid/app/ContextImpl;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/app/ContextImpl;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; @@ -1550,7 +1543,7 @@ HSPLandroid/app/ContextImpl;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/ HSPLandroid/app/ContextImpl;->getTheme()Landroid/content/res/Resources$Theme; HSPLandroid/app/ContextImpl;->getThemeResId()I HSPLandroid/app/ContextImpl;->getUser()Landroid/os/UserHandle; -HSPLandroid/app/ContextImpl;->getUserId()I +HSPLandroid/app/ContextImpl;->getUserId()I+]Landroid/os/UserHandle;Landroid/os/UserHandle; HSPLandroid/app/ContextImpl;->getWindowContextToken()Landroid/os/IBinder; HSPLandroid/app/ContextImpl;->grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V HSPLandroid/app/ContextImpl;->initializeTheme()V @@ -1763,7 +1756,7 @@ HSPLandroid/app/FragmentManagerImpl;->addAddedFragments(Landroid/util/ArraySet;) HSPLandroid/app/FragmentManagerImpl;->addFragment(Landroid/app/Fragment;Z)V HSPLandroid/app/FragmentManagerImpl;->attachController(Landroid/app/FragmentHostCallback;Landroid/app/FragmentContainer;Landroid/app/Fragment;)V HSPLandroid/app/FragmentManagerImpl;->beginTransaction()Landroid/app/FragmentTransaction; -HSPLandroid/app/FragmentManagerImpl;->burpActive()V +HSPLandroid/app/FragmentManagerImpl;->burpActive()V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/app/FragmentManagerImpl;->checkStateLoss()V HSPLandroid/app/FragmentManagerImpl;->cleanupExec()V HSPLandroid/app/FragmentManagerImpl;->dispatchActivityCreated()V @@ -1802,7 +1795,7 @@ HSPLandroid/app/FragmentManagerImpl;->executePostponedTransaction(Ljava/util/Arr HSPLandroid/app/FragmentManagerImpl;->findFragmentByTag(Ljava/lang/String;)Landroid/app/Fragment; HSPLandroid/app/FragmentManagerImpl;->findFragmentUnder(Landroid/app/Fragment;)Landroid/app/Fragment; HSPLandroid/app/FragmentManagerImpl;->forcePostponedTransactions()V -HSPLandroid/app/FragmentManagerImpl;->generateOpsForPendingActions(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z +HSPLandroid/app/FragmentManagerImpl;->generateOpsForPendingActions(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z+]Landroid/os/Handler;Landroid/os/Handler;]Landroid/app/FragmentHostCallback;Landroid/app/Activity$HostCallbacks;]Landroid/app/FragmentManagerImpl$OpGenerator;Landroid/app/BackStackRecord;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/app/FragmentManagerImpl;->getLayoutInflaterFactory()Landroid/view/LayoutInflater$Factory2; HSPLandroid/app/FragmentManagerImpl;->getPrimaryNavigationFragment()Landroid/app/Fragment; HSPLandroid/app/FragmentManagerImpl;->getTargetSdk()I @@ -1812,7 +1805,7 @@ HSPLandroid/app/FragmentManagerImpl;->makeActive(Landroid/app/Fragment;)V HSPLandroid/app/FragmentManagerImpl;->makeInactive(Landroid/app/Fragment;)V HSPLandroid/app/FragmentManagerImpl;->makeRemovedFragmentsInvisible(Landroid/util/ArraySet;)V HSPLandroid/app/FragmentManagerImpl;->moveFragmentToExpectedState(Landroid/app/Fragment;)V -HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V +HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V+]Landroid/app/FragmentManagerImpl;Landroid/app/FragmentManagerImpl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/app/FragmentManagerImpl;->moveToState(Landroid/app/Fragment;IIIZ)V HSPLandroid/app/FragmentManagerImpl;->noteStateNotSaved()V HSPLandroid/app/FragmentManagerImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; @@ -1871,7 +1864,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/app/IActivityManager$Stub$Proxy;->attachApplication(Landroid/app/IApplicationThread;J)V HSPLandroid/app/IActivityManager$Stub$Proxy;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;I)V HSPLandroid/app/IActivityManager$Stub$Proxy;->bindServiceInstance(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;JLjava/lang/String;Ljava/lang/String;I)I -HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I +HSPLandroid/app/IActivityManager$Stub$Proxy;->broadcastIntentWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->cancelIntentSender(Landroid/content/IIntentSender;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->checkPermission(Ljava/lang/String;II)I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I @@ -1882,7 +1875,7 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->getCurrentUser()Landroid/content/p HSPLandroid/app/IActivityManager$Stub$Proxy;->getCurrentUserId()I HSPLandroid/app/IActivityManager$Stub$Proxy;->getHistoricalProcessExitReasons(Ljava/lang/String;III)Landroid/content/pm/ParceledListSlice; HSPLandroid/app/IActivityManager$Stub$Proxy;->getInfoForIntentSender(Landroid/content/IIntentSender;)Landroid/app/ActivityManager$PendingIntentInfo; -HSPLandroid/app/IActivityManager$Stub$Proxy;->getIntentSenderWithFeature(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender; +HSPLandroid/app/IActivityManager$Stub$Proxy;->getIntentSenderWithFeature(ILjava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; @@ -1896,9 +1889,9 @@ HSPLandroid/app/IActivityManager$Stub$Proxy;->isIntentSenderAnActivity(Landroid/ HSPLandroid/app/IActivityManager$Stub$Proxy;->isUserAMonkey()Z HSPLandroid/app/IActivityManager$Stub$Proxy;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/app/IActivityManager$Stub$Proxy;->refContentProvider(Landroid/os/IBinder;II)Z +HSPLandroid/app/IActivityManager$Stub$Proxy;->refContentProvider(Landroid/os/IBinder;II)Z+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->registerReceiverWithFeature(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/app/IActivityManager$Stub$Proxy;->registerStrictModeCallback(Landroid/os/IBinder;)V +HSPLandroid/app/IActivityManager$Stub$Proxy;->registerStrictModeCallback(Landroid/os/IBinder;)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/IActivityManager$Stub$Proxy;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V HSPLandroid/app/IActivityManager$Stub$Proxy;->removeContentProvider(Landroid/os/IBinder;Z)V HSPLandroid/app/IActivityManager$Stub$Proxy;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V @@ -1961,15 +1954,15 @@ HSPLandroid/app/INotificationManager$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/app/INotificationManager$Stub$Proxy;->areNotificationsEnabled(Ljava/lang/String;)Z HSPLandroid/app/INotificationManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelAllNotifications(Ljava/lang/String;I)V -HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V+]Landroid/app/INotificationManager$Stub$Proxy;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V HSPLandroid/app/INotificationManager$Stub$Proxy;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V -HSPLandroid/app/INotificationManager$Stub$Proxy;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V +HSPLandroid/app/INotificationManager$Stub$Proxy;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V+]Landroid/app/INotificationManager$Stub$Proxy;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/INotificationManager$Stub$Proxy;->finishToken(Ljava/lang/String;Landroid/os/IBinder;)V HSPLandroid/app/INotificationManager$Stub$Proxy;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; HSPLandroid/app/INotificationManager$Stub$Proxy;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; -HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;+]Landroid/app/INotificationManager$Stub$Proxy;Landroid/app/INotificationManager$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup; HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice; @@ -2009,9 +2002,6 @@ HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaperInfo(I)Landroid/app/W HSPLandroid/app/IWallpaperManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IWallpaperManager; HSPLandroid/app/IWallpaperManagerCallback$Stub;->()V HSPLandroid/app/IWallpaperManagerCallback$Stub;->asBinder()Landroid/os/IBinder; -HSPLandroid/app/IWindowToken$Stub;->()V -HSPLandroid/app/IWindowToken$Stub;->getMaxTransactionId()I -HSPLandroid/app/IWindowToken$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/app/Instrumentation;->()V HSPLandroid/app/Instrumentation;->basicInit(Landroid/app/ActivityThread;)V HSPLandroid/app/Instrumentation;->callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;)V @@ -2170,13 +2160,13 @@ HSPLandroid/app/Notification$Action$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/app/Notification$Action$Builder;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V HSPLandroid/app/Notification$Action$Builder;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZ)V HSPLandroid/app/Notification$Action$Builder;->addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Action$Builder; -HSPLandroid/app/Notification$Action$Builder;->build()Landroid/app/Notification$Action; +HSPLandroid/app/Notification$Action$Builder;->build()Landroid/app/Notification$Action;+]Landroid/app/RemoteInput;Landroid/app/RemoteInput;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/app/Notification$Action$Builder;->setAllowGeneratedReplies(Z)Landroid/app/Notification$Action$Builder; HSPLandroid/app/Notification$Action$Builder;->setAuthenticationRequired(Z)Landroid/app/Notification$Action$Builder; HSPLandroid/app/Notification$Action$Builder;->setContextual(Z)Landroid/app/Notification$Action$Builder; HSPLandroid/app/Notification$Action$Builder;->setSemanticAction(I)Landroid/app/Notification$Action$Builder; -HSPLandroid/app/Notification$Action;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZZ)V -HSPLandroid/app/Notification$Action;->(Landroid/os/Parcel;)V +HSPLandroid/app/Notification$Action;->(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZZ)V+]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon; +HSPLandroid/app/Notification$Action;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/app/PendingIntent$1;,Landroid/text/TextUtils$1;,Landroid/graphics/drawable/Icon$1;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon; HSPLandroid/app/Notification$Action;->getAllowGeneratedReplies()Z HSPLandroid/app/Notification$Action;->getIcon()Landroid/graphics/drawable/Icon; HSPLandroid/app/Notification$Action;->getRemoteInputs()[Landroid/app/RemoteInput; @@ -2197,16 +2187,16 @@ HSPLandroid/app/Notification$BubbleMetadata$1;->createFromParcel(Landroid/os/Par HSPLandroid/app/Notification$BubbleMetadata$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/Notification$BubbleMetadata;->(Landroid/os/Parcel;)V HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;)V -HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;Landroid/app/Notification;)V +HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;Landroid/app/Notification;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/app/Notification$Builder;->(Landroid/content/Context;Ljava/lang/String;)V HSPLandroid/app/Notification$Builder;->addAction(Landroid/app/Notification$Action;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->addPerson(Landroid/app/Person;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->addPerson(Ljava/lang/String;)Landroid/app/Notification$Builder; -HSPLandroid/app/Notification$Builder;->build()Landroid/app/Notification; -HSPLandroid/app/Notification$Builder;->buildUnstyled()Landroid/app/Notification; +HSPLandroid/app/Notification$Builder;->build()Landroid/app/Notification;+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;]Landroid/app/Notification$BubbleMetadata;Landroid/app/Notification$BubbleMetadata;]Landroid/app/Notification$Style;Landroid/app/Notification$InboxStyle;,Landroid/app/Notification$MessagingStyle;,Landroid/app/Notification$BigTextStyle; +HSPLandroid/app/Notification$Builder;->buildUnstyled()Landroid/app/Notification;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/app/Notification$Builder;->getStyle()Landroid/app/Notification$Style; -HSPLandroid/app/Notification$Builder;->maybeCloneStrippedForDelivery(Landroid/app/Notification;)Landroid/app/Notification; +HSPLandroid/app/Notification$Builder;->maybeCloneStrippedForDelivery(Landroid/app/Notification;)Landroid/app/Notification;+]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/app/Notification$Builder;->recoverBuilder(Landroid/content/Context;Landroid/app/Notification;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->sanitizeColor()V HSPLandroid/app/Notification$Builder;->setAllowSystemGeneratedContextualActions(Z)Landroid/app/Notification$Builder; @@ -2219,7 +2209,7 @@ HSPLandroid/app/Notification$Builder;->setContent(Landroid/widget/RemoteViews;)L HSPLandroid/app/Notification$Builder;->setContentInfo(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setContentText(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; -HSPLandroid/app/Notification$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;+]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/app/Notification$Builder;->setCustomContentView(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setDefaults(I)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setDeleteIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder; @@ -2245,7 +2235,7 @@ HSPLandroid/app/Notification$Builder;->setShortcutId(Ljava/lang/String;)Landroid HSPLandroid/app/Notification$Builder;->setShowWhen(Z)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setSmallIcon(I)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setSmallIcon(II)Landroid/app/Notification$Builder; -HSPLandroid/app/Notification$Builder;->setSmallIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$Builder; +HSPLandroid/app/Notification$Builder;->setSmallIcon(Landroid/graphics/drawable/Icon;)Landroid/app/Notification$Builder;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon; HSPLandroid/app/Notification$Builder;->setSortKey(Ljava/lang/String;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setSound(Landroid/net/Uri;)Landroid/app/Notification$Builder; HSPLandroid/app/Notification$Builder;->setSound(Landroid/net/Uri;Landroid/media/AudioAttributes;)Landroid/app/Notification$Builder; @@ -2299,7 +2289,7 @@ HSPLandroid/app/Notification$Style;->restoreFromExtras(Landroid/os/Bundle;)V HSPLandroid/app/Notification$Style;->setBuilder(Landroid/app/Notification$Builder;)V HSPLandroid/app/Notification$Style;->validate(Landroid/content/Context;)V HSPLandroid/app/Notification;->()V -HSPLandroid/app/Notification;->(Landroid/os/Parcel;)V +HSPLandroid/app/Notification;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/Notification;->addFieldsFromContext(Landroid/content/Context;Landroid/app/Notification;)V HSPLandroid/app/Notification;->addFieldsFromContext(Landroid/content/pm/ApplicationInfo;Landroid/app/Notification;)V HSPLandroid/app/Notification;->areStyledNotificationsVisiblyDifferent(Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;)Z @@ -2324,8 +2314,8 @@ HSPLandroid/app/Notification;->isForegroundService()Z HSPLandroid/app/Notification;->isGroupChild()Z HSPLandroid/app/Notification;->isGroupSummary()Z HSPLandroid/app/Notification;->isMediaNotification()Z -HSPLandroid/app/Notification;->readFromParcelImpl(Landroid/os/Parcel;)V -HSPLandroid/app/Notification;->reduceImageSizes(Landroid/content/Context;)V +HSPLandroid/app/Notification;->readFromParcelImpl(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/app/Notification$1;,Landroid/graphics/drawable/Icon$1;,Landroid/app/PendingIntent$1;,Landroid/media/AudioAttributes$1;,Landroid/text/TextUtils$1;,Landroid/app/Notification$BubbleMetadata$1;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/Notification;->reduceImageSizes(Landroid/content/Context;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/app/Notification;->reduceImageSizesForRemoteView(Landroid/widget/RemoteViews;Landroid/content/Context;Z)V HSPLandroid/app/Notification;->removeTextSizeSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/app/Notification;->safeCharSequence(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; @@ -2333,10 +2323,10 @@ HSPLandroid/app/Notification;->setSmallIcon(Landroid/graphics/drawable/Icon;)V HSPLandroid/app/Notification;->suppressAlertingDueToGrouping()Z HSPLandroid/app/Notification;->toString()Ljava/lang/String; HSPLandroid/app/Notification;->visibilityToString(I)Ljava/lang/String; -HSPLandroid/app/Notification;->writeToParcel(Landroid/os/Parcel;I)V -HSPLandroid/app/Notification;->writeToParcelImpl(Landroid/os/Parcel;I)V +HSPLandroid/app/Notification;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/Notification;->writeToParcelImpl(Landroid/os/Parcel;I)V+]Landroid/media/AudioAttributes;Landroid/media/AudioAttributes;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/app/PendingIntent;Landroid/app/PendingIntent;]Landroid/app/Notification$BubbleMetadata;Landroid/app/Notification$BubbleMetadata; HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationChannel; -HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/app/NotificationChannel$1;Landroid/app/NotificationChannel$1; HSPLandroid/app/NotificationChannel;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/net/Uri$1;,Landroid/media/AudioAttributes$1;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/app/NotificationChannel;->(Ljava/lang/String;Ljava/lang/CharSequence;I)V HSPLandroid/app/NotificationChannel;->canBubble()Z @@ -2406,12 +2396,12 @@ HSPLandroid/app/NotificationManager;->createNotificationChannelGroups(Ljava/util HSPLandroid/app/NotificationManager;->createNotificationChannels(Ljava/util/List;)V HSPLandroid/app/NotificationManager;->deleteNotificationChannel(Ljava/lang/String;)V HSPLandroid/app/NotificationManager;->fixLegacySmallIcon(Landroid/app/Notification;Ljava/lang/String;)V -HSPLandroid/app/NotificationManager;->fixNotification(Landroid/app/Notification;)Landroid/app/Notification; +HSPLandroid/app/NotificationManager;->fixNotification(Landroid/app/Notification;)Landroid/app/Notification;+]Landroid/app/Notification;Landroid/app/Notification;]Landroid/content/Context;Landroid/view/ContextThemeWrapper; HSPLandroid/app/NotificationManager;->getActiveNotifications()[Landroid/service/notification/StatusBarNotification; HSPLandroid/app/NotificationManager;->getAutomaticZenRules()Ljava/util/Map; HSPLandroid/app/NotificationManager;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy; HSPLandroid/app/NotificationManager;->getCurrentInterruptionFilter()I -HSPLandroid/app/NotificationManager;->getNotificationChannel(Ljava/lang/String;)Landroid/app/NotificationChannel; +HSPLandroid/app/NotificationManager;->getNotificationChannel(Ljava/lang/String;)Landroid/app/NotificationChannel;+]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/app/INotificationManager;Landroid/app/INotificationManager$Stub$Proxy; HSPLandroid/app/NotificationManager;->getNotificationChannelGroup(Ljava/lang/String;)Landroid/app/NotificationChannelGroup; HSPLandroid/app/NotificationManager;->getNotificationChannelGroups()Ljava/util/List; HSPLandroid/app/NotificationManager;->getNotificationChannels()Ljava/util/List; @@ -2420,7 +2410,7 @@ HSPLandroid/app/NotificationManager;->getService()Landroid/app/INotificationMana HSPLandroid/app/NotificationManager;->isNotificationPolicyAccessGranted()Z HSPLandroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V HSPLandroid/app/NotificationManager;->notify(Ljava/lang/String;ILandroid/app/Notification;)V -HSPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V +HSPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V+]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/app/INotificationManager;Landroid/app/INotificationManager$Stub$Proxy; HSPLandroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -2431,22 +2421,22 @@ HSPLandroid/app/PendingIntent;->(Landroid/content/IIntentSender;)V HSPLandroid/app/PendingIntent;->(Landroid/os/IBinder;Ljava/lang/Object;)V HSPLandroid/app/PendingIntent;->buildServicePendingIntent(Landroid/content/Context;ILandroid/content/Intent;II)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->cancel()V -HSPLandroid/app/PendingIntent;->checkPendingIntent(ILandroid/content/Intent;Landroid/content/Context;Z)V+]Landroid/content/Context;missing_types]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Intent;Landroid/content/Intent; -HSPLandroid/app/PendingIntent;->equals(Ljava/lang/Object;)Z +HSPLandroid/app/PendingIntent;->checkPendingIntent(ILandroid/content/Intent;Landroid/content/Context;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/content/Context;missing_types +HSPLandroid/app/PendingIntent;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/os/BinderProxy;]Landroid/content/IIntentSender;Landroid/content/IIntentSender$Stub$Proxy; HSPLandroid/app/PendingIntent;->getActivities(Landroid/content/Context;I[Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getActivitiesAsUser(Landroid/content/Context;I[Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getActivityAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/PendingIntent; HSPLandroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; -HSPLandroid/app/PendingIntent;->getBroadcastAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/UserHandle;)Landroid/app/PendingIntent; +HSPLandroid/app/PendingIntent;->getBroadcastAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/UserHandle;)Landroid/app/PendingIntent;+]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/content/Intent;Landroid/content/Intent;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy; HSPLandroid/app/PendingIntent;->getCachedInfo()Landroid/app/ActivityManager$PendingIntentInfo; HSPLandroid/app/PendingIntent;->getCreatorPackage()Ljava/lang/String; HSPLandroid/app/PendingIntent;->getCreatorUid()I HSPLandroid/app/PendingIntent;->getIntent()Landroid/content/Intent; HSPLandroid/app/PendingIntent;->getIntentSender()Landroid/content/IntentSender; HSPLandroid/app/PendingIntent;->getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent; -HSPLandroid/app/PendingIntent;->hashCode()I +HSPLandroid/app/PendingIntent;->hashCode()I+]Ljava/lang/Object;Landroid/os/BinderProxy;]Landroid/content/IIntentSender;Landroid/content/IIntentSender$Stub$Proxy; HSPLandroid/app/PendingIntent;->isActivity()Z HSPLandroid/app/PendingIntent;->isNewMutableDisallowedImplicitPendingIntent(ILandroid/content/Intent;Z)Z+]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/app/PendingIntent;->send()V @@ -2456,7 +2446,7 @@ HSPLandroid/app/PendingIntent;->sendAndReturnResult(Landroid/content/Context;ILa HSPLandroid/app/PendingIntent;->setOnMarshaledListener(Landroid/app/PendingIntent$OnMarshaledListener;)V HSPLandroid/app/PendingIntent;->toString()Ljava/lang/String; HSPLandroid/app/PendingIntent;->writePendingIntentOrNullToParcel(Landroid/app/PendingIntent;Landroid/os/Parcel;)V -HSPLandroid/app/PendingIntent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/app/PendingIntent;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/app/PendingIntent$OnMarshaledListener;Landroid/app/Notification$$ExternalSyntheticLambda0;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Landroid/content/IIntentSender;Landroid/content/IIntentSender$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/Person$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/Person; HSPLandroid/app/Person$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/Person$Builder;->()V @@ -2479,7 +2469,7 @@ HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;) HSPLandroid/app/PictureInPictureParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/PictureInPictureParams;->(Landroid/os/Parcel;)V HSPLandroid/app/PropertyInvalidatedCache$1;->(Landroid/app/PropertyInvalidatedCache;IFZ)V -HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z+]Landroid/app/PropertyInvalidatedCache$1;Landroid/app/PropertyInvalidatedCache$1; +HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z HSPLandroid/app/PropertyInvalidatedCache$DefaultComputer;->(Landroid/app/PropertyInvalidatedCache;)V HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;->()V HSPLandroid/app/PropertyInvalidatedCache$NoPreloadHolder;->next()J @@ -2506,7 +2496,7 @@ HSPLandroid/app/PropertyInvalidatedCache;->invalidateCacheLocked(Ljava/lang/Stri HSPLandroid/app/PropertyInvalidatedCache;->isDisabled()Z HSPLandroid/app/PropertyInvalidatedCache;->isReservedNonce(J)Z HSPLandroid/app/PropertyInvalidatedCache;->maybeCheckConsistency(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Landroid/app/PropertyInvalidatedCache$1;]Landroid/app/PropertyInvalidatedCache;megamorphic_types HSPLandroid/app/PropertyInvalidatedCache;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/PropertyInvalidatedCache;->refresh(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/app/PropertyInvalidatedCache;->registerCache()V+]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; @@ -2637,10 +2627,7 @@ HSPLandroid/app/ServiceConnectionLeaked;->(Ljava/lang/String;)V HSPLandroid/app/ServiceStartArgs$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ServiceStartArgs; HSPLandroid/app/ServiceStartArgs$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/ServiceStartArgs;->(Landroid/os/Parcel;)V -HSPLandroid/app/SharedPreferencesImpl$1;->(Landroid/app/SharedPreferencesImpl;Ljava/lang/String;)V HSPLandroid/app/SharedPreferencesImpl$1;->run()V -HSPLandroid/app/SharedPreferencesImpl$2;->(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;ZLjava/lang/Runnable;)V -HSPLandroid/app/SharedPreferencesImpl$2;->run()V HSPLandroid/app/SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0;->(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V HSPLandroid/app/SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0;->run()V HSPLandroid/app/SharedPreferencesImpl$EditorImpl$1;->(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;J)V @@ -2651,9 +2638,9 @@ HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->(Landroid/app/SharedPre HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->apply()V HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->clear()Landroid/content/SharedPreferences$Editor; HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commit()Z -HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commitToMemory()Landroid/app/SharedPreferencesImpl$MemoryCommitResult;+]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Boolean;,Ljava/lang/Long;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/List;Ljava/util/ArrayList; -HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->notifyListeners(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V+]Landroid/os/Handler;Landroid/app/ActivityThread$H;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Set;Ljava/util/HashSet; -HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commitToMemory()Landroid/app/SharedPreferencesImpl$MemoryCommitResult;+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/lang/Object;Ljava/lang/String;,Ljava/util/HashSet;,Ljava/lang/Long;,Ljava/lang/Boolean;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->notifyListeners(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V+]Landroid/os/Handler;Landroid/app/ActivityThread$H;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet; +HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;+]Ljava/util/Map;Ljava/util/HashMap; HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putFloat(Ljava/lang/String;F)Landroid/content/SharedPreferences$Editor; HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putInt(Ljava/lang/String;I)Landroid/content/SharedPreferences$Editor; HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putLong(Ljava/lang/String;J)Landroid/content/SharedPreferences$Editor; @@ -2673,10 +2660,9 @@ HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmCurrentMemoryStateGeneratio HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmDiskWritesInFlight(Landroid/app/SharedPreferencesImpl;I)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$fputmMap(Landroid/app/SharedPreferencesImpl;Ljava/util/Map;)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$menqueueDiskWrite(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Ljava/lang/Runnable;)V -HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$mloadFromDisk(Landroid/app/SharedPreferencesImpl;)V HSPLandroid/app/SharedPreferencesImpl;->-$$Nest$mwriteToFile(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V HSPLandroid/app/SharedPreferencesImpl;->(Ljava/io/File;I)V -HSPLandroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V +HSPLandroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V+]Ljava/lang/Object;Ljava/lang/Object;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLandroid/app/SharedPreferencesImpl;->contains(Ljava/lang/String;)Z HSPLandroid/app/SharedPreferencesImpl;->createFileOutputStream(Ljava/io/File;)Ljava/io/FileOutputStream; HSPLandroid/app/SharedPreferencesImpl;->edit()Landroid/content/SharedPreferences$Editor; @@ -2695,7 +2681,7 @@ HSPLandroid/app/SharedPreferencesImpl;->registerOnSharedPreferenceChangeListener HSPLandroid/app/SharedPreferencesImpl;->startLoadFromDisk()V HSPLandroid/app/SharedPreferencesImpl;->startReloadIfChangedUnexpectedly()V HSPLandroid/app/SharedPreferencesImpl;->unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V -HSPLandroid/app/SharedPreferencesImpl;->writeToFile(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V+]Ljava/io/File;Ljava/io/File;]Lcom/android/internal/util/ExponentiallyBucketedHistogram;Lcom/android/internal/util/ExponentiallyBucketedHistogram;]Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;]Ljava/io/FileOutputStream;Ljava/io/FileOutputStream; +HSPLandroid/app/SharedPreferencesImpl;->writeToFile(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V HSPLandroid/app/StackTrace;->(Ljava/lang/String;)V HSPLandroid/app/StatusBarManager;->(Landroid/content/Context;)V HSPLandroid/app/SyncNotedAppOp$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/SyncNotedAppOp; @@ -2714,19 +2700,15 @@ HSPLandroid/app/SystemServiceRegistry$104;->createService(Landroid/app/ContextIm HSPLandroid/app/SystemServiceRegistry$105;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$106;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$107;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$108;->createService(Landroid/app/ContextImpl;)Landroid/app/slice/SliceManager; HSPLandroid/app/SystemServiceRegistry$108;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$109;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$10;->createService(Landroid/app/ContextImpl;)Landroid/media/MediaRouter; HSPLandroid/app/SystemServiceRegistry$10;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$110;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$111;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$112;->createService(Landroid/app/ContextImpl;)Landroid/permission/PermissionManager; HSPLandroid/app/SystemServiceRegistry$112;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$113;->createService(Landroid/app/ContextImpl;)Landroid/permission/LegacyPermissionManager; HSPLandroid/app/SystemServiceRegistry$113;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$114;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$115;->createService(Landroid/app/ContextImpl;)Landroid/permission/PermissionCheckerManager; HSPLandroid/app/SystemServiceRegistry$115;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$116;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$117;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; @@ -2736,146 +2718,99 @@ HSPLandroid/app/SystemServiceRegistry$124;->createService(Landroid/app/ContextIm HSPLandroid/app/SystemServiceRegistry$125;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$126;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$127;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$128;->createService(Landroid/app/ContextImpl;)Landroid/hardware/devicestate/DeviceStateManager; HSPLandroid/app/SystemServiceRegistry$128;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$129;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Landroid/view/textclassifier/TextClassificationManager; HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Landroid/app/GameManager; HSPLandroid/app/SystemServiceRegistry$130;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$131;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$139;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$13;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$140;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$14;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$15;->createService(Landroid/app/ContextImpl;)Landroid/content/ClipboardManager; HSPLandroid/app/SystemServiceRegistry$15;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$18$$ExternalSyntheticLambda0;->()V -HSPLandroid/app/SystemServiceRegistry$18$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$18;->createService(Landroid/app/ContextImpl;)Landroid/net/TetheringManager; HSPLandroid/app/SystemServiceRegistry$18;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$18;->lambda$createService$0()Landroid/os/IBinder; HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/AccessibilityManager; HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager; HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Landroid/app/DownloadManager; HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager; HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$25;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Landroid/hardware/input/InputManager; HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/DisplayManager; HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$29;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/CaptioningManager; HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$30;->getService(Landroid/app/ContextImpl;)Landroid/view/inputmethod/InputMethodManager; -HSPLandroid/app/SystemServiceRegistry$30;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Landroid/view/textservice/TextServicesManager; -HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Landroid/app/KeyguardManager; HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Landroid/view/LayoutInflater; HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager; HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager; HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager; HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Landroid/accounts/AccountManager; HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorManager; HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Landroid/app/StatusBarManager; HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager; HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$47;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Landroid/telephony/TelephonyRegistryManager; HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Landroid/app/ActivityManager; HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Landroid/telecom/TelecomManager; HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Landroid/app/UiModeManager; HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Landroid/hardware/usb/UsbManager; HSPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$54;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$55;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Landroid/os/VibratorManager; HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Landroid/os/Vibrator; HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$58;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager; HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager; HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager; HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Landroid/hardware/camera2/CameraManager; HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$64;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$65;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$66;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$67;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$68;->createService(Landroid/app/ContextImpl;)Landroid/companion/virtual/VirtualDeviceManager; HSPLandroid/app/SystemServiceRegistry$68;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$69;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$71;->createService(Landroid/app/ContextImpl;)Landroid/hardware/fingerprint/FingerprintManager; HSPLandroid/app/SystemServiceRegistry$71;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$74;->createService(Landroid/app/ContextImpl;)Landroid/hardware/biometrics/BiometricManager; HSPLandroid/app/SystemServiceRegistry$74;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$75;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$77;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$78;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$79;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/UsageStatsManager; -HSPLandroid/app/SystemServiceRegistry$79;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Landroid/app/AlarmManager; HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Landroid/appwidget/AppWidgetManager; HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$84;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$85;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$86;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/ShortcutManager; HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$89;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Landroid/media/AudioManager; HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$90;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$91;->createService(Landroid/app/ContextImpl;)Landroid/os/health/SystemHealthManager; HSPLandroid/app/SystemServiceRegistry$91;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$92;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$93;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$94;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Landroid/view/autofill/AutofillManager; HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$96;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$97;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Landroid/view/contentcapture/ContentCaptureManager; HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$99;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$9;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$CachedServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry$StaticServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object; HSPLandroid/app/SystemServiceRegistry;->createServiceCache()[Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry;->getSystemService(Landroid/app/ContextImpl;Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/app/SystemServiceRegistry;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String; +HSPLandroid/app/SystemServiceRegistry;->getSystemService(Landroid/app/ContextImpl;Ljava/lang/String;)Ljava/lang/Object;+]Landroid/app/SystemServiceRegistry$ServiceFetcher;megamorphic_types]Ljava/util/Map;Landroid/util/ArrayMap; +HSPLandroid/app/SystemServiceRegistry;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;+]Ljava/util/Map;Landroid/util/ArrayMap; HSPLandroid/app/TaskInfo;->()V HSPLandroid/app/TaskInfo;->getWindowingMode()I HSPLandroid/app/TaskInfo;->readFromParcel(Landroid/os/Parcel;)V @@ -2898,7 +2833,6 @@ HSPLandroid/app/UiModeManager$OnProjectionStateChangedListenerResourceManager;-> HSPLandroid/app/UiModeManager;->(Landroid/content/Context;)V HSPLandroid/app/UiModeManager;->getActiveProjectionTypes()I HSPLandroid/app/UiModeManager;->getCurrentModeType()I -HSPLandroid/app/UidObserver;->()V HSPLandroid/app/UriGrantsManager$1;->create()Landroid/app/IUriGrantsManager; HSPLandroid/app/UriGrantsManager$1;->create()Ljava/lang/Object; HSPLandroid/app/UriGrantsManager;->getService()Landroid/app/IUriGrantsManager; @@ -2920,7 +2854,7 @@ HSPLandroid/app/WallpaperManager;->initGlobals(Landroid/app/IWallpaperManager;La HSPLandroid/app/WallpaperManager;->setWallpaperZoomOut(Landroid/os/IBinder;F)V HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/app/WindowConfiguration;->()V +HSPLandroid/app/WindowConfiguration;->()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->(Landroid/os/Parcel;)V HSPLandroid/app/WindowConfiguration;->activityTypeToString(I)Ljava/lang/String; HSPLandroid/app/WindowConfiguration;->canReceiveKeys()Z @@ -2942,19 +2876,19 @@ HSPLandroid/app/WindowConfiguration;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/app/WindowConfiguration;->setActivityType(I)V HSPLandroid/app/WindowConfiguration;->setAlwaysOnTop(I)V HSPLandroid/app/WindowConfiguration;->setAppBounds(IIII)V -HSPLandroid/app/WindowConfiguration;->setAppBounds(Landroid/graphics/Rect;)V -HSPLandroid/app/WindowConfiguration;->setBounds(Landroid/graphics/Rect;)V +HSPLandroid/app/WindowConfiguration;->setAppBounds(Landroid/graphics/Rect;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; +HSPLandroid/app/WindowConfiguration;->setBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/app/WindowConfiguration;->setDisplayRotation(I)V HSPLandroid/app/WindowConfiguration;->setDisplayWindowingMode(I)V -HSPLandroid/app/WindowConfiguration;->setMaxBounds(Landroid/graphics/Rect;)V +HSPLandroid/app/WindowConfiguration;->setMaxBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/app/WindowConfiguration;->setRotation(I)V HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;)V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;I)V -HSPLandroid/app/WindowConfiguration;->setToDefaults()V +HSPLandroid/app/WindowConfiguration;->setToDefaults()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->setWindowingMode(I)V HSPLandroid/app/WindowConfiguration;->tasksAreFloating()Z HSPLandroid/app/WindowConfiguration;->toString()Ljava/lang/String; -HSPLandroid/app/WindowConfiguration;->unset()V +HSPLandroid/app/WindowConfiguration;->unset()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->updateFrom(Landroid/app/WindowConfiguration;)I+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/app/WindowConfiguration;->windowingModeToString(I)Ljava/lang/String; HSPLandroid/app/WindowConfiguration;->writeToParcel(Landroid/os/Parcel;I)V @@ -3156,10 +3090,10 @@ HSPLandroid/app/job/IJobCallback$Stub$Proxy;->jobFinished(IZ)V HSPLandroid/app/job/IJobCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobCallback; HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->asBinder()Landroid/os/IBinder; -HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->cancel(Ljava/lang/String;I)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/job/IJobScheduler$Stub$Proxy;Landroid/app/job/IJobScheduler$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->cancel(Ljava/lang/String;I)V HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->enqueue(Ljava/lang/String;Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getAllPendingJobsInNamespace(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice; -HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getPendingJob(Ljava/lang/String;I)Landroid/app/job/JobInfo; +HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getPendingJob(Ljava/lang/String;I)Landroid/app/job/JobInfo;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/app/job/IJobScheduler$Stub$Proxy;Landroid/app/job/IJobScheduler$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->schedule(Ljava/lang/String;Landroid/app/job/JobInfo;)I HSPLandroid/app/job/IJobScheduler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobScheduler; HSPLandroid/app/job/IJobService$Stub;->()V @@ -3227,7 +3161,7 @@ HSPLandroid/app/job/JobInfo$TriggerContentUri;->(Landroid/net/Uri;I)V HSPLandroid/app/job/JobInfo$TriggerContentUri;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/job/JobInfo;->(Landroid/app/job/JobInfo$Builder;)V+]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/app/job/JobInfo;->(Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo-IA;)V -HSPLandroid/app/job/JobInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/app/job/JobInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/net/NetworkRequest$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/app/job/JobInfo;->enforceValidity(ZZ)V HSPLandroid/app/job/JobInfo;->getExtras()Landroid/os/PersistableBundle; HSPLandroid/app/job/JobInfo;->getFlags()I @@ -3269,19 +3203,16 @@ HSPLandroid/app/job/JobSchedulerFrameworkInitializer$$ExternalSyntheticLambda3;- HSPLandroid/app/job/JobSchedulerFrameworkInitializer;->lambda$registerServiceWrappers$0(Landroid/content/Context;Landroid/os/IBinder;)Landroid/app/job/JobScheduler; HSPLandroid/app/job/JobSchedulerFrameworkInitializer;->lambda$registerServiceWrappers$1(Landroid/content/Context;Landroid/os/IBinder;)Landroid/os/DeviceIdleManager; HSPLandroid/app/job/JobService$1;->(Landroid/app/job/JobService;Landroid/app/Service;)V -HSPLandroid/app/job/JobService$1;->onNetworkChanged(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobService$1;->onStartJob(Landroid/app/job/JobParameters;)Z HSPLandroid/app/job/JobService$1;->onStopJob(Landroid/app/job/JobParameters;)Z HSPLandroid/app/job/JobService;->()V HSPLandroid/app/job/JobService;->jobFinished(Landroid/app/job/JobParameters;Z)V HSPLandroid/app/job/JobService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder; -HSPLandroid/app/job/JobService;->onNetworkChanged(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobServiceEngine$JobHandler;->(Landroid/app/job/JobServiceEngine;Landroid/os/Looper;)V HSPLandroid/app/job/JobServiceEngine$JobHandler;->ackStartMessage(Landroid/app/job/JobParameters;Z)V HSPLandroid/app/job/JobServiceEngine$JobHandler;->ackStopMessage(Landroid/app/job/JobParameters;Z)V HSPLandroid/app/job/JobServiceEngine$JobHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/app/job/JobServiceEngine$JobInterface;->(Landroid/app/job/JobServiceEngine;)V -HSPLandroid/app/job/JobServiceEngine$JobInterface;->onNetworkChanged(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobServiceEngine$JobInterface;->startJob(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobServiceEngine$JobInterface;->stopJob(Landroid/app/job/JobParameters;)V HSPLandroid/app/job/JobServiceEngine;->(Landroid/app/Service;)V @@ -3444,7 +3375,6 @@ HSPLandroid/app/slice/SliceManager;->(Landroid/content/Context;Landroid/os HSPLandroid/app/slice/SliceManager;->bindSlice(Landroid/net/Uri;Ljava/util/Set;)Landroid/app/slice/Slice; HSPLandroid/app/slice/SliceManager;->getPinnedSlices()Ljava/util/List; HSPLandroid/app/slice/SliceManager;->grantSlicePermission(Ljava/lang/String;Landroid/net/Uri;)V -HSPLandroid/app/slice/SliceProvider$$ExternalSyntheticLambda0;->(Landroid/app/slice/SliceProvider;)V HSPLandroid/app/slice/SliceProvider;->([Ljava/lang/String;)V HSPLandroid/app/slice/SliceProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V HSPLandroid/app/slice/SliceProvider;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; @@ -3464,7 +3394,6 @@ HSPLandroid/app/smartspace/SmartspaceConfig$1;->()V HSPLandroid/app/smartspace/SmartspaceConfig;->()V HSPLandroid/app/smartspace/SmartspaceSessionId$1;->()V HSPLandroid/app/smartspace/SmartspaceSessionId;->()V -HSPLandroid/app/smartspace/SmartspaceSessionId;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/app/smartspace/SmartspaceTarget$1;->()V HSPLandroid/app/smartspace/SmartspaceTarget;->()V HSPLandroid/app/smartspace/SmartspaceTargetEvent$1;->()V @@ -3523,25 +3452,16 @@ HSPLandroid/app/usage/UsageEvents;->(Landroid/os/Parcel;)V HSPLandroid/app/usage/UsageEvents;->getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z HSPLandroid/app/usage/UsageEvents;->hasNextEvent()Z HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V+]Landroid/os/Parcelable$Creator;Landroid/content/res/Configuration$1;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; +HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;+]Landroid/os/Bundle;Landroid/os/Bundle;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Landroid/util/MapCollections$KeySet;]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/app/usage/UsageStats$1;->readBundleToEventMap(Landroid/os/Bundle;Landroid/util/ArrayMap;)V HSPLandroid/app/usage/UsageStats;->()V HSPLandroid/app/usage/UsageStats;->getPackageName()Ljava/lang/String; HSPLandroid/app/usage/UsageStats;->update(Ljava/lang/String;JII)V HSPLandroid/app/usage/UsageStatsManager;->(Landroid/content/Context;Landroid/app/usage/IUsageStatsManager;)V -HSPLandroid/app/usage/UsageStatsManager;->getAppStandbyBucket()I HSPLandroid/app/usage/UsageStatsManager;->queryEvents(JJ)Landroid/app/usage/UsageEvents; HSPLandroid/app/usage/UsageStatsManager;->queryUsageStats(IJJ)Ljava/util/List; -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda0;->()V -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda1;->()V -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda1;->apply(Ljava/lang/Object;)Ljava/lang/Object; -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda2;->()V -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda3;->()V -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda3;->apply(I)Ljava/lang/Object; -HSPLandroid/appwidget/AppWidgetManager$$ExternalSyntheticLambda4;->run()V HSPLandroid/appwidget/AppWidgetManager;->(Landroid/content/Context;Lcom/android/internal/appwidget/IAppWidgetService;)V HSPLandroid/appwidget/AppWidgetManager;->getAppWidgetIds(Landroid/content/ComponentName;)[I HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForPackage(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; @@ -3556,7 +3476,7 @@ HSPLandroid/appwidget/AppWidgetProvider;->()V HSPLandroid/appwidget/AppWidgetProvider;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V HSPLandroid/appwidget/AppWidgetProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/appwidget/AppWidgetProviderInfo; HSPLandroid/appwidget/AppWidgetProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/appwidget/AppWidgetProviderInfo;->(Landroid/os/Parcel;)V +HSPLandroid/appwidget/AppWidgetProviderInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/appwidget/AppWidgetProviderInfo;->getProfile()Landroid/os/UserHandle; HSPLandroid/appwidget/AppWidgetProviderInfo;->updateDimensions(Landroid/util/DisplayMetrics;)V HSPLandroid/appwidget/AppWidgetProviderInfo;->writeToParcel(Landroid/os/Parcel;I)V @@ -3568,7 +3488,7 @@ HSPLandroid/companion/virtual/IVirtualDeviceManager$Stub;->asInterface(Landroid/ HSPLandroid/companion/virtual/VirtualDeviceManager;->(Landroid/companion/virtual/IVirtualDeviceManager;Landroid/content/Context;)V HSPLandroid/companion/virtual/VirtualDeviceManager;->getDeviceIdForDisplayId(I)I HSPLandroid/compat/Compatibility$BehaviorChangeDelegate;->isChangeEnabled(J)Z -HSPLandroid/compat/Compatibility;->isChangeEnabled(J)Z +HSPLandroid/compat/Compatibility;->isChangeEnabled(J)Z+]Landroid/compat/Compatibility$BehaviorChangeDelegate;Landroid/app/AppCompatCallbacks; HSPLandroid/compat/Compatibility;->setBehaviorChangeDelegate(Landroid/compat/Compatibility$BehaviorChangeDelegate;)V HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->cancelSync(Landroid/content/ISyncContext;)V HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->isCallerSystem()Z @@ -3614,7 +3534,6 @@ HSPLandroid/content/AttributionSource;->getPackageName()Ljava/lang/String; HSPLandroid/content/AttributionSource;->getRenouncedPermissions()Ljava/util/Set; HSPLandroid/content/AttributionSource;->getToken()Landroid/os/IBinder; HSPLandroid/content/AttributionSource;->getUid()I -HSPLandroid/content/AttributionSource;->hashCode()I+]Landroid/content/AttributionSource;Landroid/content/AttributionSource; HSPLandroid/content/AttributionSource;->myAttributionSource()Landroid/content/AttributionSource; HSPLandroid/content/AttributionSource;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/AttributionSourceState$1;->()V @@ -3625,7 +3544,7 @@ HSPLandroid/content/AttributionSourceState$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/content/AttributionSourceState;->()V HSPLandroid/content/AttributionSourceState;->()V HSPLandroid/content/AttributionSourceState;->readFromParcel(Landroid/os/Parcel;)V -HSPLandroid/content/AttributionSourceState;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/AttributionSourceState;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/AutofillOptions$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/AutofillOptions; HSPLandroid/content/AutofillOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/AutofillOptions;->(IZ)V @@ -3691,7 +3610,7 @@ HSPLandroid/content/ComponentName$1;->createFromParcel(Landroid/os/Parcel;)Landr HSPLandroid/content/ComponentName$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/ComponentName$1;->newArray(I)[Landroid/content/ComponentName; HSPLandroid/content/ComponentName$1;->newArray(I)[Ljava/lang/Object; -HSPLandroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/Class;)V +HSPLandroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/Class;)V+]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/content/ComponentName;->(Landroid/content/Context;Ljava/lang/String;)V HSPLandroid/content/ComponentName;->(Landroid/os/Parcel;)V HSPLandroid/content/ComponentName;->(Ljava/lang/String;Landroid/os/Parcel;)V @@ -3717,7 +3636,7 @@ HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parce HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/ContentCaptureOptions;->(IIIIILandroid/util/ArraySet;)V HSPLandroid/content/ContentCaptureOptions;->isWhitelisted(Landroid/content/Context;)Z -HSPLandroid/content/ContentCaptureOptions;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/ContentCaptureOptions;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/ContentProvider$Transport;->(Landroid/content/ContentProvider;)V HSPLandroid/content/ContentProvider$Transport;->call(Landroid/content/AttributionSource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; HSPLandroid/content/ContentProvider$Transport;->createCancellationSignal()Landroid/os/ICancellationSignal; @@ -3728,7 +3647,7 @@ HSPLandroid/content/ContentProvider$Transport;->enforceWritePermission(Landroid/ HSPLandroid/content/ContentProvider$Transport;->getContentProvider()Landroid/content/ContentProvider; HSPLandroid/content/ContentProvider$Transport;->getProviderName()Ljava/lang/String; HSPLandroid/content/ContentProvider$Transport;->insert(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri; -HSPLandroid/content/ContentProvider$Transport;->openTypedAssetFile(Landroid/content/AttributionSource;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor; +HSPLandroid/content/ContentProvider$Transport;->openTypedAssetFile(Landroid/content/AttributionSource;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor;+]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri; HSPLandroid/content/ContentProvider$Transport;->query(Landroid/content/AttributionSource;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor; HSPLandroid/content/ContentProvider$Transport;->update(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I HSPLandroid/content/ContentProvider;->-$$Nest$fgetmTransport(Landroid/content/ContentProvider;)Landroid/content/ContentProvider$Transport; @@ -3749,7 +3668,7 @@ HSPLandroid/content/ContentProvider;->delete(Landroid/net/Uri;Landroid/os/Bundle HSPLandroid/content/ContentProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V HSPLandroid/content/ContentProvider;->enforceReadPermissionInner(Landroid/net/Uri;Landroid/content/AttributionSource;)I HSPLandroid/content/ContentProvider;->enforceWritePermissionInner(Landroid/net/Uri;Landroid/content/AttributionSource;)I -HSPLandroid/content/ContentProvider;->getAuthorityWithoutUserId(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/ContentProvider;->getAuthorityWithoutUserId(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/content/ContentProvider;->getCallingAttributionSource()Landroid/content/AttributionSource; HSPLandroid/content/ContentProvider;->getCallingPackage()Ljava/lang/String; HSPLandroid/content/ContentProvider;->getContext()Landroid/content/Context; @@ -3757,7 +3676,7 @@ HSPLandroid/content/ContentProvider;->getIContentProvider()Landroid/content/ICon HSPLandroid/content/ContentProvider;->getPathPermissions()[Landroid/content/pm/PathPermission; HSPLandroid/content/ContentProvider;->getReadPermission()Ljava/lang/String; HSPLandroid/content/ContentProvider;->getUriWithoutUserId(Landroid/net/Uri;)Landroid/net/Uri;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; -HSPLandroid/content/ContentProvider;->getUserIdFromAuthority(Ljava/lang/String;I)I +HSPLandroid/content/ContentProvider;->getUserIdFromAuthority(Ljava/lang/String;I)I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;)I HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;I)I HSPLandroid/content/ContentProvider;->getWritePermission()Ljava/lang/String; @@ -3777,7 +3696,7 @@ HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String; HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/content/ContentProvider;->restoreCallingIdentity(Landroid/content/ContentProvider$CallingIdentity;)V HSPLandroid/content/ContentProvider;->setAuthorities(Ljava/lang/String;)V -HSPLandroid/content/ContentProvider;->setCallingAttributionSource(Landroid/content/AttributionSource;)Landroid/content/AttributionSource; +HSPLandroid/content/ContentProvider;->setCallingAttributionSource(Landroid/content/AttributionSource;)Landroid/content/AttributionSource;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/content/ContentProvider;->setPathPermissions([Landroid/content/pm/PathPermission;)V HSPLandroid/content/ContentProvider;->setReadPermission(Ljava/lang/String;)V HSPLandroid/content/ContentProvider;->setTransportLoggingEnabled(Z)V @@ -3812,10 +3731,10 @@ HSPLandroid/content/ContentProviderNative;->asInterface(Landroid/os/IBinder;)Lan HSPLandroid/content/ContentProviderNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/content/ContentProviderOperation$Builder;->assertSelectionAllowed()V HSPLandroid/content/ContentProviderOperation$Builder;->assertValuesAllowed()V -HSPLandroid/content/ContentProviderOperation$Builder;->build()Landroid/content/ContentProviderOperation; +HSPLandroid/content/ContentProviderOperation$Builder;->build()Landroid/content/ContentProviderOperation;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/content/ContentProviderOperation$Builder;->ensureSelectionArgs()V HSPLandroid/content/ContentProviderOperation$Builder;->setSelectionArg(ILjava/lang/Object;)V -HSPLandroid/content/ContentProviderOperation$Builder;->setValue(Ljava/lang/String;Ljava/lang/Object;)V +HSPLandroid/content/ContentProviderOperation$Builder;->setValue(Ljava/lang/String;Ljava/lang/Object;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/content/ContentProviderOperation$Builder;->withExpectedCount(I)Landroid/content/ContentProviderOperation$Builder; HSPLandroid/content/ContentProviderOperation$Builder;->withSelection(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/ContentProviderOperation$Builder; HSPLandroid/content/ContentProviderOperation$Builder;->withValue(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/ContentProviderOperation$Builder; @@ -3838,12 +3757,12 @@ HSPLandroid/content/ContentProviderOperation;->resolveValueBackReferences([Landr HSPLandroid/content/ContentProviderOperation;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/ContentProviderProxy;->(Landroid/os/IBinder;)V HSPLandroid/content/ContentProviderProxy;->asBinder()Landroid/os/IBinder; -HSPLandroid/content/ContentProviderProxy;->call(Landroid/content/AttributionSource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; +HSPLandroid/content/ContentProviderProxy;->call(Landroid/content/AttributionSource;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/ContentProviderProxy;->createCancellationSignal()Landroid/os/ICancellationSignal; HSPLandroid/content/ContentProviderProxy;->delete(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/os/Bundle;)I HSPLandroid/content/ContentProviderProxy;->insert(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/os/Parcelable$Creator;Landroid/net/Uri$1;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/content/ContentValues;Landroid/content/ContentValues;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/content/ContentProviderProxy;->openTypedAssetFile(Landroid/content/AttributionSource;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor; -HSPLandroid/content/ContentProviderProxy;->query(Landroid/content/AttributionSource;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/os/Parcelable$Creator;Landroid/database/BulkCursorDescriptor$1;]Landroid/database/IBulkCursor;Landroid/database/BulkCursorProxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/ICancellationSignal;Landroid/os/ICancellationSignal$Stub$Proxy;]Landroid/database/BulkCursorToCursorAdaptor;Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; +HSPLandroid/content/ContentProviderProxy;->query(Landroid/content/AttributionSource;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;+]Landroid/content/AttributionSource;Landroid/content/AttributionSource;]Landroid/os/Parcelable$Creator;Landroid/database/BulkCursorDescriptor$1;]Landroid/database/IBulkCursor;Landroid/database/BulkCursorProxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/database/BulkCursorToCursorAdaptor;Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/IContentObserver;Landroid/database/ContentObserver$Transport;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri;]Landroid/os/ICancellationSignal;Landroid/os/ICancellationSignal$Stub$Proxy; HSPLandroid/content/ContentProviderProxy;->update(Landroid/content/AttributionSource;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I HSPLandroid/content/ContentProviderResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentProviderResult; HSPLandroid/content/ContentProviderResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -3852,8 +3771,8 @@ HSPLandroid/content/ContentProviderResult$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/content/ContentProviderResult;->(Landroid/os/Parcel;)V HSPLandroid/content/ContentResolver$2;->(Landroid/content/SyncStatusObserver;)V HSPLandroid/content/ContentResolver$2;->onStatusChanged(I)V -HSPLandroid/content/ContentResolver$CursorWrapperInner;->(Landroid/content/ContentResolver;Landroid/database/Cursor;Landroid/content/IContentProvider;)V -HSPLandroid/content/ContentResolver$CursorWrapperInner;->close()V +HSPLandroid/content/ContentResolver$CursorWrapperInner;->(Landroid/content/ContentResolver;Landroid/database/Cursor;Landroid/content/IContentProvider;)V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; +HSPLandroid/content/ContentResolver$CursorWrapperInner;->close()V+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLandroid/content/ContentResolver$CursorWrapperInner;->finalize()V HSPLandroid/content/ContentResolver$ParcelFileDescriptorInner;->(Landroid/content/ContentResolver;Landroid/os/ParcelFileDescriptor;Landroid/content/IContentProvider;)V HSPLandroid/content/ContentResolver$ParcelFileDescriptorInner;->releaseResources()V @@ -3863,14 +3782,14 @@ HSPLandroid/content/ContentResolver$ResultListener;->waitForResult(J)V HSPLandroid/content/ContentResolver$StringResultListener;->getResultFromBundle(Landroid/os/Bundle;)Ljava/lang/Object; HSPLandroid/content/ContentResolver$StringResultListener;->getResultFromBundle(Landroid/os/Bundle;)Ljava/lang/String; HSPLandroid/content/ContentResolver;->(Landroid/content/Context;)V -HSPLandroid/content/ContentResolver;->(Landroid/content/Context;Landroid/content/ContentInterface;)V +HSPLandroid/content/ContentResolver;->(Landroid/content/Context;Landroid/content/ContentInterface;)V+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContentResolver;->acquireContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient; HSPLandroid/content/ContentResolver;->acquireContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient; HSPLandroid/content/ContentResolver;->acquireExistingProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; HSPLandroid/content/ContentResolver;->acquireProvider(Landroid/net/Uri;)Landroid/content/IContentProvider;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HSPLandroid/content/ContentResolver;->acquireProvider(Ljava/lang/String;)Landroid/content/IContentProvider; HSPLandroid/content/ContentResolver;->acquireUnstableContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient; -HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; +HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Landroid/net/Uri;)Landroid/content/IContentProvider;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HSPLandroid/content/ContentResolver;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V HSPLandroid/content/ContentResolver;->addStatusChangeListener(ILandroid/content/SyncStatusObserver;)Ljava/lang/Object; HSPLandroid/content/ContentResolver;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult; @@ -3892,7 +3811,7 @@ HSPLandroid/content/ContentResolver;->getPeriodicSyncs(Landroid/accounts/Account HSPLandroid/content/ContentResolver;->getResourceId(Landroid/net/Uri;)Landroid/content/ContentResolver$OpenResourceIdResult; HSPLandroid/content/ContentResolver;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z HSPLandroid/content/ContentResolver;->getType(Landroid/net/Uri;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/ContentResolver$StringResultListener;Landroid/content/ContentResolver$StringResultListener;]Landroid/app/IActivityManager;Landroid/app/IActivityManager$Stub$Proxy;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/net/Uri;Landroid/net/Uri$StringUri; -HSPLandroid/content/ContentResolver;->getUserId()I +HSPLandroid/content/ContentResolver;->getUserId()I+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; HSPLandroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri;+]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/content/ContentResolver;->invalidPeriodicExtras(Landroid/os/Bundle;)Z @@ -3911,7 +3830,7 @@ HSPLandroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/ HSPLandroid/content/ContentResolver;->openInputStream(Landroid/net/Uri;)Ljava/io/InputStream; HSPLandroid/content/ContentResolver;->openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor; HSPLandroid/content/ContentResolver;->openTypedAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor; -HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;+]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/database/Cursor;Landroid/database/BulkCursorToCursorAdaptor;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V @@ -3923,13 +3842,13 @@ HSPLandroid/content/ContentResolver;->resolveUserId(Landroid/net/Uri;)I HSPLandroid/content/ContentResolver;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V HSPLandroid/content/ContentResolver;->setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V HSPLandroid/content/ContentResolver;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V -HSPLandroid/content/ContentResolver;->unregisterContentObserver(Landroid/database/ContentObserver;)V +HSPLandroid/content/ContentResolver;->unregisterContentObserver(Landroid/database/ContentObserver;)V+]Landroid/database/ContentObserver;Landroid/database/AbstractCursor$SelfContentObserver;]Landroid/content/IContentService;Landroid/content/IContentService$Stub$Proxy; HSPLandroid/content/ContentResolver;->update(Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I HSPLandroid/content/ContentResolver;->update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/content/ContentResolver;->validateSyncExtrasBundle(Landroid/os/Bundle;)V -HSPLandroid/content/ContentUris;->appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder; +HSPLandroid/content/ContentUris;->appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder; HSPLandroid/content/ContentUris;->parseId(Landroid/net/Uri;)J -HSPLandroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri; +HSPLandroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; HSPLandroid/content/ContentValues$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentValues; HSPLandroid/content/ContentValues$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/ContentValues;->()V @@ -3943,7 +3862,7 @@ HSPLandroid/content/ContentValues;->getAsBoolean(Ljava/lang/String;)Ljava/lang/B HSPLandroid/content/ContentValues;->getAsByteArray(Ljava/lang/String;)[B HSPLandroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer; HSPLandroid/content/ContentValues;->getAsLong(Ljava/lang/String;)Ljava/lang/Long;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Number;Ljava/lang/Long; -HSPLandroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Long; HSPLandroid/content/ContentValues;->getValues()Landroid/util/ArrayMap; HSPLandroid/content/ContentValues;->isEmpty()Z HSPLandroid/content/ContentValues;->isSupportedValue(Ljava/lang/Object;)Z @@ -3966,19 +3885,19 @@ HSPLandroid/content/ContentValues;->writeToParcel(Landroid/os/Parcel;I)V+]Landro HSPLandroid/content/Context;->()V HSPLandroid/content/Context;->getColor(I)I HSPLandroid/content/Context;->getColorStateList(I)Landroid/content/res/ColorStateList; -HSPLandroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/Context;->getNextAutofillId()I HSPLandroid/content/Context;->getSharedPrefsFile(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/Context;->getString(I)Ljava/lang/String; HSPLandroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String; -HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object; +HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/content/Context;missing_types HSPLandroid/content/Context;->getText(I)Ljava/lang/CharSequence; HSPLandroid/content/Context;->getToken(Landroid/content/Context;)Landroid/os/IBinder; -HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z +HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z+]Landroid/content/Context;missing_types HSPLandroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray; -HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; -HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; -HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray; +HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/Context;missing_types +HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/Context;missing_types +HSPLandroid/content/Context;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/Context;missing_types HSPLandroid/content/Context;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V HSPLandroid/content/Context;->unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V HSPLandroid/content/ContextParams$Builder;->()V @@ -3989,8 +3908,6 @@ HSPLandroid/content/ContextParams;->-$$Nest$fgetmAttributionTag(Landroid/content HSPLandroid/content/ContextParams;->-$$Nest$fgetmNext(Landroid/content/ContextParams;)Landroid/content/AttributionSource; HSPLandroid/content/ContextParams;->-$$Nest$fgetmRenouncedPermissions(Landroid/content/ContextParams;)Ljava/util/Set; HSPLandroid/content/ContextParams;->()V -HSPLandroid/content/ContextParams;->(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;)V -HSPLandroid/content/ContextParams;->(Ljava/lang/String;Landroid/content/AttributionSource;Ljava/util/Set;Landroid/content/ContextParams-IA;)V HSPLandroid/content/ContextParams;->getAttributionTag()Ljava/lang/String; HSPLandroid/content/ContextParams;->getNextAttributionSource()Landroid/content/AttributionSource; HSPLandroid/content/ContextParams;->getRenouncedPermissions()Ljava/util/Set; @@ -4013,7 +3930,7 @@ HSPLandroid/content/ContextWrapper;->createAttributionContext(Ljava/lang/String; HSPLandroid/content/ContextWrapper;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context; HSPLandroid/content/ContextWrapper;->createContextAsUser(Landroid/os/UserHandle;I)Landroid/content/Context; HSPLandroid/content/ContextWrapper;->createCredentialProtectedStorageContext()Landroid/content/Context; -HSPLandroid/content/ContextWrapper;->createDeviceProtectedStorageContext()Landroid/content/Context; +HSPLandroid/content/ContextWrapper;->createDeviceProtectedStorageContext()Landroid/content/Context;+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContextWrapper;->createDisplayContext(Landroid/view/Display;)Landroid/content/Context; HSPLandroid/content/ContextWrapper;->createPackageContext(Ljava/lang/String;I)Landroid/content/Context; HSPLandroid/content/ContextWrapper;->createPackageContextAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/Context; @@ -4032,49 +3949,49 @@ HSPLandroid/content/ContextWrapper;->getAssets()Landroid/content/res/AssetManage HSPLandroid/content/ContextWrapper;->getAttributionSource()Landroid/content/AttributionSource; HSPLandroid/content/ContextWrapper;->getAttributionTag()Ljava/lang/String; HSPLandroid/content/ContextWrapper;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient; -HSPLandroid/content/ContextWrapper;->getAutofillOptions()Landroid/content/AutofillOptions; +HSPLandroid/content/ContextWrapper;->getAutofillOptions()Landroid/content/AutofillOptions;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getBaseContext()Landroid/content/Context; HSPLandroid/content/ContextWrapper;->getBasePackageName()Ljava/lang/String; HSPLandroid/content/ContextWrapper;->getCacheDir()Ljava/io/File; HSPLandroid/content/ContextWrapper;->getClassLoader()Ljava/lang/ClassLoader; -HSPLandroid/content/ContextWrapper;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions; -HSPLandroid/content/ContextWrapper;->getContentResolver()Landroid/content/ContentResolver; +HSPLandroid/content/ContextWrapper;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions;+]Landroid/content/Context;missing_types +HSPLandroid/content/ContextWrapper;->getContentResolver()Landroid/content/ContentResolver;+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContextWrapper;->getDataDir()Ljava/io/File; HSPLandroid/content/ContextWrapper;->getDatabasePath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/ContextWrapper;->getDeviceId()I HSPLandroid/content/ContextWrapper;->getDir(Ljava/lang/String;I)Ljava/io/File; HSPLandroid/content/ContextWrapper;->getDisplay()Landroid/view/Display; -HSPLandroid/content/ContextWrapper;->getDisplayId()I +HSPLandroid/content/ContextWrapper;->getDisplayId()I+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getDisplayNoVerify()Landroid/view/Display; HSPLandroid/content/ContextWrapper;->getExternalCacheDir()Ljava/io/File; HSPLandroid/content/ContextWrapper;->getExternalCacheDirs()[Ljava/io/File; -HSPLandroid/content/ContextWrapper;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;+]Landroid/content/Context;Landroid/app/ContextImpl; HSPLandroid/content/ContextWrapper;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/content/ContextWrapper;->getExternalMediaDirs()[Ljava/io/File; HSPLandroid/content/ContextWrapper;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File; -HSPLandroid/content/ContextWrapper;->getFilesDir()Ljava/io/File; +HSPLandroid/content/ContextWrapper;->getFilesDir()Ljava/io/File;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getMainExecutor()Ljava/util/concurrent/Executor; HSPLandroid/content/ContextWrapper;->getMainLooper()Landroid/os/Looper; HSPLandroid/content/ContextWrapper;->getMainThreadHandler()Landroid/os/Handler; HSPLandroid/content/ContextWrapper;->getNextAutofillId()I HSPLandroid/content/ContextWrapper;->getNoBackupFilesDir()Ljava/io/File; -HSPLandroid/content/ContextWrapper;->getOpPackageName()Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getOpPackageName()Ljava/lang/String;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getPackageCodePath()Ljava/lang/String; -HSPLandroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager; -HSPLandroid/content/ContextWrapper;->getPackageName()Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager;+]Landroid/content/Context;missing_types +HSPLandroid/content/ContextWrapper;->getPackageName()Ljava/lang/String;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getPackageResourcePath()Ljava/lang/String; -HSPLandroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources; +HSPLandroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; HSPLandroid/content/ContextWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/content/ContextWrapper;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String; +HSPLandroid/content/ContextWrapper;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->getTheme()Landroid/content/res/Resources$Theme; HSPLandroid/content/ContextWrapper;->getUser()Landroid/os/UserHandle; HSPLandroid/content/ContextWrapper;->getUserId()I HSPLandroid/content/ContextWrapper;->getWindowContextToken()Landroid/os/IBinder; HSPLandroid/content/ContextWrapper;->grantUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V HSPLandroid/content/ContextWrapper;->isDeviceProtectedStorage()Z -HSPLandroid/content/ContextWrapper;->isRestricted()Z +HSPLandroid/content/ContextWrapper;->isRestricted()Z+]Landroid/content/Context;missing_types HSPLandroid/content/ContextWrapper;->isUiContext()Z HSPLandroid/content/ContextWrapper;->openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream; HSPLandroid/content/ContextWrapper;->openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream; @@ -4118,7 +4035,7 @@ HSPLandroid/content/IContentService$Stub$Proxy;->getMasterSyncAutomatically()Z HSPLandroid/content/IContentService$Stub$Proxy;->getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Ljava/util/List; HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType; HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z -HSPLandroid/content/IContentService$Stub$Proxy;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V +HSPLandroid/content/IContentService$Stub$Proxy;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V+]Landroid/content/IContentService$Stub$Proxy;Landroid/content/IContentService$Stub$Proxy;]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/IContentService$Stub$Proxy;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V HSPLandroid/content/IContentService$Stub$Proxy;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V HSPLandroid/content/IContentService$Stub$Proxy;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V @@ -4206,8 +4123,8 @@ HSPLandroid/content/Intent;->parseUri(Ljava/lang/String;I)Landroid/content/Inten HSPLandroid/content/Intent;->parseUriInternal(Ljava/lang/String;I)Landroid/content/Intent;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/content/Intent;->prepareToEnterProcess(ILandroid/content/AttributionSource;)V HSPLandroid/content/Intent;->prepareToEnterProcess(ZLandroid/content/AttributionSource;)V -HSPLandroid/content/Intent;->prepareToLeaveProcess(Landroid/content/Context;)V -HSPLandroid/content/Intent;->prepareToLeaveProcess(Z)V +HSPLandroid/content/Intent;->prepareToLeaveProcess(Landroid/content/Context;)V+]Landroid/content/Context;missing_types]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent; +HSPLandroid/content/Intent;->prepareToLeaveProcess(Z)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;I)Landroid/content/Intent; HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;J)Landroid/content/Intent; HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent; @@ -4233,7 +4150,7 @@ HSPLandroid/content/Intent;->resolveActivity(Landroid/content/pm/PackageManager; HSPLandroid/content/Intent;->resolveActivityInfo(Landroid/content/pm/PackageManager;I)Landroid/content/pm/ActivityInfo; HSPLandroid/content/Intent;->resolveSystemService(Landroid/content/pm/PackageManager;I)Landroid/content/ComponentName; HSPLandroid/content/Intent;->resolveType(Landroid/content/ContentResolver;)Ljava/lang/String; -HSPLandroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String; +HSPLandroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/ComponentName;Landroid/content/ComponentName;]Landroid/content/Intent;Landroid/content/Intent; HSPLandroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent; HSPLandroid/content/Intent;->setAllowFds(Z)V HSPLandroid/content/Intent;->setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent; @@ -4257,7 +4174,7 @@ HSPLandroid/content/Intent;->toString(Ljava/lang/StringBuilder;)V+]Ljava/lang/St HSPLandroid/content/Intent;->toUri(I)Ljava/lang/String; HSPLandroid/content/Intent;->toUriFragment(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V HSPLandroid/content/Intent;->toUriInner(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V -HSPLandroid/content/Intent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/Intent;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/IntentFilter$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/content/IntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/IntentFilter; HSPLandroid/content/IntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -4321,7 +4238,7 @@ HSPLandroid/content/IntentFilter;->setOrder(I)V HSPLandroid/content/IntentFilter;->setPriority(I)V HSPLandroid/content/IntentFilter;->setVisibilityToInstantApp(I)V HSPLandroid/content/IntentFilter;->typesIterator()Ljava/util/Iterator; -HSPLandroid/content/IntentFilter;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/PatternMatcher;Landroid/os/PatternMatcher;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/IntentFilter$AuthorityEntry;Landroid/content/IntentFilter$AuthorityEntry;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/content/IntentFilter;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/content/IntentFilter;Landroid/content/IntentFilter;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/PatternMatcher;Landroid/os/PatternMatcher;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/content/IntentFilter$AuthorityEntry;Landroid/content/IntentFilter$AuthorityEntry; HSPLandroid/content/IntentSender;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/LocusId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/LocusId; HSPLandroid/content/LocusId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -4397,7 +4314,7 @@ HSPLandroid/content/UriMatcher;->(I)V HSPLandroid/content/UriMatcher;->(ILjava/lang/String;)V HSPLandroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V HSPLandroid/content/UriMatcher;->createChild(Ljava/lang/String;)Landroid/content/UriMatcher; -HSPLandroid/content/UriMatcher;->match(Landroid/net/Uri;)I +HSPLandroid/content/UriMatcher;->match(Landroid/net/Uri;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Landroid/net/Uri$PathSegments;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri; HSPLandroid/content/om/OverlayInfo;->ensureValidState()V HSPLandroid/content/om/OverlayInfo;->isEnabled()Z HSPLandroid/content/pm/ActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ActivityInfo; @@ -4405,7 +4322,7 @@ HSPLandroid/content/pm/ActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Lja HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Landroid/content/pm/ActivityInfo; HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/content/pm/ActivityInfo$WindowLayout;->(Landroid/os/Parcel;)V -HSPLandroid/content/pm/ActivityInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ActivityInfo;->(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Landroid/util/ArraySet; HSPLandroid/content/pm/ActivityInfo;->activityInfoConfigNativeToJava(I)I HSPLandroid/content/pm/ActivityInfo;->getRealConfigChanged()I HSPLandroid/content/pm/ActivityInfo;->getThemeResource()I @@ -4424,8 +4341,8 @@ HSPLandroid/content/pm/ApplicationInfo$1;->$r8$lambda$PfZYudEWwKf_A2QDLQ4dHD9-bO HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ApplicationInfo; HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/ApplicationInfo;->()V -HSPLandroid/content/pm/ApplicationInfo;->(Landroid/content/pm/ApplicationInfo;)V -HSPLandroid/content/pm/ApplicationInfo;->(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/content/pm/ApplicationInfo;->(Landroid/content/pm/ApplicationInfo;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo; +HSPLandroid/content/pm/ApplicationInfo;->(Landroid/os/Parcel;)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Set;Ljava/util/Collections$EmptySet; HSPLandroid/content/pm/ApplicationInfo;->(Landroid/os/Parcel;Landroid/content/pm/ApplicationInfo-IA;)V HSPLandroid/content/pm/ApplicationInfo;->getAllApkPaths()[Ljava/lang/String; HSPLandroid/content/pm/ApplicationInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo; @@ -4436,7 +4353,7 @@ HSPLandroid/content/pm/ApplicationInfo;->getCustomApplicationClassNameForProcess HSPLandroid/content/pm/ApplicationInfo;->getResourcePath()Ljava/lang/String; HSPLandroid/content/pm/ApplicationInfo;->hasRequestedLegacyExternalStorage()Z HSPLandroid/content/pm/ApplicationInfo;->hasRtlSupport()Z -HSPLandroid/content/pm/ApplicationInfo;->initForUser(I)V +HSPLandroid/content/pm/ApplicationInfo;->initForUser(I)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;Ljava/io/File; HSPLandroid/content/pm/ApplicationInfo;->isDirectBootAware()Z HSPLandroid/content/pm/ApplicationInfo;->isEncryptionAware()Z HSPLandroid/content/pm/ApplicationInfo;->isExternal()Z @@ -4462,7 +4379,7 @@ HSPLandroid/content/pm/ApplicationInfo;->setSplitCodePaths([Ljava/lang/String;)V HSPLandroid/content/pm/ApplicationInfo;->setSplitResourcePaths([Ljava/lang/String;)V HSPLandroid/content/pm/ApplicationInfo;->setVersionCode(J)V HSPLandroid/content/pm/ApplicationInfo;->toString()Ljava/lang/String; -HSPLandroid/content/pm/ApplicationInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/ApplicationInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;Lcom/android/internal/util/Parcelling$BuiltIn$ForStringSet;]Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;Lcom/android/internal/util/Parcelling$BuiltIn$ForBoolean;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/UUID;Ljava/util/UUID; HSPLandroid/content/pm/Attribution$1;->()V HSPLandroid/content/pm/Attribution;->()V HSPLandroid/content/pm/BaseParceledListSlice$1;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -4472,7 +4389,7 @@ HSPLandroid/content/pm/BaseParceledListSlice;->getList()Ljava/util/List; HSPLandroid/content/pm/BaseParceledListSlice;->readCreator(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object; HSPLandroid/content/pm/BaseParceledListSlice;->readVerifyAndAddElement(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Class; HSPLandroid/content/pm/BaseParceledListSlice;->verifySameType(Ljava/lang/Class;Ljava/lang/Class;)V -HSPLandroid/content/pm/BaseParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/BaseParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/content/pm/BaseParceledListSlice;Landroid/content/pm/ParceledListSlice;]Ljava/lang/Object;Landroid/app/NotificationChannel;,Landroid/view/contentcapture/ContentCaptureEvent;]Ljava/util/List;Ljava/util/Arrays$ArrayList;,Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/Checksum$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/Checksum; HSPLandroid/content/pm/Checksum$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/Checksum;->(Landroid/os/Parcel;)V @@ -4523,7 +4440,7 @@ HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getHomeActivities(Ljava/util HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledApplications(JI)Landroid/content/pm/ParceledListSlice; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledPackages(JI)Landroid/content/pm/ParceledListSlice; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;JI)Landroid/content/pm/PackageInfo; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInstaller()Landroid/content/pm/IPackageInstaller; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageUid(Ljava/lang/String;JI)I @@ -4535,7 +4452,6 @@ HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getServiceInfo(Landroid/cont HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemSharedLibraryNames()[Ljava/lang/String; HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->hasSystemFeature(Ljava/lang/String;I)Z -HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isDeviceUpgrading()Z HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isInstantApp(Ljava/lang/String;I)Z HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isPackageSuspendedForUser(Ljava/lang/String;I)Z HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isProtectedBroadcast(Ljava/lang/String;)Z+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/content/pm/IPackageManager$Stub$Proxy;Landroid/content/pm/IPackageManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -4618,14 +4534,14 @@ HSPLandroid/content/pm/PackageInstaller;->getSessionInfo(I)Landroid/content/pm/P HSPLandroid/content/pm/PackageInstaller;->registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;Landroid/os/Handler;)V HSPLandroid/content/pm/PackageItemInfo;->()V HSPLandroid/content/pm/PackageItemInfo;->(Landroid/content/pm/PackageItemInfo;)V -HSPLandroid/content/pm/PackageItemInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/PackageItemInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/text/TextUtils$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/PackageItemInfo;->forceSafeLabels()V HSPLandroid/content/pm/PackageItemInfo;->loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; HSPLandroid/content/pm/PackageItemInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; HSPLandroid/content/pm/PackageItemInfo;->loadSafeLabel(Landroid/content/pm/PackageManager;FI)Ljava/lang/CharSequence; HSPLandroid/content/pm/PackageItemInfo;->loadUnsafeLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence; HSPLandroid/content/pm/PackageItemInfo;->loadXmlMetaData(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/res/XmlResourceParser; -HSPLandroid/content/pm/PackageItemInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/PackageItemInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/PackageManager$1;->recompute(Landroid/content/pm/PackageManager$ApplicationInfoQuery;)Landroid/content/pm/ApplicationInfo; HSPLandroid/content/pm/PackageManager$1;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/content/pm/PackageManager$2;->recompute(Landroid/content/pm/PackageManager$PackageInfoQuery;)Landroid/content/pm/PackageInfo; @@ -4776,7 +4692,7 @@ HSPLandroid/content/pm/RegisteredServicesCache;->containsType(Ljava/util/ArrayLi HSPLandroid/content/pm/ResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ResolveInfo; HSPLandroid/content/pm/ResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/ResolveInfo;->()V -HSPLandroid/content/pm/ResolveInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ResolveInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/content/pm/ActivityInfo$1;,Landroid/text/TextUtils$1;,Landroid/content/pm/ServiceInfo$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/ResolveInfo;->(Landroid/os/Parcel;Landroid/content/pm/ResolveInfo-IA;)V HSPLandroid/content/pm/ResolveInfo;->getComponentInfo()Landroid/content/pm/ComponentInfo; HSPLandroid/content/pm/ResolveInfo;->loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable; @@ -4789,8 +4705,8 @@ HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/content/pm/ServiceInfo;->(Landroid/os/Parcel;)V HSPLandroid/content/pm/ServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SharedLibraryInfo; -HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/content/pm/SharedLibraryInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/content/pm/SharedLibraryInfo$1;Landroid/content/pm/SharedLibraryInfo$1; +HSPLandroid/content/pm/SharedLibraryInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/SharedLibraryInfo;->(Landroid/os/Parcel;Landroid/content/pm/SharedLibraryInfo-IA;)V HSPLandroid/content/pm/SharedLibraryInfo;->(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;JILandroid/content/pm/VersionedPackage;Ljava/util/List;Ljava/util/List;Z)V HSPLandroid/content/pm/SharedLibraryInfo;->addDependency(Landroid/content/pm/SharedLibraryInfo;)V @@ -4800,7 +4716,7 @@ HSPLandroid/content/pm/SharedLibraryInfo;->getName()Ljava/lang/String; HSPLandroid/content/pm/SharedLibraryInfo;->getPath()Ljava/lang/String; HSPLandroid/content/pm/SharedLibraryInfo;->isNative()Z HSPLandroid/content/pm/SharedLibraryInfo;->isSdk()Z -HSPLandroid/content/pm/SharedLibraryInfo;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/SharedLibraryInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ShortcutInfo; HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/ShortcutInfo$Builder;->(Landroid/content/Context;Ljava/lang/String;)V @@ -4814,7 +4730,7 @@ HSPLandroid/content/pm/ShortcutInfo$Builder;->setLongLived(Z)Landroid/content/pm HSPLandroid/content/pm/ShortcutInfo$Builder;->setRank(I)Landroid/content/pm/ShortcutInfo$Builder; HSPLandroid/content/pm/ShortcutInfo$Builder;->setShortLabel(Ljava/lang/CharSequence;)Landroid/content/pm/ShortcutInfo$Builder; HSPLandroid/content/pm/ShortcutInfo;->(Landroid/content/pm/ShortcutInfo$Builder;)V -HSPLandroid/content/pm/ShortcutInfo;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/ShortcutInfo;->(Landroid/os/Parcel;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Object;Landroid/content/pm/ShortcutInfo;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/ShortcutInfo;->addFlags(I)V HSPLandroid/content/pm/ShortcutInfo;->cloneCapabilityBindings(Ljava/util/Map;)Ljava/util/Map; HSPLandroid/content/pm/ShortcutInfo;->cloneCategories(Ljava/util/Set;)Landroid/util/ArraySet; @@ -4879,12 +4795,11 @@ HSPLandroid/content/pm/Signature;->toCharsString()Ljava/lang/String; HSPLandroid/content/pm/SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SigningDetails; HSPLandroid/content/pm/SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/SigningDetails;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/content/pm/SigningDetails;->getPastSigningCertificates()[Landroid/content/pm/Signature; HSPLandroid/content/pm/SigningDetails;->getSignatures()[Landroid/content/pm/Signature; HSPLandroid/content/pm/SigningInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SigningInfo; HSPLandroid/content/pm/SigningInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/content/pm/SigningInfo;->(Landroid/os/Parcel;)V -HSPLandroid/content/pm/SigningInfo;->getApkContentsSigners()[Landroid/content/pm/Signature; +HSPLandroid/content/pm/SigningInfo;->getApkContentsSigners()[Landroid/content/pm/Signature;+]Landroid/content/pm/SigningDetails;Landroid/content/pm/SigningDetails; HSPLandroid/content/pm/SigningInfo;->getSigningCertificateHistory()[Landroid/content/pm/Signature; HSPLandroid/content/pm/SigningInfo;->hasMultipleSigners()Z HSPLandroid/content/pm/SigningInfo;->hasPastSigningCertificates()Z @@ -4910,13 +4825,12 @@ HSPLandroid/content/pm/UserPackage;->(ILjava/lang/String;)V HSPLandroid/content/pm/UserPackage;->equals(Ljava/lang/Object;)Z HSPLandroid/content/pm/UserPackage;->hashCode()I HSPLandroid/content/pm/UserPackage;->of(ILjava/lang/String;)Landroid/content/pm/UserPackage; -HSPLandroid/content/pm/UserProperties;->isCredentialShareableWithParent()Z HSPLandroid/content/pm/UserProperties;->isPresent(J)Z HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/VersionedPackage; -HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/content/pm/VersionedPackage;->(Landroid/os/Parcel;)V +HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/content/pm/VersionedPackage$1;Landroid/content/pm/VersionedPackage$1; +HSPLandroid/content/pm/VersionedPackage;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/VersionedPackage;->(Landroid/os/Parcel;Landroid/content/pm/VersionedPackage-IA;)V -HSPLandroid/content/pm/VersionedPackage;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/content/pm/VersionedPackage;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/content/pm/dex/ArtManager;->getCurrentProfilePath(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; HSPLandroid/content/pm/dex/ArtManager;->getProfileName(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/content/pm/dex/ArtManager;->getReferenceProfilePath(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; @@ -4948,7 +4862,7 @@ HSPLandroid/content/res/ApkAssets;->dump(Ljava/io/PrintWriter;Ljava/lang/String; HSPLandroid/content/res/ApkAssets;->finalize()V HSPLandroid/content/res/ApkAssets;->getAssetPath()Ljava/lang/String; HSPLandroid/content/res/ApkAssets;->getDebugName()Ljava/lang/String; -HSPLandroid/content/res/ApkAssets;->getStringFromPool(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/ApkAssets;->getStringFromPool(I)Ljava/lang/CharSequence;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock; HSPLandroid/content/res/ApkAssets;->isUpToDate()Z HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;)Landroid/content/res/ApkAssets; HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;I)Landroid/content/res/ApkAssets; @@ -4993,7 +4907,7 @@ HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetGetLength(J)J HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetGetRemainingLength(J)J HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeAssetRead(J[BII)I HSPLandroid/content/res/AssetManager;->-$$Nest$smnativeSetApkAssets(J[Landroid/content/res/ApkAssets;Z)V -HSPLandroid/content/res/AssetManager;->()V +HSPLandroid/content/res/AssetManager;->()V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->(Z)V HSPLandroid/content/res/AssetManager;->(ZLandroid/content/res/AssetManager-IA;)V HSPLandroid/content/res/AssetManager;->addAssetPathInternal(Ljava/lang/String;ZZ)I @@ -5016,7 +4930,7 @@ HSPLandroid/content/res/AssetManager;->getLoaders()Ljava/util/List; HSPLandroid/content/res/AssetManager;->getLocales()[Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getNonSystemLocales()[Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getParentThemeIdentifier(I)I -HSPLandroid/content/res/AssetManager;->getPooledStringForCookie(II)Ljava/lang/CharSequence; +HSPLandroid/content/res/AssetManager;->getPooledStringForCookie(II)Ljava/lang/CharSequence;+]Landroid/content/res/ApkAssets;Landroid/content/res/ApkAssets;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->getResourceArray(I[I)I HSPLandroid/content/res/AssetManager;->getResourceArraySize(I)I HSPLandroid/content/res/AssetManager;->getResourceBagText(II)Ljava/lang/CharSequence; @@ -5026,13 +4940,13 @@ HSPLandroid/content/res/AssetManager;->getResourceIntArray(I)[I HSPLandroid/content/res/AssetManager;->getResourceName(I)Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getResourcePackageName(I)Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getResourceStringArray(I)[Ljava/lang/String; -HSPLandroid/content/res/AssetManager;->getResourceText(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/AssetManager;->getResourceText(I)Ljava/lang/CharSequence;+]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->getResourceTextArray(I)[Ljava/lang/CharSequence; HSPLandroid/content/res/AssetManager;->getResourceTypeName(I)Ljava/lang/String; HSPLandroid/content/res/AssetManager;->getResourceValue(IILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->getSizeConfigurations()[Landroid/content/res/Configuration; HSPLandroid/content/res/AssetManager;->getSystem()Landroid/content/res/AssetManager; -HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/AssetManager;->incRefsLocked(J)V HSPLandroid/content/res/AssetManager;->isUpToDate()Z+]Landroid/content/res/ApkAssets;Landroid/content/res/ApkAssets; HSPLandroid/content/res/AssetManager;->list(Ljava/lang/String;)[Ljava/lang/String; @@ -5048,7 +4962,7 @@ HSPLandroid/content/res/AssetManager;->rebaseTheme(JLandroid/content/res/AssetMa HSPLandroid/content/res/AssetManager;->releaseTheme(J)V HSPLandroid/content/res/AssetManager;->resolveAttrs(JII[I[I[I[I)Z HSPLandroid/content/res/AssetManager;->retrieveAttributes(Landroid/content/res/XmlBlock$Parser;[I[I[I)Z -HSPLandroid/content/res/AssetManager;->setApkAssets([Landroid/content/res/ApkAssets;Z)V +HSPLandroid/content/res/AssetManager;->setApkAssets([Landroid/content/res/ApkAssets;Z)V+]Landroid/util/ArraySet;Landroid/util/ArraySet; HSPLandroid/content/res/AssetManager;->setConfiguration(IILjava/lang/String;IIIIIIIIIIIIIIII)V HSPLandroid/content/res/AssetManager;->setThemeTo(JLandroid/content/res/AssetManager;J)V HSPLandroid/content/res/AssetManager;->xmlBlockGone(I)V @@ -5058,7 +4972,7 @@ HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->(Landroid/c HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->getChangingConfigurations()I HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Landroid/content/res/ColorStateList; HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Ljava/lang/Object; -HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList; HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; HSPLandroid/content/res/ColorStateList;->()V HSPLandroid/content/res/ColorStateList;->(Landroid/content/res/ColorStateList;)V @@ -5070,13 +4984,13 @@ HSPLandroid/content/res/ColorStateList;->getChangingConfigurations()I HSPLandroid/content/res/ColorStateList;->getColorForState([II)I HSPLandroid/content/res/ColorStateList;->getConstantState()Landroid/content/res/ConstantState; HSPLandroid/content/res/ColorStateList;->getDefaultColor()I -HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/content/res/ColorStateList;->isStateful()Z HSPLandroid/content/res/ColorStateList;->modulateColor(IFF)I HSPLandroid/content/res/ColorStateList;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; HSPLandroid/content/res/ColorStateList;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; HSPLandroid/content/res/ColorStateList;->onColorsChanged()V -HSPLandroid/content/res/ColorStateList;->valueOf(I)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ColorStateList;->valueOf(I)Landroid/content/res/ColorStateList;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference; HSPLandroid/content/res/ColorStateList;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/CompatibilityInfo; HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -5102,17 +5016,17 @@ HSPLandroid/content/res/ComplexColor;->getChangingConfigurations()I HSPLandroid/content/res/ComplexColor;->setBaseChangingConfigurations(I)V HSPLandroid/content/res/Configuration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/Configuration; HSPLandroid/content/res/Configuration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/content/res/Configuration;->()V +HSPLandroid/content/res/Configuration;->()V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration; HSPLandroid/content/res/Configuration;->(Landroid/content/res/Configuration;)V HSPLandroid/content/res/Configuration;->(Landroid/os/Parcel;)V HSPLandroid/content/res/Configuration;->(Landroid/os/Parcel;Landroid/content/res/Configuration-IA;)V -HSPLandroid/content/res/Configuration;->compareTo(Landroid/content/res/Configuration;)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Locale;Ljava/util/Locale; +HSPLandroid/content/res/Configuration;->compareTo(Landroid/content/res/Configuration;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;)I -HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;ZZ)I +HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;ZZ)I+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/content/res/Configuration;->diffPublicOnly(Landroid/content/res/Configuration;)I HSPLandroid/content/res/Configuration;->equals(Landroid/content/res/Configuration;)Z HSPLandroid/content/res/Configuration;->equals(Ljava/lang/Object;)Z -HSPLandroid/content/res/Configuration;->fixUpLocaleList()V +HSPLandroid/content/res/Configuration;->fixUpLocaleList()V+]Ljava/util/Locale;Ljava/util/Locale;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/content/res/Configuration;->generateDelta(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration; HSPLandroid/content/res/Configuration;->getGrammaticalGender()I HSPLandroid/content/res/Configuration;->getLayoutDirection()I @@ -5135,13 +5049,13 @@ HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;II)V HSPLandroid/content/res/Configuration;->setToDefaults()V+]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; HSPLandroid/content/res/Configuration;->toString()Ljava/lang/String; -HSPLandroid/content/res/Configuration;->unset()V -HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I+]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; +HSPLandroid/content/res/Configuration;->unset()V+]Landroid/content/res/Configuration;Landroid/content/res/Configuration; +HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/Configuration;Landroid/content/res/Configuration; HSPLandroid/content/res/Configuration;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/content/res/ConfigurationBoundResourceCache;->()V HSPLandroid/content/res/ConfigurationBoundResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object; HSPLandroid/content/res/ConfigurationBoundResourceCache;->getGeneration()I -HSPLandroid/content/res/ConfigurationBoundResourceCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/ConfigurationBoundResourceCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object;+]Landroid/content/res/ConstantState;Landroid/animation/StateListAnimator$StateListAnimatorConstantState;,Landroid/content/res/ColorStateList$ColorStateListFactory;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache; HSPLandroid/content/res/ConfigurationBoundResourceCache;->onConfigurationChange(I)V HSPLandroid/content/res/ConfigurationBoundResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;I)V HSPLandroid/content/res/ConfigurationBoundResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;IZ)V @@ -5151,12 +5065,12 @@ HSPLandroid/content/res/ConstantState;->()V HSPLandroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;)Ljava/lang/Object; HSPLandroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object; HSPLandroid/content/res/DrawableCache;->()V -HSPLandroid/content/res/DrawableCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/DrawableCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache; HSPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Landroid/graphics/drawable/Drawable$ConstantState;I)Z HSPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Ljava/lang/Object;I)Z HSPLandroid/content/res/FontResourcesParser;->parse(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry; -HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry; -HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry; +HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;+]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser; +HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/content/res/FontScaleConverterFactory;->forScale(F)Landroid/content/res/FontScaleConverter; HSPLandroid/content/res/FontScaleConverterFactory;->isNonLinearFontScalingActive(F)Z HSPLandroid/content/res/GradientColor;->()V @@ -5179,17 +5093,17 @@ HSPLandroid/content/res/Resources$Theme;->applyStyle(IZ)V HSPLandroid/content/res/Resources$Theme;->equals(Ljava/lang/Object;)Z HSPLandroid/content/res/Resources$Theme;->getAppliedStyleResId()I HSPLandroid/content/res/Resources$Theme;->getChangingConfigurations()I -HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey; +HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; HSPLandroid/content/res/Resources$Theme;->getParentThemeIdentifier(I)I HSPLandroid/content/res/Resources$Theme;->getResources()Landroid/content/res/Resources; HSPLandroid/content/res/Resources$Theme;->getTheme()[Ljava/lang/String; HSPLandroid/content/res/Resources$Theme;->hashCode()I -HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray; -HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray; -HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; +HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; HSPLandroid/content/res/Resources$Theme;->rebase()V HSPLandroid/content/res/Resources$Theme;->rebase(Landroid/content/res/ResourcesImpl;)V -HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z+]Landroid/content/res/ResourcesImpl$ThemeImpl;Landroid/content/res/ResourcesImpl$ThemeImpl; HSPLandroid/content/res/Resources$Theme;->resolveAttributes([I[I)Landroid/content/res/TypedArray; HSPLandroid/content/res/Resources$Theme;->setImpl(Landroid/content/res/ResourcesImpl$ThemeImpl;)V HSPLandroid/content/res/Resources$Theme;->setTo(Landroid/content/res/Resources$Theme;)V @@ -5197,13 +5111,13 @@ HSPLandroid/content/res/Resources$Theme;->toString()Ljava/lang/String; HSPLandroid/content/res/Resources$ThemeKey;->()V HSPLandroid/content/res/Resources$ThemeKey;->append(IZ)V HSPLandroid/content/res/Resources$ThemeKey;->clone()Landroid/content/res/Resources$ThemeKey; -HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z +HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/content/res/Resources$ThemeKey;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey; HSPLandroid/content/res/Resources$ThemeKey;->findValue(IZ)I HSPLandroid/content/res/Resources$ThemeKey;->hashCode()I HSPLandroid/content/res/Resources$ThemeKey;->moveToLast(I)V HSPLandroid/content/res/Resources$ThemeKey;->setTo(Landroid/content/res/Resources$ThemeKey;)V HSPLandroid/content/res/Resources;->(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V -HSPLandroid/content/res/Resources;->(Ljava/lang/ClassLoader;)V +HSPLandroid/content/res/Resources;->(Ljava/lang/ClassLoader;)V+]Ljava/util/Set;Ljava/util/Collections$SynchronizedSet; HSPLandroid/content/res/Resources;->addLoaders([Landroid/content/res/loader/ResourcesLoader;)V HSPLandroid/content/res/Resources;->checkCallbacksRegistered()V HSPLandroid/content/res/Resources;->cleanupThemeReferences()V @@ -5212,7 +5126,7 @@ HSPLandroid/content/res/Resources;->dumpHistory(Ljava/io/PrintWriter;Ljava/lang/ HSPLandroid/content/res/Resources;->finishPreloading()V HSPLandroid/content/res/Resources;->getAnimation(I)Landroid/content/res/XmlResourceParser; HSPLandroid/content/res/Resources;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; -HSPLandroid/content/res/Resources;->getAssets()Landroid/content/res/AssetManager; +HSPLandroid/content/res/Resources;->getAssets()Landroid/content/res/AssetManager;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I HSPLandroid/content/res/Resources;->getBoolean(I)Z HSPLandroid/content/res/Resources;->getClassLoader()Ljava/lang/ClassLoader; @@ -5221,16 +5135,16 @@ HSPLandroid/content/res/Resources;->getColor(ILandroid/content/res/Resources$The HSPLandroid/content/res/Resources;->getColorStateList(I)Landroid/content/res/ColorStateList; HSPLandroid/content/res/Resources;->getColorStateList(ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; HSPLandroid/content/res/Resources;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; -HSPLandroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; +HSPLandroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getDimension(I)F HSPLandroid/content/res/Resources;->getDimensionPixelOffset(I)I HSPLandroid/content/res/Resources;->getDimensionPixelSize(I)I -HSPLandroid/content/res/Resources;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; -HSPLandroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; +HSPLandroid/content/res/Resources;->getDisplayAdjustments()Landroid/view/DisplayAdjustments;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; +HSPLandroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getDrawable(I)Landroid/graphics/drawable/Drawable; HSPLandroid/content/res/Resources;->getDrawable(ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; HSPLandroid/content/res/Resources;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable; -HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->getDrawableForDensity(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/Resources;->getDrawableInflater()Landroid/graphics/drawable/DrawableInflater; HSPLandroid/content/res/Resources;->getFloat(I)F HSPLandroid/content/res/Resources;->getFont(Landroid/util/TypedValue;I)Landroid/graphics/Typeface; @@ -5246,31 +5160,31 @@ HSPLandroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljav HSPLandroid/content/res/Resources;->getQuantityText(II)Ljava/lang/CharSequence; HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String; HSPLandroid/content/res/Resources;->getResourceName(I)Ljava/lang/String; -HSPLandroid/content/res/Resources;->getResourcePackageName(I)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getResourcePackageName(I)Ljava/lang/String;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getResourceTypeName(I)Ljava/lang/String; HSPLandroid/content/res/Resources;->getSizeConfigurations()[Landroid/content/res/Configuration; HSPLandroid/content/res/Resources;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; -HSPLandroid/content/res/Resources;->getString(I)Ljava/lang/String; -HSPLandroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String; +HSPLandroid/content/res/Resources;->getString(I)Ljava/lang/String;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString; +HSPLandroid/content/res/Resources;->getString(I[Ljava/lang/Object;)Ljava/lang/String;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String; HSPLandroid/content/res/Resources;->getSystem()Landroid/content/res/Resources; -HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/Resources;->getTextArray(I)[Ljava/lang/CharSequence; -HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V +HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->getValueForDensity(IILandroid/util/TypedValue;Z)V HSPLandroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser; HSPLandroid/content/res/Resources;->hasOverrideDisplayAdjustments()Z HSPLandroid/content/res/Resources;->lambda$dumpHistory$1(Ljava/util/Map;Landroid/content/res/Resources;)V -HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->loadComplexColor(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; -HSPLandroid/content/res/Resources;->loadDrawable(Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/Resources;->loadDrawable(Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Ljava/lang/CharSequence;Ljava/lang/String; -HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser; +HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl; HSPLandroid/content/res/Resources;->newTheme()Landroid/content/res/Resources$Theme; HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray; HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/Resources;->obtainTempTypedValue()Landroid/util/TypedValue; -HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray; +HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream; HSPLandroid/content/res/Resources;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream; HSPLandroid/content/res/Resources;->openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor; @@ -5308,7 +5222,7 @@ HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getTheme()[Ljava/lang/String; HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->obtainStyledAttributes(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase()V HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->rebase(Landroid/content/res/AssetManager;)V -HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z +HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttribute(ILandroid/util/TypedValue;Z)Z+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->resolveAttributes(Landroid/content/res/Resources$Theme;[I[I)Landroid/content/res/TypedArray; HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->setTo(Landroid/content/res/ResourcesImpl$ThemeImpl;)V HSPLandroid/content/res/ResourcesImpl;->-$$Nest$sfgetsThemeRegistry()Llibcore/util/NativeAllocationRegistry; @@ -5324,7 +5238,7 @@ HSPLandroid/content/res/ResourcesImpl;->flushLayoutCache()V HSPLandroid/content/res/ResourcesImpl;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; HSPLandroid/content/res/ResourcesImpl;->getAssets()Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I -HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList; +HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList;+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/ConstantState;Landroid/content/res/ColorStateList$ColorStateListFactory; HSPLandroid/content/res/ResourcesImpl;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; HSPLandroid/content/res/ResourcesImpl;->getConfiguration()Landroid/content/res/Configuration; HSPLandroid/content/res/ResourcesImpl;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; @@ -5334,25 +5248,25 @@ HSPLandroid/content/res/ResourcesImpl;->getPluralRule()Landroid/icu/text/PluralR HSPLandroid/content/res/ResourcesImpl;->getQuantityText(II)Ljava/lang/CharSequence; HSPLandroid/content/res/ResourcesImpl;->getResourceEntryName(I)Ljava/lang/String; HSPLandroid/content/res/ResourcesImpl;->getResourceName(I)Ljava/lang/String; -HSPLandroid/content/res/ResourcesImpl;->getResourcePackageName(I)Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->getResourcePackageName(I)Ljava/lang/String;+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl;->getResourceTypeName(I)Ljava/lang/String; HSPLandroid/content/res/ResourcesImpl;->getSizeConfigurations()[Landroid/content/res/Configuration; HSPLandroid/content/res/ResourcesImpl;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache; -HSPLandroid/content/res/ResourcesImpl;->getValue(ILandroid/util/TypedValue;Z)V +HSPLandroid/content/res/ResourcesImpl;->getValue(ILandroid/util/TypedValue;Z)V+]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/ResourcesImpl;->getValueForDensity(IILandroid/util/TypedValue;Z)V HSPLandroid/content/res/ResourcesImpl;->lambda$decodeImageDrawable$1(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V HSPLandroid/content/res/ResourcesImpl;->lambda$new$0()Landroid/content/res/ResourcesImpl$LookupStack; HSPLandroid/content/res/ResourcesImpl;->loadColorStateList(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList; HSPLandroid/content/res/ResourcesImpl;->loadComplexColor(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; -HSPLandroid/content/res/ResourcesImpl;->loadComplexColorForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor; -HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor; -HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; -HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;II)Landroid/graphics/drawable/Drawable; -HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface; +HSPLandroid/content/res/ResourcesImpl;->loadComplexColorForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser; +HSPLandroid/content/res/ResourcesImpl;->loadComplexColorFromName(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/TypedValue;I)Landroid/content/res/ComplexColor;+]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache;]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; +HSPLandroid/content/res/ResourcesImpl;->loadDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;+]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/content/res/ResourcesImpl;->loadDrawableForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;II)Landroid/graphics/drawable/Drawable;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/ResourcesImpl$LookupStack;Landroid/content/res/ResourcesImpl$LookupStack;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Ljava/lang/CharSequence;Ljava/lang/String; +HSPLandroid/content/res/ResourcesImpl;->loadFont(Landroid/content/res/Resources;Landroid/util/TypedValue;I)Landroid/graphics/Typeface;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/graphics/Typeface$Builder;Landroid/graphics/Typeface$Builder; HSPLandroid/content/res/ResourcesImpl;->loadXmlDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILjava/lang/String;)Landroid/graphics/drawable/Drawable; HSPLandroid/content/res/ResourcesImpl;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/XmlBlock;Landroid/content/res/XmlBlock; HSPLandroid/content/res/ResourcesImpl;->newThemeImpl()Landroid/content/res/ResourcesImpl$ThemeImpl; -HSPLandroid/content/res/ResourcesImpl;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream; +HSPLandroid/content/res/ResourcesImpl;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/content/res/ResourcesImpl;->openRawResourceFd(ILandroid/util/TypedValue;)Landroid/content/res/AssetFileDescriptor; HSPLandroid/content/res/ResourcesImpl;->startPreloading()V HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V+]Landroid/content/res/ResourcesImpl;Landroid/content/res/ResourcesImpl;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Ljava/util/Locale;Ljava/util/Locale;]Landroid/content/res/DrawableCache;Landroid/content/res/DrawableCache;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;]Landroid/content/res/ConfigurationBoundResourceCache;Landroid/content/res/ConfigurationBoundResourceCache; @@ -5368,43 +5282,43 @@ HSPLandroid/content/res/StringBlock;->finalize()V HSPLandroid/content/res/StringBlock;->get(I)Ljava/lang/CharSequence; HSPLandroid/content/res/StringBlock;->getSequence(I)Ljava/lang/CharSequence;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Ljava/lang/String;Ljava/lang/String; HSPLandroid/content/res/ThemedResourceCache;->()V -HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object; +HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; HSPLandroid/content/res/ThemedResourceCache;->getGeneration()I -HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray; +HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources$ThemeKey;Landroid/content/res/Resources$ThemeKey; HSPLandroid/content/res/ThemedResourceCache;->getUnthemedLocked(Z)Landroid/util/LongSparseArray; HSPLandroid/content/res/ThemedResourceCache;->onConfigurationChange(I)V HSPLandroid/content/res/ThemedResourceCache;->pruneEntriesLocked(Landroid/util/LongSparseArray;I)Z HSPLandroid/content/res/ThemedResourceCache;->pruneLocked(I)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/content/res/ThemedResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;I)V HSPLandroid/content/res/ThemedResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;IZ)V+]Landroid/util/LongSparseArray;Landroid/util/LongSparseArray; -HSPLandroid/content/res/TypedArray;->(Landroid/content/res/Resources;)V +HSPLandroid/content/res/TypedArray;->(Landroid/content/res/Resources;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/TypedArray;->extractThemeAttrs()[I -HSPLandroid/content/res/TypedArray;->extractThemeAttrs([I)[I +HSPLandroid/content/res/TypedArray;->extractThemeAttrs([I)[I+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/content/res/TypedArray;->getBoolean(IZ)Z -HSPLandroid/content/res/TypedArray;->getChangingConfigurations()I -HSPLandroid/content/res/TypedArray;->getColor(II)I -HSPLandroid/content/res/TypedArray;->getColorStateList(I)Landroid/content/res/ColorStateList; -HSPLandroid/content/res/TypedArray;->getComplexColor(I)Landroid/content/res/ComplexColor; +HSPLandroid/content/res/TypedArray;->getChangingConfigurations()I+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/content/res/TypedArray;->getColor(II)I+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/content/res/TypedArray;->getColorStateList(I)Landroid/content/res/ColorStateList;+]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/content/res/TypedArray;->getComplexColor(I)Landroid/content/res/ComplexColor;+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/TypedArray;->getDimension(IF)F HSPLandroid/content/res/TypedArray;->getDimensionPixelOffset(II)I HSPLandroid/content/res/TypedArray;->getDimensionPixelSize(II)I -HSPLandroid/content/res/TypedArray;->getDrawable(I)Landroid/graphics/drawable/Drawable; -HSPLandroid/content/res/TypedArray;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable; +HSPLandroid/content/res/TypedArray;->getDrawable(I)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/content/res/TypedArray;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/TypedArray;->getFloat(IF)F -HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface; +HSPLandroid/content/res/TypedArray;->getFont(I)Landroid/graphics/Typeface;+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/content/res/TypedArray;->getFraction(IIIF)F HSPLandroid/content/res/TypedArray;->getIndex(I)I HSPLandroid/content/res/TypedArray;->getIndexCount()I HSPLandroid/content/res/TypedArray;->getInt(II)I HSPLandroid/content/res/TypedArray;->getInteger(II)I HSPLandroid/content/res/TypedArray;->getLayoutDimension(II)I -HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I +HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/content/res/TypedArray;->getNonConfigurationString(II)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/content/res/TypedArray;->getNonResourceString(I)Ljava/lang/String; HSPLandroid/content/res/TypedArray;->getPositionDescription()Ljava/lang/String; HSPLandroid/content/res/TypedArray;->getResourceId(II)I HSPLandroid/content/res/TypedArray;->getResources()Landroid/content/res/Resources; -HSPLandroid/content/res/TypedArray;->getString(I)Ljava/lang/String; +HSPLandroid/content/res/TypedArray;->getString(I)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/content/res/TypedArray;->getText(I)Ljava/lang/CharSequence; HSPLandroid/content/res/TypedArray;->getTextArray(I)[Ljava/lang/CharSequence; HSPLandroid/content/res/TypedArray;->getType(I)I @@ -5413,7 +5327,7 @@ HSPLandroid/content/res/TypedArray;->getValueAt(ILandroid/util/TypedValue;)Z HSPLandroid/content/res/TypedArray;->hasValue(I)Z HSPLandroid/content/res/TypedArray;->hasValueOrEmpty(I)Z HSPLandroid/content/res/TypedArray;->length()I -HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/TypedArray;->loadStringValueAt(I)Ljava/lang/CharSequence;+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/content/res/TypedArray;->obtain(Landroid/content/res/Resources;I)Landroid/content/res/TypedArray;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; HSPLandroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue; HSPLandroid/content/res/TypedArray;->recycle()V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; @@ -5431,13 +5345,13 @@ HSPLandroid/content/res/XmlBlock$Parser;->getAttributeNameResource(I)I HSPLandroid/content/res/XmlBlock$Parser;->getAttributeResourceValue(II)I HSPLandroid/content/res/XmlBlock$Parser;->getAttributeResourceValue(Ljava/lang/String;Ljava/lang/String;I)I+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(I)Ljava/lang/String;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock; -HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock$Parser;->getClassAttribute()Ljava/lang/String; HSPLandroid/content/res/XmlBlock$Parser;->getDepth()I HSPLandroid/content/res/XmlBlock$Parser;->getEventType()I HSPLandroid/content/res/XmlBlock$Parser;->getLineNumber()I HSPLandroid/content/res/XmlBlock$Parser;->getName()Ljava/lang/String;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock; -HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence; +HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence;+]Landroid/content/res/StringBlock;Landroid/content/res/StringBlock; HSPLandroid/content/res/XmlBlock$Parser;->getPositionDescription()Ljava/lang/String; HSPLandroid/content/res/XmlBlock$Parser;->getSequenceString(Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/content/res/XmlBlock$Parser;->getSourceResId()I @@ -5446,7 +5360,7 @@ HSPLandroid/content/res/XmlBlock$Parser;->isEmptyElementTag()Z HSPLandroid/content/res/XmlBlock$Parser;->next()I+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock$Parser;->nextTag()I+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock$Parser;->nextText()Ljava/lang/String;+]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; -HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V +HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/XmlBlock$Parser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/content/res/XmlBlock;->-$$Nest$fgetmOpenCount(Landroid/content/res/XmlBlock;)I HSPLandroid/content/res/XmlBlock;->-$$Nest$fputmOpenCount(Landroid/content/res/XmlBlock;I)V HSPLandroid/content/res/XmlBlock;->-$$Nest$smnativeGetAttributeCount(J)I @@ -5467,7 +5381,7 @@ HSPLandroid/content/res/XmlBlock;->newParser(I)Landroid/content/res/XmlResourceP HSPLandroid/content/type/DefaultMimeMapFactory$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/content/type/DefaultMimeMapFactory;->create()Llibcore/content/type/MimeMap; HSPLandroid/content/type/DefaultMimeMapFactory;->lambda$create$0(Ljava/lang/Class;Ljava/lang/String;)Ljava/io/InputStream; -HSPLandroid/content/type/DefaultMimeMapFactory;->parseTypes(Llibcore/content/type/MimeMap$Builder;Ljava/util/function/Function;Ljava/lang/String;)V+]Ljava/util/function/Function;Landroid/content/type/DefaultMimeMapFactory$$ExternalSyntheticLambda0;]Ljava/io/BufferedReader;Ljava/io/BufferedReader; +HSPLandroid/content/type/DefaultMimeMapFactory;->parseTypes(Llibcore/content/type/MimeMap$Builder;Ljava/util/function/Function;Ljava/lang/String;)V+]Ljava/util/function/Function;Landroid/content/type/DefaultMimeMapFactory$$ExternalSyntheticLambda0;]Ljava/io/InputStream;Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;]Ljava/io/BufferedReader;Ljava/io/BufferedReader; HSPLandroid/database/AbstractCursor$SelfContentObserver;->(Landroid/database/AbstractCursor;)V HSPLandroid/database/AbstractCursor$SelfContentObserver;->onChange(Z)V HSPLandroid/database/AbstractCursor;->()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; @@ -5475,42 +5389,42 @@ HSPLandroid/database/AbstractCursor;->checkPosition()V+]Landroid/database/Abstra HSPLandroid/database/AbstractCursor;->close()V+]Landroid/database/AbstractCursor;Landroid/database/MatrixCursor;,Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard;]Landroid/database/ContentObservable;Landroid/database/ContentObservable; HSPLandroid/database/AbstractCursor;->fillWindow(ILandroid/database/CursorWindow;)V HSPLandroid/database/AbstractCursor;->finalize()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; -HSPLandroid/database/AbstractCursor;->getColumnCount()I -HSPLandroid/database/AbstractCursor;->getColumnIndex(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String;]Landroid/database/AbstractCursor;Landroid/database/BulkCursorToCursorAdaptor; +HSPLandroid/database/AbstractCursor;->getColumnCount()I+]Landroid/database/AbstractCursor;Landroid/database/BulkCursorToCursorAdaptor; +HSPLandroid/database/AbstractCursor;->getColumnIndex(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String;]Landroid/database/AbstractCursor;Landroid/database/MatrixCursor;,Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/AbstractCursor;->getColumnIndexOrThrow(Ljava/lang/String;)I HSPLandroid/database/AbstractCursor;->getColumnName(I)Ljava/lang/String; HSPLandroid/database/AbstractCursor;->getExtras()Landroid/os/Bundle; HSPLandroid/database/AbstractCursor;->getPosition()I HSPLandroid/database/AbstractCursor;->getWantsAllOnMoveCalls()Z HSPLandroid/database/AbstractCursor;->getWindow()Landroid/database/CursorWindow; -HSPLandroid/database/AbstractCursor;->isAfterLast()Z +HSPLandroid/database/AbstractCursor;->isAfterLast()Z+]Landroid/database/AbstractCursor;Landroid/database/sqlite/SQLiteCursor; HSPLandroid/database/AbstractCursor;->isClosed()Z HSPLandroid/database/AbstractCursor;->isLast()Z HSPLandroid/database/AbstractCursor;->move(I)Z HSPLandroid/database/AbstractCursor;->moveToFirst()Z HSPLandroid/database/AbstractCursor;->moveToLast()Z HSPLandroid/database/AbstractCursor;->moveToNext()Z+]Landroid/database/AbstractCursor;Landroid/database/MatrixCursor;,Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor; -HSPLandroid/database/AbstractCursor;->moveToPosition(I)Z+]Landroid/database/AbstractCursor;Landroid/database/MatrixCursor;,Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor; +HSPLandroid/database/AbstractCursor;->moveToPosition(I)Z+]Landroid/database/AbstractCursor;missing_types HSPLandroid/database/AbstractCursor;->onChange(Z)V -HSPLandroid/database/AbstractCursor;->onDeactivateOrClose()V+]Landroid/database/DataSetObservable;Landroid/database/DataSetObservable; +HSPLandroid/database/AbstractCursor;->onDeactivateOrClose()V+]Landroid/database/DataSetObservable;Landroid/database/DataSetObservable;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/database/AbstractCursor;->onMove(II)Z HSPLandroid/database/AbstractCursor;->registerContentObserver(Landroid/database/ContentObserver;)V HSPLandroid/database/AbstractCursor;->registerDataSetObserver(Landroid/database/DataSetObserver;)V HSPLandroid/database/AbstractCursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;)V -HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;IZ)V +HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;IZ)V+]Ljava/util/List;Ljava/util/Arrays$ArrayList;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver; HSPLandroid/database/AbstractCursor;->unregisterContentObserver(Landroid/database/ContentObserver;)V HSPLandroid/database/AbstractWindowedCursor;->()V HSPLandroid/database/AbstractWindowedCursor;->checkPosition()V HSPLandroid/database/AbstractWindowedCursor;->clearOrCreateWindow(Ljava/lang/String;)V HSPLandroid/database/AbstractWindowedCursor;->closeWindow()V+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; -HSPLandroid/database/AbstractWindowedCursor;->getBlob(I)[B -HSPLandroid/database/AbstractWindowedCursor;->getDouble(I)D +HSPLandroid/database/AbstractWindowedCursor;->getBlob(I)[B+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; +HSPLandroid/database/AbstractWindowedCursor;->getDouble(I)D+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->getFloat(I)F HSPLandroid/database/AbstractWindowedCursor;->getInt(I)I+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->getLong(I)J+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->getString(I)Ljava/lang/String;+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; -HSPLandroid/database/AbstractWindowedCursor;->getType(I)I +HSPLandroid/database/AbstractWindowedCursor;->getType(I)I+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->getWindow()Landroid/database/CursorWindow; HSPLandroid/database/AbstractWindowedCursor;->hasWindow()Z HSPLandroid/database/AbstractWindowedCursor;->isNull(I)Z+]Landroid/database/AbstractWindowedCursor;Landroid/database/sqlite/SQLiteCursor;,Landroid/database/BulkCursorToCursorAdaptor;]Landroid/database/CursorWindow;Landroid/database/CursorWindow; @@ -5519,22 +5433,22 @@ HSPLandroid/database/AbstractWindowedCursor;->setWindow(Landroid/database/Cursor HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/BulkCursorDescriptor; HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/database/BulkCursorDescriptor;->()V -HSPLandroid/database/BulkCursorDescriptor;->readFromParcel(Landroid/os/Parcel;)V -HSPLandroid/database/BulkCursorDescriptor;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/database/BulkCursorDescriptor;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/database/CursorWindow$1;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/database/BulkCursorDescriptor;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/database/IBulkCursor;Landroid/database/CursorToBulkCursorAdaptor;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/database/BulkCursorNative;->()V HSPLandroid/database/BulkCursorNative;->asBinder()Landroid/os/IBinder; HSPLandroid/database/BulkCursorNative;->asInterface(Landroid/os/IBinder;)Landroid/database/IBulkCursor; HSPLandroid/database/BulkCursorNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/database/BulkCursorProxy;->(Landroid/os/IBinder;)V HSPLandroid/database/BulkCursorProxy;->asBinder()Landroid/os/IBinder; -HSPLandroid/database/BulkCursorProxy;->close()V -HSPLandroid/database/BulkCursorProxy;->getWindow(I)Landroid/database/CursorWindow; +HSPLandroid/database/BulkCursorProxy;->close()V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/database/BulkCursorProxy;->getWindow(I)Landroid/database/CursorWindow;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/database/BulkCursorToCursorAdaptor;->()V -HSPLandroid/database/BulkCursorToCursorAdaptor;->close()V +HSPLandroid/database/BulkCursorToCursorAdaptor;->close()V+]Landroid/database/IBulkCursor;Landroid/database/BulkCursorProxy; HSPLandroid/database/BulkCursorToCursorAdaptor;->getColumnNames()[Ljava/lang/String; HSPLandroid/database/BulkCursorToCursorAdaptor;->getCount()I HSPLandroid/database/BulkCursorToCursorAdaptor;->getObserver()Landroid/database/IContentObserver; -HSPLandroid/database/BulkCursorToCursorAdaptor;->initialize(Landroid/database/BulkCursorDescriptor;)V +HSPLandroid/database/BulkCursorToCursorAdaptor;->initialize(Landroid/database/BulkCursorDescriptor;)V+]Landroid/database/BulkCursorToCursorAdaptor;Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/BulkCursorToCursorAdaptor;->onMove(II)Z+]Landroid/database/IBulkCursor;Landroid/database/BulkCursorProxy;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/BulkCursorToCursorAdaptor;Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/BulkCursorToCursorAdaptor;->throwIfCursorIsClosed()V HSPLandroid/database/ContentObservable;->()V @@ -5553,7 +5467,7 @@ HSPLandroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;)V HSPLandroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;I)V HSPLandroid/database/ContentObserver;->onChange(ZLjava/util/Collection;I)V HSPLandroid/database/ContentObserver;->onChange(ZLjava/util/Collection;II)V -HSPLandroid/database/ContentObserver;->releaseContentObserver()Landroid/database/IContentObserver; +HSPLandroid/database/ContentObserver;->releaseContentObserver()Landroid/database/IContentObserver;+]Landroid/database/ContentObserver$Transport;Landroid/database/ContentObserver$Transport; HSPLandroid/database/CrossProcessCursorWrapper;->(Landroid/database/Cursor;)V HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->(Landroid/database/IContentObserver;Landroid/os/IBinder$DeathRecipient;)V HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;)Z @@ -5563,27 +5477,27 @@ HSPLandroid/database/CursorToBulkCursorAdaptor;->close()V HSPLandroid/database/CursorToBulkCursorAdaptor;->closeFilledWindowLocked()V HSPLandroid/database/CursorToBulkCursorAdaptor;->createAndRegisterObserverProxyLocked(Landroid/database/IContentObserver;)V HSPLandroid/database/CursorToBulkCursorAdaptor;->disposeLocked()V -HSPLandroid/database/CursorToBulkCursorAdaptor;->getBulkCursorDescriptor()Landroid/database/BulkCursorDescriptor; -HSPLandroid/database/CursorToBulkCursorAdaptor;->getWindow(I)Landroid/database/CursorWindow; +HSPLandroid/database/CursorToBulkCursorAdaptor;->getBulkCursorDescriptor()Landroid/database/BulkCursorDescriptor;+]Landroid/database/CrossProcessCursor;Landroid/database/MatrixCursor; +HSPLandroid/database/CursorToBulkCursorAdaptor;->getWindow(I)Landroid/database/CursorWindow;+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/CrossProcessCursor;Landroid/database/MatrixCursor; HSPLandroid/database/CursorToBulkCursorAdaptor;->throwIfCursorIsClosed()V HSPLandroid/database/CursorToBulkCursorAdaptor;->unregisterObserverProxyLocked()V HSPLandroid/database/CursorWindow$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/database/CursorWindow$1;->newArray(I)[Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow$1;->newArray(I)[Ljava/lang/Object; -HSPLandroid/database/CursorWindow;->(Landroid/os/Parcel;)V +HSPLandroid/database/CursorWindow;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLandroid/database/CursorWindow;->(Landroid/os/Parcel;Landroid/database/CursorWindow-IA;)V HSPLandroid/database/CursorWindow;->(Ljava/lang/String;)V HSPLandroid/database/CursorWindow;->(Ljava/lang/String;J)V+]Ljava/lang/String;Ljava/lang/String;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; -HSPLandroid/database/CursorWindow;->allocRow()Z +HSPLandroid/database/CursorWindow;->allocRow()Z+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->clear()V HSPLandroid/database/CursorWindow;->dispose()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLandroid/database/CursorWindow;->finalize()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; -HSPLandroid/database/CursorWindow;->getBlob(II)[B +HSPLandroid/database/CursorWindow;->getBlob(II)[B+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getCursorWindowSize()I -HSPLandroid/database/CursorWindow;->getDouble(II)D +HSPLandroid/database/CursorWindow;->getDouble(II)D+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getFloat(II)F -HSPLandroid/database/CursorWindow;->getInt(II)I +HSPLandroid/database/CursorWindow;->getInt(II)I+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getLong(II)J+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getNumRows()I+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->getStartPosition()I @@ -5593,30 +5507,30 @@ HSPLandroid/database/CursorWindow;->newFromParcel(Landroid/os/Parcel;)Landroid/d HSPLandroid/database/CursorWindow;->onAllReferencesReleased()V HSPLandroid/database/CursorWindow;->putLong(JII)Z HSPLandroid/database/CursorWindow;->putNull(II)Z -HSPLandroid/database/CursorWindow;->putString(Ljava/lang/String;II)Z +HSPLandroid/database/CursorWindow;->putString(Ljava/lang/String;II)Z+]Landroid/database/CursorWindow;Landroid/database/CursorWindow; HSPLandroid/database/CursorWindow;->setNumColumns(I)Z HSPLandroid/database/CursorWindow;->setStartPosition(I)V HSPLandroid/database/CursorWindow;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/database/CursorWrapper;->(Landroid/database/Cursor;)V HSPLandroid/database/CursorWrapper;->close()V -HSPLandroid/database/CursorWrapper;->getBlob(I)[B -HSPLandroid/database/CursorWrapper;->getColumnCount()I -HSPLandroid/database/CursorWrapper;->getColumnIndex(Ljava/lang/String;)I +HSPLandroid/database/CursorWrapper;->getBlob(I)[B+]Landroid/database/Cursor;missing_types +HSPLandroid/database/CursorWrapper;->getColumnCount()I+]Landroid/database/Cursor;missing_types +HSPLandroid/database/CursorWrapper;->getColumnIndex(Ljava/lang/String;)I+]Landroid/database/Cursor;Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/CursorWrapper;->getColumnIndexOrThrow(Ljava/lang/String;)I HSPLandroid/database/CursorWrapper;->getColumnName(I)Ljava/lang/String; HSPLandroid/database/CursorWrapper;->getColumnNames()[Ljava/lang/String; HSPLandroid/database/CursorWrapper;->getCount()I HSPLandroid/database/CursorWrapper;->getExtras()Landroid/os/Bundle; -HSPLandroid/database/CursorWrapper;->getInt(I)I -HSPLandroid/database/CursorWrapper;->getLong(I)J+]Landroid/database/Cursor;Landroid/database/BulkCursorToCursorAdaptor; -HSPLandroid/database/CursorWrapper;->getPosition()I +HSPLandroid/database/CursorWrapper;->getInt(I)I+]Landroid/database/Cursor;missing_types +HSPLandroid/database/CursorWrapper;->getLong(I)J+]Landroid/database/Cursor;missing_types +HSPLandroid/database/CursorWrapper;->getPosition()I+]Landroid/database/Cursor;missing_types HSPLandroid/database/CursorWrapper;->getString(I)Ljava/lang/String;+]Landroid/database/Cursor;missing_types -HSPLandroid/database/CursorWrapper;->getType(I)I +HSPLandroid/database/CursorWrapper;->getType(I)I+]Landroid/database/Cursor;missing_types HSPLandroid/database/CursorWrapper;->getWrappedCursor()Landroid/database/Cursor; HSPLandroid/database/CursorWrapper;->isAfterLast()Z HSPLandroid/database/CursorWrapper;->isClosed()Z HSPLandroid/database/CursorWrapper;->isLast()Z -HSPLandroid/database/CursorWrapper;->isNull(I)Z +HSPLandroid/database/CursorWrapper;->isNull(I)Z+]Landroid/database/Cursor;Landroid/database/BulkCursorToCursorAdaptor; HSPLandroid/database/CursorWrapper;->moveToFirst()Z HSPLandroid/database/CursorWrapper;->moveToLast()Z HSPLandroid/database/CursorWrapper;->moveToNext()Z+]Landroid/database/Cursor;missing_types @@ -5627,10 +5541,10 @@ HSPLandroid/database/DataSetObservable;->notifyChanged()V HSPLandroid/database/DataSetObservable;->notifyInvalidated()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/database/DataSetObserver;->()V HSPLandroid/database/DatabaseUtils;->appendEscapedSQLString(Ljava/lang/StringBuilder;Ljava/lang/String;)V -HSPLandroid/database/DatabaseUtils;->cursorFillWindow(Landroid/database/Cursor;ILandroid/database/CursorWindow;)V +HSPLandroid/database/DatabaseUtils;->cursorFillWindow(Landroid/database/Cursor;ILandroid/database/CursorWindow;)V+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/Cursor;Landroid/database/MatrixCursor; HSPLandroid/database/DatabaseUtils;->getSqlStatementType(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/database/DatabaseUtils;->getTypeOfObject(Ljava/lang/Object;)I -HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J +HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J+]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)J HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J @@ -5646,7 +5560,7 @@ HSPLandroid/database/DefaultDatabaseErrorHandler;->()V HSPLandroid/database/IContentObserver$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/database/IContentObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/database/IContentObserver$Stub$Proxy;->onChangeEtc(Z[Landroid/net/Uri;II)V -HSPLandroid/database/IContentObserver$Stub;->()V +HSPLandroid/database/IContentObserver$Stub;->()V+]Landroid/database/IContentObserver$Stub;Landroid/database/ContentObserver$Transport; HSPLandroid/database/IContentObserver$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/database/IContentObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/database/IContentObserver; HSPLandroid/database/IContentObserver$Stub;->getDefaultTransactionName(I)Ljava/lang/String; @@ -5665,7 +5579,7 @@ HSPLandroid/database/MatrixCursor;->getCount()I HSPLandroid/database/MatrixCursor;->getDouble(I)D HSPLandroid/database/MatrixCursor;->getInt(I)I HSPLandroid/database/MatrixCursor;->getLong(I)J -HSPLandroid/database/MatrixCursor;->getString(I)Ljava/lang/String; +HSPLandroid/database/MatrixCursor;->getString(I)Ljava/lang/String;+]Ljava/lang/Object;Ljava/lang/String; HSPLandroid/database/MatrixCursor;->getType(I)I HSPLandroid/database/MatrixCursor;->newRow()Landroid/database/MatrixCursor$RowBuilder; HSPLandroid/database/MergeCursor$1;->(Landroid/database/MergeCursor;)V @@ -5681,16 +5595,16 @@ HSPLandroid/database/Observable;->registerObserver(Ljava/lang/Object;)V HSPLandroid/database/Observable;->unregisterAll()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/database/Observable;->unregisterObserver(Ljava/lang/Object;)V HSPLandroid/database/sqlite/SQLiteClosable;->()V -HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V -HSPLandroid/database/sqlite/SQLiteClosable;->close()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteStatement;,Landroid/database/sqlite/SQLiteDatabase;,Landroid/database/sqlite/SQLiteQuery; -HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteStatement;,Landroid/database/sqlite/SQLiteQuery;,Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/database/sqlite/SQLiteClosable;->close()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteStatement;,Landroid/database/sqlite/SQLiteQuery;,Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V+]Landroid/database/sqlite/SQLiteClosable;Landroid/database/CursorWindow;,Landroid/database/sqlite/SQLiteStatement;,Landroid/database/sqlite/SQLiteDatabase;,Landroid/database/sqlite/SQLiteQuery; HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->getTruncateSize()J HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->init(Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->initIfNeeded()V HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->isLegacyCompatibilityWalEnabled()Z HSPLandroid/database/sqlite/SQLiteConnection$Operation;->()V HSPLandroid/database/sqlite/SQLiteConnection$Operation;->(Landroid/database/sqlite/SQLiteConnection$Operation-IA;)V -HSPLandroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V +HSPLandroid/database/sqlite/SQLiteConnection$Operation;->describe(Ljava/lang/StringBuilder;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteConnection$Operation;->getTraceMethodName()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->(Landroid/database/sqlite/SQLiteConnectionPool;)V HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I+]Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteConnectionPool;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -5710,7 +5624,7 @@ HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemov HSPLandroid/database/sqlite/SQLiteConnection;->-$$Nest$mfinalizePreparedStatement(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V HSPLandroid/database/sqlite/SQLiteConnection;->(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteDatabaseConfiguration;IZ)V HSPLandroid/database/sqlite/SQLiteConnection;->acquirePreparedStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnection$PreparedStatement;+]Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache; -HSPLandroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V+]Landroid/database/sqlite/SQLiteDatabaseConfiguration;Landroid/database/sqlite/SQLiteDatabaseConfiguration;]Ldalvik/system/BlockGuard$Policy;Landroid/os/StrictMode$AndroidBlockGuardPolicy; +HSPLandroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V+]Landroid/database/sqlite/SQLiteDatabaseConfiguration;Landroid/database/sqlite/SQLiteDatabaseConfiguration;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLandroid/database/sqlite/SQLiteConnection;->attachCancellationSignal(Landroid/os/CancellationSignal;)V+]Landroid/os/CancellationSignal;Landroid/os/CancellationSignal; HSPLandroid/database/sqlite/SQLiteConnection;->bindArguments(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V+]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/Number;Ljava/lang/Integer;,Ljava/lang/Double;,Ljava/lang/Long;]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLandroid/database/sqlite/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String; @@ -5721,9 +5635,9 @@ HSPLandroid/database/sqlite/SQLiteConnection;->detachCancellationSignal(Landroid HSPLandroid/database/sqlite/SQLiteConnection;->dispose(Z)V HSPLandroid/database/sqlite/SQLiteConnection;->dumpUnsafe(Landroid/util/Printer;Z)V HSPLandroid/database/sqlite/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; -HSPLandroid/database/sqlite/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I +HSPLandroid/database/sqlite/SQLiteConnection;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)I+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; HSPLandroid/database/sqlite/SQLiteConnection;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZLandroid/os/CancellationSignal;)I+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; -HSPLandroid/database/sqlite/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J +HSPLandroid/database/sqlite/SQLiteConnection;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; HSPLandroid/database/sqlite/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; HSPLandroid/database/sqlite/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String;+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; HSPLandroid/database/sqlite/SQLiteConnection;->executePerConnectionSqlFromConfiguration(I)V @@ -5732,7 +5646,7 @@ HSPLandroid/database/sqlite/SQLiteConnection;->finalizePreparedStatement(Landroi HSPLandroid/database/sqlite/SQLiteConnection;->getConnectionId()I HSPLandroid/database/sqlite/SQLiteConnection;->getMainDbStatsUnsafe(IJJ)Landroid/database/sqlite/SQLiteDebug$DbStats; HSPLandroid/database/sqlite/SQLiteConnection;->isCacheable(I)Z -HSPLandroid/database/sqlite/SQLiteConnection;->isPreparedStatementInCache(Ljava/lang/String;)Z +HSPLandroid/database/sqlite/SQLiteConnection;->isPreparedStatementInCache(Ljava/lang/String;)Z+]Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache; HSPLandroid/database/sqlite/SQLiteConnection;->isPrimaryConnection()Z HSPLandroid/database/sqlite/SQLiteConnection;->maybeTruncateWalFile()V HSPLandroid/database/sqlite/SQLiteConnection;->open()V+]Landroid/database/sqlite/SQLiteConnection$OperationLog;Landroid/database/sqlite/SQLiteConnection$OperationLog; @@ -5774,7 +5688,7 @@ HSPLandroid/database/sqlite/SQLiteConnectionPool;->discardAcquiredConnectionsLoc HSPLandroid/database/sqlite/SQLiteConnectionPool;->dispose(Z)V HSPLandroid/database/sqlite/SQLiteConnectionPool;->dump(Landroid/util/Printer;ZLandroid/util/ArraySet;)V HSPLandroid/database/sqlite/SQLiteConnectionPool;->finalize()V -HSPLandroid/database/sqlite/SQLiteConnectionPool;->finishAcquireConnectionLocked(Landroid/database/sqlite/SQLiteConnection;I)V +HSPLandroid/database/sqlite/SQLiteConnectionPool;->finishAcquireConnectionLocked(Landroid/database/sqlite/SQLiteConnection;I)V+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; HSPLandroid/database/sqlite/SQLiteConnectionPool;->getPath()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteConnectionPool;->getPriority(I)I HSPLandroid/database/sqlite/SQLiteConnectionPool;->isSessionBlockingImportantConnectionWaitersLocked(ZI)Z @@ -5792,16 +5706,16 @@ HSPLandroid/database/sqlite/SQLiteConnectionPool;->releaseConnection(Landroid/da HSPLandroid/database/sqlite/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V HSPLandroid/database/sqlite/SQLiteConnectionPool;->shouldYieldConnection(Landroid/database/sqlite/SQLiteConnection;I)Z HSPLandroid/database/sqlite/SQLiteConnectionPool;->throwIfClosedLocked()V -HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Landroid/database/sqlite/SQLiteConnection; -HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Landroid/database/sqlite/SQLiteConnection; -HSPLandroid/database/sqlite/SQLiteConnectionPool;->waitForConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Landroid/database/sqlite/SQLiteConnection; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Landroid/database/sqlite/SQLiteConnection;+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquirePrimaryConnectionLocked(I)Landroid/database/sqlite/SQLiteConnection;+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection;]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap;]Ljava/util/Iterator;Ljava/util/WeakHashMap$KeyIterator;]Ljava/util/Set;Ljava/util/WeakHashMap$KeySet; +HSPLandroid/database/sqlite/SQLiteConnectionPool;->waitForConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Landroid/database/sqlite/SQLiteConnection;+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/os/CancellationSignal;Landroid/os/CancellationSignal; HSPLandroid/database/sqlite/SQLiteConnectionPool;->wakeConnectionWaitersLocked()V HSPLandroid/database/sqlite/SQLiteConstraintException;->(Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteCursor;->(Landroid/database/sqlite/SQLiteCursorDriver;Ljava/lang/String;Landroid/database/sqlite/SQLiteQuery;)V+]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery; HSPLandroid/database/sqlite/SQLiteCursor;->close()V+]Landroid/database/sqlite/SQLiteCursorDriver;Landroid/database/sqlite/SQLiteDirectCursorDriver;]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery; HSPLandroid/database/sqlite/SQLiteCursor;->fillWindow(I)V+]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/sqlite/SQLiteCursor;Landroid/database/sqlite/SQLiteCursor;]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteCursor;->finalize()V -HSPLandroid/database/sqlite/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I +HSPLandroid/database/sqlite/SQLiteCursor;->getColumnIndex(Ljava/lang/String;)I+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/HashMap; HSPLandroid/database/sqlite/SQLiteCursor;->getColumnNames()[Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteCursor;->getCount()I HSPLandroid/database/sqlite/SQLiteCursor;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;+]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery; @@ -5810,7 +5724,7 @@ HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0;->(La HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; HSPLandroid/database/sqlite/SQLiteDatabase$$ExternalSyntheticLambda2;->()V HSPLandroid/database/sqlite/SQLiteDatabase$1;->(Ljava/lang/String;)V -HSPLandroid/database/sqlite/SQLiteDatabase$1;->accept(Ljava/io/File;)Z +HSPLandroid/database/sqlite/SQLiteDatabase$1;->accept(Ljava/io/File;)Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;Ljava/io/File; HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->()V HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)V HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->addOpenFlags(I)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder; @@ -5833,7 +5747,7 @@ HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->(ILandroid/databas HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$OpenParams-IA;)V HSPLandroid/database/sqlite/SQLiteDatabase;->(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction()V -HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;Z)V +HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;Z)V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V HSPLandroid/database/sqlite/SQLiteDatabase;->collectDbStats(Ljava/util/ArrayList;)V @@ -5847,12 +5761,12 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->dispose(Z)V HSPLandroid/database/sqlite/SQLiteDatabase;->dumpAll(Landroid/util/Printer;ZZ)V HSPLandroid/database/sqlite/SQLiteDatabase;->dumpDatabaseDirectory(Landroid/util/Printer;Ljava/io/File;Z)V HSPLandroid/database/sqlite/SQLiteDatabase;->enableWriteAheadLogging()Z -HSPLandroid/database/sqlite/SQLiteDatabase;->endTransaction()V +HSPLandroid/database/sqlite/SQLiteDatabase;->endTransaction()V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V HSPLandroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/database/sqlite/SQLiteDatabase;->executeSql(Ljava/lang/String;[Ljava/lang/Object;)I HSPLandroid/database/sqlite/SQLiteDatabase;->finalize()V -HSPLandroid/database/sqlite/SQLiteDatabase;->findEditTable(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabase;->findEditTable(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteDatabase;->getActiveDatabasePools()Ljava/util/ArrayList; HSPLandroid/database/sqlite/SQLiteDatabase;->getActiveDatabases()Ljava/util/ArrayList; HSPLandroid/database/sqlite/SQLiteDatabase;->getFileTimestamps(Ljava/lang/String;)Ljava/lang/String; @@ -5860,17 +5774,17 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->getMaximumSize()J HSPLandroid/database/sqlite/SQLiteDatabase;->getPageSize()J HSPLandroid/database/sqlite/SQLiteDatabase;->getPath()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I -HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession; -HSPLandroid/database/sqlite/SQLiteDatabase;->getVersion()I +HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; +HSPLandroid/database/sqlite/SQLiteDatabase;->getVersion()I+]Ljava/lang/Long;Ljava/lang/Long; HSPLandroid/database/sqlite/SQLiteDatabase;->inTransaction()Z+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J HSPLandroid/database/sqlite/SQLiteDatabase;->insertOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J -HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J +HSPLandroid/database/sqlite/SQLiteDatabase;->insertWithOnConflict(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;I)J+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/ContentValues;Landroid/content/ContentValues;]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement;]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase;]Ljava/util/Set;Landroid/util/MapCollections$KeySet; HSPLandroid/database/sqlite/SQLiteDatabase;->isMainThread()Z HSPLandroid/database/sqlite/SQLiteDatabase;->isOpen()Z HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnly()Z HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnlyLocked()Z -HSPLandroid/database/sqlite/SQLiteDatabase;->isWriteAheadLoggingEnabled()Z +HSPLandroid/database/sqlite/SQLiteDatabase;->isWriteAheadLoggingEnabled()Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/database/sqlite/SQLiteDatabaseConfiguration;Landroid/database/sqlite/SQLiteDatabaseConfiguration; HSPLandroid/database/sqlite/SQLiteDatabase;->onAllReferencesReleased()V HSPLandroid/database/sqlite/SQLiteDatabase;->open()V HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/io/File;Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase; @@ -5883,7 +5797,7 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang HSPLandroid/database/sqlite/SQLiteDatabase;->query(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; -HSPLandroid/database/sqlite/SQLiteDatabase;->queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; +HSPLandroid/database/sqlite/SQLiteDatabase;->queryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; HSPLandroid/database/sqlite/SQLiteDatabase;->rawQueryWithFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; @@ -5892,11 +5806,11 @@ HSPLandroid/database/sqlite/SQLiteDatabase;->releaseMemory()I HSPLandroid/database/sqlite/SQLiteDatabase;->replace(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J HSPLandroid/database/sqlite/SQLiteDatabase;->replaceOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J HSPLandroid/database/sqlite/SQLiteDatabase;->setForeignKeyConstraintsEnabled(Z)V -HSPLandroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V +HSPLandroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V HSPLandroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/database/sqlite/SQLiteDatabase;->updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I -HSPLandroid/database/sqlite/SQLiteDatabase;->validateSql(Ljava/lang/String;Landroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteDatabase;->validateSql(Ljava/lang/String;Landroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z HSPLandroid/database/sqlite/SQLiteDatabase;->yieldIfContendedSafely(J)Z HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V @@ -5905,7 +5819,7 @@ HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isInMemoryDb()Z+]Ljava HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isLegacyCompatibilityWalEnabled()Z HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isReadOnlyDatabase()Z HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isWalEnabledInternal()Z -HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->resolveJournalMode()Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->resolveJournalMode()Ljava/lang/String;+]Landroid/database/sqlite/SQLiteDatabaseConfiguration;Landroid/database/sqlite/SQLiteDatabaseConfiguration; HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->resolveSyncMode()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->stripPathForLogs(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->updateParametersFrom(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/ArrayList;Ljava/util/ArrayList; @@ -5960,37 +5874,37 @@ HSPLandroid/database/sqlite/SQLiteProgram;->onAllReferencesReleased()V+]Landroid HSPLandroid/database/sqlite/SQLiteQuery;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Landroid/os/CancellationSignal;)V HSPLandroid/database/sqlite/SQLiteQuery;->fillWindow(Landroid/database/CursorWindow;IIZ)I+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/CursorWindow;Landroid/database/CursorWindow;]Landroid/database/sqlite/SQLiteQuery;Landroid/database/sqlite/SQLiteQuery; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->()V -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendClause(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendClause(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/database/sqlite/SQLiteQueryBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQueryString(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeProjection([Ljava/lang/String;)[Ljava/lang/String; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeSingleProjection(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeSingleProjection(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Map;Ljava/util/HashMap; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeSingleProjectionOrThrow(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeWhere(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeWhere(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrict()Z HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrictColumns()Z HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrictGrammar()Z HSPLandroid/database/sqlite/SQLiteQueryBuilder;->maybeWithOperator(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/database/sqlite/SQLiteQueryBuilder; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/database/sqlite/SQLiteQueryBuilder; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;+]Landroid/database/sqlite/SQLiteQueryBuilder;Landroid/database/sqlite/SQLiteQueryBuilder;]Landroid/database/sqlite/SQLiteDatabase;Landroid/database/sqlite/SQLiteDatabase; HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setDistinct(Z)V HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setProjectionMap(Ljava/util/Map;)V HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setStrict(Z)V HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V -HSPLandroid/database/sqlite/SQLiteQueryBuilder;->wrap(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/database/sqlite/SQLiteQueryBuilder;->wrap(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/database/sqlite/SQLiteSession$Transaction;->()V HSPLandroid/database/sqlite/SQLiteSession$Transaction;->(Landroid/database/sqlite/SQLiteSession$Transaction-IA;)V HSPLandroid/database/sqlite/SQLiteSession;->(Landroid/database/sqlite/SQLiteConnectionPool;)V HSPLandroid/database/sqlite/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteConnectionPool; HSPLandroid/database/sqlite/SQLiteSession;->beginTransaction(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V -HSPLandroid/database/sqlite/SQLiteSession;->beginTransactionUnchecked(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V +HSPLandroid/database/sqlite/SQLiteSession;->beginTransactionUnchecked(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection; HSPLandroid/database/sqlite/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V HSPLandroid/database/sqlite/SQLiteSession;->endTransactionUnchecked(Landroid/os/CancellationSignal;Z)V+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection; HSPLandroid/database/sqlite/SQLiteSession;->execute(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)V -HSPLandroid/database/sqlite/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I +HSPLandroid/database/sqlite/SQLiteSession;->executeForChangedRowCount(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)I+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection; HSPLandroid/database/sqlite/SQLiteSession;->executeForCursorWindow(Ljava/lang/String;[Ljava/lang/Object;Landroid/database/CursorWindow;IIZILandroid/os/CancellationSignal;)I+]Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection; HSPLandroid/database/sqlite/SQLiteSession;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J HSPLandroid/database/sqlite/SQLiteSession;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J @@ -6011,7 +5925,7 @@ HSPLandroid/database/sqlite/SQLiteSession;->yieldTransactionUnchecked(JLandroid/ HSPLandroid/database/sqlite/SQLiteStatement;->(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V HSPLandroid/database/sqlite/SQLiteStatement;->execute()V HSPLandroid/database/sqlite/SQLiteStatement;->executeInsert()J -HSPLandroid/database/sqlite/SQLiteStatement;->executeUpdateDelete()I +HSPLandroid/database/sqlite/SQLiteStatement;->executeUpdateDelete()I+]Landroid/database/sqlite/SQLiteSession;Landroid/database/sqlite/SQLiteSession;]Landroid/database/sqlite/SQLiteStatement;Landroid/database/sqlite/SQLiteStatement; HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForLong()J HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForString()Ljava/lang/String; HSPLandroid/database/sqlite/SQLiteStatementInfo;->()V @@ -6028,7 +5942,6 @@ HSPLandroid/ddm/DdmHandleHello;->handleHELO(Lorg/apache/harmony/dalvik/ddmc/Chun HSPLandroid/ddm/DdmHandleProfiling;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk; HSPLandroid/graphics/BLASTBufferQueue;->(Ljava/lang/String;Landroid/view/SurfaceControl;III)V HSPLandroid/graphics/BLASTBufferQueue;->(Ljava/lang/String;Z)V -HSPLandroid/graphics/BLASTBufferQueue;->clearSyncTransaction()V HSPLandroid/graphics/BLASTBufferQueue;->createSurface()Landroid/view/Surface; HSPLandroid/graphics/BLASTBufferQueue;->destroy()V HSPLandroid/graphics/BLASTBufferQueue;->finalize()V @@ -6042,44 +5955,44 @@ HSPLandroid/graphics/BaseCanvas;->drawARGB(IIII)V HSPLandroid/graphics/BaseCanvas;->drawArc(FFFFFFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V -HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Matrix;Landroid/graphics/Matrix; +HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/BaseCanvas;Landroid/graphics/Canvas; HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->drawColor(I)V -HSPLandroid/graphics/BaseCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/BaseCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V+]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/BaseCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V -HSPLandroid/graphics/BaseCanvas;->throwIfHasHwFeaturesInSwMode(Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseCanvas;->throwIfHasHwFeaturesInSwMode(Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;missing_types]Landroid/graphics/BaseCanvas;Landroid/view/Surface$CompatibleCanvas;,Landroid/graphics/Canvas; HSPLandroid/graphics/BaseCanvas;->throwIfHasHwFeaturesInSwMode(Landroid/graphics/Shader;)V HSPLandroid/graphics/BaseCanvas;->throwIfHwBitmapInSwMode(Landroid/graphics/Bitmap;)V HSPLandroid/graphics/BaseRecordingCanvas;->(J)V HSPLandroid/graphics/BaseRecordingCanvas;->drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/BaseRecordingCanvas;Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/BaseRecordingCanvas;->drawCircle(FFFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawColor(I)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawColor(I)V+]Landroid/graphics/BlendMode;Landroid/graphics/BlendMode; HSPLandroid/graphics/BaseRecordingCanvas;->drawColor(ILandroid/graphics/PorterDuff$Mode;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint; HSPLandroid/graphics/BaseRecordingCanvas;->drawOval(FFFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawPatch(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Paint;)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/NinePatch;Landroid/graphics/NinePatch;]Landroid/graphics/BaseRecordingCanvas;Landroid/graphics/RecordingCanvas; -HSPLandroid/graphics/BaseRecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint; HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V -HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V +HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/Layout$Ellipsizer; +HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V+]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun([CIIIIFFZLandroid/graphics/Paint;)V HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Bitmap; HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/graphics/Bitmap$Config;->nativeToConfig(I)Landroid/graphics/Bitmap$Config; HSPLandroid/graphics/Bitmap$Config;->values()[Landroid/graphics/Bitmap$Config; -HSPLandroid/graphics/Bitmap;->(JIIIZ[BLandroid/graphics/NinePatch$InsetStruct;Z)V +HSPLandroid/graphics/Bitmap;->(JIIIZ[BLandroid/graphics/NinePatch$InsetStruct;Z)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/graphics/Bitmap;->checkHardware(Ljava/lang/String;)V HSPLandroid/graphics/Bitmap;->checkPixelAccess(II)V HSPLandroid/graphics/Bitmap;->checkPixelsAccess(IIIIII[I)V @@ -6154,7 +6067,7 @@ HSPLandroid/graphics/BitmapShader;->(Landroid/graphics/Bitmap;II)V HSPLandroid/graphics/BitmapShader;->(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V HSPLandroid/graphics/BitmapShader;->createNativeInstance(JZ)J HSPLandroid/graphics/BitmapShader;->shouldDiscardNativeInstance(Z)Z -HSPLandroid/graphics/BlendMode;->blendModeToPorterDuffMode(Landroid/graphics/BlendMode;)Landroid/graphics/PorterDuff$Mode; +HSPLandroid/graphics/BlendMode;->blendModeToPorterDuffMode(Landroid/graphics/BlendMode;)Landroid/graphics/PorterDuff$Mode;+]Landroid/graphics/BlendMode;Landroid/graphics/BlendMode; HSPLandroid/graphics/BlendMode;->fromValue(I)Landroid/graphics/BlendMode; HSPLandroid/graphics/BlendMode;->getXfermode()Landroid/graphics/Xfermode; HSPLandroid/graphics/BlendMode;->toValue(Landroid/graphics/BlendMode;)I @@ -6167,8 +6080,8 @@ HSPLandroid/graphics/Canvas;->()V HSPLandroid/graphics/Canvas;->(J)V HSPLandroid/graphics/Canvas;->(Landroid/graphics/Bitmap;)V HSPLandroid/graphics/Canvas;->checkValidClipOp(Landroid/graphics/Region$Op;)V -HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;)Z -HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z +HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;)Z+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z+]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/Canvas;->clipRect(FFFF)Z HSPLandroid/graphics/Canvas;->clipRect(IIII)Z HSPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;)Z @@ -6263,7 +6176,7 @@ HSPLandroid/graphics/Color;->toArgb()I HSPLandroid/graphics/Color;->toArgb(J)I HSPLandroid/graphics/Color;->valueOf(I)Landroid/graphics/Color; HSPLandroid/graphics/ColorFilter;->()V -HSPLandroid/graphics/ColorFilter;->getNativeInstance()J +HSPLandroid/graphics/ColorFilter;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/PorterDuffColorFilter;,Landroid/graphics/BlendModeColorFilter;]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/ColorMatrixColorFilter;->(Landroid/graphics/ColorMatrix;)V HSPLandroid/graphics/ColorMatrixColorFilter;->([F)V HSPLandroid/graphics/ColorMatrixColorFilter;->createNativeInstance()J @@ -6394,7 +6307,6 @@ HSPLandroid/graphics/ImageDecoder$InputStreamSource;->(Landroid/content/re HSPLandroid/graphics/ImageDecoder$InputStreamSource;->createImageDecoder(Z)Landroid/graphics/ImageDecoder; HSPLandroid/graphics/ImageDecoder$InputStreamSource;->getDensity()I HSPLandroid/graphics/ImageDecoder$InputStreamSource;->getResources()Landroid/content/res/Resources; -HSPLandroid/graphics/ImageDecoder$InputStreamSource;->toString()Ljava/lang/String; HSPLandroid/graphics/ImageDecoder$Source;->()V HSPLandroid/graphics/ImageDecoder$Source;->(Landroid/graphics/ImageDecoder$Source-IA;)V HSPLandroid/graphics/ImageDecoder$Source;->computeDstDensity()I @@ -6433,7 +6345,7 @@ HSPLandroid/graphics/Insets;->min(Landroid/graphics/Insets;Landroid/graphics/Ins HSPLandroid/graphics/Insets;->of(IIII)Landroid/graphics/Insets; HSPLandroid/graphics/Insets;->of(Landroid/graphics/Rect;)Landroid/graphics/Insets; HSPLandroid/graphics/Insets;->toRect()Landroid/graphics/Rect; -HSPLandroid/graphics/Insets;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/graphics/Insets;->toString()Ljava/lang/String; HSPLandroid/graphics/Insets;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/graphics/Interpolator;->(II)V HSPLandroid/graphics/Interpolator;->finalize()V @@ -6450,8 +6362,8 @@ HSPLandroid/graphics/LinearGradient;->(FFFF[J[FLandroid/graphics/Shader$Ti HSPLandroid/graphics/LinearGradient;->(FFFF[J[FLandroid/graphics/Shader$TileMode;Landroid/graphics/ColorSpace;)V HSPLandroid/graphics/LinearGradient;->createNativeInstance(JZ)J HSPLandroid/graphics/MaskFilter;->finalize()V -HSPLandroid/graphics/Matrix;->()V -HSPLandroid/graphics/Matrix;->(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Matrix;->()V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; +HSPLandroid/graphics/Matrix;->(Landroid/graphics/Matrix;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/Matrix;->checkPointArrays([FI[FII)V HSPLandroid/graphics/Matrix;->equals(Ljava/lang/Object;)Z HSPLandroid/graphics/Matrix;->getValues([F)V @@ -6495,13 +6407,13 @@ HSPLandroid/graphics/Outline;->()V HSPLandroid/graphics/Outline;->isEmpty()Z HSPLandroid/graphics/Outline;->setAlpha(F)V HSPLandroid/graphics/Outline;->setConvexPath(Landroid/graphics/Path;)V -HSPLandroid/graphics/Outline;->setEmpty()V +HSPLandroid/graphics/Outline;->setEmpty()V+]Landroid/graphics/Path;Landroid/graphics/Path;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/graphics/Outline;->setOval(IIII)V HSPLandroid/graphics/Outline;->setOval(Landroid/graphics/Rect;)V -HSPLandroid/graphics/Outline;->setPath(Landroid/graphics/Path;)V +HSPLandroid/graphics/Outline;->setPath(Landroid/graphics/Path;)V+]Landroid/graphics/Path;Landroid/graphics/Path;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/graphics/Outline;->setRect(IIII)V -HSPLandroid/graphics/Outline;->setRect(Landroid/graphics/Rect;)V -HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V +HSPLandroid/graphics/Outline;->setRect(Landroid/graphics/Rect;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline; +HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Outline;Landroid/graphics/Outline; HSPLandroid/graphics/Outline;->setRoundRect(Landroid/graphics/Rect;F)V HSPLandroid/graphics/Paint$FontMetrics;->()V HSPLandroid/graphics/Paint$FontMetricsInt;->()V @@ -6520,15 +6432,15 @@ HSPLandroid/graphics/Paint;->getFontMetrics()Landroid/graphics/Paint$FontMetrics HSPLandroid/graphics/Paint;->getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F HSPLandroid/graphics/Paint;->getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt; HSPLandroid/graphics/Paint;->getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I -HSPLandroid/graphics/Paint;->getFontMetricsInt(Ljava/lang/CharSequence;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V +HSPLandroid/graphics/Paint;->getFontMetricsInt(Ljava/lang/CharSequence;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; HSPLandroid/graphics/Paint;->getFontVariationSettings()Ljava/lang/String; HSPLandroid/graphics/Paint;->getHinting()I HSPLandroid/graphics/Paint;->getLetterSpacing()F HSPLandroid/graphics/Paint;->getMaskFilter()Landroid/graphics/MaskFilter; -HSPLandroid/graphics/Paint;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/BlendModeColorFilter;,Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/Paint;Landroid/graphics/Paint;,Landroid/text/TextPaint;]Landroid/graphics/Shader;Landroid/graphics/drawable/RippleShader;,Landroid/graphics/LinearGradient;,Landroid/graphics/BitmapShader; +HSPLandroid/graphics/Paint;->getNativeInstance()J+]Landroid/graphics/ColorFilter;Landroid/graphics/PorterDuffColorFilter;,Landroid/graphics/BlendModeColorFilter;,Landroid/graphics/ColorMatrixColorFilter;]Landroid/graphics/Paint;missing_types]Landroid/graphics/Shader;Landroid/graphics/SweepGradient;,Landroid/graphics/drawable/RippleShader;,Landroid/graphics/BitmapShader;,Landroid/graphics/ComposeShader; HSPLandroid/graphics/Paint;->getRunAdvance(Ljava/lang/CharSequence;IIIIZI)F HSPLandroid/graphics/Paint;->getRunAdvance([CIIIIZI)F -HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FI)F +HSPLandroid/graphics/Paint;->getRunCharacterAdvance(Ljava/lang/CharSequence;IIIIZI[FI)F+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; HSPLandroid/graphics/Paint;->getRunCharacterAdvance([CIIIIZI[FI)F HSPLandroid/graphics/Paint;->getShader()Landroid/graphics/Shader; HSPLandroid/graphics/Paint;->getShadowLayerColor()I @@ -6562,13 +6474,12 @@ HSPLandroid/graphics/Paint;->installXfermode(Landroid/graphics/Xfermode;)Landroi HSPLandroid/graphics/Paint;->isAntiAlias()Z HSPLandroid/graphics/Paint;->isDither()Z HSPLandroid/graphics/Paint;->isElegantTextHeight()Z -HSPLandroid/graphics/Paint;->isFilterBitmap()Z+]Landroid/graphics/Paint;Landroid/graphics/Paint;,Landroid/text/TextPaint; +HSPLandroid/graphics/Paint;->isFilterBitmap()Z+]Landroid/graphics/Paint;missing_types HSPLandroid/graphics/Paint;->measureText(Ljava/lang/CharSequence;II)F -HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;)F -HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;II)F +HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;)F+]Ljava/lang/String;Ljava/lang/String;]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;II)F+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/graphics/Paint;->reset()V HSPLandroid/graphics/Paint;->set(Landroid/graphics/Paint;)V -HSPLandroid/graphics/Paint;->setARGB(IIII)V+]Landroid/graphics/Paint;Landroid/graphics/Paint; HSPLandroid/graphics/Paint;->setAlpha(I)V HSPLandroid/graphics/Paint;->setAntiAlias(Z)V HSPLandroid/graphics/Paint;->setBlendMode(Landroid/graphics/BlendMode;)V @@ -6596,28 +6507,28 @@ HSPLandroid/graphics/Paint;->setStrokeMiter(F)V HSPLandroid/graphics/Paint;->setStrokeWidth(F)V HSPLandroid/graphics/Paint;->setStyle(Landroid/graphics/Paint$Style;)V HSPLandroid/graphics/Paint;->setTextAlign(Landroid/graphics/Paint$Align;)V -HSPLandroid/graphics/Paint;->setTextLocales(Landroid/os/LocaleList;)V +HSPLandroid/graphics/Paint;->setTextLocales(Landroid/os/LocaleList;)V+]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/graphics/Paint;->setTextScaleX(F)V HSPLandroid/graphics/Paint;->setTextSize(F)V HSPLandroid/graphics/Paint;->setTextSkewX(F)V HSPLandroid/graphics/Paint;->setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface; HSPLandroid/graphics/Paint;->setUnderlineText(Z)V HSPLandroid/graphics/Paint;->setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode; -HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V +HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/LocaleList;Landroid/os/LocaleList; HSPLandroid/graphics/PaintFlagsDrawFilter;->(II)V -HSPLandroid/graphics/Path;->()V +HSPLandroid/graphics/Path;->()V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/Path;->(Landroid/graphics/Path;)V HSPLandroid/graphics/Path;->addArc(FFFFFF)V HSPLandroid/graphics/Path;->addArc(Landroid/graphics/RectF;FF)V HSPLandroid/graphics/Path;->addCircle(FFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addOval(FFFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addOval(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V -HSPLandroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Path;->addPath(Landroid/graphics/Path;Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/graphics/Path;->addRect(FFFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRoundRect(FFFFFFLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->addRoundRect(FFFF[FLandroid/graphics/Path$Direction;)V -HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V +HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Path$Direction;)V+]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;[FLandroid/graphics/Path$Direction;)V HSPLandroid/graphics/Path;->approximate(F)[F HSPLandroid/graphics/Path;->arcTo(FFFFFFZ)V @@ -6632,11 +6543,11 @@ HSPLandroid/graphics/Path;->isEmpty()Z HSPLandroid/graphics/Path;->lineTo(FF)V HSPLandroid/graphics/Path;->moveTo(FF)V HSPLandroid/graphics/Path;->offset(FF)V -HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z -HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z +HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z+]Landroid/graphics/Path;Landroid/graphics/Path; +HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z+]Landroid/graphics/Path$Op;Landroid/graphics/Path$Op; HSPLandroid/graphics/Path;->rLineTo(FF)V HSPLandroid/graphics/Path;->readOnlyNI()J -HSPLandroid/graphics/Path;->reset()V +HSPLandroid/graphics/Path;->reset()V+]Landroid/graphics/Path;Landroid/graphics/Path; HSPLandroid/graphics/Path;->rewind()V HSPLandroid/graphics/Path;->set(Landroid/graphics/Path;)V HSPLandroid/graphics/Path;->setFillType(Landroid/graphics/Path$FillType;)V @@ -6661,9 +6572,9 @@ HSPLandroid/graphics/Point$1;->createFromParcel(Landroid/os/Parcel;)Landroid/gra HSPLandroid/graphics/Point$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/graphics/Point;->()V HSPLandroid/graphics/Point;->(II)V -HSPLandroid/graphics/Point;->(Landroid/graphics/Point;)V +HSPLandroid/graphics/Point;->(Landroid/graphics/Point;)V+]Landroid/graphics/Point;Landroid/graphics/Point; HSPLandroid/graphics/Point;->equals(II)Z -HSPLandroid/graphics/Point;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/Point;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/graphics/Point; HSPLandroid/graphics/Point;->hashCode()I HSPLandroid/graphics/Point;->offset(II)V HSPLandroid/graphics/Point;->readFromParcel(Landroid/os/Parcel;)V @@ -6673,7 +6584,7 @@ HSPLandroid/graphics/Point;->toString()Ljava/lang/String; HSPLandroid/graphics/PointF;->()V HSPLandroid/graphics/PointF;->(FF)V HSPLandroid/graphics/PointF;->equals(FF)Z -HSPLandroid/graphics/PointF;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/PointF;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/graphics/PointF; HSPLandroid/graphics/PointF;->length()F HSPLandroid/graphics/PointF;->length(FF)F HSPLandroid/graphics/PointF;->set(FF)V @@ -6684,9 +6595,9 @@ HSPLandroid/graphics/PorterDuffColorFilter;->equals(Ljava/lang/Object;)Z HSPLandroid/graphics/PorterDuffColorFilter;->getColor()I HSPLandroid/graphics/PorterDuffColorFilter;->getMode()Landroid/graphics/PorterDuff$Mode; HSPLandroid/graphics/PorterDuffXfermode;->(Landroid/graphics/PorterDuff$Mode;)V -HSPLandroid/graphics/RadialGradient;->(FFFFFF[J[FLandroid/graphics/Shader$TileMode;Landroid/graphics/ColorSpace;)V +HSPLandroid/graphics/RadialGradient;->(FFFFFF[J[FLandroid/graphics/Shader$TileMode;Landroid/graphics/ColorSpace;)V+][F[F HSPLandroid/graphics/RadialGradient;->(FFF[I[FLandroid/graphics/Shader$TileMode;)V -HSPLandroid/graphics/RadialGradient;->createNativeInstance(JZ)J +HSPLandroid/graphics/RadialGradient;->createNativeInstance(JZ)J+]Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace$Rgb;]Landroid/graphics/RadialGradient;Landroid/graphics/RadialGradient; HSPLandroid/graphics/RecordingCanvas;->(Landroid/graphics/RenderNode;II)V HSPLandroid/graphics/RecordingCanvas;->disableZ()V HSPLandroid/graphics/RecordingCanvas;->drawRenderNode(Landroid/graphics/RenderNode;)V @@ -6697,11 +6608,11 @@ HSPLandroid/graphics/RecordingCanvas;->finishRecording(Landroid/graphics/RenderN HSPLandroid/graphics/RecordingCanvas;->getHeight()I HSPLandroid/graphics/RecordingCanvas;->getWidth()I HSPLandroid/graphics/RecordingCanvas;->isHardwareAccelerated()Z -HSPLandroid/graphics/RecordingCanvas;->obtain(Landroid/graphics/RenderNode;II)Landroid/graphics/RecordingCanvas; -HSPLandroid/graphics/RecordingCanvas;->recycle()V +HSPLandroid/graphics/RecordingCanvas;->obtain(Landroid/graphics/RenderNode;II)Landroid/graphics/RecordingCanvas;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; +HSPLandroid/graphics/RecordingCanvas;->recycle()V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; HSPLandroid/graphics/RecordingCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V -HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Rect; -HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Rect;+]Landroid/graphics/Rect;Landroid/graphics/Rect; +HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/graphics/Rect$1;Landroid/graphics/Rect$1; HSPLandroid/graphics/Rect$1;->newArray(I)[Landroid/graphics/Rect; HSPLandroid/graphics/Rect$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/graphics/Rect;->()V @@ -6728,16 +6639,16 @@ HSPLandroid/graphics/Rect;->isEmpty()Z HSPLandroid/graphics/Rect;->isValid()Z HSPLandroid/graphics/Rect;->offset(II)V HSPLandroid/graphics/Rect;->offsetTo(II)V -HSPLandroid/graphics/Rect;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/graphics/Rect;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/graphics/Rect;->scale(F)V HSPLandroid/graphics/Rect;->set(IIII)V HSPLandroid/graphics/Rect;->set(Landroid/graphics/Rect;)V HSPLandroid/graphics/Rect;->setEmpty()V HSPLandroid/graphics/Rect;->setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z HSPLandroid/graphics/Rect;->toShortString(Ljava/lang/StringBuilder;)Ljava/lang/String; -HSPLandroid/graphics/Rect;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/graphics/Rect;->toString()Ljava/lang/String; HSPLandroid/graphics/Rect;->union(IIII)V -HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V +HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/graphics/Rect;->width()I HSPLandroid/graphics/Rect;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/graphics/RectF;->()V @@ -6747,7 +6658,7 @@ HSPLandroid/graphics/RectF;->(Landroid/graphics/RectF;)V HSPLandroid/graphics/RectF;->centerX()F HSPLandroid/graphics/RectF;->centerY()F HSPLandroid/graphics/RectF;->contains(FF)Z -HSPLandroid/graphics/RectF;->equals(Ljava/lang/Object;)Z +HSPLandroid/graphics/RectF;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/graphics/RectF; HSPLandroid/graphics/RectF;->hashCode()I HSPLandroid/graphics/RectF;->height()F HSPLandroid/graphics/RectF;->inset(FF)V @@ -6763,7 +6674,7 @@ HSPLandroid/graphics/RectF;->set(Landroid/graphics/Rect;)V HSPLandroid/graphics/RectF;->set(Landroid/graphics/RectF;)V HSPLandroid/graphics/RectF;->setEmpty()V HSPLandroid/graphics/RectF;->union(FFFF)V -HSPLandroid/graphics/RectF;->union(Landroid/graphics/RectF;)V +HSPLandroid/graphics/RectF;->union(Landroid/graphics/RectF;)V+]Landroid/graphics/RectF;Landroid/graphics/RectF; HSPLandroid/graphics/RectF;->width()F HSPLandroid/graphics/Region$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Region; HSPLandroid/graphics/Region$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -6792,17 +6703,17 @@ HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->without(Landro HSPLandroid/graphics/RenderNode$PositionUpdateListener;->callPositionChanged(Ljava/lang/ref/WeakReference;JIIII)Z HSPLandroid/graphics/RenderNode$PositionUpdateListener;->callPositionLost(Ljava/lang/ref/WeakReference;J)Z HSPLandroid/graphics/RenderNode;->(J)V -HSPLandroid/graphics/RenderNode;->(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)V +HSPLandroid/graphics/RenderNode;->(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/RenderNode;->addPositionUpdateListener(Landroid/graphics/RenderNode$PositionUpdateListener;)V HSPLandroid/graphics/RenderNode;->adopt(J)Landroid/graphics/RenderNode; HSPLandroid/graphics/RenderNode;->beginRecording(II)Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/RenderNode;->clearStretch()Z HSPLandroid/graphics/RenderNode;->create(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)Landroid/graphics/RenderNode; HSPLandroid/graphics/RenderNode;->discardDisplayList()V -HSPLandroid/graphics/RenderNode;->endRecording()V +HSPLandroid/graphics/RenderNode;->endRecording()V+]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/RenderNode;->getClipToOutline()Z HSPLandroid/graphics/RenderNode;->getElevation()F -HSPLandroid/graphics/RenderNode;->getMatrix(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/RenderNode;->getMatrix(Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/graphics/RenderNode;->getPivotY()F HSPLandroid/graphics/RenderNode;->getRotationX()F HSPLandroid/graphics/RenderNode;->getRotationY()F @@ -6849,15 +6760,15 @@ HSPLandroid/graphics/RuntimeShader;->setFloatUniform(Ljava/lang/String;FFFFI)V HSPLandroid/graphics/RuntimeShader;->setInputShader(Ljava/lang/String;Landroid/graphics/Shader;)V HSPLandroid/graphics/RuntimeShader;->setUniform(Ljava/lang/String;[FZ)V HSPLandroid/graphics/Shader;->()V -HSPLandroid/graphics/Shader;->(Landroid/graphics/ColorSpace;)V +HSPLandroid/graphics/Shader;->(Landroid/graphics/ColorSpace;)V+]Landroid/graphics/ColorSpace;Landroid/graphics/ColorSpace$Rgb; HSPLandroid/graphics/Shader;->colorSpace()Landroid/graphics/ColorSpace; HSPLandroid/graphics/Shader;->convertColors([I)[J HSPLandroid/graphics/Shader;->detectColorSpace([J)Landroid/graphics/ColorSpace; HSPLandroid/graphics/Shader;->discardNativeInstance()V -HSPLandroid/graphics/Shader;->discardNativeInstanceLocked()V -HSPLandroid/graphics/Shader;->getNativeInstance()J -HSPLandroid/graphics/Shader;->getNativeInstance(Z)J -HSPLandroid/graphics/Shader;->setLocalMatrix(Landroid/graphics/Matrix;)V +HSPLandroid/graphics/Shader;->discardNativeInstanceLocked()V+]Ljava/lang/Runnable;Llibcore/util/NativeAllocationRegistry$CleanerRunner; +HSPLandroid/graphics/Shader;->getNativeInstance()J+]Landroid/graphics/Shader;megamorphic_types +HSPLandroid/graphics/Shader;->getNativeInstance(Z)J+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Shader;megamorphic_types]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; +HSPLandroid/graphics/Shader;->setLocalMatrix(Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/Shader;Landroid/graphics/SweepGradient;,Landroid/graphics/BitmapShader; HSPLandroid/graphics/Shader;->shouldDiscardNativeInstance(Z)Z HSPLandroid/graphics/SurfaceTexture$1;->handleMessage(Landroid/os/Message;)V HSPLandroid/graphics/SurfaceTexture;->(I)V @@ -6874,7 +6785,7 @@ HSPLandroid/graphics/TextureLayer;->(Landroid/graphics/HardwareRenderer;J) HSPLandroid/graphics/TextureLayer;->close()V HSPLandroid/graphics/TextureLayer;->detachSurfaceTexture()V HSPLandroid/graphics/Typeface$Builder;->build()Landroid/graphics/Typeface; -HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String; +HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/res/AssetManager;Landroid/content/res/AssetManager; HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->(Landroid/graphics/fonts/FontFamily;)V HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->build()Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->setStyle(Landroid/graphics/fonts/FontStyle;)Landroid/graphics/Typeface$CustomFallbackBuilder; @@ -6887,10 +6798,10 @@ HSPLandroid/graphics/Typeface;->createFromResources(Landroid/content/res/FontRes HSPLandroid/graphics/Typeface;->createWeightStyle(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->defaultFromStyle(I)Landroid/graphics/Typeface; HSPLandroid/graphics/Typeface;->deserializeFontMap(Ljava/nio/ByteBuffer;Ljava/util/Map;)[J -HSPLandroid/graphics/Typeface;->equals(Ljava/lang/Object;)Z -HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;+]Landroid/util/LruCache;Landroid/util/LruCache; HSPLandroid/graphics/Typeface;->getStyle()I -HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface; +HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface;+]Ljava/util/Map;Landroid/util/ArrayMap; HSPLandroid/graphics/Typeface;->getSystemFontFamilyName()Ljava/lang/String; HSPLandroid/graphics/Typeface;->hasFontFamily(Ljava/lang/String;)Z HSPLandroid/graphics/Typeface;->readString(Ljava/nio/ByteBuffer;)Ljava/lang/String; @@ -7099,7 +7010,7 @@ HSPLandroid/graphics/drawable/BitmapDrawable;->(Landroid/graphics/drawable HSPLandroid/graphics/drawable/BitmapDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/BitmapDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/BitmapDrawable;->clearMutated()V -HSPLandroid/graphics/drawable/BitmapDrawable;->computeBitmapSize()V +HSPLandroid/graphics/drawable/BitmapDrawable;->computeBitmapSize()V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap; HSPLandroid/graphics/drawable/BitmapDrawable;->draw(Landroid/graphics/Canvas;)V HSPLandroid/graphics/drawable/BitmapDrawable;->getBitmap()Landroid/graphics/Bitmap; HSPLandroid/graphics/drawable/BitmapDrawable;->getChangingConfigurations()I @@ -7129,7 +7040,7 @@ HSPLandroid/graphics/drawable/BitmapDrawable;->setTileModeXY(Landroid/graphics/S HSPLandroid/graphics/drawable/BitmapDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V HSPLandroid/graphics/drawable/BitmapDrawable;->setTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/graphics/drawable/BitmapDrawable;->updateDstRectAndInsetsIfDirty()V -HSPLandroid/graphics/drawable/BitmapDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/BitmapDrawable;->updateLocalState(Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/BitmapDrawable;Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/graphics/drawable/BitmapDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;I)V HSPLandroid/graphics/drawable/BitmapDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/ClipDrawable$ClipState;->(Landroid/graphics/drawable/ClipDrawable$ClipState;Landroid/content/res/Resources;)V @@ -7153,13 +7064,13 @@ HSPLandroid/graphics/drawable/ColorDrawable;->(Landroid/graphics/drawable/ HSPLandroid/graphics/drawable/ColorDrawable;->(Landroid/graphics/drawable/ColorDrawable$ColorState;Landroid/content/res/Resources;Landroid/graphics/drawable/ColorDrawable-IA;)V HSPLandroid/graphics/drawable/ColorDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/ColorDrawable;->clearMutated()V -HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/drawable/ColorDrawable;->getAlpha()I HSPLandroid/graphics/drawable/ColorDrawable;->getChangingConfigurations()I HSPLandroid/graphics/drawable/ColorDrawable;->getColor()I HSPLandroid/graphics/drawable/ColorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; -HSPLandroid/graphics/drawable/ColorDrawable;->getOpacity()I -HSPLandroid/graphics/drawable/ColorDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/ColorDrawable;->getOpacity()I+]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/ColorDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable;]Landroid/graphics/Outline;Landroid/graphics/Outline; HSPLandroid/graphics/drawable/ColorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/ColorDrawable;->isStateful()Z HSPLandroid/graphics/drawable/ColorDrawable;->mutate()Landroid/graphics/drawable/Drawable; @@ -7168,7 +7079,7 @@ HSPLandroid/graphics/drawable/ColorDrawable;->setAlpha(I)V HSPLandroid/graphics/drawable/ColorDrawable;->setColor(I)V HSPLandroid/graphics/drawable/ColorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V HSPLandroid/graphics/drawable/ColorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V -HSPLandroid/graphics/drawable/ColorDrawable;->updateLocalState(Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/ColorDrawable;->updateLocalState(Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/ColorDrawable;Landroid/graphics/drawable/ColorDrawable; HSPLandroid/graphics/drawable/ColorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/Drawable$ConstantState;->()V HSPLandroid/graphics/drawable/Drawable$ConstantState;->canApplyTheme()Z @@ -7201,7 +7112,7 @@ HSPLandroid/graphics/drawable/Drawable;->getPadding(Landroid/graphics/Rect;)Z HSPLandroid/graphics/drawable/Drawable;->getState()[I HSPLandroid/graphics/drawable/Drawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/Drawable;->inflateWithAttributes(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/TypedArray;I)V -HSPLandroid/graphics/drawable/Drawable;->invalidateSelf()V +HSPLandroid/graphics/drawable/Drawable;->invalidateSelf()V+]Landroid/graphics/drawable/Drawable$Callback;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/Drawable;->isProjected()Z HSPLandroid/graphics/drawable/Drawable;->isStateful()Z HSPLandroid/graphics/drawable/Drawable;->isVisible()Z @@ -7212,14 +7123,14 @@ HSPLandroid/graphics/drawable/Drawable;->onBoundsChange(Landroid/graphics/Rect;) HSPLandroid/graphics/drawable/Drawable;->onLevelChange(I)Z HSPLandroid/graphics/drawable/Drawable;->onStateChange([I)Z HSPLandroid/graphics/drawable/Drawable;->parseBlendMode(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendMode; -HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I +HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I+]Landroid/content/res/Resources;Landroid/content/res/Resources; HSPLandroid/graphics/drawable/Drawable;->resolveOpacity(II)I HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(FII)F HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(IIIZ)I HSPLandroid/graphics/drawable/Drawable;->scheduleSelf(Ljava/lang/Runnable;J)V HSPLandroid/graphics/drawable/Drawable;->setAutoMirrored(Z)V -HSPLandroid/graphics/drawable/Drawable;->setBounds(IIII)V -HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/Drawable;->setBounds(IIII)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/Drawable;->setBounds(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/Drawable;->setCallback(Landroid/graphics/drawable/Drawable$Callback;)V HSPLandroid/graphics/drawable/Drawable;->setChangingConfigurations(I)V HSPLandroid/graphics/drawable/Drawable;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V @@ -7228,21 +7139,21 @@ HSPLandroid/graphics/drawable/Drawable;->setHotspot(FF)V HSPLandroid/graphics/drawable/Drawable;->setLayoutDirection(I)Z HSPLandroid/graphics/drawable/Drawable;->setLevel(I)Z HSPLandroid/graphics/drawable/Drawable;->setSrcDensityOverride(I)V -HSPLandroid/graphics/drawable/Drawable;->setState([I)Z +HSPLandroid/graphics/drawable/Drawable;->setState([I)Z+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/Drawable;->setTint(I)V HSPLandroid/graphics/drawable/Drawable;->setTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/graphics/drawable/Drawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V -HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V -HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter; -HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; +HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/BlendModeColorFilter;Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter;+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/PorterDuffColorFilter;Landroid/graphics/PorterDuffColorFilter;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->()V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->(Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback-IA;)V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback; HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback; -HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable; -HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->addChild(Landroid/graphics/drawable/Drawable;)I +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->addChild(Landroid/graphics/drawable/Drawable;)I+]Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/StateListDrawable$StateListState;,Landroid/graphics/drawable/AnimationDrawable$AnimationState;]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canApplyTheme()Z HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canConstantState()Z @@ -7284,16 +7195,16 @@ HSPLandroid/graphics/drawable/DrawableContainer;->getOpacity()I HSPLandroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets;+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/NinePatchDrawable; HSPLandroid/graphics/drawable/DrawableContainer;->getOutline(Landroid/graphics/Outline;)V HSPLandroid/graphics/drawable/DrawableContainer;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;]Landroid/graphics/Rect;Landroid/graphics/Rect; -HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/graphics/drawable/DrawableContainer;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;]Landroid/graphics/drawable/DrawableContainer;Landroid/graphics/drawable/AnimatedStateListDrawable;,Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable;,Landroid/graphics/drawable/StateListDrawable;,Landroid/graphics/drawable/AnimationDrawable;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/DrawableContainer;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/StateListDrawable$StateListState;]Landroid/graphics/drawable/DrawableContainer;Landroid/graphics/drawable/StateListDrawable; HSPLandroid/graphics/drawable/DrawableContainer;->isAutoMirrored()Z HSPLandroid/graphics/drawable/DrawableContainer;->isStateful()Z -HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/AnimationDrawable;,Landroid/graphics/drawable/NinePatchDrawable;,Landroid/graphics/drawable/AnimatedVectorDrawable; +HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/DrawableContainer;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/DrawableContainer;->needsMirroring()Z HSPLandroid/graphics/drawable/DrawableContainer;->onBoundsChange(Landroid/graphics/Rect;)V HSPLandroid/graphics/drawable/DrawableContainer;->onStateChange([I)Z -HSPLandroid/graphics/drawable/DrawableContainer;->selectDrawable(I)Z +HSPLandroid/graphics/drawable/DrawableContainer;->selectDrawable(I)Z+]Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/StateListDrawable$StateListState;,Landroid/graphics/drawable/AnimationDrawable$AnimationState;]Landroid/graphics/drawable/DrawableContainer;Landroid/graphics/drawable/AnimationDrawable;,Landroid/graphics/drawable/StateListDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/DrawableContainer;->setAlpha(I)V HSPLandroid/graphics/drawable/DrawableContainer;->setAutoMirrored(Z)V HSPLandroid/graphics/drawable/DrawableContainer;->setColorFilter(Landroid/graphics/ColorFilter;)V @@ -7342,7 +7253,7 @@ HSPLandroid/graphics/drawable/DrawableWrapper;->onLevelChange(I)Z HSPLandroid/graphics/drawable/DrawableWrapper;->onStateChange([I)Z HSPLandroid/graphics/drawable/DrawableWrapper;->setAlpha(I)V HSPLandroid/graphics/drawable/DrawableWrapper;->setColorFilter(Landroid/graphics/ColorFilter;)V -HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/DrawableWrapper;Landroid/graphics/drawable/InsetDrawable;,Landroid/graphics/drawable/RotateDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable;,Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/DrawableWrapper;->setHotspot(FF)V HSPLandroid/graphics/drawable/DrawableWrapper;->setTintBlendMode(Landroid/graphics/BlendMode;)V HSPLandroid/graphics/drawable/DrawableWrapper;->setTintList(Landroid/content/res/ColorStateList;)V @@ -7350,12 +7261,12 @@ HSPLandroid/graphics/drawable/DrawableWrapper;->setVisible(ZZ)Z HSPLandroid/graphics/drawable/DrawableWrapper;->updateLocalState(Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/DrawableWrapper;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->-$$Nest$mcomputeOpacity(Landroid/graphics/drawable/GradientDrawable$GradientState;)V -HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V+][F[F -HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V+][F[F][Landroid/content/res/ColorStateList;[Landroid/content/res/ColorStateList; +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V+]Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/graphics/drawable/GradientDrawable$GradientState; HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->applyDensityScaling(II)V HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->canApplyTheme()Z -HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->computeOpacity()V -HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->computeOpacity()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList; +HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->getChangingConfigurations()I+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList; HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->hasCenterColor()Z HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->newDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; @@ -7368,27 +7279,26 @@ HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setStroke(ILandro HSPLandroid/graphics/drawable/GradientDrawable;->()V HSPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;Landroid/graphics/drawable/GradientDrawable-IA;)V -HSPLandroid/graphics/drawable/GradientDrawable;->(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V HSPLandroid/graphics/drawable/GradientDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->applyThemeChildElements(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/GradientDrawable;->clearMutated()V -HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; -HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z -HSPLandroid/graphics/drawable/GradientDrawable;->getChangingConfigurations()I +HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;,Landroid/graphics/Canvas;]Landroid/graphics/RectF;Landroid/graphics/RectF; +HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;]Landroid/graphics/drawable/GradientDrawable$Orientation;Landroid/graphics/drawable/GradientDrawable$Orientation;]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/GradientDrawable;->getChangingConfigurations()I+]Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/graphics/drawable/GradientDrawable$GradientState; HSPLandroid/graphics/drawable/GradientDrawable;->getColorFilter()Landroid/graphics/ColorFilter; HSPLandroid/graphics/drawable/GradientDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; HSPLandroid/graphics/drawable/GradientDrawable;->getFloatOrFraction(Landroid/content/res/TypedArray;IF)F HSPLandroid/graphics/drawable/GradientDrawable;->getIntrinsicHeight()I HSPLandroid/graphics/drawable/GradientDrawable;->getIntrinsicWidth()I HSPLandroid/graphics/drawable/GradientDrawable;->getOpacity()I -HSPLandroid/graphics/drawable/GradientDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/GradientDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Outline;Landroid/graphics/Outline; HSPLandroid/graphics/drawable/GradientDrawable;->getPadding(Landroid/graphics/Rect;)Z HSPLandroid/graphics/drawable/GradientDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/GradientDrawable;->isOpaque(I)Z HSPLandroid/graphics/drawable/GradientDrawable;->isOpaqueForState()Z -HSPLandroid/graphics/drawable/GradientDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/GradientDrawable;->isStateful()Z+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList; HSPLandroid/graphics/drawable/GradientDrawable;->modulateAlpha(I)I HSPLandroid/graphics/drawable/GradientDrawable;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/GradientDrawable;->onBoundsChange(Landroid/graphics/Rect;)V @@ -7415,12 +7325,12 @@ HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawablePadding(L HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSize(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSolid(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableStroke(Landroid/content/res/TypedArray;)V -HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V -HSPLandroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V +HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/GradientDrawable;Landroid/graphics/drawable/GradientDrawable;]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/Paint;Landroid/graphics/Paint; +HSPLandroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/drawable/Icon; HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/graphics/drawable/Icon;->(I)V -HSPLandroid/graphics/drawable/Icon;->(Landroid/os/Parcel;)V +HSPLandroid/graphics/drawable/Icon;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/graphics/Bitmap$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/graphics/drawable/Icon;->createWithAdaptiveBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/drawable/Icon; HSPLandroid/graphics/drawable/Icon;->createWithBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/drawable/Icon; HSPLandroid/graphics/drawable/Icon;->createWithResource(Landroid/content/Context;I)Landroid/graphics/drawable/Icon; @@ -7438,7 +7348,7 @@ HSPLandroid/graphics/drawable/Icon;->loadDrawableInner(Landroid/content/Context; HSPLandroid/graphics/drawable/Icon;->scaleDownIfNecessary(Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap; HSPLandroid/graphics/drawable/Icon;->setBitmap(Landroid/graphics/Bitmap;)V HSPLandroid/graphics/drawable/Icon;->setTint(I)Landroid/graphics/drawable/Icon; -HSPLandroid/graphics/drawable/Icon;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/graphics/drawable/Icon;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/Icon;Landroid/graphics/drawable/Icon;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->-$$Nest$fputmThemeAttrs(Landroid/graphics/drawable/InsetDrawable$InsetState;[I)V HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->applyDensityScaling(II)V @@ -7456,7 +7366,7 @@ HSPLandroid/graphics/drawable/InsetDrawable;->(Landroid/graphics/drawable/ HSPLandroid/graphics/drawable/InsetDrawable;->(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;Landroid/graphics/drawable/InsetDrawable-IA;)V HSPLandroid/graphics/drawable/InsetDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/InsetDrawable;->getInset(Landroid/content/res/TypedArray;ILandroid/graphics/drawable/InsetDrawable$InsetValue;)Landroid/graphics/drawable/InsetDrawable$InsetValue; -HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V +HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/InsetDrawable;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/InsetDrawable$InsetValue;Landroid/graphics/drawable/InsetDrawable$InsetValue; HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicHeight()I HSPLandroid/graphics/drawable/InsetDrawable;->getIntrinsicWidth()I HSPLandroid/graphics/drawable/InsetDrawable;->getOpacity()I @@ -7468,7 +7378,7 @@ HSPLandroid/graphics/drawable/InsetDrawable;->onBoundsChange(Landroid/graphics/R HSPLandroid/graphics/drawable/InsetDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/InsetDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->(I)V -HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable$ConstantState;missing_types]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/Drawable$ConstantState;megamorphic_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->applyDensityScaling(II)V HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->setDensity(I)V @@ -7480,7 +7390,7 @@ HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->applyDensityScaling(II) HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->canApplyTheme()Z HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->canConstantState()Z HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getChangingConfigurations()I -HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getOpacity()I +HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getOpacity()I+]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->invalidateCache()V HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->isStateful()Z HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable()Landroid/graphics/drawable/Drawable; @@ -7488,7 +7398,7 @@ HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable(Landroid/co HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->onDensityChanged(II)V HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->setDensity(I)V HSPLandroid/graphics/drawable/LayerDrawable;->()V -HSPLandroid/graphics/drawable/LayerDrawable;->(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/LayerDrawable;->(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/LayerDrawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->([Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/LayerDrawable;->([Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/LayerDrawable$LayerState;)V HSPLandroid/graphics/drawable/LayerDrawable;->addLayer(Landroid/graphics/drawable/Drawable;[IIIIII)Landroid/graphics/drawable/LayerDrawable$ChildDrawable; @@ -7506,23 +7416,23 @@ HSPLandroid/graphics/drawable/LayerDrawable;->findIndexByLayerId(I)I HSPLandroid/graphics/drawable/LayerDrawable;->getChangingConfigurations()I HSPLandroid/graphics/drawable/LayerDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; HSPLandroid/graphics/drawable/LayerDrawable;->getDrawable(I)Landroid/graphics/drawable/Drawable; -HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicHeight()I -HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicHeight()I+]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/graphics/drawable/LayerDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/LayerDrawable;missing_types]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->getNumberOfLayers()I -HSPLandroid/graphics/drawable/LayerDrawable;->getOpacity()I +HSPLandroid/graphics/drawable/LayerDrawable;->getOpacity()I+]Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable$LayerState;,Landroid/graphics/drawable/TransitionDrawable$TransitionState; HSPLandroid/graphics/drawable/LayerDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->getPadding(Landroid/graphics/Rect;)Z+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/LayerDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/LayerDrawable;->inflateLayers(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V -HSPLandroid/graphics/drawable/LayerDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/graphics/drawable/LayerDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable$LayerState;,Landroid/graphics/drawable/RippleDrawable$RippleState;,Landroid/graphics/drawable/TransitionDrawable$TransitionState;]Landroid/graphics/drawable/LayerDrawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->isAutoMirrored()Z HSPLandroid/graphics/drawable/LayerDrawable;->isProjected()Z HSPLandroid/graphics/drawable/LayerDrawable;->isStateful()Z -HSPLandroid/graphics/drawable/LayerDrawable;->jumpToCurrentState()V -HSPLandroid/graphics/drawable/LayerDrawable;->mutate()Landroid/graphics/drawable/Drawable; +HSPLandroid/graphics/drawable/LayerDrawable;->jumpToCurrentState()V+]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/graphics/drawable/LayerDrawable;->mutate()Landroid/graphics/drawable/Drawable;+]Landroid/graphics/drawable/LayerDrawable;missing_types]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->onBoundsChange(Landroid/graphics/Rect;)V HSPLandroid/graphics/drawable/LayerDrawable;->onStateChange([I)Z -HSPLandroid/graphics/drawable/LayerDrawable;->refreshChildPadding(ILandroid/graphics/drawable/LayerDrawable$ChildDrawable;)Z+]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/graphics/drawable/LayerDrawable;->refreshChildPadding(ILandroid/graphics/drawable/LayerDrawable$ChildDrawable;)Z+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/LayerDrawable;->refreshPadding()V HSPLandroid/graphics/drawable/LayerDrawable;->resolveGravity(IIIII)I HSPLandroid/graphics/drawable/LayerDrawable;->resumeChildInvalidation()V @@ -7538,10 +7448,10 @@ HSPLandroid/graphics/drawable/LayerDrawable;->setLayerInset(IIIII)V HSPLandroid/graphics/drawable/LayerDrawable;->setPaddingMode(I)V HSPLandroid/graphics/drawable/LayerDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V HSPLandroid/graphics/drawable/LayerDrawable;->setTintList(Landroid/content/res/ColorStateList;)V -HSPLandroid/graphics/drawable/LayerDrawable;->setVisible(ZZ)Z +HSPLandroid/graphics/drawable/LayerDrawable;->setVisible(ZZ)Z+]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/graphics/drawable/LayerDrawable;->suspendChildInvalidation()V HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V -HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/LayerDrawable;Landroid/graphics/drawable/LayerDrawable;,Landroid/graphics/drawable/RippleDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V+]Landroid/graphics/drawable/LayerDrawable;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/LayerDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/NinePatchDrawable$$ExternalSyntheticLambda0;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V @@ -7639,11 +7549,11 @@ HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->newDrawable(Landroid/ HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->onDensityChanged(II)V HSPLandroid/graphics/drawable/RippleDrawable;->()V HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V -HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V +HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;Landroid/graphics/drawable/RippleDrawable-IA;)V HSPLandroid/graphics/drawable/RippleDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/RippleDrawable;->canApplyTheme()Z -HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V +HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->clearHotspots()V HSPLandroid/graphics/drawable/RippleDrawable;->computeRadius()F HSPLandroid/graphics/drawable/RippleDrawable;->createAnimationProperties(FFFFFF)Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties; @@ -7651,22 +7561,22 @@ HSPLandroid/graphics/drawable/RippleDrawable;->createConstantState(Landroid/grap HSPLandroid/graphics/drawable/RippleDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/RippleDrawable$RippleState; HSPLandroid/graphics/drawable/RippleDrawable;->draw(Landroid/graphics/Canvas;)V HSPLandroid/graphics/drawable/RippleDrawable;->drawBackgroundAndRipples(Landroid/graphics/Canvas;)V -HSPLandroid/graphics/drawable/RippleDrawable;->drawContent(Landroid/graphics/Canvas;)V -HSPLandroid/graphics/drawable/RippleDrawable;->drawPatterned(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/RippleDrawable;->drawContent(Landroid/graphics/Canvas;)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable; +HSPLandroid/graphics/drawable/RippleDrawable;->drawPatterned(Landroid/graphics/Canvas;)V+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;Landroid/graphics/drawable/RippleAnimationSession$AnimationProperties;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/RippleAnimationSession;Landroid/graphics/drawable/RippleAnimationSession; HSPLandroid/graphics/drawable/RippleDrawable;->drawPatternedBackground(Landroid/graphics/Canvas;FF)V HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedAnimation()V HSPLandroid/graphics/drawable/RippleDrawable;->exitPatternedBackgroundAnimation()V HSPLandroid/graphics/drawable/RippleDrawable;->getComputedRadius()I HSPLandroid/graphics/drawable/RippleDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; -HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect; +HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect;+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->getMaskType()I HSPLandroid/graphics/drawable/RippleDrawable;->getOpacity()I -HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V +HSPLandroid/graphics/drawable/RippleDrawable;->getOutline(Landroid/graphics/Outline;)V+]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/InsetDrawable;,Landroid/graphics/drawable/GradientDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf()V HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf(Z)V HSPLandroid/graphics/drawable/RippleDrawable;->isBounded()Z+]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; -HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z +HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z+]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/drawable/RippleDrawable; HSPLandroid/graphics/drawable/RippleDrawable;->isStateful()Z HSPLandroid/graphics/drawable/RippleDrawable;->jumpToCurrentState()V HSPLandroid/graphics/drawable/RippleDrawable;->mutate()Landroid/graphics/drawable/Drawable; @@ -7727,10 +7637,8 @@ HSPLandroid/graphics/drawable/RippleShader;->setRadius(F)V HSPLandroid/graphics/drawable/RippleShader;->setResolution(FF)V HSPLandroid/graphics/drawable/RippleShader;->setShader(Landroid/graphics/Shader;)V HSPLandroid/graphics/drawable/RippleShader;->setTouch(FF)V -HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->-$$Nest$fgetmThemeAttrs(Landroid/graphics/drawable/RotateDrawable$RotateState;)[I HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; -HSPLandroid/graphics/drawable/RotateDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/RotateDrawable;->draw(Landroid/graphics/Canvas;)V HSPLandroid/graphics/drawable/RotateDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/RotateDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState; @@ -7804,7 +7712,7 @@ HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->(Landro HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->getChangingConfigurations()I HSPLandroid/graphics/drawable/TransitionDrawable;->([Landroid/graphics/drawable/Drawable;)V HSPLandroid/graphics/drawable/TransitionDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState; -HSPLandroid/graphics/drawable/TransitionDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/TransitionDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/drawable/TransitionDrawable;Landroid/graphics/drawable/TransitionDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/ColorDrawable; HSPLandroid/graphics/drawable/TransitionDrawable;->setCrossFadeEnabled(Z)V HSPLandroid/graphics/drawable/TransitionDrawable;->startTransition(I)V HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->canApplyTheme()Z @@ -7825,22 +7733,22 @@ HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getPropertyIndex(Ljava/ HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->isStateful()Z HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->onStateChange([I)Z -HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/content/res/ComplexColor;Landroid/content/res/ColorStateList;,Landroid/content/res/GradientColor;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/Shader;Landroid/graphics/LinearGradient;,Landroid/graphics/RadialGradient;]Landroid/content/res/GradientColor;Landroid/content/res/GradientColor; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-$$Nest$fgetmChangingConfigurations(Landroid/graphics/drawable/VectorDrawable$VGroup;)I HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->-$$Nest$fgetmNativePtr(Landroid/graphics/drawable/VectorDrawable$VGroup;)J HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->()V -HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V -HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VFullPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VClipPath; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->canApplyTheme()Z HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getGroupName()Ljava/lang/String; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativePtr()J -HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getProperty(Ljava/lang/String;)Landroid/util/Property; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->isStateful()Z HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z -HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V +HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/graphics/drawable/VectorDrawable$VObject;Landroid/graphics/drawable/VectorDrawable$VClipPath;,Landroid/graphics/drawable/VectorDrawable$VGroup;,Landroid/graphics/drawable/VectorDrawable$VFullPath; HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V HSPLandroid/graphics/drawable/VectorDrawable$VObject;->()V HSPLandroid/graphics/drawable/VectorDrawable$VObject;->isTreeValid()Z @@ -7850,25 +7758,25 @@ HSPLandroid/graphics/drawable/VectorDrawable$VPath;->(Landroid/graphics/dr HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getPathName()Ljava/lang/String; HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getProperty(Ljava/lang/String;)Landroid/util/Property; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->-$$Nest$mcreateNativeTree(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyDensityScaling(II)V HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyTheme(Landroid/content/res/Resources$Theme;)V HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canApplyTheme()Z -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canReuseCache()Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canReuseCache()Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTree(Landroid/graphics/drawable/VectorDrawable$VGroup;)V -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->finalize()V -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getAlpha()F +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getAlpha()F+]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getChangingConfigurations()I -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getNativeRenderer()J -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getNativeRenderer()J+]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr; +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->isStateful()Z+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onStateChange([I)Z -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setAlpha(F)Z HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setDensity(I)Z -HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V +HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->updateCacheStates()V HSPLandroid/graphics/drawable/VectorDrawable;->-$$Nest$smnAddChild(JJ)V HSPLandroid/graphics/drawable/VectorDrawable;->-$$Nest$smnCreateFullPath()J @@ -7895,31 +7803,31 @@ HSPLandroid/graphics/drawable/VectorDrawable;->applyTheme(Landroid/content/res/R HSPLandroid/graphics/drawable/VectorDrawable;->canApplyTheme()Z HSPLandroid/graphics/drawable/VectorDrawable;->clearMutated()V HSPLandroid/graphics/drawable/VectorDrawable;->computeVectorSize()V -HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/ColorFilter;Landroid/graphics/PorterDuffColorFilter;,Landroid/graphics/BlendModeColorFilter;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/graphics/drawable/VectorDrawable;->getAlpha()I HSPLandroid/graphics/drawable/VectorDrawable;->getChangingConfigurations()I HSPLandroid/graphics/drawable/VectorDrawable;->getColorFilter()Landroid/graphics/ColorFilter; HSPLandroid/graphics/drawable/VectorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState; HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicHeight()I -HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicWidth()I +HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicWidth()I+]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/VectorDrawable;->getNativeTree()J HSPLandroid/graphics/drawable/VectorDrawable;->getOpacity()I HSPLandroid/graphics/drawable/VectorDrawable;->getPixelSize()F HSPLandroid/graphics/drawable/VectorDrawable;->getTargetByName(Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V -HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V +HSPLandroid/graphics/drawable/VectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Lcom/android/internal/util/VirtualRefBasePtr;Lcom/android/internal/util/VirtualRefBasePtr;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup; +HSPLandroid/graphics/drawable/VectorDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/graphics/drawable/VectorDrawable$VClipPath;Landroid/graphics/drawable/VectorDrawable$VClipPath;]Ljava/util/Stack;Ljava/util/Stack;]Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/graphics/drawable/VectorDrawable$VGroup;]Landroid/graphics/drawable/VectorDrawable$VFullPath;Landroid/graphics/drawable/VectorDrawable$VFullPath; HSPLandroid/graphics/drawable/VectorDrawable;->isAutoMirrored()Z -HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z +HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState; HSPLandroid/graphics/drawable/VectorDrawable;->mutate()Landroid/graphics/drawable/Drawable; HSPLandroid/graphics/drawable/VectorDrawable;->needMirroring()Z -HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z +HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V HSPLandroid/graphics/drawable/VectorDrawable;->setAlpha(I)V HSPLandroid/graphics/drawable/VectorDrawable;->setAutoMirrored(Z)V HSPLandroid/graphics/drawable/VectorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V HSPLandroid/graphics/drawable/VectorDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V HSPLandroid/graphics/drawable/VectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V -HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V +HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V+]Landroid/graphics/drawable/VectorDrawable;Landroid/graphics/drawable/VectorDrawable; HSPLandroid/graphics/drawable/VectorDrawable;->updateLocalState(Landroid/content/res/Resources;)V HSPLandroid/graphics/drawable/VectorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V+]Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/graphics/drawable/shapes/OvalShape;->()V @@ -7985,7 +7893,7 @@ HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->()V HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setIndent(FI)V HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setTabStops([FF)V HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setWidth(F)V -HSPLandroid/graphics/text/LineBreaker$Result;->(J)V +HSPLandroid/graphics/text/LineBreaker$Result;->(J)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/text/LineBreaker$Result;->getEndLineHyphenEdit(I)I HSPLandroid/graphics/text/LineBreaker$Result;->getLineAscent(I)F HSPLandroid/graphics/text/LineBreaker$Result;->getLineBreakOffset(I)I @@ -7994,13 +7902,12 @@ HSPLandroid/graphics/text/LineBreaker$Result;->getLineDescent(I)F HSPLandroid/graphics/text/LineBreaker$Result;->getLineWidth(I)F HSPLandroid/graphics/text/LineBreaker$Result;->getStartLineHyphenEdit(I)I HSPLandroid/graphics/text/LineBreaker$Result;->hasLineTab(I)Z -HSPLandroid/graphics/text/LineBreaker;->(III[I)V -HSPLandroid/graphics/text/LineBreaker;->computeLineBreaks(Landroid/graphics/text/MeasuredText;Landroid/graphics/text/LineBreaker$ParagraphConstraints;I)Landroid/graphics/text/LineBreaker$Result; +HSPLandroid/graphics/text/LineBreaker;->computeLineBreaks(Landroid/graphics/text/MeasuredText;Landroid/graphics/text/LineBreaker$ParagraphConstraints;I)Landroid/graphics/text/LineBreaker$Result;+]Landroid/graphics/text/MeasuredText;Landroid/graphics/text/MeasuredText; HSPLandroid/graphics/text/MeasuredText$Builder;->([C)V HSPLandroid/graphics/text/MeasuredText$Builder;->appendReplacementRun(Landroid/graphics/Paint;IF)Landroid/graphics/text/MeasuredText$Builder; HSPLandroid/graphics/text/MeasuredText$Builder;->appendStyleRun(Landroid/graphics/Paint;IZ)Landroid/graphics/text/MeasuredText$Builder; -HSPLandroid/graphics/text/MeasuredText$Builder;->appendStyleRun(Landroid/graphics/Paint;Landroid/graphics/text/LineBreakConfig;IZ)Landroid/graphics/text/MeasuredText$Builder; -HSPLandroid/graphics/text/MeasuredText$Builder;->build()Landroid/graphics/text/MeasuredText; +HSPLandroid/graphics/text/MeasuredText$Builder;->appendStyleRun(Landroid/graphics/Paint;Landroid/graphics/text/LineBreakConfig;IZ)Landroid/graphics/text/MeasuredText$Builder;+]Landroid/graphics/Paint;Landroid/text/TextPaint;]Landroid/graphics/text/LineBreakConfig;Landroid/graphics/text/LineBreakConfig; +HSPLandroid/graphics/text/MeasuredText$Builder;->build()Landroid/graphics/text/MeasuredText;+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/graphics/text/MeasuredText$Builder;->ensureNativePtrNoReuse()V HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(I)Landroid/graphics/text/MeasuredText$Builder; HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(Z)Landroid/graphics/text/MeasuredText$Builder; @@ -8106,7 +8013,6 @@ HSPLandroid/hardware/camera2/CameraCharacteristics$Key;->equals(Ljava/lang/Objec HSPLandroid/hardware/camera2/CameraCharacteristics$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; HSPLandroid/hardware/camera2/CameraCharacteristics;->-$$Nest$fgetmLock(Landroid/hardware/camera2/CameraCharacteristics;)Ljava/lang/Object; HSPLandroid/hardware/camera2/CameraCharacteristics;->-$$Nest$fputmFoldedDeviceState(Landroid/hardware/camera2/CameraCharacteristics;Z)V -HSPLandroid/hardware/camera2/CameraCharacteristics;->(Landroid/hardware/camera2/impl/CameraMetadataNative;)V HSPLandroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; HSPLandroid/hardware/camera2/CameraCharacteristics;->getDeviceStateListener()Landroid/hardware/camera2/CameraManager$DeviceStateListener; HSPLandroid/hardware/camera2/CameraCharacteristics;->overrideProperty(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; @@ -8114,7 +8020,6 @@ HSPLandroid/hardware/camera2/CameraManager$AvailabilityCallback;->()V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;->compare(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$3;->(Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Landroid/hardware/camera2/CameraManager$AvailabilityCallback;)V -HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$6;->(Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Ljava/lang/String;Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Ljava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->asBinder()Landroid/os/IBinder; HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->cameraIdHasConcurrentStreamsLocked(Ljava/lang/String;)Z HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->connectCameraServiceLocked()V @@ -8122,23 +8027,18 @@ HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->extractCameraId HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->get()Landroid/hardware/camera2/CameraManager$CameraManagerGlobal; HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->getCameraIdList()[Ljava/lang/String; HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->getCameraService()Landroid/hardware/ICameraService; -HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->isAvailable(I)Z HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onCameraAccessPrioritiesChanged()V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onStatusChanged(ILjava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onStatusChangedLocked(ILjava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onTorchStatusChanged(ILjava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onTorchStatusChangedLocked(ILjava/lang/String;)V HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->postSingleAccessPriorityChangeUpdate(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Ljava/util/concurrent/Executor;)V -HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->postSingleUpdate(Landroid/hardware/camera2/CameraManager$AvailabilityCallback;Ljava/util/concurrent/Executor;Ljava/lang/String;Ljava/lang/String;I)V -HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->registerDeviceStateListener(Landroid/hardware/camera2/CameraCharacteristics;Landroid/content/Context;)V -HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->(Landroid/content/Context;)V HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->addDeviceStateListener(Landroid/hardware/camera2/CameraManager$DeviceStateListener;)V HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->handleStateChange(I)V HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->onBaseStateChanged(I)V HSPLandroid/hardware/camera2/CameraManager$FoldStateListener;->onStateChanged(I)V HSPLandroid/hardware/camera2/CameraManager;->(Landroid/content/Context;)V HSPLandroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics; -HSPLandroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;Z)Landroid/hardware/camera2/CameraCharacteristics;+]Landroid/hardware/camera2/CameraManager;Landroid/hardware/camera2/CameraManager;]Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;]Landroid/hardware/ICameraService;Landroid/hardware/ICameraService$Stub$Proxy;]Landroid/content/Context;Landroid/app/ContextImpl;]Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative;]Ljava/util/Map;Ljava/util/HashMap; HSPLandroid/hardware/camera2/CameraManager;->getCameraIdList()[Ljava/lang/String; HSPLandroid/hardware/camera2/CameraManager;->getDisplaySize()Landroid/util/Size; HSPLandroid/hardware/camera2/CameraManager;->getPhysicalCameraMultiResolutionConfigs(Ljava/lang/String;Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/ICameraService;)Ljava/util/Map; @@ -8157,7 +8057,7 @@ HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->()V HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->finalize()V HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object; HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/hardware/camera2/impl/GetCommand;megamorphic_types -HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getBase(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;+]Landroid/hardware/camera2/impl/CameraMetadataNative$Key;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;]Landroid/hardware/camera2/marshal/Marshaler;megamorphic_types]Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative; +HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getBase(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;+]Landroid/hardware/camera2/impl/CameraMetadataNative$Key;Landroid/hardware/camera2/impl/CameraMetadataNative$Key;]Landroid/hardware/camera2/marshal/Marshaler;megamorphic_types]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Landroid/hardware/camera2/impl/CameraMetadataNative;Landroid/hardware/camera2/impl/CameraMetadataNative; HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->move(Landroid/hardware/camera2/impl/CameraMetadataNative;)Landroid/hardware/camera2/impl/CameraMetadataNative; HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->readValues(I)[B HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setCameraId(I)V @@ -8171,7 +8071,7 @@ HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->equals(Ljava HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->hashCode()I HSPLandroid/hardware/camera2/marshal/MarshalRegistry;->getMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler;+]Ljava/util/HashMap;Ljava/util/HashMap; HSPLandroid/hardware/camera2/marshal/Marshaler;->(Landroid/hardware/camera2/marshal/MarshalQueryable;Landroid/hardware/camera2/utils/TypeReference;I)V -HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object;+]Landroid/hardware/camera2/marshal/Marshaler;Landroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;,Landroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;,Landroid/hardware/camera2/marshal/impl/MarshalQueryablePair$MarshalerPair;]Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller;Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$1;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$2;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$3;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$5;]Ljava/lang/Class;Ljava/lang/Class; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray$MarshalerArray;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object;+]Landroid/hardware/camera2/marshal/Marshaler;Landroid/hardware/camera2/marshal/impl/MarshalQueryableMeteringRectangle$MarshalerMeteringRectangle;,Landroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;,Landroid/hardware/camera2/marshal/impl/MarshalQueryablePair$MarshalerPair;]Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller;Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$1;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$2;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$3;,Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray$PrimitiveArrayFiller$5;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Boolean; @@ -8185,7 +8085,7 @@ HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$Ma HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class; -HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->unmarshalObject(Ljava/nio/ByteBuffer;)Ljava/lang/Object; +HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive$MarshalerPrimitive;->unmarshalObject(Ljava/nio/ByteBuffer;)Ljava/lang/Object;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler; HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableRange;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z @@ -8203,7 +8103,7 @@ HSPLandroid/hardware/camera2/utils/ConcurrentCameraIdCombination;->(Landro HSPLandroid/hardware/camera2/utils/ConcurrentCameraIdCombination;->getConcurrentCameraIdCombination()Ljava/util/Set; HSPLandroid/hardware/camera2/utils/ConcurrentCameraIdCombination;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/hardware/camera2/utils/TypeReference;->containsTypeVariable(Ljava/lang/reflect/Type;)Z+]Ljava/lang/Class;Ljava/lang/Class; -HSPLandroid/hardware/camera2/utils/TypeReference;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Ljava/lang/Class; +HSPLandroid/hardware/camera2/utils/TypeReference;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Llibcore/reflect/ParameterizedTypeImpl;,Llibcore/reflect/GenericArrayTypeImpl;,Ljava/lang/Class; HSPLandroid/hardware/camera2/utils/TypeReference;->getComponentType()Landroid/hardware/camera2/utils/TypeReference; HSPLandroid/hardware/camera2/utils/TypeReference;->getComponentType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type; HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType()Ljava/lang/Class; @@ -8215,7 +8115,6 @@ HSPLandroid/hardware/devicestate/DeviceStateInfo$1;->createFromParcel(Landroid/o HSPLandroid/hardware/devicestate/DeviceStateInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/hardware/devicestate/DeviceStateInfo;->()V HSPLandroid/hardware/devicestate/DeviceStateInfo;->([III)V -HSPLandroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;->onBaseStateChanged(I)V HSPLandroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;->onSupportedStatesChanged([I)V HSPLandroid/hardware/devicestate/DeviceStateManager;->()V HSPLandroid/hardware/devicestate/DeviceStateManager;->registerCallback(Ljava/util/concurrent/Executor;Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;)V @@ -8225,13 +8124,7 @@ HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWra HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda1;->run()V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda2;->(Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;[I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper$$ExternalSyntheticLambda2;->run()V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->$r8$lambda$6u3slsjk-8VI_sfftus20TtEKlU(Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;[I)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->$r8$lambda$FiFeo7UDl_Jzgv3ijVmtwGDn8K0(Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;I)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->$r8$lambda$yXCJCBW7G4qvEFV6LoxaomGrhSE(Landroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->(Landroid/hardware/devicestate/DeviceStateManager$DeviceStateCallback;Ljava/util/concurrent/Executor;)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->lambda$notifyBaseStateChanged$1(I)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->lambda$notifyStateChanged$2(I)V -HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->lambda$notifySupportedStatesChanged$0([I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->notifyBaseStateChanged(I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->notifyStateChanged(I)V HSPLandroid/hardware/devicestate/DeviceStateManagerGlobal$DeviceStateCallbackWrapper;->notifySupportedStatesChanged([I)V @@ -8280,7 +8173,7 @@ HSPLandroid/hardware/display/DeviceProductInfo$ManufactureDate$1;->createFromPar HSPLandroid/hardware/display/DeviceProductInfo$ManufactureDate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/hardware/display/DeviceProductInfo$ManufactureDate;->(Landroid/os/Parcel;)V HSPLandroid/hardware/display/DeviceProductInfo$ManufactureDate;->equals(Ljava/lang/Object;)Z -HSPLandroid/hardware/display/DeviceProductInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/hardware/display/DeviceProductInfo;->(Landroid/os/Parcel;)V HSPLandroid/hardware/display/DeviceProductInfo;->(Landroid/os/Parcel;Landroid/hardware/display/DeviceProductInfo-IA;)V HSPLandroid/hardware/display/DeviceProductInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/hardware/display/DisplayManager$$ExternalSyntheticLambda0;->()V @@ -8298,7 +8191,7 @@ HSPLandroid/hardware/display/DisplayManager;->getDisplay(I)Landroid/view/Display HSPLandroid/hardware/display/DisplayManager;->getDisplays()[Landroid/view/Display; HSPLandroid/hardware/display/DisplayManager;->getDisplays(Ljava/lang/String;)[Landroid/view/Display; HSPLandroid/hardware/display/DisplayManager;->getDisplays([ILjava/util/function/Predicate;)[Landroid/view/Display;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/function/Predicate;Landroid/hardware/display/DisplayManager$$ExternalSyntheticLambda2;,Landroid/hardware/display/DisplayManager$$ExternalSyntheticLambda0; -HSPLandroid/hardware/display/DisplayManager;->getOrCreateDisplay(IZ)Landroid/view/Display;+]Landroid/hardware/display/DisplayManager$WeakDisplayCache;Landroid/hardware/display/DisplayManager$WeakDisplayCache;]Landroid/content/Context;missing_types]Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal;]Landroid/view/Display;Landroid/view/Display; +HSPLandroid/hardware/display/DisplayManager;->getOrCreateDisplay(IZ)Landroid/view/Display;+]Landroid/hardware/display/DisplayManager$WeakDisplayCache;Landroid/hardware/display/DisplayManager$WeakDisplayCache;]Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal;]Landroid/view/Display;Landroid/view/Display;]Landroid/content/Context;missing_types HSPLandroid/hardware/display/DisplayManager;->getStableDisplaySize()Landroid/graphics/Point; HSPLandroid/hardware/display/DisplayManager;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; HSPLandroid/hardware/display/DisplayManager;->isPresentationDisplay(Landroid/view/Display;)Z @@ -8313,14 +8206,13 @@ HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate$$Exter HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->$r8$lambda$aO0d1U2yv7-42_0MvY8uEf7AtpE(Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;JLandroid/os/Message;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->(Landroid/hardware/display/DisplayManager$DisplayListener;Ljava/util/concurrent/Executor;J)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->clearEvents()V -HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleMessage(Landroid/os/Message;)V+]Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/view/Display$HdrSdrRatioListenerWrapper; +HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleMessage(Landroid/os/Message;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->lambda$sendDisplayEvent$0(JLandroid/os/Message;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->sendDisplayEvent(IILandroid/view/DisplayInfo;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->(Landroid/hardware/display/DisplayManagerGlobal;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->(Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback-IA;)V HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->onDisplayEvent(II)V HSPLandroid/hardware/display/DisplayManagerGlobal;->-$$Nest$fgetmDm(Landroid/hardware/display/DisplayManagerGlobal;)Landroid/hardware/display/IDisplayManager; -HSPLandroid/hardware/display/DisplayManagerGlobal;->-$$Nest$mhandleDisplayEvent(Landroid/hardware/display/DisplayManagerGlobal;II)V HSPLandroid/hardware/display/DisplayManagerGlobal;->(Landroid/hardware/display/IDisplayManager;)V HSPLandroid/hardware/display/DisplayManagerGlobal;->calculateEventsMaskLocked()I HSPLandroid/hardware/display/DisplayManagerGlobal;->findDisplayListenerLocked(Landroid/hardware/display/DisplayManager$DisplayListener;)I @@ -8335,7 +8227,7 @@ HSPLandroid/hardware/display/DisplayManagerGlobal;->getLooperForHandler(Landroid HSPLandroid/hardware/display/DisplayManagerGlobal;->getPreferredWideGamutColorSpace()Landroid/graphics/ColorSpace; HSPLandroid/hardware/display/DisplayManagerGlobal;->getStableDisplaySize()Landroid/graphics/Point; HSPLandroid/hardware/display/DisplayManagerGlobal;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus; -HSPLandroid/hardware/display/DisplayManagerGlobal;->handleDisplayEvent(II)V+]Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;Landroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList; +HSPLandroid/hardware/display/DisplayManagerGlobal;->handleDisplayEvent(II)V HSPLandroid/hardware/display/DisplayManagerGlobal;->registerCallbackIfNeededLocked()V HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;J)V HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Ljava/util/concurrent/Executor;J)V @@ -8349,7 +8241,7 @@ HSPLandroid/hardware/display/IColorDisplayManager$Stub$Proxy;->isNightDisplayAct HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayIds(Z)[I -HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayInfo(I)Landroid/view/DisplayInfo;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/hardware/display/IDisplayManager$Stub$Proxy;Landroid/hardware/display/IDisplayManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayInfo(I)Landroid/view/DisplayInfo; HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getOverlaySupport()Landroid/hardware/OverlayProperties; HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getPreferredWideGamutColorSpaceId()I HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getStableDisplaySize()Landroid/graphics/Point; @@ -8410,7 +8302,6 @@ HSPLandroid/hardware/input/InputManagerGlobal;->getInputDevice(I)Landroid/view/I HSPLandroid/hardware/input/InputManagerGlobal;->getInputDeviceIds()[I+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/hardware/input/InputManagerGlobal;->getInputManagerService()Landroid/hardware/input/IInputManager; HSPLandroid/hardware/input/InputManagerGlobal;->getInstance()Landroid/hardware/input/InputManagerGlobal; -HSPLandroid/hardware/input/InputManagerGlobal;->onInputDevicesChanged([I)V+]Landroid/view/InputDevice;Landroid/view/InputDevice;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/hardware/input/InputManagerGlobal;->populateInputDevicesLocked()V HSPLandroid/hardware/input/InputManagerGlobal;->registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V HSPLandroid/hardware/input/InputSettings;->isStylusPointerIconEnabled(Landroid/content/Context;)Z @@ -8472,7 +8363,7 @@ HSPLandroid/hardware/security/keymint/KeyParameter$1;->newArray(I)[Landroid/hard HSPLandroid/hardware/security/keymint/KeyParameter$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/hardware/security/keymint/KeyParameter;->()V HSPLandroid/hardware/security/keymint/KeyParameter;->()V -HSPLandroid/hardware/security/keymint/KeyParameter;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/hardware/security/keymint/KeyParameter;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/hardware/security/keymint/KeyParameter;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/hardware/security/keymint/KeyParameterValue$1;->()V HSPLandroid/hardware/security/keymint/KeyParameterValue$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/security/keymint/KeyParameterValue; @@ -8540,7 +8431,7 @@ HSPLandroid/icu/impl/BMPSet;->initBits()V HSPLandroid/icu/impl/BMPSet;->set32x64Bits([III)V HSPLandroid/icu/impl/CacheValue$NullValue;->isNull()Z HSPLandroid/icu/impl/CacheValue$SoftValue;->(Ljava/lang/Object;)V -HSPLandroid/icu/impl/CacheValue$SoftValue;->get()Ljava/lang/Object; +HSPLandroid/icu/impl/CacheValue$SoftValue;->get()Ljava/lang/Object;+]Ljava/lang/ref/Reference;Ljava/lang/ref/SoftReference; HSPLandroid/icu/impl/CacheValue$SoftValue;->resetIfCleared(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/impl/CacheValue$StrongValue;->get()Ljava/lang/Object; HSPLandroid/icu/impl/CacheValue;->()V @@ -8576,7 +8467,7 @@ HSPLandroid/icu/impl/FormattedStringBuilder;->copyFrom(Landroid/icu/impl/Formatt HSPLandroid/icu/impl/FormattedStringBuilder;->fieldAt(I)Ljava/lang/Object; HSPLandroid/icu/impl/FormattedStringBuilder;->getCapacity()I HSPLandroid/icu/impl/FormattedStringBuilder;->insert(ILjava/lang/CharSequence;IILjava/lang/Object;)I -HSPLandroid/icu/impl/FormattedStringBuilder;->insert(ILjava/lang/CharSequence;Ljava/lang/Object;)I+]Ljava/lang/CharSequence;Ljava/lang/String; +HSPLandroid/icu/impl/FormattedStringBuilder;->insert(ILjava/lang/CharSequence;Ljava/lang/Object;)I+]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/icu/impl/FormattedStringBuilder;->insert(I[C[Ljava/lang/Object;)I HSPLandroid/icu/impl/FormattedStringBuilder;->insertCodePoint(IILjava/lang/Object;)I HSPLandroid/icu/impl/FormattedStringBuilder;->length()I @@ -8587,7 +8478,7 @@ HSPLandroid/icu/impl/FormattedStringBuilder;->toFieldArray()[Ljava/lang/Object; HSPLandroid/icu/impl/FormattedStringBuilder;->toString()Ljava/lang/String; HSPLandroid/icu/impl/FormattedStringBuilder;->unwrapField(Ljava/lang/Object;)Ljava/text/Format$Field; HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->isIntOrGroup(Ljava/lang/Object;)Z -HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextFieldPosition(Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;)Z +HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextFieldPosition(Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;)Z+]Landroid/icu/text/ConstrainedFieldPosition;Landroid/icu/text/ConstrainedFieldPosition;]Ljava/text/FieldPosition;Ljava/text/DontCareFieldPosition; HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextPosition(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/text/ConstrainedFieldPosition;Ljava/text/Format$Field;)Z+]Landroid/icu/text/ConstrainedFieldPosition;Landroid/icu/text/ConstrainedFieldPosition; HSPLandroid/icu/impl/Grego;->dayOfWeek(J)I HSPLandroid/icu/impl/Grego;->dayToFields(J[I)[I @@ -8627,7 +8518,7 @@ HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$Curre HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$FormattingData;->(Ljava/lang/String;)V HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Z)V -HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->fetchFormattingData(Ljava/lang/String;)Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$FormattingData;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable; +HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->fetchFormattingData(Ljava/lang/String;)Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$FormattingData;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->fetchSpacingInfo()Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getFormatInfo(Ljava/lang/String;)Landroid/icu/impl/CurrencyData$CurrencyFormatInfo; HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getSpacingInfo()Landroid/icu/impl/CurrencyData$CurrencySpacingInfo; @@ -8643,7 +8534,7 @@ HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->()V HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->add(Ljava/lang/Object;)V HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->create()Landroid/icu/impl/ICUCurrencyMetaInfo$UniqueList; HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->list()Ljava/util/List; -HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->collect(Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; +HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->collect(Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;+]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable;]Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector; HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->collectRegion(Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;ILandroid/icu/impl/ICUResourceBundle;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceString;,Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable;,Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray;]Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector; HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->currencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->currencyDigits(Ljava/lang/String;Landroid/icu/util/Currency$CurrencyUsage;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits; @@ -8691,7 +8582,7 @@ HSPLandroid/icu/impl/ICUResourceBundle;->-$$Nest$sminstantiateBundle(Ljava/lang/ HSPLandroid/icu/impl/ICUResourceBundle;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V HSPLandroid/icu/impl/ICUResourceBundle;->(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V HSPLandroid/icu/impl/ICUResourceBundle;->addBundleBaseNamesFromClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V -HSPLandroid/icu/impl/ICUResourceBundle;->at(I)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->at(I)Landroid/icu/impl/ICUResourceBundle;+]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray; HSPLandroid/icu/impl/ICUResourceBundle;->at(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle;+]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable; HSPLandroid/icu/impl/ICUResourceBundle;->countPathKeys(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundle;->createBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle; @@ -8715,7 +8606,7 @@ HSPLandroid/icu/impl/ICUResourceBundle;->getAvailEntry(Ljava/lang/String;Ljava/l HSPLandroid/icu/impl/ICUResourceBundle;->getBaseName()Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundle;->getBundle(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle; HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; -HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/impl/ICUResourceBundle; HSPLandroid/icu/impl/ICUResourceBundle;->getDefaultScript(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundle;->getExplicitParent(Ljava/lang/String;)Ljava/lang/String; @@ -8733,30 +8624,30 @@ HSPLandroid/icu/impl/ICUResourceBundle;->getResPathKeys([Ljava/lang/String;I)V HSPLandroid/icu/impl/ICUResourceBundle;->getStringWithFallback(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundle;->getULocale()Landroid/icu/util/ULocale; HSPLandroid/icu/impl/ICUResourceBundle;->getWithFallback(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle; -HSPLandroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/ICUResourceBundle$OpenType;Landroid/icu/impl/ICUResourceBundle$OpenType;]Landroid/icu/impl/CacheBase;Landroid/icu/impl/ICUResourceBundle$1; HSPLandroid/icu/impl/ICUResourceBundle;->setParent(Ljava/util/ResourceBundle;)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->getStringArray()[Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->getType()I -HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;+]Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray;Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGetStringArray()[Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;->getBinary([B)[B HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V -HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->createBundleObject(ILjava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->createBundleObject(ILjava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;+]Landroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getContainerResource(I)I+]Landroid/icu/impl/ICUResourceBundleReader$Container;Landroid/icu/impl/ICUResourceBundleReader$Table16;,Landroid/icu/impl/ICUResourceBundleReader$Table1632;,Landroid/icu/impl/ICUResourceBundleReader$Array32; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getSize()I+]Landroid/icu/impl/ICUResourceBundleReader$Container;Landroid/icu/impl/ICUResourceBundleReader$Table16;,Landroid/icu/impl/ICUResourceBundleReader$Table1632;,Landroid/icu/impl/ICUResourceBundleReader$Array32; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getString(I)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;->getInt()I HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V -HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->getIntVector()[I +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->getIntVector()[I+]Landroid/icu/impl/ICUResourceBundleReader;Landroid/icu/impl/ICUResourceBundleReader; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/ICUResourceBundleReader;Landroid/icu/impl/ICUResourceBundleReader; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->getString()Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->getType()I HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->(Landroid/icu/impl/ICUResourceBundle$WholeBundle;I)V -HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V +HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V+]Landroid/icu/impl/ICUResourceBundleReader;Landroid/icu/impl/ICUResourceBundleReader; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->findString(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->getType()I HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; @@ -8769,11 +8660,11 @@ HSPLandroid/icu/impl/ICUResourceBundleImpl;->getResource()I HSPLandroid/icu/impl/ICUResourceBundleReader$Array16;->(Landroid/icu/impl/ICUResourceBundleReader;I)V HSPLandroid/icu/impl/ICUResourceBundleReader$Array16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->(Landroid/icu/impl/ICUResourceBundleReader;I)V -HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Landroid/icu/impl/ICUResourceBundleReader$Array32;Landroid/icu/impl/ICUResourceBundleReader$Array32; HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->()V HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->getValue(ILandroid/icu/impl/UResource$Value;)Z HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->()V -HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Ljava/nio/CharBuffer;Ljava/nio/ByteBufferAsCharBuffer; HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I @@ -8792,17 +8683,17 @@ HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray(Landro HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getTable()Landroid/icu/impl/UResource$Table; HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getType()I HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; -HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->(I)V HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I -HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;+]Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->makeKey(I)I -HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object; +HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfCleared([Ljava/lang/Object;ILjava/lang/Object;I)Ljava/lang/Object; HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->storeDirectly(I)Z HSPLandroid/icu/impl/ICUResourceBundleReader$Table1632;->(Landroid/icu/impl/ICUResourceBundleReader;I)V HSPLandroid/icu/impl/ICUResourceBundleReader$Table1632;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Landroid/icu/impl/ICUResourceBundleReader$Table1632;Landroid/icu/impl/ICUResourceBundleReader$Table1632; -HSPLandroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I +HSPLandroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I+]Landroid/icu/impl/ICUResourceBundleReader$Table16;Landroid/icu/impl/ICUResourceBundleReader$Table16; HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->()V HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->findTableItem(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;)I HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->findValue(Ljava/lang/CharSequence;Landroid/icu/impl/UResource$Value;)Z @@ -8832,20 +8723,20 @@ HSPLandroid/icu/impl/ICUResourceBundleReader;->getAlias(I)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleReader;->getArray(I)Landroid/icu/impl/ICUResourceBundleReader$Array; HSPLandroid/icu/impl/ICUResourceBundleReader;->getBinary(I[B)[B HSPLandroid/icu/impl/ICUResourceBundleReader;->getChars(II)[C -HSPLandroid/icu/impl/ICUResourceBundleReader;->getFullName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getFullName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/icu/impl/ICUResourceBundleReader;->getIndexesInt(I)I -HSPLandroid/icu/impl/ICUResourceBundleReader;->getInt(I)I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getInt(I)I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLandroid/icu/impl/ICUResourceBundleReader;->getIntVector(I)[I -HSPLandroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I +HSPLandroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLandroid/icu/impl/ICUResourceBundleReader;->getKey16String(I)Ljava/lang/String; HSPLandroid/icu/impl/ICUResourceBundleReader;->getNoFallback()Z HSPLandroid/icu/impl/ICUResourceBundleReader;->getReader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader; HSPLandroid/icu/impl/ICUResourceBundleReader;->getResourceByteOffset(I)I HSPLandroid/icu/impl/ICUResourceBundleReader;->getRootResource()I HSPLandroid/icu/impl/ICUResourceBundleReader;->getString(I)Ljava/lang/String;+]Landroid/icu/impl/ICUResourceBundleReader;Landroid/icu/impl/ICUResourceBundleReader; -HSPLandroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache; -HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache; -HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C +HSPLandroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;]Ljava/nio/CharBuffer;Ljava/nio/ByteBufferAsCharBuffer;]Ljava/lang/CharSequence;Ljava/nio/ByteBufferAsCharBuffer; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table;+]Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;]Landroid/icu/impl/ICUResourceBundleReader$Table;Landroid/icu/impl/ICUResourceBundleReader$Table16;,Landroid/icu/impl/ICUResourceBundleReader$Table1632; +HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C+]Ljava/nio/CharBuffer;Ljava/nio/ByteBufferAsCharBuffer; HSPLandroid/icu/impl/ICUResourceBundleReader;->getTableKeyOffsets(I)[C HSPLandroid/icu/impl/ICUResourceBundleReader;->init(Ljava/nio/ByteBuffer;)V HSPLandroid/icu/impl/ICUResourceBundleReader;->makeKeyStringFromBytes([BI)Ljava/lang/String; @@ -8858,7 +8749,7 @@ HSPLandroid/icu/impl/ICUService;->getKey(Landroid/icu/impl/ICUService$Key;[Ljava HSPLandroid/icu/impl/ICUService;->getKey(Landroid/icu/impl/ICUService$Key;[Ljava/lang/String;Landroid/icu/impl/ICUService$Factory;)Ljava/lang/Object; HSPLandroid/icu/impl/ICUService;->isDefault()Z HSPLandroid/icu/impl/IDNA2003;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; -HSPLandroid/icu/impl/IDNA2003;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; +HSPLandroid/icu/impl/IDNA2003;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;+]Landroid/icu/text/UCharacterIterator;Landroid/icu/impl/ReplaceableUCharacterIterator;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLandroid/icu/impl/IDNA2003;->getSeparatorIndex([CII)I HSPLandroid/icu/impl/IDNA2003;->isLDHChar(I)Z HSPLandroid/icu/impl/IDNA2003;->isLabelSeparator(I)Z @@ -8876,8 +8767,8 @@ HSPLandroid/icu/impl/LocaleIDParser;->getCountry()Ljava/lang/String; HSPLandroid/icu/impl/LocaleIDParser;->getKeyComparator()Ljava/util/Comparator; HSPLandroid/icu/impl/LocaleIDParser;->getKeyword()Ljava/lang/String; HSPLandroid/icu/impl/LocaleIDParser;->getKeywordMap()Ljava/util/Map; -HSPLandroid/icu/impl/LocaleIDParser;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser; -HSPLandroid/icu/impl/LocaleIDParser;->getKeywords()Ljava/util/Iterator; +HSPLandroid/icu/impl/LocaleIDParser;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser;]Ljava/util/Map;Ljava/util/Collections$EmptyMap; +HSPLandroid/icu/impl/LocaleIDParser;->getKeywords()Ljava/util/Iterator;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser;]Ljava/util/Map;Ljava/util/Collections$EmptyMap; HSPLandroid/icu/impl/LocaleIDParser;->getLanguage()Ljava/lang/String; HSPLandroid/icu/impl/LocaleIDParser;->getName()Ljava/lang/String; HSPLandroid/icu/impl/LocaleIDParser;->getScript()Ljava/lang/String; @@ -8892,10 +8783,10 @@ HSPLandroid/icu/impl/LocaleIDParser;->isTerminator(C)Z HSPLandroid/icu/impl/LocaleIDParser;->isTerminatorOrIDSeparator(C)Z HSPLandroid/icu/impl/LocaleIDParser;->next()C HSPLandroid/icu/impl/LocaleIDParser;->parseBaseName()V -HSPLandroid/icu/impl/LocaleIDParser;->parseCountry()I +HSPLandroid/icu/impl/LocaleIDParser;->parseCountry()I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/icu/impl/LocaleIDParser;->parseKeywords()I HSPLandroid/icu/impl/LocaleIDParser;->parseLanguage()I -HSPLandroid/icu/impl/LocaleIDParser;->parseScript()I +HSPLandroid/icu/impl/LocaleIDParser;->parseScript()I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/icu/impl/LocaleIDParser;->parseVariant()I HSPLandroid/icu/impl/LocaleIDParser;->reset()V HSPLandroid/icu/impl/LocaleIDParser;->setKeywordValue(Ljava/lang/String;Ljava/lang/String;)V @@ -8907,7 +8798,7 @@ HSPLandroid/icu/impl/LocaleIDParser;->skipScript()V HSPLandroid/icu/impl/LocaleIDParser;->skipUntilTerminatorOrIDSeparator()V HSPLandroid/icu/impl/Norm2AllModes$ComposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->normalizeAndAppend(Ljava/lang/CharSequence;ZLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V -HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I +HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I+]Landroid/icu/impl/Normalizer2Impl;Landroid/icu/impl/Normalizer2Impl;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/icu/impl/Norm2AllModes$NFKCSingleton;->-$$Nest$sfgetINSTANCE()Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton; HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->-$$Nest$fgetallModes(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Landroid/icu/impl/Norm2AllModes; HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->-$$Nest$fgetexception(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Ljava/lang/RuntimeException; @@ -8924,7 +8815,7 @@ HSPLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->flushAndAppendZeroCC(Lja HSPLandroid/icu/impl/Normalizer2Impl;->addToStartSet(Landroid/icu/util/MutableCodePointTrie;II)V HSPLandroid/icu/impl/Normalizer2Impl;->composeQuickCheck(Ljava/lang/CharSequence;IIZZ)I HSPLandroid/icu/impl/Normalizer2Impl;->decompose(IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V -HSPLandroid/icu/impl/Normalizer2Impl;->decompose(Ljava/lang/CharSequence;IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I +HSPLandroid/icu/impl/Normalizer2Impl;->decompose(Ljava/lang/CharSequence;IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I+]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/icu/impl/Normalizer2Impl;->decomposeAndAppend(Ljava/lang/CharSequence;ZLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V HSPLandroid/icu/impl/Normalizer2Impl;->ensureCanonIterData()Landroid/icu/impl/Normalizer2Impl; HSPLandroid/icu/impl/Normalizer2Impl;->getRawNorm16(I)I @@ -8938,7 +8829,7 @@ HSPLandroid/icu/impl/Normalizer2Impl;->isMaybeOrNonZeroCC(I)Z HSPLandroid/icu/impl/Normalizer2Impl;->mapAlgorithmic(II)I HSPLandroid/icu/impl/OlsonTimeZone;->(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;Ljava/lang/String;)V HSPLandroid/icu/impl/OlsonTimeZone;->clone()Ljava/lang/Object; -HSPLandroid/icu/impl/OlsonTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone; +HSPLandroid/icu/impl/OlsonTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone;+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/impl/OlsonTimeZone;->construct(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;Ljava/lang/String;)V HSPLandroid/icu/impl/OlsonTimeZone;->equals(Ljava/lang/Object;)Z HSPLandroid/icu/impl/OlsonTimeZone;->freeze()Landroid/icu/util/TimeZone; @@ -8946,19 +8837,19 @@ HSPLandroid/icu/impl/OlsonTimeZone;->getCanonicalID()Ljava/lang/String; HSPLandroid/icu/impl/OlsonTimeZone;->getHistoricalOffset(JZII[I)V HSPLandroid/icu/impl/OlsonTimeZone;->getInt(B)I HSPLandroid/icu/impl/OlsonTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; -HSPLandroid/icu/impl/OlsonTimeZone;->getOffset(JZ[I)V +HSPLandroid/icu/impl/OlsonTimeZone;->getOffset(JZ[I)V+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/impl/OlsonTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule; -HSPLandroid/icu/impl/OlsonTimeZone;->hashCode()I +HSPLandroid/icu/impl/OlsonTimeZone;->hashCode()I+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/impl/OlsonTimeZone;->initTransitionRules()V HSPLandroid/icu/impl/OlsonTimeZone;->initialDstOffset()I HSPLandroid/icu/impl/OlsonTimeZone;->initialRawOffset()I HSPLandroid/icu/impl/OlsonTimeZone;->isFrozen()Z HSPLandroid/icu/impl/OlsonTimeZone;->loadRule(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -HSPLandroid/icu/impl/OlsonTimeZone;->toString()Ljava/lang/String; +HSPLandroid/icu/impl/OlsonTimeZone;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/icu/impl/PatternProps;->isWhiteSpace(I)Z HSPLandroid/icu/impl/PatternProps;->skipWhiteSpace(Ljava/lang/CharSequence;I)I HSPLandroid/icu/impl/PatternTokenizer;->()V -HSPLandroid/icu/impl/PatternTokenizer;->next(Ljava/lang/StringBuffer;)I+]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet; +HSPLandroid/icu/impl/PatternTokenizer;->next(Ljava/lang/StringBuffer;)I HSPLandroid/icu/impl/PatternTokenizer;->quoteLiteral(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/PatternTokenizer;->setExtraQuotingCharacters(Landroid/icu/text/UnicodeSet;)Landroid/icu/impl/PatternTokenizer; HSPLandroid/icu/impl/PatternTokenizer;->setPattern(Ljava/lang/String;)Landroid/icu/impl/PatternTokenizer; @@ -8973,14 +8864,14 @@ HSPLandroid/icu/impl/PluralRulesLoader;->getRulesIdForLocale(Landroid/icu/util/U HSPLandroid/icu/impl/RBBIDataWrapper$IsAcceptable;->isDataVersionAcceptable([B)Z HSPLandroid/icu/impl/RBBIDataWrapper$RBBIDataHeader;->()V HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;->()V -HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;->get(Ljava/nio/ByteBuffer;I)Landroid/icu/impl/RBBIDataWrapper$RBBIStateTable; +HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;->get(Ljava/nio/ByteBuffer;I)Landroid/icu/impl/RBBIDataWrapper$RBBIStateTable;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLandroid/icu/impl/RBBIDataWrapper;->()V HSPLandroid/icu/impl/RBBIDataWrapper;->get(Ljava/nio/ByteBuffer;)Landroid/icu/impl/RBBIDataWrapper; HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->(Ljava/lang/String;)V HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getLength()I -HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getText([CI)I +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getText([CI)I+]Landroid/icu/text/Replaceable;Landroid/icu/text/ReplaceableString; HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->next()I+]Landroid/icu/text/Replaceable;Landroid/icu/text/ReplaceableString; -HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->setIndex(I)V +HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->setIndex(I)V+]Landroid/icu/text/Replaceable;Landroid/icu/text/ReplaceableString; HSPLandroid/icu/impl/RuleCharacterIterator;->_advance(I)V HSPLandroid/icu/impl/RuleCharacterIterator;->_current()I HSPLandroid/icu/impl/RuleCharacterIterator;->atEnd()Z @@ -8996,7 +8887,7 @@ HSPLandroid/icu/impl/SimpleFormatterImpl;->format(Ljava/lang/String;[Ljava/lang/ HSPLandroid/icu/impl/SimpleFormatterImpl;->formatPrefixSuffix(Ljava/lang/String;Ljava/text/Format$Field;IILandroid/icu/impl/FormattedStringBuilder;)I HSPLandroid/icu/impl/SimpleFormatterImpl;->formatRawPattern(Ljava/lang/String;II[Ljava/lang/CharSequence;)Ljava/lang/String; HSPLandroid/icu/impl/SimpleFormatterImpl;->getArgumentLimit(Ljava/lang/String;)I -HSPLandroid/icu/impl/SoftCache;->getInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/icu/impl/CacheValue;Landroid/icu/impl/CacheValue$SoftValue;,Landroid/icu/impl/CacheValue$NullValue;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; +HSPLandroid/icu/impl/SoftCache;->getInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/icu/impl/CacheValue;Landroid/icu/impl/CacheValue$SoftValue;]Landroid/icu/impl/SoftCache;Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;,Landroid/icu/util/ULocale$1;,Landroid/icu/impl/ICUResourceBundle$1;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; HSPLandroid/icu/impl/StandardPlural;->fromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; HSPLandroid/icu/impl/StandardPlural;->orNullFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; HSPLandroid/icu/impl/StandardPlural;->orOtherFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural; @@ -9004,7 +8895,7 @@ HSPLandroid/icu/impl/StandardPlural;->values()[Landroid/icu/impl/StandardPlural; HSPLandroid/icu/impl/StaticUnicodeSets;->chooseFrom(Ljava/lang/String;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/impl/StaticUnicodeSets$Key; HSPLandroid/icu/impl/StaticUnicodeSets;->chooseFrom(Ljava/lang/String;Landroid/icu/impl/StaticUnicodeSets$Key;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/impl/StaticUnicodeSets$Key; HSPLandroid/icu/impl/StaticUnicodeSets;->get(Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/text/UnicodeSet; -HSPLandroid/icu/impl/StringSegment;->(Ljava/lang/String;Z)V +HSPLandroid/icu/impl/StringSegment;->(Ljava/lang/String;Z)V+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/StringSegment;->adjustOffset(I)V HSPLandroid/icu/impl/StringSegment;->charAt(I)C+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/StringSegment;->codePointsEqual(IIZ)Z @@ -9069,7 +8960,7 @@ HSPLandroid/icu/impl/Trie2Writable;->writeBlock(II)V HSPLandroid/icu/impl/Trie2_16;->get(I)I HSPLandroid/icu/impl/Trie2_32;->get(I)I HSPLandroid/icu/impl/Trie2_32;->getFromU16SingleLead(C)I -HSPLandroid/icu/impl/UBiDiProps;->getClass(I)I +HSPLandroid/icu/impl/UBiDiProps;->getClass(I)I+]Landroid/icu/impl/Trie2_16;Landroid/icu/impl/Trie2_16; HSPLandroid/icu/impl/UBiDiProps;->getClassFromProps(I)I HSPLandroid/icu/impl/UCaseProps;->fold(II)I+]Landroid/icu/impl/Trie2_16;Landroid/icu/impl/Trie2_16; HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/lang/String;)I @@ -9079,11 +8970,11 @@ HSPLandroid/icu/impl/UCaseProps;->isUpperOrTitleFromProps(I)Z HSPLandroid/icu/impl/UCaseProps;->propsHasException(I)Z HSPLandroid/icu/impl/UCaseProps;->toUpperOrTitle(ILandroid/icu/impl/UCaseProps$ContextIterator;Ljava/lang/Appendable;IZ)I HSPLandroid/icu/impl/UCharacterProperty$IntProperty;->getValue(I)I -HSPLandroid/icu/impl/UCharacterProperty;->digit(I)I +HSPLandroid/icu/impl/UCharacterProperty;->digit(I)I+]Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty; HSPLandroid/icu/impl/UCharacterProperty;->getIntPropertyValue(II)I HSPLandroid/icu/impl/UCharacterProperty;->getNumericTypeValue(I)I -HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I -HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I +HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I+]Landroid/icu/impl/Trie2_16;Landroid/icu/impl/Trie2_16; +HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I+]Landroid/icu/impl/UCharacterProperty;Landroid/icu/impl/UCharacterProperty; HSPLandroid/icu/impl/UPropertyAliases;->asciiToLowercase(I)I HSPLandroid/icu/impl/UPropertyAliases;->containsName(Landroid/icu/util/BytesTrie;Ljava/lang/CharSequence;)Z HSPLandroid/icu/impl/UPropertyAliases;->findProperty(I)I @@ -9113,11 +9004,11 @@ HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->createInstance(Ljava/lang/St HSPLandroid/icu/impl/ZoneMeta;->findCLDRCanonicalID(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/ZoneMeta;->getCanonicalCLDRID(Landroid/icu/util/TimeZone;)Ljava/lang/String; HSPLandroid/icu/impl/ZoneMeta;->getCanonicalCLDRID(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/icu/impl/ZoneMeta;->getSystemTimeZone(Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone; +HSPLandroid/icu/impl/ZoneMeta;->getSystemTimeZone(Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone;+]Landroid/icu/impl/ZoneMeta$SystemTimeZoneCache;Landroid/icu/impl/ZoneMeta$SystemTimeZoneCache; HSPLandroid/icu/impl/ZoneMeta;->getZoneIDs()[Ljava/lang/String; HSPLandroid/icu/impl/ZoneMeta;->getZoneIndex(Ljava/lang/String;)I HSPLandroid/icu/impl/ZoneMeta;->openOlsonResource(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -HSPLandroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI;->clone()Ljava/lang/Object; +HSPLandroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI;->clone()Ljava/lang/Object;+][I[I HSPLandroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI;->removeAllElements()V HSPLandroid/icu/impl/coll/Collation;->()V HSPLandroid/icu/impl/coll/Collation;->ceFromCE32(I)J @@ -9218,7 +9109,7 @@ HSPLandroid/icu/impl/coll/UVector32;->ensureAppendCapacity()V HSPLandroid/icu/impl/coll/UVector64;->()V HSPLandroid/icu/impl/locale/AsciiUtil;->caseIgnoreMatch(Ljava/lang/String;Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/locale/AsciiUtil;->isAlpha(C)Z -HSPLandroid/icu/impl/locale/AsciiUtil;->isAlphaString(Ljava/lang/String;)Z +HSPLandroid/icu/impl/locale/AsciiUtil;->isAlphaString(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/impl/locale/AsciiUtil;->toLower(C)C HSPLandroid/icu/impl/locale/AsciiUtil;->toLowerString(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/impl/locale/AsciiUtil;->toTitleString(Ljava/lang/String;)Ljava/lang/String; @@ -9238,7 +9129,7 @@ HSPLandroid/icu/impl/locale/BaseLocale$Key;->hashCode()I+]Ljava/lang/String;Ljav HSPLandroid/icu/impl/locale/BaseLocale$Key;->normalize(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key; HSPLandroid/icu/impl/locale/BaseLocale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/icu/impl/locale/BaseLocale;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/BaseLocale-IA;)V -HSPLandroid/icu/impl/locale/BaseLocale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/impl/locale/BaseLocale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/BaseLocale;+]Landroid/icu/impl/locale/BaseLocale$Cache;Landroid/icu/impl/locale/BaseLocale$Cache; HSPLandroid/icu/impl/locale/BaseLocale;->getLanguage()Ljava/lang/String; HSPLandroid/icu/impl/locale/BaseLocale;->getRegion()Ljava/lang/String; HSPLandroid/icu/impl/locale/BaseLocale;->getScript()Ljava/lang/String; @@ -9248,22 +9139,14 @@ HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->getBaseLocale()Landroid/icu/ HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->getLocaleExtensions()Landroid/icu/impl/locale/LocaleExtensions; HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setLanguage(Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder; HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setRegion(Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder; -HSPLandroid/icu/impl/locale/LanguageTag;->()V -HSPLandroid/icu/impl/locale/LanguageTag;->canonicalizeLanguage(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getExtensions()Ljava/util/List; -HSPLandroid/icu/impl/locale/LanguageTag;->getLanguage()Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getPrivateuse()Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getRegion()Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getScript()Ljava/lang/String; -HSPLandroid/icu/impl/locale/LanguageTag;->getVariants()Ljava/util/List; HSPLandroid/icu/impl/locale/LanguageTag;->isLanguage(Ljava/lang/String;)Z HSPLandroid/icu/impl/locale/LanguageTag;->isRegion(Ljava/lang/String;)Z -HSPLandroid/icu/impl/locale/LanguageTag;->parseLocale(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/impl/locale/LanguageTag;+]Landroid/icu/impl/locale/LocaleExtensions;Landroid/icu/impl/locale/LocaleExtensions;]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/StringTokenIterator; +HSPLandroid/icu/impl/locale/LanguageTag;->parseLocale(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/impl/locale/LanguageTag;+]Landroid/icu/impl/locale/LocaleExtensions;Landroid/icu/impl/locale/LocaleExtensions;]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/StringTokenIterator;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; HSPLandroid/icu/impl/locale/LocaleExtensions;->getKeys()Ljava/util/Set; HSPLandroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V HSPLandroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object; -HSPLandroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V -HSPLandroid/icu/impl/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLandroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue; +HSPLandroid/icu/impl/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; HSPLandroid/icu/impl/number/AdoptingModifierStore$1;->()V HSPLandroid/icu/impl/number/AdoptingModifierStore;->(Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/Modifier;)V HSPLandroid/icu/impl/number/AdoptingModifierStore;->getModifierWithoutPlural(Landroid/icu/impl/number/Modifier$Signum;)Landroid/icu/impl/number/Modifier; @@ -9278,10 +9161,10 @@ HSPLandroid/icu/impl/number/AffixUtils;->hasCurrencySymbols(Ljava/lang/CharSeque HSPLandroid/icu/impl/number/AffixUtils;->hasNext(JLjava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;,Ljava/lang/String; HSPLandroid/icu/impl/number/AffixUtils;->iterateWithConsumer(Ljava/lang/CharSequence;Landroid/icu/impl/number/AffixUtils$TokenConsumer;)V HSPLandroid/icu/impl/number/AffixUtils;->makeTag(IIII)J -HSPLandroid/icu/impl/number/AffixUtils;->nextToken(JLjava/lang/CharSequence;)J +HSPLandroid/icu/impl/number/AffixUtils;->nextToken(JLjava/lang/CharSequence;)J+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder; HSPLandroid/icu/impl/number/AffixUtils;->unescape(Ljava/lang/CharSequence;Landroid/icu/impl/FormattedStringBuilder;ILandroid/icu/impl/number/AffixUtils$SymbolProvider;Landroid/icu/text/NumberFormat$Field;)I HSPLandroid/icu/impl/number/AffixUtils;->unescapedCount(Ljava/lang/CharSequence;ZLandroid/icu/impl/number/AffixUtils$SymbolProvider;)I -HSPLandroid/icu/impl/number/ConstantAffixModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I +HSPLandroid/icu/impl/number/ConstantAffixModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I+]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder; HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;ZZ)V HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;ZZLandroid/icu/impl/number/Modifier$Parameters;)V HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I @@ -9375,7 +9258,7 @@ HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->applyMaxInteger(I)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->convertToAccurateDouble()V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->copyFrom(Landroid/icu/impl/number/DecimalQuantity;)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fitsInLong()Z+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; -HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getDigit(I)B +HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getDigit(I)B+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getLowerDisplayMagnitude()I HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getMagnitude()I HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D @@ -9388,20 +9271,20 @@ HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->isZeroish()Z HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->negate()V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->populateUFieldPosition(Ljava/text/FieldPosition;)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->roundToMagnitude(ILjava/math/MathContext;)V -HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->roundToMagnitude(ILjava/math/MathContext;Z)V +HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->roundToMagnitude(ILjava/math/MathContext;Z)V+]Ljava/math/MathContext;Ljava/math/MathContext;]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;]Ljava/math/RoundingMode;Ljava/math/RoundingMode; HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->safeSubtract(II)I HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setMinFraction(I)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setMinInteger(I)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToBigDecimal(Ljava/math/BigDecimal;)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToDouble(D)V HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToInt(I)V -HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToLong(J)V +HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToLong(J)V+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->signum()Landroid/icu/impl/number/Modifier$Signum; HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->toLong(Z)J+]Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->()V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(D)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(I)V -HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(J)V +HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(J)V+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(Ljava/lang/Number;)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->(Ljava/math/BigDecimal;)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->compact()V @@ -9417,9 +9300,9 @@ HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->setDigitPos(IB)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->shiftLeft(I)V HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->shiftRight(I)V HSPLandroid/icu/impl/number/Grouper;->(SSS)V -HSPLandroid/icu/impl/number/Grouper;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Grouper; +HSPLandroid/icu/impl/number/Grouper;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Grouper;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/Grouper;->getInstance(SSS)Landroid/icu/impl/number/Grouper; -HSPLandroid/icu/impl/number/Grouper;->getMinGroupingForLocale(Landroid/icu/util/ULocale;)S +HSPLandroid/icu/impl/number/Grouper;->getMinGroupingForLocale(Landroid/icu/util/ULocale;)S+]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable;]Ljava/lang/Short;Ljava/lang/Short; HSPLandroid/icu/impl/number/Grouper;->getPrimary()S HSPLandroid/icu/impl/number/Grouper;->getSecondary()S HSPLandroid/icu/impl/number/Grouper;->groupAtPosition(ILandroid/icu/impl/number/DecimalQuantity;)Z @@ -9441,16 +9324,16 @@ HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->ap HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; HSPLandroid/icu/impl/number/MutablePatternModifier;->(Z)V HSPLandroid/icu/impl/number/MutablePatternModifier;->addToChain(Landroid/icu/impl/number/MicroPropsGenerator;)Landroid/icu/impl/number/MicroPropsGenerator; -HSPLandroid/icu/impl/number/MutablePatternModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I +HSPLandroid/icu/impl/number/MutablePatternModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I+]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider; HSPLandroid/icu/impl/number/MutablePatternModifier;->createConstantModifier(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;)Landroid/icu/impl/number/ConstantMultiFieldModifier; HSPLandroid/icu/impl/number/MutablePatternModifier;->createImmutable()Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier; HSPLandroid/icu/impl/number/MutablePatternModifier;->getPrefixLength()I HSPLandroid/icu/impl/number/MutablePatternModifier;->getSymbol(I)Ljava/lang/CharSequence; HSPLandroid/icu/impl/number/MutablePatternModifier;->insertPrefix(Landroid/icu/impl/FormattedStringBuilder;I)I HSPLandroid/icu/impl/number/MutablePatternModifier;->insertSuffix(Landroid/icu/impl/FormattedStringBuilder;I)I -HSPLandroid/icu/impl/number/MutablePatternModifier;->needsPlurals()Z +HSPLandroid/icu/impl/number/MutablePatternModifier;->needsPlurals()Z+]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider; HSPLandroid/icu/impl/number/MutablePatternModifier;->prepareAffix(Z)V -HSPLandroid/icu/impl/number/MutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; +HSPLandroid/icu/impl/number/MutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;+]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/impl/number/MicroPropsGenerator;Landroid/icu/impl/number/MicroProps;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/MutablePatternModifier;->setNumberProperties(Landroid/icu/impl/number/Modifier$Signum;Landroid/icu/impl/StandardPlural;)V HSPLandroid/icu/impl/number/MutablePatternModifier;->setPatternAttributes(Landroid/icu/number/NumberFormatter$SignDisplay;ZZ)V HSPLandroid/icu/impl/number/MutablePatternModifier;->setPatternInfo(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/text/NumberFormat$Field;)V @@ -9464,40 +9347,40 @@ HSPLandroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;->()V HSPLandroid/icu/impl/number/PatternStringParser$ParserState;->(Ljava/lang/String;)V HSPLandroid/icu/impl/number/PatternStringParser$ParserState;->next()I+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser$ParserState;->peek()I+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/impl/number/PatternStringParser;->consumeAffix(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)J +HSPLandroid/icu/impl/number/PatternStringParser;->consumeAffix(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)J+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeExponent(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V -HSPLandroid/icu/impl/number/PatternStringParser;->consumeFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V +HSPLandroid/icu/impl/number/PatternStringParser;->consumeFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeFractionFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeIntegerFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeLiteral(Landroid/icu/impl/number/PatternStringParser$ParserState;)V HSPLandroid/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$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; -HSPLandroid/icu/impl/number/PatternStringParser;->consumePattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)V +HSPLandroid/icu/impl/number/PatternStringParser;->consumePattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)V+]Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParserState; HSPLandroid/icu/impl/number/PatternStringParser;->consumeSubpattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V HSPLandroid/icu/impl/number/PatternStringParser;->parseToExistingProperties(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V HSPLandroid/icu/impl/number/PatternStringParser;->parseToExistingPropertiesImpl(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V HSPLandroid/icu/impl/number/PatternStringParser;->parseToPatternInfo(Ljava/lang/String;)Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo; -HSPLandroid/icu/impl/number/PatternStringParser;->patternInfoToProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;I)V +HSPLandroid/icu/impl/number/PatternStringParser;->patternInfoToProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;I)V+]Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/PatternStringUtils$PatternSignType;->()V HSPLandroid/icu/impl/number/PatternStringUtils$PatternSignType;->(Ljava/lang/String;I)V HSPLandroid/icu/impl/number/PatternStringUtils$PatternSignType;->values()[Landroid/icu/impl/number/PatternStringUtils$PatternSignType; -HSPLandroid/icu/impl/number/PatternStringUtils;->patternInfoToStringBuilder(Landroid/icu/impl/number/AffixPatternProvider;ZLandroid/icu/impl/number/PatternStringUtils$PatternSignType;ZLandroid/icu/impl/StandardPlural;ZLjava/lang/StringBuilder;)V +HSPLandroid/icu/impl/number/PatternStringUtils;->patternInfoToStringBuilder(Landroid/icu/impl/number/AffixPatternProvider;ZLandroid/icu/impl/number/PatternStringUtils$PatternSignType;ZLandroid/icu/impl/StandardPlural;ZLjava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural; HSPLandroid/icu/impl/number/PatternStringUtils;->propertiesToPatternString(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; -HSPLandroid/icu/impl/number/PatternStringUtils;->resolveSignDisplay(Landroid/icu/number/NumberFormatter$SignDisplay;Landroid/icu/impl/number/Modifier$Signum;)Landroid/icu/impl/number/PatternStringUtils$PatternSignType; +HSPLandroid/icu/impl/number/PatternStringUtils;->resolveSignDisplay(Landroid/icu/number/NumberFormatter$SignDisplay;Landroid/icu/impl/number/Modifier$Signum;)Landroid/icu/impl/number/PatternStringUtils$PatternSignType;+]Landroid/icu/impl/number/Modifier$Signum;Landroid/icu/impl/number/Modifier$Signum;]Landroid/icu/number/NumberFormatter$SignDisplay;Landroid/icu/number/NumberFormatter$SignDisplay; HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->(Landroid/icu/impl/number/DecimalFormatProperties;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->charAt(II)C HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->containsSymbolType(I)Z HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->currencyAsDecimal()Z -HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/AffixPatternProvider; +HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/AffixPatternProvider;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->getString(I)Ljava/lang/String; HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasBody()Z HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasCurrencySign()Z HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasNegativeSubpattern()Z+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->length(I)I -HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOr34Digits(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext; -HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOrUnlimited(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext; +HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->length(I)I+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/number/PropertiesAffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider; +HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOr34Digits(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Ljava/math/RoundingMode;Ljava/math/RoundingMode; +HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOrUnlimited(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Ljava/math/RoundingMode;Ljava/math/RoundingMode; HSPLandroid/icu/impl/number/RoundingUtils;->getRoundingDirection(ZZIILjava/lang/Object;)Z HSPLandroid/icu/impl/number/RoundingUtils;->roundsAtMidpoint(I)Z -HSPLandroid/icu/impl/number/RoundingUtils;->scaleFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/Scale; +HSPLandroid/icu/impl/number/RoundingUtils;->scaleFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/Scale;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/SimpleModifier;->(Ljava/lang/String;Ljava/text/Format$Field;ZLandroid/icu/impl/number/Modifier$Parameters;)V HSPLandroid/icu/impl/number/SimpleModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I HSPLandroid/icu/impl/number/parse/AffixMatcher$1;->compare(Landroid/icu/impl/number/parse/AffixMatcher;Landroid/icu/impl/number/parse/AffixMatcher;)I @@ -9523,7 +9406,7 @@ HSPLandroid/icu/impl/number/parse/DecimalMatcher;->getInstance(Landroid/icu/text HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)Z HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;I)Z+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber;]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment; HSPLandroid/icu/impl/number/parse/DecimalMatcher;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V -HSPLandroid/icu/impl/number/parse/DecimalMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z +HSPLandroid/icu/impl/number/parse/DecimalMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z+]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment; HSPLandroid/icu/impl/number/parse/DecimalMatcher;->validateGroup(IIZ)Z HSPLandroid/icu/impl/number/parse/IgnorablesMatcher;->getInstance(I)Landroid/icu/impl/number/parse/IgnorablesMatcher; HSPLandroid/icu/impl/number/parse/InfinityMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/impl/number/parse/InfinityMatcher; @@ -9535,9 +9418,9 @@ HSPLandroid/icu/impl/number/parse/NumberParserImpl;->addMatchers(Ljava/util/Coll HSPLandroid/icu/impl/number/parse/NumberParserImpl;->createParserFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Z)Landroid/icu/impl/number/parse/NumberParserImpl;+]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/NumberParserImpl;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/impl/number/parse/NumberParserImpl;->freeze()V HSPLandroid/icu/impl/number/parse/NumberParserImpl;->getParseFlags()I -HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parse(Ljava/lang/String;IZLandroid/icu/impl/number/parse/ParsedNumber;)V+]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/number/parse/NumberParseMatcher;megamorphic_types]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment; +HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parse(Ljava/lang/String;IZLandroid/icu/impl/number/parse/ParsedNumber;)V+]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/number/parse/NumberParseMatcher;megamorphic_types]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parseGreedy(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/icu/impl/number/parse/NumberParseMatcher;megamorphic_types]Landroid/icu/impl/StringSegment;Landroid/icu/impl/StringSegment; -HSPLandroid/icu/impl/number/parse/ParsedNumber;->()V +HSPLandroid/icu/impl/number/parse/ParsedNumber;->()V+]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber; HSPLandroid/icu/impl/number/parse/ParsedNumber;->clear()V HSPLandroid/icu/impl/number/parse/ParsedNumber;->getNumber(I)Ljava/lang/Number;+]Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/impl/number/parse/ParsedNumber;->postProcess()V @@ -9548,7 +9431,7 @@ HSPLandroid/icu/impl/number/parse/RequireAffixValidator;->()V HSPLandroid/icu/impl/number/parse/RequireAffixValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V HSPLandroid/icu/impl/number/parse/RequireNumberValidator;->()V HSPLandroid/icu/impl/number/parse/RequireNumberValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V -HSPLandroid/icu/impl/number/parse/ScientificMatcher;->(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V +HSPLandroid/icu/impl/number/parse/ScientificMatcher;->(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet; HSPLandroid/icu/impl/number/parse/ScientificMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)Landroid/icu/impl/number/parse/ScientificMatcher; HSPLandroid/icu/impl/number/parse/ScientificMatcher;->minusSignSet()Landroid/icu/text/UnicodeSet; HSPLandroid/icu/impl/number/parse/ScientificMatcher;->plusSignSet()Landroid/icu/text/UnicodeSet; @@ -9592,7 +9475,7 @@ HSPLandroid/icu/number/IntegerWidth;->(II)V HSPLandroid/icu/number/IntegerWidth;->truncateAt(I)Landroid/icu/number/IntegerWidth; HSPLandroid/icu/number/IntegerWidth;->zeroFillTo(I)Landroid/icu/number/IntegerWidth; HSPLandroid/icu/number/LocalizedNumberFormatter;->(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V -HSPLandroid/icu/number/LocalizedNumberFormatter;->computeCompiled()Z +HSPLandroid/icu/number/LocalizedNumberFormatter;->computeCompiled()Z+]Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;]Landroid/icu/number/LocalizedNumberFormatter;Landroid/icu/number/LocalizedNumberFormatter;]Ljava/lang/Long;Ljava/lang/Long; HSPLandroid/icu/number/LocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/LocalizedNumberFormatter; HSPLandroid/icu/number/LocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/NumberFormatterSettings; HSPLandroid/icu/number/LocalizedNumberFormatter;->format(D)Landroid/icu/number/FormattedNumber; @@ -9608,27 +9491,27 @@ HSPLandroid/icu/number/NumberFormatterImpl;->formatStatic(Landroid/icu/impl/numb HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffix(BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixImpl(Landroid/icu/impl/number/MicroPropsGenerator;BLandroid/icu/impl/FormattedStringBuilder;)I HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixStatic(Landroid/icu/impl/number/MacroProps;BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I -HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;+]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/text/NumberingSystem;Landroid/icu/text/NumberingSystem;]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl; +HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;+]Landroid/icu/impl/number/MutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/text/NumberingSystem;Landroid/icu/text/NumberingSystem;]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier; HSPLandroid/icu/number/NumberFormatterImpl;->preProcess(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; -HSPLandroid/icu/number/NumberFormatterImpl;->preProcessUnsafe(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps; +HSPLandroid/icu/number/NumberFormatterImpl;->preProcessUnsafe(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;+]Landroid/icu/impl/number/MicroPropsGenerator;Landroid/icu/impl/number/MutablePatternModifier;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/number/NumberFormatterImpl;->unitIsBaseUnit(Landroid/icu/util/MeasureUnit;)Z HSPLandroid/icu/number/NumberFormatterImpl;->unitIsCurrency(Landroid/icu/util/MeasureUnit;)Z HSPLandroid/icu/number/NumberFormatterImpl;->unitIsPercent(Landroid/icu/util/MeasureUnit;)Z HSPLandroid/icu/number/NumberFormatterImpl;->unitIsPermille(Landroid/icu/util/MeasureUnit;)Z -HSPLandroid/icu/number/NumberFormatterImpl;->writeAffixes(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/FormattedStringBuilder;II)I -HSPLandroid/icu/number/NumberFormatterImpl;->writeFractionDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I +HSPLandroid/icu/number/NumberFormatterImpl;->writeAffixes(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/FormattedStringBuilder;II)I+]Landroid/icu/impl/number/Padder;Landroid/icu/impl/number/Padder;]Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/MutablePatternModifier;,Landroid/icu/impl/number/ConstantAffixModifier; +HSPLandroid/icu/number/NumberFormatterImpl;->writeFractionDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/number/NumberFormatterImpl;->writeIntegerDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I+]Landroid/icu/impl/number/Grouper;Landroid/icu/impl/number/Grouper;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; -HSPLandroid/icu/number/NumberFormatterImpl;->writeNumber(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I +HSPLandroid/icu/number/NumberFormatterImpl;->writeNumber(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/number/NumberFormatterSettings;->(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V -HSPLandroid/icu/number/NumberFormatterSettings;->macros(Landroid/icu/impl/number/MacroProps;)Landroid/icu/number/NumberFormatterSettings; +HSPLandroid/icu/number/NumberFormatterSettings;->macros(Landroid/icu/impl/number/MacroProps;)Landroid/icu/number/NumberFormatterSettings;+]Landroid/icu/number/NumberFormatterSettings;Landroid/icu/number/UnlocalizedNumberFormatter; HSPLandroid/icu/number/NumberFormatterSettings;->perUnit(Landroid/icu/util/MeasureUnit;)Landroid/icu/number/NumberFormatterSettings; HSPLandroid/icu/number/NumberFormatterSettings;->resolve()Landroid/icu/impl/number/MacroProps;+]Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MacroProps; HSPLandroid/icu/number/NumberFormatterSettings;->unit(Landroid/icu/util/MeasureUnit;)Landroid/icu/number/NumberFormatterSettings; HSPLandroid/icu/number/NumberFormatterSettings;->unitWidth(Landroid/icu/number/NumberFormatter$UnitWidth;)Landroid/icu/number/NumberFormatterSettings; -HSPLandroid/icu/number/NumberPropertyMapper;->create(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/UnlocalizedNumberFormatter; -HSPLandroid/icu/number/NumberPropertyMapper;->oldToNew(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/MacroProps;+]Ljava/math/MathContext;Ljava/math/MathContext;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/number/IntegerWidth;Landroid/icu/number/IntegerWidth;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; +HSPLandroid/icu/number/NumberPropertyMapper;->create(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/UnlocalizedNumberFormatter;+]Landroid/icu/number/UnlocalizedNumberFormatter;Landroid/icu/number/UnlocalizedNumberFormatter; +HSPLandroid/icu/number/NumberPropertyMapper;->oldToNew(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/MacroProps;+]Ljava/math/MathContext;Ljava/math/MathContext;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/PropertiesAffixPatternProvider;]Landroid/icu/number/Precision;Landroid/icu/number/Precision$FractionRounderImpl;,Landroid/icu/number/Precision$CurrencyRounderImpl;]Landroid/icu/number/IntegerWidth;Landroid/icu/number/IntegerWidth;]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Landroid/icu/number/CurrencyPrecision;Landroid/icu/number/Precision$CurrencyRounderImpl;]Landroid/icu/util/Currency;Landroid/icu/util/Currency; HSPLandroid/icu/number/Precision$FractionRounderImpl;->(II)V -HSPLandroid/icu/number/Precision$FractionRounderImpl;->apply(Landroid/icu/impl/number/DecimalQuantity;)V +HSPLandroid/icu/number/Precision$FractionRounderImpl;->apply(Landroid/icu/impl/number/DecimalQuantity;)V+]Landroid/icu/number/Precision$FractionRounderImpl;Landroid/icu/number/Precision$FractionRounderImpl;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/number/Precision$FractionRounderImpl;->createCopy()Landroid/icu/number/Precision$FractionRounderImpl; HSPLandroid/icu/number/Precision$FractionRounderImpl;->createCopy()Landroid/icu/number/Precision; HSPLandroid/icu/number/Precision;->-$$Nest$smgetDisplayMagnitudeFraction(I)I @@ -9641,12 +9524,12 @@ HSPLandroid/icu/number/Precision;->getDisplayMagnitudeFraction(I)I HSPLandroid/icu/number/Precision;->getRoundingMagnitudeFraction(I)I HSPLandroid/icu/number/Precision;->setResolvedMinFraction(Landroid/icu/impl/number/DecimalQuantity;I)V HSPLandroid/icu/number/Precision;->withLocaleData(Landroid/icu/util/Currency;)Landroid/icu/number/Precision; -HSPLandroid/icu/number/Precision;->withMode(Ljava/math/MathContext;)Landroid/icu/number/Precision; +HSPLandroid/icu/number/Precision;->withMode(Ljava/math/MathContext;)Landroid/icu/number/Precision;+]Ljava/math/MathContext;Ljava/math/MathContext; HSPLandroid/icu/number/Scale;->applyTo(Landroid/icu/impl/number/DecimalQuantity;)V HSPLandroid/icu/number/Scale;->powerOfTen(I)Landroid/icu/number/Scale; HSPLandroid/icu/number/Scale;->withMathContext(Ljava/math/MathContext;)Landroid/icu/number/Scale; HSPLandroid/icu/number/UnlocalizedNumberFormatter;->(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V -HSPLandroid/icu/number/UnlocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/NumberFormatterSettings; +HSPLandroid/icu/number/UnlocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/NumberFormatterSettings;+]Landroid/icu/number/UnlocalizedNumberFormatter;Landroid/icu/number/UnlocalizedNumberFormatter; HSPLandroid/icu/number/UnlocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/UnlocalizedNumberFormatter; HSPLandroid/icu/number/UnlocalizedNumberFormatter;->locale(Landroid/icu/util/ULocale;)Landroid/icu/number/LocalizedNumberFormatter; HSPLandroid/icu/platform/AndroidDataFiles;->generateIcuDataPath()Ljava/lang/String; @@ -9658,20 +9541,20 @@ HSPLandroid/icu/text/Bidi;->(II)V HSPLandroid/icu/text/Bidi;->DirPropFlag(B)I HSPLandroid/icu/text/Bidi;->GetParaLevelAt(I)B HSPLandroid/icu/text/Bidi;->directionFromFlags()B -HSPLandroid/icu/text/Bidi;->getCustomizedClass(I)I +HSPLandroid/icu/text/Bidi;->getCustomizedClass(I)I+]Landroid/icu/impl/UBiDiProps;Landroid/icu/impl/UBiDiProps; HSPLandroid/icu/text/Bidi;->getDirProps()V+]Landroid/icu/text/Bidi;Landroid/icu/text/Bidi; HSPLandroid/icu/text/Bidi;->getDirPropsMemory(I)V HSPLandroid/icu/text/Bidi;->getLevelsMemory(I)V HSPLandroid/icu/text/Bidi;->getMemory(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;ZI)Ljava/lang/Object; -HSPLandroid/icu/text/Bidi;->resolveExplicitLevels()B -HSPLandroid/icu/text/Bidi;->setPara([CB[B)V +HSPLandroid/icu/text/Bidi;->resolveExplicitLevels()B+]Landroid/icu/text/Bidi;Landroid/icu/text/Bidi; +HSPLandroid/icu/text/Bidi;->setPara([CB[B)V+]Landroid/icu/text/Bidi;Landroid/icu/text/Bidi; HSPLandroid/icu/text/Bidi;->verifyRange(III)V HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->(Landroid/icu/util/ULocale;Landroid/icu/text/BreakIterator;)V -HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator;+]Landroid/icu/text/BreakIterator;Landroid/icu/text/RuleBasedBreakIterator; HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->getLocale()Landroid/icu/util/ULocale; HSPLandroid/icu/text/BreakIterator;->()V HSPLandroid/icu/text/BreakIterator;->clone()Ljava/lang/Object; -HSPLandroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; +HSPLandroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/impl/CacheValue;Landroid/icu/impl/CacheValue$StrongValue;]Landroid/icu/text/BreakIterator$BreakIteratorCache;Landroid/icu/text/BreakIterator$BreakIteratorCache; HSPLandroid/icu/text/BreakIterator;->getSentenceInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator; HSPLandroid/icu/text/BreakIterator;->getShim()Landroid/icu/text/BreakIterator$BreakIteratorServiceShim; HSPLandroid/icu/text/BreakIterator;->getWordInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator; @@ -9728,7 +9611,7 @@ HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;Ljava HSPLandroid/icu/text/DateFormat;->getPatternInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; HSPLandroid/icu/text/DateFormat;->getTimeInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; HSPLandroid/icu/text/DateFormat;->setCalendar(Landroid/icu/util/Calendar;)V -HSPLandroid/icu/text/DateFormat;->setContext(Landroid/icu/text/DisplayContext;)V +HSPLandroid/icu/text/DateFormat;->setContext(Landroid/icu/text/DisplayContext;)V+]Landroid/icu/text/DisplayContext;Landroid/icu/text/DisplayContext; HSPLandroid/icu/text/DateFormat;->setTimeZone(Landroid/icu/util/TimeZone;)V HSPLandroid/icu/text/DateFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/text/DateFormatSymbols$1;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormatSymbols$AospExtendedDateFormatSymbols; @@ -9743,7 +9626,7 @@ HSPLandroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->values()[Lan HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/ULocale;)V HSPLandroid/icu/text/DateFormatSymbols;->(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;Landroid/icu/text/DateFormatSymbols$AospExtendedDateFormatSymbols;)V -HSPLandroid/icu/text/DateFormatSymbols;->(Ljava/lang/Class;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/text/DateFormatSymbols;->(Ljava/lang/Class;Landroid/icu/util/ULocale;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/text/DateFormatSymbols;Landroid/icu/text/DateFormatSymbols;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/icu/text/DateFormatSymbols;->(Ljava/lang/Class;Ljava/util/Locale;)V HSPLandroid/icu/text/DateFormatSymbols;->duplicate([Ljava/lang/String;)[Ljava/lang/String; HSPLandroid/icu/text/DateFormatSymbols;->getAmPmStrings()[Ljava/lang/String; @@ -9762,7 +9645,7 @@ HSPLandroid/icu/text/DateIntervalFormat;->(Ljava/lang/String;Landroid/icu/ HSPLandroid/icu/text/DateIntervalFormat;->adjustFieldWidth(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Ljava/lang/String; HSPLandroid/icu/text/DateIntervalFormat;->concatSingleDate2TimeInterval(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;)V HSPLandroid/icu/text/DateIntervalFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -HSPLandroid/icu/text/DateIntervalFormat;->formatImpl(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Landroid/icu/text/DateIntervalFormat$FormatOutput;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DateIntervalFormat;->formatImpl(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Landroid/icu/text/DateIntervalFormat$FormatOutput;Ljava/util/List;)Ljava/lang/StringBuffer;+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/text/SimpleDateFormat;Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/DateIntervalFormat;->genIntervalPattern(ILjava/lang/String;Ljava/lang/String;ILjava/util/Map;)Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch; HSPLandroid/icu/text/DateIntervalFormat;->genSeparateDateTimePtn(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)Z HSPLandroid/icu/text/DateIntervalFormat;->getConcatenationPattern(Landroid/icu/util/ULocale;)Ljava/lang/String; @@ -9799,7 +9682,7 @@ HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Ljava/ HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->equals(Ljava/lang/Object;)Z HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->fieldIsNumeric(I)Z HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getBasePattern()Ljava/lang/String; -HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I +HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I+]Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DistanceInfo; HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getFieldMask()I HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->set(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$FormatParser;Z)Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher; HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->toCanonicalString()Ljava/lang/String; @@ -9882,12 +9765,12 @@ HSPLandroid/icu/text/DateTimePatternGenerator;->setDateTimeFromCalendar(Landroid HSPLandroid/icu/text/DateTimePatternGenerator;->setDecimal(Ljava/lang/String;)V HSPLandroid/icu/text/DateTimePatternGenerator;->setDecimalSymbols(Landroid/icu/util/ULocale;)V HSPLandroid/icu/text/DateTimePatternGenerator;->setFieldDisplayName(ILandroid/icu/text/DateTimePatternGenerator$DisplayWidth;Ljava/lang/String;)V -HSPLandroid/icu/text/DecimalFormat;->(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V +HSPLandroid/icu/text/DecimalFormat;->(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLandroid/icu/text/DecimalFormat;->(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V HSPLandroid/icu/text/DecimalFormat;->clone()Ljava/lang/Object; -HSPLandroid/icu/text/DecimalFormat;->fieldPositionHelper(Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;I)V +HSPLandroid/icu/text/DecimalFormat;->fieldPositionHelper(Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;I)V+]Ljava/text/FieldPosition;Ljava/text/DontCareFieldPosition;]Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; HSPLandroid/icu/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -HSPLandroid/icu/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Landroid/icu/number/LocalizedNumberFormatter;Landroid/icu/number/LocalizedNumberFormatter;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLandroid/icu/text/DecimalFormat;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols; HSPLandroid/icu/text/DecimalFormat;->getMaximumFractionDigits()I HSPLandroid/icu/text/DecimalFormat;->getMaximumIntegerDigits()I @@ -9899,21 +9782,21 @@ HSPLandroid/icu/text/DecimalFormat;->getParser()Landroid/icu/impl/number/parse/N HSPLandroid/icu/text/DecimalFormat;->getPositivePrefix()Ljava/lang/String; HSPLandroid/icu/text/DecimalFormat;->getPositiveSuffix()Ljava/lang/String; HSPLandroid/icu/text/DecimalFormat;->isParseBigDecimal()Z -HSPLandroid/icu/text/DecimalFormat;->isParseIntegerOnly()Z +HSPLandroid/icu/text/DecimalFormat;->isParseIntegerOnly()Z+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/impl/number/parse/ParsedNumber;Landroid/icu/impl/number/parse/ParsedNumber;]Ljava/text/ParsePosition;Ljava/text/ParsePosition;]Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/NumberParserImpl;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; -HSPLandroid/icu/text/DecimalFormat;->refreshFormatter()V +HSPLandroid/icu/text/DecimalFormat;->refreshFormatter()V+]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/number/UnlocalizedNumberFormatter;Landroid/icu/number/UnlocalizedNumberFormatter;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLandroid/icu/text/DecimalFormat;->setCurrency(Landroid/icu/util/Currency;)V HSPLandroid/icu/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V HSPLandroid/icu/text/DecimalFormat;->setGroupingUsed(Z)V HSPLandroid/icu/text/DecimalFormat;->setMaximumFractionDigits(I)V -HSPLandroid/icu/text/DecimalFormat;->setMaximumIntegerDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->setMaximumIntegerDigits(I)V+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLandroid/icu/text/DecimalFormat;->setMinimumFractionDigits(I)V -HSPLandroid/icu/text/DecimalFormat;->setMinimumIntegerDigits(I)V +HSPLandroid/icu/text/DecimalFormat;->setMinimumIntegerDigits(I)V+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLandroid/icu/text/DecimalFormat;->setParseIntegerOnly(Z)V HSPLandroid/icu/text/DecimalFormat;->setParseStrictMode(Landroid/icu/impl/number/DecimalFormatProperties$ParseMode;)V HSPLandroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V HSPLandroid/icu/text/DecimalFormat;->toNumberFormatter()Landroid/icu/number/LocalizedNumberFormatter; -HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String; +HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String;+]Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/DecimalFormatProperties; HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Landroid/icu/util/ULocale;Ljava/lang/Void;)Landroid/icu/text/DecimalFormatSymbols$CacheData; HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/text/DecimalFormatSymbols$CacheData;->(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V @@ -9955,7 +9838,7 @@ HSPLandroid/icu/text/DecimalFormatSymbols;->getPlusSignString()Ljava/lang/String HSPLandroid/icu/text/DecimalFormatSymbols;->getULocale()Landroid/icu/util/ULocale; HSPLandroid/icu/text/DecimalFormatSymbols;->getZeroDigit()C HSPLandroid/icu/text/DecimalFormatSymbols;->initSpacingInfo(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;)V -HSPLandroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V+]Landroid/icu/impl/CurrencyData$CurrencyDisplayInfoProvider;Landroid/icu/impl/ICUCurrencyDisplayInfoProvider;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo; HSPLandroid/icu/text/DecimalFormatSymbols;->loadData(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData; HSPLandroid/icu/text/DecimalFormatSymbols;->setApproximatelySignString(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setCurrency(Landroid/icu/util/Currency;)V @@ -9964,7 +9847,7 @@ HSPLandroid/icu/text/DecimalFormatSymbols;->setCurrencySymbol(Ljava/lang/String; HSPLandroid/icu/text/DecimalFormatSymbols;->setDecimalSeparator(C)V HSPLandroid/icu/text/DecimalFormatSymbols;->setDecimalSeparatorString(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setDigit(C)V -HSPLandroid/icu/text/DecimalFormatSymbols;->setDigitStrings([Ljava/lang/String;)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setDigitStrings([Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/text/DecimalFormatSymbols;->setExponentMultiplicationSign(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setExponentSeparator(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setGroupingSeparator(C)V @@ -9987,7 +9870,7 @@ HSPLandroid/icu/text/DecimalFormatSymbols;->setPercent(C)V HSPLandroid/icu/text/DecimalFormatSymbols;->setPercentString(Ljava/lang/String;)V HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSign(C)V HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSignString(Ljava/lang/String;)V -HSPLandroid/icu/text/DecimalFormatSymbols;->setZeroDigit(C)V +HSPLandroid/icu/text/DecimalFormatSymbols;->setZeroDigit(C)V+][C[C][Ljava/lang/String;[Ljava/lang/String; HSPLandroid/icu/text/DisplayContext;->type()Landroid/icu/text/DisplayContext$Type; HSPLandroid/icu/text/Edits$Iterator;->next(Z)Z HSPLandroid/icu/text/Edits;->()V @@ -10005,7 +9888,7 @@ HSPLandroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/No HSPLandroid/icu/text/Normalizer2;->getNFCInstance()Landroid/icu/text/Normalizer2; HSPLandroid/icu/text/Normalizer2;->getNFDInstance()Landroid/icu/text/Normalizer2; HSPLandroid/icu/text/Normalizer2;->getNFKDInstance()Landroid/icu/text/Normalizer2; -HSPLandroid/icu/text/Normalizer2;->normalize(Ljava/lang/CharSequence;)Ljava/lang/String; +HSPLandroid/icu/text/Normalizer2;->normalize(Ljava/lang/CharSequence;)Ljava/lang/String;+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/icu/text/Normalizer2;Landroid/icu/impl/Norm2AllModes$DecomposeNormalizer2; HSPLandroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Ljava/lang/String; HSPLandroid/icu/text/NumberFormat;->()V HSPLandroid/icu/text/NumberFormat;->clone()Ljava/lang/Object; @@ -10015,7 +9898,7 @@ HSPLandroid/icu/text/NumberFormat;->getInstance(Landroid/icu/util/ULocale;I)Land HSPLandroid/icu/text/NumberFormat;->getInstance(Ljava/util/Locale;I)Landroid/icu/text/NumberFormat; HSPLandroid/icu/text/NumberFormat;->getPattern(Landroid/icu/util/ULocale;I)Ljava/lang/String; HSPLandroid/icu/text/NumberFormat;->getPatternForStyle(Landroid/icu/util/ULocale;I)Ljava/lang/String; -HSPLandroid/icu/text/NumberFormat;->getPatternForStyleAndNumberingSystem(Landroid/icu/util/ULocale;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/icu/text/NumberFormat;->getPatternForStyleAndNumberingSystem(Landroid/icu/util/ULocale;Ljava/lang/String;I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/ICUResourceBundle;Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable; HSPLandroid/icu/text/NumberFormat;->getShim()Landroid/icu/text/NumberFormat$NumberFormatShim; HSPLandroid/icu/text/NumberFormatServiceShim$NFService$1RBNumberFormatFactory;->handleCreate(Landroid/icu/util/ULocale;ILandroid/icu/impl/ICUService;)Ljava/lang/Object; HSPLandroid/icu/text/NumberFormatServiceShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; @@ -10023,7 +9906,7 @@ HSPLandroid/icu/text/NumberingSystem$1;->createInstance(Ljava/lang/Object;Ljava/ HSPLandroid/icu/text/NumberingSystem$1;->createInstance(Ljava/lang/String;Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem; HSPLandroid/icu/text/NumberingSystem$LocaleLookupData;->(Landroid/icu/util/ULocale;Ljava/lang/String;)V HSPLandroid/icu/text/NumberingSystem;->getDescription()Ljava/lang/String; -HSPLandroid/icu/text/NumberingSystem;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberingSystem; +HSPLandroid/icu/text/NumberingSystem;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberingSystem;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/impl/CacheBase;Landroid/icu/text/NumberingSystem$1; HSPLandroid/icu/text/NumberingSystem;->getInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem; HSPLandroid/icu/text/NumberingSystem;->getName()Ljava/lang/String; HSPLandroid/icu/text/NumberingSystem;->getRadix()I @@ -10103,15 +9986,15 @@ HSPLandroid/icu/text/RelativeDateTimeFormatter;->keyToDirection(Landroid/icu/imp HSPLandroid/icu/text/ReplaceableString;->(Ljava/lang/String;)V HSPLandroid/icu/text/ReplaceableString;->charAt(I)C HSPLandroid/icu/text/ReplaceableString;->getChars(II[CI)V -HSPLandroid/icu/text/ReplaceableString;->length()I +HSPLandroid/icu/text/ReplaceableString;->length()I+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->(Landroid/icu/text/RuleBasedBreakIterator;)V -HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$BreakCache;)V +HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$BreakCache;)V+][S[S][I[I HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->addFollowing(IIZ)V HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->addPreceding(IIZ)Z HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->current()I HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->following(I)V -HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->next()V -HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateFollowing()Z +HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->next()V+]Landroid/icu/text/RuleBasedBreakIterator$BreakCache;Landroid/icu/text/RuleBasedBreakIterator$BreakCache; +HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateFollowing()Z+]Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;]Landroid/icu/text/RuleBasedBreakIterator$BreakCache;Landroid/icu/text/RuleBasedBreakIterator$BreakCache; HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateNear(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populatePreceding()Z HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->preceding(I)V @@ -10120,19 +10003,19 @@ HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset()V HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset(II)V HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->seek(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->(Landroid/icu/text/RuleBasedBreakIterator;)V -HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;)V +HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;)V+]Landroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI;Landroid/icu/impl/breakiter/DictionaryBreakEngine$DequeI; HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->following(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->preceding(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->reset()V HSPLandroid/icu/text/RuleBasedBreakIterator;->()V HSPLandroid/icu/text/RuleBasedBreakIterator;->CISetIndex32(Ljava/text/CharacterIterator;I)I HSPLandroid/icu/text/RuleBasedBreakIterator;->checkOffset(ILjava/text/CharacterIterator;)V -HSPLandroid/icu/text/RuleBasedBreakIterator;->clone()Ljava/lang/Object; +HSPLandroid/icu/text/RuleBasedBreakIterator;->clone()Ljava/lang/Object;+]Ljava/text/CharacterIterator;Ljava/text/StringCharacterIterator; HSPLandroid/icu/text/RuleBasedBreakIterator;->first()I HSPLandroid/icu/text/RuleBasedBreakIterator;->following(I)I HSPLandroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/nio/ByteBuffer;)Landroid/icu/text/RuleBasedBreakIterator; HSPLandroid/icu/text/RuleBasedBreakIterator;->getText()Ljava/text/CharacterIterator; -HSPLandroid/icu/text/RuleBasedBreakIterator;->handleNext()I +HSPLandroid/icu/text/RuleBasedBreakIterator;->handleNext()I+]Landroid/icu/impl/RBBIDataWrapper;Landroid/icu/impl/RBBIDataWrapper;]Landroid/icu/util/CodePointTrie;Landroid/icu/util/CodePointTrie$Fast8;]Ljava/text/CharacterIterator;Ljava/text/StringCharacterIterator; HSPLandroid/icu/text/RuleBasedBreakIterator;->handleSafePrevious(I)I HSPLandroid/icu/text/RuleBasedBreakIterator;->isBoundary(I)Z HSPLandroid/icu/text/RuleBasedBreakIterator;->next()I @@ -10151,7 +10034,7 @@ HSPLandroid/icu/text/RuleBasedCollator;->checkNotFrozen()V HSPLandroid/icu/text/RuleBasedCollator;->clone()Ljava/lang/Object; HSPLandroid/icu/text/RuleBasedCollator;->cloneAsThawed()Landroid/icu/text/RuleBasedCollator; HSPLandroid/icu/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I -HSPLandroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I +HSPLandroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I+]Landroid/icu/impl/coll/CollationData;Landroid/icu/impl/coll/CollationData;]Landroid/icu/impl/coll/SharedObject$Reference;Landroid/icu/impl/coll/SharedObject$Reference;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/icu/impl/coll/CollationSettings;Landroid/icu/impl/coll/CollationSettings; HSPLandroid/icu/text/RuleBasedCollator;->freeze()Landroid/icu/text/Collator; HSPLandroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer; HSPLandroid/icu/text/RuleBasedCollator;->getCollationKey(Ljava/lang/String;)Landroid/icu/text/CollationKey; @@ -10171,10 +10054,10 @@ HSPLandroid/icu/text/RuleBasedCollator;->writeSortKey(Ljava/lang/CharSequence;La HSPLandroid/icu/text/SimpleDateFormat$PatternItem;->(CI)V HSPLandroid/icu/text/SimpleDateFormat;->(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V HSPLandroid/icu/text/SimpleDateFormat;->(Ljava/lang/String;Landroid/icu/util/ULocale;)V -HSPLandroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V -HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; +HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/FieldPosition;Ljava/text/FieldPosition;]Landroid/icu/text/SimpleDateFormat;Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/text/SimpleDateFormat;Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/SimpleDateFormat;->getIndexFromChar(C)I HSPLandroid/icu/text/SimpleDateFormat;->getInstance(Landroid/icu/util/Calendar$FormatConfiguration;)Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/SimpleDateFormat;->getLocale()Landroid/icu/util/ULocale; @@ -10189,7 +10072,7 @@ HSPLandroid/icu/text/SimpleDateFormat;->parsePattern()V HSPLandroid/icu/text/SimpleDateFormat;->safeAppend([Ljava/lang/String;ILjava/lang/StringBuffer;)V HSPLandroid/icu/text/SimpleDateFormat;->safeAppendWithMonthPattern([Ljava/lang/String;ILjava/lang/StringBuffer;Ljava/lang/String;)V HSPLandroid/icu/text/SimpleDateFormat;->setContext(Landroid/icu/text/DisplayContext;)V -HSPLandroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;CLandroid/icu/util/Calendar;)V +HSPLandroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;CLandroid/icu/util/Calendar;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/FieldPosition;Ljava/text/FieldPosition;]Landroid/icu/text/SimpleDateFormat;Landroid/icu/text/SimpleDateFormat; HSPLandroid/icu/text/SimpleDateFormat;->toPattern()Ljava/lang/String; HSPLandroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V HSPLandroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -10200,7 +10083,7 @@ HSPLandroid/icu/text/TimeZoneNames;->getInstance(Landroid/icu/util/ULocale;)Land HSPLandroid/icu/text/TimeZoneNames;->getInstance(Ljava/util/Locale;)Landroid/icu/text/TimeZoneNames; HSPLandroid/icu/text/UCharacterIterator;->()V HSPLandroid/icu/text/UCharacterIterator;->getInstance(Ljava/lang/String;)Landroid/icu/text/UCharacterIterator; -HSPLandroid/icu/text/UCharacterIterator;->getText()Ljava/lang/String; +HSPLandroid/icu/text/UCharacterIterator;->getText()Ljava/lang/String;+]Landroid/icu/text/UCharacterIterator;Landroid/icu/impl/ReplaceableUCharacterIterator; HSPLandroid/icu/text/UCharacterIterator;->getText([C)I HSPLandroid/icu/text/UCharacterIterator;->setToStart()V HSPLandroid/icu/text/UFormat;->()V @@ -10276,19 +10159,19 @@ HSPLandroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/Calendar;Land HSPLandroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; HSPLandroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; -HSPLandroid/icu/util/Calendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/Calendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/util/Calendar;->clone()Ljava/lang/Object; -HSPLandroid/icu/util/Calendar;->complete()V -HSPLandroid/icu/util/Calendar;->computeFields()V -HSPLandroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V +HSPLandroid/icu/util/Calendar;->complete()V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/icu/util/Calendar;->computeFields()V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/util/TimeZone;Landroid/icu/impl/OlsonTimeZone; +HSPLandroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->computeGregorianFields(I)V -HSPLandroid/icu/util/Calendar;->computeWeekFields()V +HSPLandroid/icu/util/Calendar;->computeWeekFields()V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar; HSPLandroid/icu/util/Calendar;->floorDivide(II[I)I HSPLandroid/icu/util/Calendar;->floorDivide(JI[I)I HSPLandroid/icu/util/Calendar;->floorDivide(JJ)J HSPLandroid/icu/util/Calendar;->formatHelper(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;II)Landroid/icu/text/DateFormat; -HSPLandroid/icu/util/Calendar;->get(I)I +HSPLandroid/icu/util/Calendar;->get(I)I+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->getCalendarTypeForLocale(Landroid/icu/util/ULocale;)Landroid/icu/impl/CalType; HSPLandroid/icu/util/Calendar;->getDateTimeFormat(IILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; HSPLandroid/icu/util/Calendar;->getDateTimeFormatString(Landroid/icu/util/ULocale;Ljava/lang/String;II)Ljava/lang/String; @@ -10307,7 +10190,7 @@ HSPLandroid/icu/util/Calendar;->getLimit(II)I HSPLandroid/icu/util/Calendar;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/Calendar;->getMinimalDaysInFirstWeek()I HSPLandroid/icu/util/Calendar;->getPatternData(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; -HSPLandroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String; +HSPLandroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/util/Calendar;->getRepeatedWallTimeOption()I HSPLandroid/icu/util/Calendar;->getSkippedWallTimeOption()I HSPLandroid/icu/util/Calendar;->getTimeInMillis()J @@ -10315,22 +10198,22 @@ HSPLandroid/icu/util/Calendar;->getTimeZone()Landroid/icu/util/TimeZone; HSPLandroid/icu/util/Calendar;->getWeekDataForRegionInternal(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; HSPLandroid/icu/util/Calendar;->handleCreateFields()[I HSPLandroid/icu/util/Calendar;->handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; -HSPLandroid/icu/util/Calendar;->initInternal()V +HSPLandroid/icu/util/Calendar;->initInternal()V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->internalSet(II)V -HSPLandroid/icu/util/Calendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z +HSPLandroid/icu/util/Calendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/util/TimeZone;Landroid/icu/impl/OlsonTimeZone;]Ljava/lang/Object;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/Calendar;->isLenient()Z HSPLandroid/icu/util/Calendar;->julianDayToDayOfWeek(I)I -HSPLandroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/util/Calendar;->setFirstDayOfWeek(I)V HSPLandroid/icu/util/Calendar;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V HSPLandroid/icu/util/Calendar;->setMinimalDaysInFirstWeek(I)V HSPLandroid/icu/util/Calendar;->setTime(Ljava/util/Date;)V HSPLandroid/icu/util/Calendar;->setTimeInMillis(J)V HSPLandroid/icu/util/Calendar;->setTimeZone(Landroid/icu/util/TimeZone;)V -HSPLandroid/icu/util/Calendar;->setWeekData(Landroid/icu/util/Calendar$WeekData;)Landroid/icu/util/Calendar; -HSPLandroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V -HSPLandroid/icu/util/Calendar;->weekNumber(II)I -HSPLandroid/icu/util/Calendar;->weekNumber(III)I +HSPLandroid/icu/util/Calendar;->setWeekData(Landroid/icu/util/Calendar$WeekData;)Landroid/icu/util/Calendar;+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar;]Landroid/icu/util/Calendar$WeekDataCache;Landroid/icu/util/Calendar$WeekDataCache; +HSPLandroid/icu/util/Calendar;->weekNumber(II)I+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/icu/util/Calendar;->weekNumber(III)I+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/CharsTrie;->(Ljava/lang/CharSequence;I)V HSPLandroid/icu/util/CharsTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result; HSPLandroid/icu/util/CharsTrie;->first(I)Landroid/icu/util/BytesTrie$Result; @@ -10386,8 +10269,8 @@ HSPLandroid/icu/util/Currency;->getInstance(Ljava/lang/String;)Landroid/icu/util HSPLandroid/icu/util/Currency;->getInstance(Ljava/util/Locale;)Landroid/icu/util/Currency; HSPLandroid/icu/util/Currency;->getName(Landroid/icu/util/ULocale;I[Z)Ljava/lang/String;+]Landroid/icu/text/CurrencyDisplayNames;Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo; HSPLandroid/icu/util/Currency;->getRoundingIncrement(Landroid/icu/util/Currency$CurrencyUsage;)D -HSPLandroid/icu/util/Currency;->getSymbol(Landroid/icu/util/ULocale;)Ljava/lang/String; -HSPLandroid/icu/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String; +HSPLandroid/icu/util/Currency;->getSymbol(Landroid/icu/util/ULocale;)Ljava/lang/String;+]Landroid/icu/util/Currency;Landroid/icu/util/Currency; +HSPLandroid/icu/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String;+]Landroid/icu/util/Currency;Landroid/icu/util/Currency; HSPLandroid/icu/util/Currency;->getTenderCurrencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; HSPLandroid/icu/util/Currency;->isAlpha3Code(Ljava/lang/String;)Z HSPLandroid/icu/util/Currency;->loadCurrency(Ljava/lang/String;)Landroid/icu/util/Currency; @@ -10398,10 +10281,10 @@ HSPLandroid/icu/util/DateTimeRule;->getRuleDayOfWeek()I HSPLandroid/icu/util/DateTimeRule;->getRuleMillisInDay()I HSPLandroid/icu/util/DateTimeRule;->getRuleMonth()I HSPLandroid/icu/util/DateTimeRule;->getTimeRuleType()I -HSPLandroid/icu/util/GregorianCalendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V +HSPLandroid/icu/util/GregorianCalendar;->(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V+]Landroid/icu/util/GregorianCalendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/GregorianCalendar;->getType()Ljava/lang/String; -HSPLandroid/icu/util/GregorianCalendar;->handleComputeFields(I)V -HSPLandroid/icu/util/GregorianCalendar;->handleGetYearLength(I)I +HSPLandroid/icu/util/GregorianCalendar;->handleComputeFields(I)V+]Landroid/icu/util/GregorianCalendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/icu/util/GregorianCalendar;->handleGetYearLength(I)I+]Landroid/icu/util/GregorianCalendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/icu/util/GregorianCalendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z HSPLandroid/icu/util/GregorianCalendar;->isLeapYear(I)Z HSPLandroid/icu/util/InitialTimeZoneRule;->(Ljava/lang/String;II)V @@ -10463,7 +10346,7 @@ HSPLandroid/icu/util/MutableCodePointTrie;->writeBlock(II)V HSPLandroid/icu/util/Output;->(Ljava/lang/Object;)V HSPLandroid/icu/util/STZInfo;->()V HSPLandroid/icu/util/SimpleTimeZone;->(ILjava/lang/String;IIIIIIIIIII)V -HSPLandroid/icu/util/SimpleTimeZone;->clone()Ljava/lang/Object; +HSPLandroid/icu/util/SimpleTimeZone;->clone()Ljava/lang/Object;+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/util/SimpleTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone; HSPLandroid/icu/util/SimpleTimeZone;->compareToRule(IIIIIIIIIIII)I HSPLandroid/icu/util/SimpleTimeZone;->construct(IIIIIIIIIIII)V @@ -10472,7 +10355,7 @@ HSPLandroid/icu/util/SimpleTimeZone;->decodeRules()V HSPLandroid/icu/util/SimpleTimeZone;->decodeStartRule()V HSPLandroid/icu/util/SimpleTimeZone;->getDSTSavings()I HSPLandroid/icu/util/SimpleTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; -HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIII)I +HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIII)I+]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIIII)I HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIIIII)I HSPLandroid/icu/util/SimpleTimeZone;->getRawOffset()I @@ -10482,7 +10365,7 @@ HSPLandroid/icu/util/SimpleTimeZone;->hashCode()I HSPLandroid/icu/util/SimpleTimeZone;->initTransitionRules()V HSPLandroid/icu/util/SimpleTimeZone;->isFrozen()Z HSPLandroid/icu/util/SimpleTimeZone;->setStartYear(I)V -HSPLandroid/icu/util/SimpleTimeZone;->toString()Ljava/lang/String; +HSPLandroid/icu/util/SimpleTimeZone;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/util/SimpleTimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/util/SimpleTimeZone;->useDaylightTime()Z HSPLandroid/icu/util/TimeArrayTimeZoneRule;->(Ljava/lang/String;II[JI)V HSPLandroid/icu/util/TimeArrayTimeZoneRule;->getStartTimes()[J @@ -10497,10 +10380,10 @@ HSPLandroid/icu/util/TimeZone;->getDefault()Landroid/icu/util/TimeZone; HSPLandroid/icu/util/TimeZone;->getFrozenICUTimeZone(Ljava/lang/String;Z)Landroid/icu/util/BasicTimeZone; HSPLandroid/icu/util/TimeZone;->getFrozenTimeZone(Ljava/lang/String;)Landroid/icu/util/TimeZone; HSPLandroid/icu/util/TimeZone;->getID()Ljava/lang/String; -HSPLandroid/icu/util/TimeZone;->getOffset(JZ[I)V +HSPLandroid/icu/util/TimeZone;->getOffset(JZ[I)V+]Landroid/icu/util/TimeZone;Landroid/icu/util/SimpleTimeZone; HSPLandroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;)Landroid/icu/util/TimeZone; -HSPLandroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone; -HSPLandroid/icu/util/TimeZone;->hashCode()I +HSPLandroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone;+]Landroid/icu/util/TimeZone;Landroid/icu/impl/OlsonTimeZone; +HSPLandroid/icu/util/TimeZone;->hashCode()I+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/icu/util/TimeZone;->setICUDefault(Landroid/icu/util/TimeZone;)V HSPLandroid/icu/util/TimeZoneRule;->(Ljava/lang/String;II)V HSPLandroid/icu/util/TimeZoneRule;->getDSTSavings()I @@ -10537,60 +10420,59 @@ HSPLandroid/icu/util/ULocale;->(Ljava/lang/String;Ljava/util/Locale;)V HSPLandroid/icu/util/ULocale;->(Ljava/lang/String;Ljava/util/Locale;Landroid/icu/util/ULocale-IA;)V HSPLandroid/icu/util/ULocale;->addLikelySubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->appendTag(Ljava/lang/String;Ljava/lang/StringBuilder;)V -HSPLandroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser; HSPLandroid/icu/util/ULocale;->canonicalize(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->createCanonical(Ljava/lang/String;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->createLikelySubtagsString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->equals(Ljava/lang/Object;)Z+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->extensions()Landroid/icu/impl/locale/LocaleExtensions;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Landroid/icu/impl/locale/InternalLocaleBuilder;Landroid/icu/impl/locale/InternalLocaleBuilder; HSPLandroid/icu/util/ULocale;->forLocale(Ljava/util/Locale;)Landroid/icu/util/ULocale;+]Landroid/icu/impl/SoftCache;Landroid/icu/util/ULocale$2; HSPLandroid/icu/util/ULocale;->getBaseName()Ljava/lang/String; HSPLandroid/icu/util/ULocale;->getBaseName(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getCountry()Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getDefault()Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->getCountry()Ljava/lang/String;+]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale; +HSPLandroid/icu/util/ULocale;->getDefault()Landroid/icu/util/ULocale;+]Ljava/util/Locale;Ljava/util/Locale; HSPLandroid/icu/util/ULocale;->getDefault(Landroid/icu/util/ULocale$Category;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->getInstance(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->getKeywordValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser; HSPLandroid/icu/util/ULocale;->getKeywords()Ljava/util/Iterator; -HSPLandroid/icu/util/ULocale;->getKeywords(Ljava/lang/String;)Ljava/util/Iterator; -HSPLandroid/icu/util/ULocale;->getLanguage()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getKeywords(Ljava/lang/String;)Ljava/util/Iterator;+]Landroid/icu/impl/LocaleIDParser;Landroid/icu/impl/LocaleIDParser; +HSPLandroid/icu/util/ULocale;->getLanguage()Ljava/lang/String;+]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale; HSPLandroid/icu/util/ULocale;->getName()Ljava/lang/String; HSPLandroid/icu/util/ULocale;->getName(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getScript()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; +HSPLandroid/icu/util/ULocale;->getScript()Ljava/lang/String;+]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale; HSPLandroid/icu/util/ULocale;->getScript(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->getShortestSubtagLength(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->getVariant()Ljava/lang/String; +HSPLandroid/icu/util/ULocale;->getVariant()Ljava/lang/String;+]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale; HSPLandroid/icu/util/ULocale;->getVariant(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->hashCode()I HSPLandroid/icu/util/ULocale;->isEmptyString(Ljava/lang/String;)Z HSPLandroid/icu/util/ULocale;->isKnownCanonicalizedLocale(Ljava/lang/String;)Z -HSPLandroid/icu/util/ULocale;->isRightToLeft()Z +HSPLandroid/icu/util/ULocale;->isRightToLeft()Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->lookupLikelySubtags(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->lscvToID(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->parseTagString(Ljava/lang/String;[Ljava/lang/String;)I HSPLandroid/icu/util/ULocale;->setKeywordValue(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/ULocale; HSPLandroid/icu/util/ULocale;->setKeywordValue(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/icu/util/ULocale;->stripLeadingUnd(Ljava/lang/String;)Ljava/lang/String; -HSPLandroid/icu/util/ULocale;->toLanguageTag()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale;]Landroid/icu/impl/locale/LanguageTag;Landroid/icu/impl/locale/LanguageTag;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/icu/util/ULocale;->toLanguageTag()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/BaseLocale;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;]Landroid/icu/impl/locale/LanguageTag;Landroid/icu/impl/locale/LanguageTag;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/Collections$UnmodifiableCollection$1; HSPLandroid/icu/util/ULocale;->toLocale()Ljava/util/Locale; HSPLandroid/icu/util/ULocale;->toString()Ljava/lang/String; HSPLandroid/icu/util/UResourceBundle;->()V HSPLandroid/icu/util/UResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->get(I)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->get(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle;+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle; HSPLandroid/icu/util/UResourceBundle;->getIterator()Landroid/icu/util/UResourceBundleIterator; -HSPLandroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType; +HSPLandroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType;+]Ljava/util/Map;Ljava/util/concurrent/ConcurrentHashMap; HSPLandroid/icu/util/UResourceBundle;->handleGetObject(Ljava/lang/String;)Ljava/lang/Object; HSPLandroid/icu/util/UResourceBundle;->handleGetObjectImpl(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object; -HSPLandroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle; +HSPLandroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle;+]Landroid/icu/util/UResourceBundle$RootType;Landroid/icu/util/UResourceBundle$RootType; HSPLandroid/icu/util/UResourceBundle;->resolveObject(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object; HSPLandroid/icu/util/UResourceBundleIterator;->(Landroid/icu/util/UResourceBundle;)V HSPLandroid/icu/util/UResourceBundleIterator;->hasNext()Z @@ -10626,7 +10508,7 @@ HSPLandroid/location/LastLocationRequest;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/location/Location$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; HSPLandroid/location/Location$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Location; HSPLandroid/location/Location$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/location/Location;->(Landroid/location/Location;)V +HSPLandroid/location/Location;->(Landroid/location/Location;)V+]Landroid/location/Location;Landroid/location/Location; HSPLandroid/location/Location;->(Ljava/lang/String;)V HSPLandroid/location/Location;->computeDistanceAndBearing(DDDDLandroid/location/Location$BearingDistanceCache;)V HSPLandroid/location/Location;->distanceTo(Landroid/location/Location;)F @@ -10666,7 +10548,7 @@ HSPLandroid/location/Location;->setSpeedAccuracyMetersPerSecond(F)V HSPLandroid/location/Location;->setTime(J)V HSPLandroid/location/Location;->setVerticalAccuracyMeters(F)V HSPLandroid/location/Location;->toString()Ljava/lang/String; -HSPLandroid/location/Location;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/location/Location;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/location/Location;Landroid/location/Location;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/location/LocationListener;->onLocationChanged(Ljava/util/List;)V HSPLandroid/location/LocationManager$LocationEnabledCache;->recompute(Ljava/lang/Integer;)Ljava/lang/Boolean; HSPLandroid/location/LocationManager$LocationEnabledCache;->recompute(Ljava/lang/Object;)Ljava/lang/Object; @@ -10727,11 +10609,11 @@ HSPLandroid/location/provider/ProviderProperties$1;->createFromParcel(Landroid/o HSPLandroid/location/provider/ProviderProperties$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/location/provider/ProviderProperties;->(ZZZZZZZII)V HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/AudioAttributes; -HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/media/AudioAttributes$1;Landroid/media/AudioAttributes$1; HSPLandroid/media/AudioAttributes$Builder;->()V HSPLandroid/media/AudioAttributes$Builder;->(Landroid/media/AudioAttributes;)V HSPLandroid/media/AudioAttributes$Builder;->addTag(Ljava/lang/String;)Landroid/media/AudioAttributes$Builder; -HSPLandroid/media/AudioAttributes$Builder;->build()Landroid/media/AudioAttributes;+]Ljava/util/HashSet;Ljava/util/HashSet; +HSPLandroid/media/AudioAttributes$Builder;->build()Landroid/media/AudioAttributes; HSPLandroid/media/AudioAttributes$Builder;->replaceFlags(I)Landroid/media/AudioAttributes$Builder; HSPLandroid/media/AudioAttributes$Builder;->setAllowedCapturePolicy(I)Landroid/media/AudioAttributes$Builder; HSPLandroid/media/AudioAttributes$Builder;->setCapturePreset(I)Landroid/media/AudioAttributes$Builder; @@ -10753,8 +10635,7 @@ HSPLandroid/media/AudioAttributes;->-$$Nest$fputmTags(Landroid/media/AudioAttrib HSPLandroid/media/AudioAttributes;->-$$Nest$fputmUsage(Landroid/media/AudioAttributes;I)V HSPLandroid/media/AudioAttributes;->()V HSPLandroid/media/AudioAttributes;->(Landroid/media/AudioAttributes-IA;)V -HSPLandroid/media/AudioAttributes;->(Landroid/os/Parcel;)V -HSPLandroid/media/AudioAttributes;->(Landroid/os/Parcel;Landroid/media/AudioAttributes-IA;)V +HSPLandroid/media/AudioAttributes;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/media/AudioAttributes;->areHapticChannelsMuted()Z HSPLandroid/media/AudioAttributes;->equals(Ljava/lang/Object;)Z HSPLandroid/media/AudioAttributes;->getAllFlags()I @@ -10764,16 +10645,16 @@ HSPLandroid/media/AudioAttributes;->getUsage()I HSPLandroid/media/AudioAttributes;->hashCode()I HSPLandroid/media/AudioAttributes;->isSystemUsage(I)Z HSPLandroid/media/AudioAttributes;->toVolumeStreamType(ZLandroid/media/AudioAttributes;)I -HSPLandroid/media/AudioAttributes;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/media/AudioAttributes;->writeToParcel(Landroid/os/Parcel;I)V+]Ljava/util/HashSet;Ljava/util/HashSet;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/media/AudioDeviceCallback;->()V HSPLandroid/media/AudioDeviceInfo;->(Landroid/media/AudioDevicePort;)V -HSPLandroid/media/AudioDeviceInfo;->convertInternalDeviceToDeviceType(I)I -HSPLandroid/media/AudioDeviceInfo;->getId()I +HSPLandroid/media/AudioDeviceInfo;->convertInternalDeviceToDeviceType(I)I+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; +HSPLandroid/media/AudioDeviceInfo;->getId()I+]Landroid/media/AudioHandle;Landroid/media/AudioHandle;]Landroid/media/AudioDevicePort;Landroid/media/AudioDevicePort; HSPLandroid/media/AudioDeviceInfo;->getType()I HSPLandroid/media/AudioDevicePort;->(Landroid/media/AudioHandle;Ljava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;ILjava/lang/String;[I[ILjava/util/List;)V HSPLandroid/media/AudioDevicePort;->(Landroid/media/AudioHandle;Ljava/lang/String;[I[I[I[I[Landroid/media/AudioGain;ILjava/lang/String;[I[I)V HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioDevicePortConfig; -HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig; +HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig;+]Landroid/media/AudioDevicePort;Landroid/media/AudioDevicePort; HSPLandroid/media/AudioDevicePort;->type()I HSPLandroid/media/AudioDevicePortConfig;->(Landroid/media/AudioDevicePort;IIILandroid/media/AudioGainConfig;)V HSPLandroid/media/AudioFocusRequest$Builder;->(I)V @@ -10827,13 +10708,13 @@ HSPLandroid/media/AudioManager;->abandonAudioFocus(Landroid/media/AudioManager$O HSPLandroid/media/AudioManager;->areNavigationRepeatSoundEffectsEnabled()Z HSPLandroid/media/AudioManager;->broadcastDeviceListChange_sync(Landroid/os/Handler;)V HSPLandroid/media/AudioManager;->calcListDeltas(Ljava/util/ArrayList;Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo; -HSPLandroid/media/AudioManager;->checkFlags(Landroid/media/AudioDevicePort;I)Z -HSPLandroid/media/AudioManager;->checkTypes(Landroid/media/AudioDevicePort;)Z -HSPLandroid/media/AudioManager;->filterDevicePorts(Ljava/util/ArrayList;Ljava/util/ArrayList;)V +HSPLandroid/media/AudioManager;->checkFlags(Landroid/media/AudioDevicePort;I)Z+]Landroid/media/AudioDevicePort;Landroid/media/AudioDevicePort; +HSPLandroid/media/AudioManager;->checkTypes(Landroid/media/AudioDevicePort;)Z+]Landroid/media/AudioDevicePort;Landroid/media/AudioDevicePort; +HSPLandroid/media/AudioManager;->filterDevicePorts(Ljava/util/ArrayList;Ljava/util/ArrayList;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/media/AudioManager;->generateAudioSessionId()I HSPLandroid/media/AudioManager;->getActiveRecordingConfigurations()Ljava/util/List; HSPLandroid/media/AudioManager;->getContext()Landroid/content/Context; -HSPLandroid/media/AudioManager;->getDeviceForPortId(II)Landroid/media/AudioDeviceInfo; +HSPLandroid/media/AudioManager;->getDeviceForPortId(II)Landroid/media/AudioDeviceInfo;+]Landroid/media/AudioDeviceInfo;Landroid/media/AudioDeviceInfo; HSPLandroid/media/AudioManager;->getDevices(I)[Landroid/media/AudioDeviceInfo; HSPLandroid/media/AudioManager;->getDevicesForStream(I)I HSPLandroid/media/AudioManager;->getDevicesStatic(I)[Landroid/media/AudioDeviceInfo; @@ -10849,7 +10730,7 @@ HSPLandroid/media/AudioManager;->getStreamMinVolumeInt(I)I HSPLandroid/media/AudioManager;->getStreamVolume(I)I HSPLandroid/media/AudioManager;->hasPlaybackCallback_sync(Landroid/media/AudioManager$AudioPlaybackCallback;)Z HSPLandroid/media/AudioManager;->hasRecordCallback_sync(Landroid/media/AudioManager$AudioRecordingCallback;)Z -HSPLandroid/media/AudioManager;->infoListFromPortList(Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo; +HSPLandroid/media/AudioManager;->infoListFromPortList(Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/media/AudioManager;->isBluetoothA2dpOn()Z HSPLandroid/media/AudioManager;->isBluetoothScoOn()Z HSPLandroid/media/AudioManager;->isInputDevice(I)Z @@ -10876,12 +10757,12 @@ HSPLandroid/media/AudioManager;->resetAudioPortGeneration()I HSPLandroid/media/AudioManager;->setContext(Landroid/content/Context;)V HSPLandroid/media/AudioManager;->setParameters(Ljava/lang/String;)V HSPLandroid/media/AudioManager;->unregisterAudioFocusRequest(Landroid/media/AudioManager$OnAudioFocusChangeListener;)V -HSPLandroid/media/AudioManager;->updateAudioPortCache(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)I +HSPLandroid/media/AudioManager;->updateAudioPortCache(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)I+]Landroid/media/AudioPatch;Landroid/media/AudioPatch;]Landroid/media/AudioPortEventHandler;Landroid/media/AudioPortEventHandler;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/media/AudioManager;->updatePortConfig(Landroid/media/AudioPortConfig;Ljava/util/ArrayList;)Landroid/media/AudioPortConfig;+]Landroid/media/AudioPortConfig;Landroid/media/AudioPortConfig;]Landroid/media/AudioHandle;Landroid/media/AudioHandle;]Landroid/media/AudioPort;Landroid/media/AudioMixPort;,Landroid/media/AudioDevicePort;,Landroid/media/AudioPort;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/media/AudioMixPort;->(Landroid/media/AudioHandle;IILjava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;)V HSPLandroid/media/AudioMixPort;->(Landroid/media/AudioHandle;IILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V HSPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioMixPortConfig; -HSPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig; +HSPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig;+]Landroid/media/AudioMixPort;Landroid/media/AudioMixPort; HSPLandroid/media/AudioMixPortConfig;->(Landroid/media/AudioMixPort;IIILandroid/media/AudioGainConfig;)V HSPLandroid/media/AudioPatch;->(Landroid/media/AudioHandle;[Landroid/media/AudioPortConfig;[Landroid/media/AudioPortConfig;)V HSPLandroid/media/AudioPatch;->sinks()[Landroid/media/AudioPortConfig; @@ -10889,8 +10770,8 @@ HSPLandroid/media/AudioPatch;->sources()[Landroid/media/AudioPortConfig; HSPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->(Landroid/media/AudioPlaybackConfiguration;Landroid/media/IPlayer;)V HSPLandroid/media/AudioPlaybackConfiguration;->getAudioAttributes()Landroid/media/AudioAttributes; HSPLandroid/media/AudioPlaybackConfiguration;->isActive()Z -HSPLandroid/media/AudioPort$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I -HSPLandroid/media/AudioPort;->(Landroid/media/AudioHandle;ILjava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;Ljava/util/List;)V +HSPLandroid/media/AudioPort$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I+]Ljava/lang/Number;Ljava/lang/Integer; +HSPLandroid/media/AudioPort;->(Landroid/media/AudioHandle;ILjava/lang/String;Ljava/util/List;[Landroid/media/AudioGain;Ljava/util/List;)V+]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/stream/Stream;Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/ReferencePipeline$Head;]Ljava/util/stream/IntStream;Ljava/util/stream/IntPipeline$Head;,Ljava/util/stream/ReferencePipeline$4;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Landroid/media/AudioProfile;Landroid/media/AudioProfile;]Ljava/util/Set;Ljava/util/HashSet; HSPLandroid/media/AudioPort;->(Landroid/media/AudioHandle;ILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V HSPLandroid/media/AudioPort;->handle()Landroid/media/AudioHandle; HSPLandroid/media/AudioPort;->id()I @@ -10902,10 +10783,10 @@ HSPLandroid/media/AudioPortConfig;->gain()Landroid/media/AudioGainConfig; HSPLandroid/media/AudioPortConfig;->port()Landroid/media/AudioPort; HSPLandroid/media/AudioPortConfig;->samplingRate()I HSPLandroid/media/AudioPortEventHandler$1;->(Landroid/media/AudioPortEventHandler;Landroid/os/Looper;)V -HSPLandroid/media/AudioPortEventHandler$1;->handleMessage(Landroid/os/Message;)V +HSPLandroid/media/AudioPortEventHandler$1;->handleMessage(Landroid/os/Message;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/media/AudioPortEventHandler;->handler()Landroid/os/Handler; HSPLandroid/media/AudioPortEventHandler;->init()V -HSPLandroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V +HSPLandroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V+]Landroid/os/Handler;Landroid/media/AudioPortEventHandler$1;]Landroid/media/AudioPortEventHandler;Landroid/media/AudioPortEventHandler;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference; HSPLandroid/media/AudioPortEventHandler;->registerListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V HSPLandroid/media/AudioProfile;->(I[I[I[II)V HSPLandroid/media/AudioProfile;->getChannelIndexMasks()[I @@ -10950,7 +10831,6 @@ HSPLandroid/media/AudioTrack;->startImpl()V HSPLandroid/media/AudioTrack;->stop()V HSPLandroid/media/AudioTrack;->testDisableNativeRoutingCallbacksLocked()V HSPLandroid/media/AudioTrack;->tryToDisableNativeRoutingCallback()V -HSPLandroid/media/AudioTrack;->write(Ljava/nio/ByteBuffer;II)I+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLandroid/media/CallbackUtil$LazyListenerManager;->()V HSPLandroid/media/IAudioFocusDispatcher$Stub;->()V HSPLandroid/media/IAudioFocusDispatcher$Stub;->asBinder()Landroid/os/IBinder; @@ -11308,7 +11188,6 @@ HSPLandroid/media/MediaRouter;->systemVolumeChanged(I)V HSPLandroid/media/MediaRouter;->typesToString(I)Ljava/lang/String; HSPLandroid/media/MediaRouter;->updateWifiDisplayStatus(Landroid/hardware/display/WifiDisplayStatus;)V HSPLandroid/media/MediaServiceManager$ServiceRegisterer;->(Ljava/lang/String;)V -HSPLandroid/media/MediaServiceManager$ServiceRegisterer;->(Ljava/lang/String;Z)V HSPLandroid/media/MediaServiceManager$ServiceRegisterer;->get()Landroid/os/IBinder; HSPLandroid/media/MediaServiceManager;->()V HSPLandroid/media/MediaServiceManager;->getMediaCommunicationServiceRegisterer()Landroid/media/MediaServiceManager$ServiceRegisterer; @@ -11488,11 +11367,8 @@ HSPLandroid/media/session/MediaSession;->setMetadata(Landroid/media/MediaMetadat HSPLandroid/media/session/MediaSession;->setPlaybackState(Landroid/media/session/PlaybackState;)V HSPLandroid/media/session/MediaSession;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub;->(Landroid/media/session/MediaSessionManager;)V -HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub;->(Landroid/media/session/MediaSessionManager;Landroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub-IA;)V HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub;->(Landroid/media/session/MediaSessionManager;)V -HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub;->(Landroid/media/session/MediaSessionManager;Landroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub-IA;)V HSPLandroid/media/session/MediaSessionManager$RemoteSessionCallbackStub;->(Landroid/media/session/MediaSessionManager;)V -HSPLandroid/media/session/MediaSessionManager$RemoteSessionCallbackStub;->(Landroid/media/session/MediaSessionManager;Landroid/media/session/MediaSessionManager$RemoteSessionCallbackStub-IA;)V HSPLandroid/media/session/MediaSessionManager$RemoteUserInfo;->(Ljava/lang/String;II)V HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1$$ExternalSyntheticLambda0;->run()V HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;->(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)V @@ -11627,8 +11503,8 @@ HSPLandroid/net/TelephonyNetworkSpecifier;->equals(Ljava/lang/Object;)Z HSPLandroid/net/TelephonyNetworkSpecifier;->hashCode()I HSPLandroid/net/TelephonyNetworkSpecifier;->toString()Ljava/lang/String; HSPLandroid/net/TelephonyNetworkSpecifier;->writeToParcel(Landroid/os/Parcel;I)V -HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Uri; -HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Uri;+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/net/Uri$1;Landroid/net/Uri$1; HSPLandroid/net/Uri$1;->newArray(I)[Landroid/net/Uri; HSPLandroid/net/Uri$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/net/Uri$AbstractHierarchicalUri;->()V @@ -11645,7 +11521,7 @@ HSPLandroid/net/Uri$AbstractHierarchicalUri;->parseUserInfo()Ljava/lang/String; HSPLandroid/net/Uri$AbstractPart;->(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/net/Uri$AbstractPart;->getDecoded()Ljava/lang/String; HSPLandroid/net/Uri$Builder;->()V -HSPLandroid/net/Uri$Builder;->appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->appendQueryParameter(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart;,Landroid/net/Uri$Part; HSPLandroid/net/Uri$Builder;->authority(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder; @@ -11653,7 +11529,7 @@ HSPLandroid/net/Uri$Builder;->authority(Ljava/lang/String;)Landroid/net/Uri$Buil HSPLandroid/net/Uri$Builder;->build()Landroid/net/Uri; HSPLandroid/net/Uri$Builder;->clearQuery()Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->encodedAuthority(Ljava/lang/String;)Landroid/net/Uri$Builder; -HSPLandroid/net/Uri$Builder;->encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder; +HSPLandroid/net/Uri$Builder;->encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->encodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->encodedQuery(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->fragment(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder; @@ -11665,22 +11541,21 @@ HSPLandroid/net/Uri$Builder;->query(Landroid/net/Uri$Part;)Landroid/net/Uri$Buil HSPLandroid/net/Uri$Builder;->scheme(Ljava/lang/String;)Landroid/net/Uri$Builder; HSPLandroid/net/Uri$Builder;->toString()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V -HSPLandroid/net/Uri$HierarchicalUri;->appendSspTo(Ljava/lang/StringBuilder;)V +HSPLandroid/net/Uri$HierarchicalUri;->appendSspTo(Ljava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/net/Uri$Part;Landroid/net/Uri$Part;,Landroid/net/Uri$Part$EmptyPart;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; HSPLandroid/net/Uri$HierarchicalUri;->buildUpon()Landroid/net/Uri$Builder;+]Landroid/net/Uri$Builder;Landroid/net/Uri$Builder; -HSPLandroid/net/Uri$HierarchicalUri;->generatePath(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart;,Landroid/net/Uri$Part; -HSPLandroid/net/Uri$HierarchicalUri;->getAuthority()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getAuthority()Ljava/lang/String;+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart;,Landroid/net/Uri$Part; HSPLandroid/net/Uri$HierarchicalUri;->getEncodedAuthority()Ljava/lang/String; -HSPLandroid/net/Uri$HierarchicalUri;->getEncodedFragment()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->getEncodedFragment()Ljava/lang/String;+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart; HSPLandroid/net/Uri$HierarchicalUri;->getEncodedPath()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->getEncodedQuery()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->getFragment()Ljava/lang/String; -HSPLandroid/net/Uri$HierarchicalUri;->getPath()Ljava/lang/String; -HSPLandroid/net/Uri$HierarchicalUri;->getPathSegments()Ljava/util/List; +HSPLandroid/net/Uri$HierarchicalUri;->getPath()Ljava/lang/String;+]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$HierarchicalUri;->getPathSegments()Ljava/util/List;+]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; HSPLandroid/net/Uri$HierarchicalUri;->getQuery()Ljava/lang/String;+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart; HSPLandroid/net/Uri$HierarchicalUri;->getScheme()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->getSchemeSpecificPart()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->isHierarchical()Z -HSPLandroid/net/Uri$HierarchicalUri;->makeUriString()Ljava/lang/String; +HSPLandroid/net/Uri$HierarchicalUri;->makeUriString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart; HSPLandroid/net/Uri$HierarchicalUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri;+]Ljava/lang/String;Ljava/lang/String;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/net/Uri$HierarchicalUri;->toString()Ljava/lang/String; HSPLandroid/net/Uri$HierarchicalUri;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/net/Uri$Part;Landroid/net/Uri$Part$EmptyPart;,Landroid/net/Uri$Part;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -11693,7 +11568,7 @@ HSPLandroid/net/Uri$OpaqueUri;->toString()Ljava/lang/String; HSPLandroid/net/Uri$OpaqueUri;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/net/Uri$Part$EmptyPart;->isEmpty()Z HSPLandroid/net/Uri$Part;->(Ljava/lang/String;Ljava/lang/String;)V -HSPLandroid/net/Uri$Part;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Part; +HSPLandroid/net/Uri$Part;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Part;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$Part;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$Part; HSPLandroid/net/Uri$Part;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$Part; HSPLandroid/net/Uri$Part;->getEncoded()Ljava/lang/String; @@ -11701,15 +11576,15 @@ HSPLandroid/net/Uri$Part;->isEmpty()Z HSPLandroid/net/Uri$Part;->nonNull(Landroid/net/Uri$Part;)Landroid/net/Uri$Part; HSPLandroid/net/Uri$PathPart;->(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/net/Uri$PathPart;->appendDecodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart; -HSPLandroid/net/Uri$PathPart;->appendEncodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; -HSPLandroid/net/Uri$PathPart;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->appendEncodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; +HSPLandroid/net/Uri$PathPart;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$PathPart;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$PathPart;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$PathPart; HSPLandroid/net/Uri$PathPart;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$PathPart; HSPLandroid/net/Uri$PathPart;->getEncoded()Ljava/lang/String; HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments;+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri$PathSegmentsBuilder;Landroid/net/Uri$PathSegmentsBuilder;]Landroid/net/Uri$PathPart;Landroid/net/Uri$PathPart; -HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;+]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/net/Uri$PathSegments;->([Ljava/lang/String;I)V -HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object; +HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object;+]Landroid/net/Uri$PathSegments;Landroid/net/Uri$PathSegments; HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/String; HSPLandroid/net/Uri$PathSegments;->size()I HSPLandroid/net/Uri$PathSegmentsBuilder;->add(Ljava/lang/String;)V @@ -11741,7 +11616,7 @@ HSPLandroid/net/Uri$StringUri;->parseFragment()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->parsePath()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->parsePath(Ljava/lang/String;I)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->parseQuery()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/net/Uri$StringUri;->parseScheme()Ljava/lang/String; +HSPLandroid/net/Uri$StringUri;->parseScheme()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->toString()Ljava/lang/String; HSPLandroid/net/Uri$StringUri;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/net/Uri;->()V @@ -11753,13 +11628,13 @@ HSPLandroid/net/Uri;->compareTo(Ljava/lang/Object;)I HSPLandroid/net/Uri;->decode(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/net/Uri;->encode(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/net/Uri;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLandroid/net/Uri;->equals(Ljava/lang/Object;)Z +HSPLandroid/net/Uri;->equals(Ljava/lang/Object;)Z+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/net/Uri;->fromFile(Ljava/io/File;)Landroid/net/Uri; HSPLandroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/net/Uri;->getBooleanQueryParameter(Ljava/lang/String;Z)Z -HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set; -HSPLandroid/net/Uri;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$HierarchicalUri;,Landroid/net/Uri$StringUri; +HSPLandroid/net/Uri;->hashCode()I+]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/net/Uri;->isAbsolute()Z HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/Uri;->isOpaque()Z @@ -11768,9 +11643,9 @@ HSPLandroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/net/Uri;->toSafeString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Landroid/net/Uri;Landroid/net/Uri$OpaqueUri;,Landroid/net/Uri$HierarchicalUri; HSPLandroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/net/Uri;->writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V -HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String; -HSPLandroid/net/UriCodec;->flushDecodingByteAccumulator(Ljava/lang/StringBuilder;Ljava/nio/charset/CharsetDecoder;Ljava/nio/ByteBuffer;Z)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/net/UriCodec;->flushDecodingByteAccumulator(Ljava/lang/StringBuilder;Ljava/nio/charset/CharsetDecoder;Ljava/nio/ByteBuffer;Z)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLandroid/net/UriCodec;->getNextCharacter(Ljava/lang/String;IILjava/lang/String;)C+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/net/UriCodec;->hexCharToValue(C)I HSPLandroid/net/WebAddress;->(Ljava/lang/String;)V @@ -11854,24 +11729,24 @@ HSPLandroid/os/AsyncTask;->postResultIfNotInvoked(Ljava/lang/Object;)V HSPLandroid/os/BaseBundle;->()V HSPLandroid/os/BaseBundle;->(I)V HSPLandroid/os/BaseBundle;->(Landroid/os/BaseBundle;)V -HSPLandroid/os/BaseBundle;->(Landroid/os/BaseBundle;Z)V +HSPLandroid/os/BaseBundle;->(Landroid/os/BaseBundle;Z)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->(Landroid/os/Parcel;I)V -HSPLandroid/os/BaseBundle;->(Ljava/lang/ClassLoader;I)V+]Ljava/lang/Object;Landroid/os/Bundle;]Ljava/lang/Class;Ljava/lang/Class; +HSPLandroid/os/BaseBundle;->(Ljava/lang/ClassLoader;I)V+]Ljava/lang/Object;Landroid/os/Bundle;,Landroid/os/PersistableBundle;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/os/BaseBundle;->clear()V HSPLandroid/os/BaseBundle;->containsKey(Ljava/lang/String;)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->deepCopyValue(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/BaseBundle;->get(Ljava/lang/String;)Ljava/lang/Object;+]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->get(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; HSPLandroid/os/BaseBundle;->getArrayList(Ljava/lang/String;Ljava/lang/Class;)Ljava/util/ArrayList; -HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;)Z -HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;Z)Z +HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;)Z+]Landroid/os/BaseBundle;Landroid/os/PersistableBundle;,Landroid/os/Bundle; +HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;Z)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getBooleanArray(Ljava/lang/String;)[Z HSPLandroid/os/BaseBundle;->getByteArray(Ljava/lang/String;)[B HSPLandroid/os/BaseBundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence; HSPLandroid/os/BaseBundle;->getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence; -HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;F)F +HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;F)F+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Float;Ljava/lang/Float;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;)I -HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;I)I +HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;I)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getIntArray(Ljava/lang/String;)[I HSPLandroid/os/BaseBundle;->getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList; HSPLandroid/os/BaseBundle;->getLong(Ljava/lang/String;)J @@ -11879,7 +11754,7 @@ HSPLandroid/os/BaseBundle;->getLong(Ljava/lang/String;J)J+]Landroid/util/ArrayMa HSPLandroid/os/BaseBundle;->getLongArray(Ljava/lang/String;)[J+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getSerializable(Ljava/lang/String;)Ljava/io/Serializable; HSPLandroid/os/BaseBundle;->getSerializable(Ljava/lang/String;Ljava/lang/Class;)Ljava/io/Serializable; -HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;)Ljava/lang/String;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/PersistableBundle;,Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/os/BaseBundle;->getStringArray(Ljava/lang/String;)[Ljava/lang/String;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList; @@ -11895,10 +11770,10 @@ HSPLandroid/os/BaseBundle;->isParcelled()Z HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->putAll(Landroid/os/PersistableBundle;)V HSPLandroid/os/BaseBundle;->putAll(Landroid/util/ArrayMap;)V -HSPLandroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V +HSPLandroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/PersistableBundle;,Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->putBooleanArray(Ljava/lang/String;[Z)V HSPLandroid/os/BaseBundle;->putByteArray(Ljava/lang/String;[B)V -HSPLandroid/os/BaseBundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V +HSPLandroid/os/BaseBundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V HSPLandroid/os/BaseBundle;->putDouble(Ljava/lang/String;D)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; HSPLandroid/os/BaseBundle;->putFloat(Ljava/lang/String;F)V @@ -11917,7 +11792,7 @@ HSPLandroid/os/BaseBundle;->remove(Ljava/lang/String;)V HSPLandroid/os/BaseBundle;->setClassLoader(Ljava/lang/ClassLoader;)V HSPLandroid/os/BaseBundle;->setShouldDefuse(Z)V HSPLandroid/os/BaseBundle;->size()I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/BaseBundle;Landroid/os/Bundle; -HSPLandroid/os/BaseBundle;->unparcel()V+]Landroid/os/BaseBundle;Landroid/os/PersistableBundle;,Landroid/os/Bundle; +HSPLandroid/os/BaseBundle;->unparcel()V+]Landroid/os/BaseBundle;Landroid/os/Bundle;,Landroid/os/PersistableBundle; HSPLandroid/os/BaseBundle;->unparcel(Z)V HSPLandroid/os/BaseBundle;->unwrapLazyValueFromMapLocked(ILjava/lang/Class;[Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/BiFunction;Landroid/os/Parcel$LazyValue;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference; HSPLandroid/os/BaseBundle;->writeToParcelInner(Landroid/os/Parcel;I)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -11957,7 +11832,7 @@ HSPLandroid/os/Binder$PropagateWorkSourceTransactListener;->onTransactEnded(Ljav HSPLandroid/os/Binder$PropagateWorkSourceTransactListener;->onTransactStarted(Landroid/os/IBinder;I)Ljava/lang/Object; HSPLandroid/os/Binder$ProxyTransactListener;->onTransactStarted(Landroid/os/IBinder;II)Ljava/lang/Object;+]Landroid/os/Binder$ProxyTransactListener;Landroid/os/Binder$PropagateWorkSourceTransactListener; HSPLandroid/os/Binder;->()V -HSPLandroid/os/Binder;->(Ljava/lang/String;)V +HSPLandroid/os/Binder;->(Ljava/lang/String;)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLandroid/os/Binder;->allowBlocking(Landroid/os/IBinder;)Landroid/os/IBinder; HSPLandroid/os/Binder;->attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V HSPLandroid/os/Binder;->checkParcel(Landroid/os/IBinder;ILandroid/os/Parcel;Ljava/lang/String;)V @@ -11972,7 +11847,7 @@ HSPLandroid/os/Binder;->getInterfaceDescriptor()Ljava/lang/String; HSPLandroid/os/Binder;->getMaxTransactionId()I HSPLandroid/os/Binder;->getSimpleDescriptor()Ljava/lang/String; HSPLandroid/os/Binder;->getTransactionName(I)Ljava/lang/String; -HSPLandroid/os/Binder;->getTransactionTraceName(I)Ljava/lang/String;+]Landroid/os/Binder;Landroid/app/ActivityThread$ApplicationThread;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/util/concurrent/atomic/AtomicReferenceArray; +HSPLandroid/os/Binder;->getTransactionTraceName(I)Ljava/lang/String;+]Landroid/os/Binder;megamorphic_types]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/concurrent/atomic/AtomicReferenceArray;Ljava/util/concurrent/atomic/AtomicReferenceArray; HSPLandroid/os/Binder;->isBinderAlive()Z HSPLandroid/os/Binder;->isProxy(Landroid/os/IInterface;)Z HSPLandroid/os/Binder;->isStackTrackingEnabled()Z @@ -11988,9 +11863,9 @@ HSPLandroid/os/Binder;->withCleanCallingIdentity(Lcom/android/internal/util/Func HSPLandroid/os/BinderProxy$ProxyMap;->get(J)Landroid/os/BinderProxy;+]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/os/BinderProxy$ProxyMap;->hash(J)I HSPLandroid/os/BinderProxy$ProxyMap;->remove(II)V -HSPLandroid/os/BinderProxy$ProxyMap;->set(JLandroid/os/BinderProxy;)V +HSPLandroid/os/BinderProxy$ProxyMap;->set(JLandroid/os/BinderProxy;)V+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/os/BinderProxy;->(J)V -HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy; +HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy;+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry;]Landroid/os/BinderProxy$ProxyMap;Landroid/os/BinderProxy$ProxyMap; HSPLandroid/os/BinderProxy;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface; HSPLandroid/os/BinderProxy;->sendDeathNotice(Landroid/os/IBinder$DeathRecipient;Landroid/os/IBinder;)V HSPLandroid/os/BinderProxy;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z+]Landroid/os/BinderProxy;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -12030,14 +11905,13 @@ HSPLandroid/os/Bundle;->getParcelable(Ljava/lang/String;Ljava/lang/Class;)Ljava/ HSPLandroid/os/Bundle;->getParcelableArray(Ljava/lang/String;)[Landroid/os/Parcelable; HSPLandroid/os/Bundle;->getParcelableArray(Ljava/lang/String;Ljava/lang/Class;)[Ljava/lang/Object;+]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->getParcelableArrayList(Ljava/lang/String;)Ljava/util/ArrayList; -HSPLandroid/os/Bundle;->getParcelableArrayList(Ljava/lang/String;Ljava/lang/Class;)Ljava/util/ArrayList;+]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->getSerializable(Ljava/lang/String;)Ljava/io/Serializable; HSPLandroid/os/Bundle;->getSerializable(Ljava/lang/String;Ljava/lang/Class;)Ljava/io/Serializable; HSPLandroid/os/Bundle;->getSparseParcelableArray(Ljava/lang/String;)Landroid/util/SparseArray; HSPLandroid/os/Bundle;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList; HSPLandroid/os/Bundle;->hasFileDescriptors()Z HSPLandroid/os/Bundle;->maybePrefillHasFds()V+]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/os/Bundle;->putAll(Landroid/os/Bundle;)V +HSPLandroid/os/Bundle;->putAll(Landroid/os/Bundle;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->putBinder(Ljava/lang/String;Landroid/os/IBinder;)V HSPLandroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V HSPLandroid/os/Bundle;->putByteArray(Ljava/lang/String;[B)V @@ -12045,7 +11919,7 @@ HSPLandroid/os/Bundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequenc HSPLandroid/os/Bundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V HSPLandroid/os/Bundle;->putFloat(Ljava/lang/String;F)V HSPLandroid/os/Bundle;->putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V -HSPLandroid/os/Bundle;->putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V +HSPLandroid/os/Bundle;->putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->putParcelableArray(Ljava/lang/String;[Landroid/os/Parcelable;)V HSPLandroid/os/Bundle;->putParcelableArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Bundle;Landroid/os/Bundle; HSPLandroid/os/Bundle;->putParcelableList(Ljava/lang/String;Ljava/util/List;)V @@ -12153,7 +12027,7 @@ HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppFilesDirs(Lj HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppMediaDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment$UserEnvironment;->buildExternalStoragePublicDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment$UserEnvironment;->getExternalDirs()[Ljava/io/File;+]Landroid/os/storage/StorageVolume;Landroid/os/storage/StorageVolume; -HSPLandroid/os/Environment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File; +HSPLandroid/os/Environment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File;+]Landroid/os/Environment$UserEnvironment;Landroid/os/Environment$UserEnvironment; HSPLandroid/os/Environment;->buildExternalStorageAppMediaDirs(Ljava/lang/String;)[Ljava/io/File; HSPLandroid/os/Environment;->buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File; HSPLandroid/os/Environment;->buildPaths([Ljava/io/File;[Ljava/lang/String;)[Ljava/io/File; @@ -12224,14 +12098,11 @@ HSPLandroid/os/GraphicsEnvironment;->getGlobalSettingsString(Landroid/content/Co HSPLandroid/os/GraphicsEnvironment;->getInstance()Landroid/os/GraphicsEnvironment; HSPLandroid/os/GraphicsEnvironment;->getPackageIndex(Ljava/lang/String;Ljava/util/List;)I HSPLandroid/os/GraphicsEnvironment;->getVulkanVersion(Landroid/content/pm/PackageManager;)I -HSPLandroid/os/GraphicsEnvironment;->isAngleEnabledByGameMode(Landroid/content/Context;Ljava/lang/String;)Z HSPLandroid/os/GraphicsEnvironment;->setLayerPaths(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/GraphicsEnvironment;->setup(Landroid/content/Context;Landroid/os/Bundle;)V HSPLandroid/os/GraphicsEnvironment;->setupAngle(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;)Z HSPLandroid/os/GraphicsEnvironment;->setupGpuLayers(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)V HSPLandroid/os/GraphicsEnvironment;->shouldShowAngleInUseDialogBox(Landroid/content/Context;)Z -HSPLandroid/os/GraphicsEnvironment;->shouldUseAngle(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z -HSPLandroid/os/GraphicsEnvironment;->shouldUseAngleInternal(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z HSPLandroid/os/GraphicsEnvironment;->showAngleInUseDialogBox(Landroid/content/Context;)V HSPLandroid/os/Handler$BlockingRunnable;->(Ljava/lang/Runnable;)V HSPLandroid/os/Handler$BlockingRunnable;->postAndWait(Landroid/os/Handler;J)Z @@ -12250,7 +12121,7 @@ HSPLandroid/os/Handler;->(Z)V HSPLandroid/os/Handler;->createAsync(Landroid/os/Looper;)Landroid/os/Handler; HSPLandroid/os/Handler;->disallowNullArgumentIfShared(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/Handler;->dispatchMessage(Landroid/os/Message;)V+]Landroid/os/Handler;megamorphic_types -HSPLandroid/os/Handler;->enqueueMessage(Landroid/os/MessageQueue;Landroid/os/Message;J)Z+]Landroid/os/Message;Landroid/os/Message;]Landroid/os/MessageQueue;Landroid/os/MessageQueue; +HSPLandroid/os/Handler;->enqueueMessage(Landroid/os/MessageQueue;Landroid/os/Message;J)Z+]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/Handler;->executeOrSendMessage(Landroid/os/Message;)Z HSPLandroid/os/Handler;->getIMessenger()Landroid/os/IMessenger; HSPLandroid/os/Handler;->getLooper()Landroid/os/Looper; @@ -12268,22 +12139,22 @@ HSPLandroid/os/Handler;->obtainMessage(I)Landroid/os/Message; HSPLandroid/os/Handler;->obtainMessage(III)Landroid/os/Message; HSPLandroid/os/Handler;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message; HSPLandroid/os/Handler;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message; -HSPLandroid/os/Handler;->post(Ljava/lang/Runnable;)Z+]Landroid/os/Handler;Landroid/os/Handler;,Landroid/app/ActivityThread$H; +HSPLandroid/os/Handler;->post(Ljava/lang/Runnable;)Z+]Landroid/os/Handler;missing_types HSPLandroid/os/Handler;->postAtFrontOfQueue(Ljava/lang/Runnable;)Z HSPLandroid/os/Handler;->postAtTime(Ljava/lang/Runnable;J)Z HSPLandroid/os/Handler;->postAtTime(Ljava/lang/Runnable;Ljava/lang/Object;J)Z HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;IJ)Z -HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z+]Landroid/os/Handler;Landroid/os/Handler; +HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z+]Landroid/os/Handler;Landroid/os/Handler;,Landroid/view/ViewRootImpl$ViewRootHandler; HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;Ljava/lang/Object;J)Z -HSPLandroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V +HSPLandroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;)V+]Landroid/os/MessageQueue;Landroid/os/MessageQueue; HSPLandroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V HSPLandroid/os/Handler;->removeMessages(I)V+]Landroid/os/MessageQueue;Landroid/os/MessageQueue; -HSPLandroid/os/Handler;->removeMessages(ILjava/lang/Object;)V +HSPLandroid/os/Handler;->removeMessages(ILjava/lang/Object;)V+]Landroid/os/MessageQueue;Landroid/os/MessageQueue; HSPLandroid/os/Handler;->runWithScissors(Ljava/lang/Runnable;J)Z HSPLandroid/os/Handler;->sendEmptyMessage(I)Z HSPLandroid/os/Handler;->sendEmptyMessageAtTime(IJ)Z HSPLandroid/os/Handler;->sendEmptyMessageDelayed(IJ)Z -HSPLandroid/os/Handler;->sendMessage(Landroid/os/Message;)Z+]Landroid/os/Handler;Landroid/os/Handler;,Landroid/media/AudioPortEventHandler$1;,Landroid/view/ViewRootImpl$ViewRootHandler;,Landroid/app/ActivityThread$H; +HSPLandroid/os/Handler;->sendMessage(Landroid/os/Message;)Z+]Landroid/os/Handler;missing_types HSPLandroid/os/Handler;->sendMessageAtFrontOfQueue(Landroid/os/Message;)Z HSPLandroid/os/Handler;->sendMessageAtTime(Landroid/os/Message;J)Z HSPLandroid/os/Handler;->sendMessageDelayed(Landroid/os/Message;J)Z+]Landroid/os/Handler;megamorphic_types @@ -12315,7 +12186,7 @@ HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->(Landroid/os/IBind HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;->getProperty(ILandroid/os/BatteryProperty;)I HSPLandroid/os/IBatteryPropertiesRegistrar$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IBatteryPropertiesRegistrar; -HSPLandroid/os/IBinder$DeathRecipient;->binderDied(Landroid/os/IBinder;)V +HSPLandroid/os/IBinder$DeathRecipient;->binderDied(Landroid/os/IBinder;)V+]Landroid/os/IBinder$DeathRecipient;Landroid/os/RemoteCallbackList$Callback; HSPLandroid/os/IBinder;->getSuggestedMaxIpcSizeBytes()I HSPLandroid/os/ICancellationSignal$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLandroid/os/ICancellationSignal$Stub$Proxy;->asBinder()Landroid/os/IBinder; @@ -12425,15 +12296,15 @@ HSPLandroid/os/IpcDataCache;->(Landroid/os/IpcDataCache$Config;Landroid/os HSPLandroid/os/IpcDataCache;->query(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/LocaleList; HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/os/LocaleList;->([Ljava/util/Locale;)V +HSPLandroid/os/LocaleList;->([Ljava/util/Locale;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/os/LocaleList;->computeFirstMatch(Ljava/util/Collection;Z)Ljava/util/Locale; HSPLandroid/os/LocaleList;->computeFirstMatchIndex(Ljava/util/Collection;Z)I HSPLandroid/os/LocaleList;->equals(Ljava/lang/Object;)Z HSPLandroid/os/LocaleList;->findFirstMatchIndex(Ljava/util/Locale;)I -HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList; +HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/os/LocaleList;->get(I)Ljava/util/Locale; HSPLandroid/os/LocaleList;->getAdjustedDefault()Landroid/os/LocaleList; -HSPLandroid/os/LocaleList;->getDefault()Landroid/os/LocaleList; +HSPLandroid/os/LocaleList;->getDefault()Landroid/os/LocaleList;+]Ljava/util/Locale;Ljava/util/Locale; HSPLandroid/os/LocaleList;->getEmptyLocaleList()Landroid/os/LocaleList; HSPLandroid/os/LocaleList;->getFirstMatchWithEnglishSupported([Ljava/lang/String;)Ljava/util/Locale; HSPLandroid/os/LocaleList;->getLikelyScript(Ljava/util/Locale;)Ljava/lang/String; @@ -12453,7 +12324,7 @@ HSPLandroid/os/Looper;->getMainLooper()Landroid/os/Looper; HSPLandroid/os/Looper;->getQueue()Landroid/os/MessageQueue; HSPLandroid/os/Looper;->getThread()Ljava/lang/Thread; HSPLandroid/os/Looper;->isCurrentThread()Z -HSPLandroid/os/Looper;->loop()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Thread;Landroid/os/HandlerThread; +HSPLandroid/os/Looper;->loop()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Thread;Landroid/os/HandlerThread;,Landroid/net/ConnectivityThread; HSPLandroid/os/Looper;->loopOnce(Landroid/os/Looper;JI)Z+]Landroid/os/Handler;megamorphic_types]Landroid/os/Message;Landroid/os/Message;]Landroid/os/MessageQueue;Landroid/os/MessageQueue; HSPLandroid/os/Looper;->myLooper()Landroid/os/Looper;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/os/Looper;->myQueue()Landroid/os/MessageQueue; @@ -12503,22 +12374,22 @@ HSPLandroid/os/MessageQueue;->addIdleHandler(Landroid/os/MessageQueue$IdleHandle HSPLandroid/os/MessageQueue;->addOnFileDescriptorEventListener(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V HSPLandroid/os/MessageQueue;->dispatchEvents(II)I HSPLandroid/os/MessageQueue;->dispose()V -HSPLandroid/os/MessageQueue;->enqueueMessage(Landroid/os/Message;J)Z+]Landroid/os/Message;Landroid/os/Message;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/IllegalStateException;Ljava/lang/IllegalStateException; +HSPLandroid/os/MessageQueue;->enqueueMessage(Landroid/os/Message;J)Z+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->finalize()V HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;ILjava/lang/Object;)Z HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z -HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;+]Landroid/os/Message;Landroid/os/Message;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/MessageQueue$IdleHandler;missing_types +HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;+]Landroid/os/MessageQueue$IdleHandler;missing_types]Landroid/os/Message;Landroid/os/Message;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/os/MessageQueue;->postSyncBarrier()I -HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I +HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->quit(Z)V HSPLandroid/os/MessageQueue;->removeAllFutureMessagesLocked()V HSPLandroid/os/MessageQueue;->removeAllMessagesLocked()V -HSPLandroid/os/MessageQueue;->removeCallbacksAndMessages(Landroid/os/Handler;Ljava/lang/Object;)V +HSPLandroid/os/MessageQueue;->removeCallbacksAndMessages(Landroid/os/Handler;Ljava/lang/Object;)V+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->removeIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;ILjava/lang/Object;)V+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->removeOnFileDescriptorEventListener(Ljava/io/FileDescriptor;)V -HSPLandroid/os/MessageQueue;->removeSyncBarrier(I)V +HSPLandroid/os/MessageQueue;->removeSyncBarrier(I)V+]Landroid/os/Message;Landroid/os/Message; HSPLandroid/os/MessageQueue;->updateOnFileDescriptorEventListenerLocked(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger; HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -12558,7 +12429,7 @@ HSPLandroid/os/Parcel;->createLongArray()[J+]Landroid/os/Parcel;Landroid/os/Parc HSPLandroid/os/Parcel;->createString16Array()[Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->createString8Array()[Ljava/lang/String;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->createStringArray()[Ljava/lang/String; -HSPLandroid/os/Parcel;->createStringArrayList()Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->createStringArrayList()Ljava/util/ArrayList;+]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/os/Parcel;->createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;missing_types]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->dataAvail()I @@ -12572,7 +12443,7 @@ HSPLandroid/os/Parcel;->finalize()V HSPLandroid/os/Parcel;->freeBuffer()V HSPLandroid/os/Parcel;->getClassCookie(Ljava/lang/Class;)Ljava/lang/Object; HSPLandroid/os/Parcel;->getExceptionCode(Ljava/lang/Throwable;)I -HSPLandroid/os/Parcel;->getValueType(Ljava/lang/Object;)I +HSPLandroid/os/Parcel;->getValueType(Ljava/lang/Object;)I+]Ljava/lang/Object;Ljava/util/Random;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/os/Parcel;->hasFileDescriptors()Z HSPLandroid/os/Parcel;->hasReadWriteHelper()Z HSPLandroid/os/Parcel;->init(J)V @@ -12587,7 +12458,7 @@ HSPLandroid/os/Parcel;->obtain(Landroid/os/IBinder;)Landroid/os/Parcel; HSPLandroid/os/Parcel;->pushAllowFds(Z)Z HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList; HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList; -HSPLandroid/os/Parcel;->readArrayListInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList; +HSPLandroid/os/Parcel;->readArrayListInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/ArrayList;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;IZZLjava/lang/ClassLoader;)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;Ljava/lang/ClassLoader;)V HSPLandroid/os/Parcel;->readArrayMapInternal(Landroid/util/ArrayMap;ILjava/lang/ClassLoader;)V @@ -12601,7 +12472,7 @@ HSPLandroid/os/Parcel;->readBundle(Ljava/lang/ClassLoader;)Landroid/os/Bundle;+] HSPLandroid/os/Parcel;->readByte()B+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readByteArray([B)V HSPLandroid/os/Parcel;->readCallingWorkSourceUid()I -HSPLandroid/os/Parcel;->readCharSequence()Ljava/lang/CharSequence; +HSPLandroid/os/Parcel;->readCharSequence()Ljava/lang/CharSequence;+]Landroid/os/Parcelable$Creator;Landroid/text/TextUtils$1; HSPLandroid/os/Parcel;->readCharSequenceArray()[Ljava/lang/CharSequence; HSPLandroid/os/Parcel;->readDouble()D HSPLandroid/os/Parcel;->readException()V+]Landroid/os/Parcel;Landroid/os/Parcel; @@ -12629,13 +12500,13 @@ HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;)[Landroid/os HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Ljava/lang/Object; HSPLandroid/os/Parcel;->readParcelableArrayInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Ljava/lang/Object;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readParcelableCreator(Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator; -HSPLandroid/os/Parcel;->readParcelableCreatorInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/os/Parcelable$Creator;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Object;Landroid/os/Parcel;]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/os/Parcel;->readParcelableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types +HSPLandroid/os/Parcel;->readParcelableCreatorInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/os/Parcelable$Creator;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Object;Landroid/os/Parcel;]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field; +HSPLandroid/os/Parcel;->readParcelableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types]Landroid/os/Parcelable$ClassLoaderCreator;Landroid/content/pm/ParceledListSlice$1; HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/util/List; HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List; HSPLandroid/os/Parcel;->readParcelableListInternal(Ljava/util/List;Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/util/List; HSPLandroid/os/Parcel;->readPersistableBundle()Landroid/os/PersistableBundle; -HSPLandroid/os/Parcel;->readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle; +HSPLandroid/os/Parcel;->readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle;+]Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readRawFileDescriptor()Ljava/io/FileDescriptor; HSPLandroid/os/Parcel;->readSerializable()Ljava/io/Serializable; HSPLandroid/os/Parcel;->readSerializableInternal(Ljava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object;+]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; @@ -12656,7 +12527,7 @@ HSPLandroid/os/Parcel;->readStringArray()[Ljava/lang/String;+]Landroid/os/Parcel HSPLandroid/os/Parcel;->readStringArray([Ljava/lang/String;)V HSPLandroid/os/Parcel;->readStringList(Ljava/util/List;)V HSPLandroid/os/Parcel;->readStrongBinder()Landroid/os/IBinder; -HSPLandroid/os/Parcel;->readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V +HSPLandroid/os/Parcel;->readTypedArray([Ljava/lang/Object;Landroid/os/Parcelable$Creator;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readTypedList(Ljava/util/List;Landroid/os/Parcelable$Creator;)V HSPLandroid/os/Parcel;->readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object;+]Landroid/os/Parcelable$Creator;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->readValue(ILjava/lang/ClassLoader;Ljava/lang/Class;)Ljava/lang/Object; @@ -12673,15 +12544,15 @@ HSPLandroid/os/Parcel;->setReadWriteHelper(Landroid/os/Parcel$ReadWriteHelper;)V HSPLandroid/os/Parcel;->unmarshall([BII)V HSPLandroid/os/Parcel;->writeArrayMap(Landroid/util/ArrayMap;)V HSPLandroid/os/Parcel;->writeArrayMapInternal(Landroid/util/ArrayMap;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/os/Parcel;->writeArraySet(Landroid/util/ArraySet;)V +HSPLandroid/os/Parcel;->writeArraySet(Landroid/util/ArraySet;)V+]Landroid/util/ArraySet;Landroid/util/ArraySet;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeBinderList(Ljava/util/List;)V HSPLandroid/os/Parcel;->writeBlob([B)V -HSPLandroid/os/Parcel;->writeBoolean(Z)V +HSPLandroid/os/Parcel;->writeBoolean(Z)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeBooleanArray([Z)V HSPLandroid/os/Parcel;->writeBundle(Landroid/os/Bundle;)V+]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeByte(B)V HSPLandroid/os/Parcel;->writeByteArray([B)V -HSPLandroid/os/Parcel;->writeByteArray([BII)V +HSPLandroid/os/Parcel;->writeByteArray([BII)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeCharSequence(Ljava/lang/CharSequence;)V HSPLandroid/os/Parcel;->writeDouble(D)V HSPLandroid/os/Parcel;->writeException(Ljava/lang/Exception;)V @@ -12699,7 +12570,7 @@ HSPLandroid/os/Parcel;->writeMapInternal(Ljava/util/Map;)V HSPLandroid/os/Parcel;->writeNoException()V HSPLandroid/os/Parcel;->writeParcelable(Landroid/os/Parcelable;I)V+]Landroid/os/Parcelable;missing_types]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeParcelableArray([Landroid/os/Parcelable;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/Parcel;->writeParcelableCreator(Landroid/os/Parcelable;)V+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeParcelableList(Ljava/util/List;I)V HSPLandroid/os/Parcel;->writePersistableBundle(Landroid/os/PersistableBundle;)V HSPLandroid/os/Parcel;->writeSerializable(Ljava/io/Serializable;)V @@ -12711,25 +12582,25 @@ HSPLandroid/os/Parcel;->writeString16(Ljava/lang/String;)V+]Landroid/os/Parcel$R HSPLandroid/os/Parcel;->writeString16Array([Ljava/lang/String;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeString16NoHelper(Ljava/lang/String;)V HSPLandroid/os/Parcel;->writeString8(Ljava/lang/String;)V+]Landroid/os/Parcel$ReadWriteHelper;Landroid/os/Parcel$ReadWriteHelper; -HSPLandroid/os/Parcel;->writeString8Array([Ljava/lang/String;)V +HSPLandroid/os/Parcel;->writeString8Array([Ljava/lang/String;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeString8NoHelper(Ljava/lang/String;)V HSPLandroid/os/Parcel;->writeStringArray([Ljava/lang/String;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeStringList(Ljava/util/List;)V HSPLandroid/os/Parcel;->writeStrongBinder(Landroid/os/IBinder;)V -HSPLandroid/os/Parcel;->writeStrongInterface(Landroid/os/IInterface;)V +HSPLandroid/os/Parcel;->writeStrongInterface(Landroid/os/IInterface;)V+]Landroid/os/IInterface;Landroid/database/ContentObserver$Transport;,Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;,Landroid/app/ActivityThread$ApplicationThread;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/Parcel;->writeTypedArray([Landroid/os/Parcelable;I)V HSPLandroid/os/Parcel;->writeTypedArrayMap(Landroid/util/ArrayMap;I)V HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;)V -HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;I)V -HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V -HSPLandroid/os/Parcel;->writeValue(ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Double;Ljava/lang/Double;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Byte;Ljava/lang/Byte;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;I)V+]Ljava/util/List;Ljava/util/ArrayList;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V+]Landroid/os/Parcelable;megamorphic_types]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/Parcel;->writeValue(ILjava/lang/Object;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Boolean;Ljava/lang/Boolean;]Ljava/lang/Double;Ljava/lang/Double;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Byte;Ljava/lang/Byte;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/lang/Float;Ljava/lang/Float; HSPLandroid/os/Parcel;->writeValue(Ljava/lang/Object;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelFileDescriptor; HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->(Landroid/os/ParcelFileDescriptor;)V HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->close()V -HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([B)I+]Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor; -HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([BII)I +HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([B)I +HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read([BII)I+]Landroid/os/ParcelFileDescriptor;Landroid/content/ContentResolver$ParcelFileDescriptorInner;,Landroid/os/ParcelFileDescriptor; HSPLandroid/os/ParcelFileDescriptor$AutoCloseOutputStream;->(Landroid/os/ParcelFileDescriptor;)V HSPLandroid/os/ParcelFileDescriptor$AutoCloseOutputStream;->close()V HSPLandroid/os/ParcelFileDescriptor;->(Landroid/os/ParcelFileDescriptor;)V @@ -12786,8 +12657,6 @@ HSPLandroid/os/PatternMatcher;->match(Ljava/lang/String;)Z HSPLandroid/os/PatternMatcher;->matchPattern(Ljava/lang/String;Ljava/lang/String;[II)Z HSPLandroid/os/PatternMatcher;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/os/PerformanceHintManager;->createHintSession([IJ)Landroid/os/PerformanceHintManager$Session; -HSPLandroid/os/PermissionEnforcer;->checkPermission(Ljava/lang/String;II)I+]Landroid/content/Context;Landroid/app/ContextImpl; -HSPLandroid/os/PermissionEnforcer;->enforcePermission(Ljava/lang/String;II)V+]Landroid/os/PermissionEnforcer;Landroid/os/PermissionEnforcer;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/os/PersistableBundle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/PersistableBundle; HSPLandroid/os/PersistableBundle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/PersistableBundle$MyReadMapCallback;->()V @@ -12916,7 +12785,6 @@ HSPLandroid/os/ServiceManager;->initServiceCache(Ljava/util/Map;)V HSPLandroid/os/ServiceManager;->isDeclared(Ljava/lang/String;)Z HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManager;->waitForDeclaredService(Ljava/lang/String;)Landroid/os/IBinder; -HSPLandroid/os/ServiceManager;->waitForService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManagerProxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V HSPLandroid/os/ServiceManagerProxy;->checkService(Ljava/lang/String;)Landroid/os/IBinder; HSPLandroid/os/ServiceManagerProxy;->getService(Ljava/lang/String;)Landroid/os/IBinder; @@ -12975,7 +12843,7 @@ HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->lambda$handleViolationWithTi HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onCustomSlowCall(Ljava/lang/String;)V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onNetwork()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onReadFromDisk()V -HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onThreadPolicyViolation(Landroid/os/StrictMode$ViolationInfo;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/os/StrictMode$ViolationLogger;Landroid/os/StrictMode$$ExternalSyntheticLambda1;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$1;,Ljava/lang/ThreadLocal;]Ljava/lang/Long;Ljava/lang/Long;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onThreadPolicyViolation(Landroid/os/StrictMode$ViolationInfo;)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/os/StrictMode$ViolationLogger;Landroid/os/StrictMode$$ExternalSyntheticLambda1;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$1;,Ljava/lang/ThreadLocal;]Ljava/lang/Long;Ljava/lang/Long;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onUnbufferedIO()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onWriteToDisk()V HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->setThreadPolicyMask(I)V @@ -13016,12 +12884,12 @@ HSPLandroid/os/StrictMode$ThreadSpanState;->(Landroid/os/StrictMode$Thread HSPLandroid/os/StrictMode$UnsafeIntentStrictModeCallback;->()V HSPLandroid/os/StrictMode$UnsafeIntentStrictModeCallback;->(Landroid/os/StrictMode$UnsafeIntentStrictModeCallback-IA;)V HSPLandroid/os/StrictMode$ViolationInfo;->-$$Nest$fgetmViolation(Landroid/os/StrictMode$ViolationInfo;)Landroid/os/strictmode/Violation; -HSPLandroid/os/StrictMode$ViolationInfo;->(Landroid/os/Parcel;Z)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel;]Ljava/util/Deque;Ljava/util/ArrayDeque; +HSPLandroid/os/StrictMode$ViolationInfo;->(Landroid/os/Parcel;Z)V+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/StrictMode$ViolationInfo;->(Landroid/os/strictmode/Violation;I)V+]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$8; -HSPLandroid/os/StrictMode$ViolationInfo;->getStackTrace()Ljava/lang/String;+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Ljava/io/StringWriter;Ljava/io/StringWriter;]Landroid/os/strictmode/Violation;Landroid/os/strictmode/DiskReadViolation;,Landroid/os/strictmode/CustomViolation; +HSPLandroid/os/StrictMode$ViolationInfo;->getStackTrace()Ljava/lang/String;+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;]Ljava/io/StringWriter;Ljava/io/StringWriter;]Landroid/os/strictmode/Violation;Landroid/os/strictmode/UnbufferedIoViolation;,Landroid/os/strictmode/DiskReadViolation;,Landroid/os/strictmode/CustomViolation; HSPLandroid/os/StrictMode$ViolationInfo;->hashCode()I+]Landroid/os/strictmode/Violation;Landroid/os/strictmode/DiskReadViolation;,Landroid/os/strictmode/LeakedClosableViolation; HSPLandroid/os/StrictMode$ViolationInfo;->penaltyEnabled(I)Z -HSPLandroid/os/StrictMode$ViolationInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/os/StrictMode$ViolationInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Ljava/util/Deque;Ljava/util/ArrayDeque;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/StrictMode$VmPolicy$Builder;->()V HSPLandroid/os/StrictMode$VmPolicy$Builder;->(Landroid/os/StrictMode$VmPolicy;)V HSPLandroid/os/StrictMode$VmPolicy$Builder;->build()Landroid/os/StrictMode$VmPolicy; @@ -13060,7 +12928,7 @@ HSPLandroid/os/StrictMode;->allowThreadDiskReadsMask()I HSPLandroid/os/StrictMode;->allowThreadDiskWrites()Landroid/os/StrictMode$ThreadPolicy; HSPLandroid/os/StrictMode;->allowThreadDiskWritesMask()I HSPLandroid/os/StrictMode;->allowVmViolations()Landroid/os/StrictMode$VmPolicy; -HSPLandroid/os/StrictMode;->assertConfigurationContext(Landroid/content/Context;Ljava/lang/String;)V +HSPLandroid/os/StrictMode;->assertConfigurationContext(Landroid/content/Context;Ljava/lang/String;)V+]Landroid/content/Context;missing_types HSPLandroid/os/StrictMode;->clampViolationTimeMap(Landroid/util/SparseLongArray;J)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray; HSPLandroid/os/StrictMode;->clearGatheredViolations()V+]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$1; HSPLandroid/os/StrictMode;->decrementExpectedActivityCount(Ljava/lang/Class;)V @@ -13083,13 +12951,13 @@ HSPLandroid/os/StrictMode;->noteUntaggedSocket()V HSPLandroid/os/StrictMode;->onBinderStrictModePolicyChange(I)V HSPLandroid/os/StrictMode;->onCredentialProtectedPathAccess(Ljava/lang/String;I)V HSPLandroid/os/StrictMode;->onVmPolicyViolation(Landroid/os/strictmode/Violation;)V -HSPLandroid/os/StrictMode;->onVmPolicyViolation(Landroid/os/strictmode/Violation;Z)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo; +HSPLandroid/os/StrictMode;->onVmPolicyViolation(Landroid/os/strictmode/Violation;Z)V+]Landroid/util/SparseLongArray;Landroid/util/SparseLongArray;]Landroid/os/StrictMode$ViolationLogger;Landroid/os/StrictMode$$ExternalSyntheticLambda1;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo; HSPLandroid/os/StrictMode;->readAndHandleBinderCallViolations(Landroid/os/Parcel;)V+]Landroid/os/StrictMode$AndroidBlockGuardPolicy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;]Landroid/os/StrictMode$ViolationInfo;Landroid/os/StrictMode$ViolationInfo;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/StrictMode;->registerIntentMatchingRestrictionCallback()V -HSPLandroid/os/StrictMode;->setBlockGuardPolicy(I)V +HSPLandroid/os/StrictMode;->setBlockGuardPolicy(I)V+]Landroid/os/StrictMode$AndroidBlockGuardPolicy;Landroid/os/StrictMode$AndroidBlockGuardPolicy;]Ljava/lang/ThreadLocal;Landroid/os/StrictMode$4; HSPLandroid/os/StrictMode;->setBlockGuardVmPolicy(I)V HSPLandroid/os/StrictMode;->setCloseGuardEnabled(Z)V -HSPLandroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V +HSPLandroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/os/StrictMode;->setThreadPolicyMask(I)V HSPLandroid/os/StrictMode;->setVmPolicy(Landroid/os/StrictMode$VmPolicy;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/os/INetworkManagementService;Landroid/os/INetworkManagementService$Stub$Proxy; HSPLandroid/os/StrictMode;->tooManyViolationsThisLoop()Z @@ -13123,7 +12991,6 @@ HSPLandroid/os/SystemProperties;->getLong(Ljava/lang/String;J)J HSPLandroid/os/SystemProperties;->native_get(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/os/SystemVibrator;->(Landroid/content/Context;)V -HSPLandroid/os/SystemVibrator;->getInfo()Landroid/os/VibratorInfo; HSPLandroid/os/SystemVibrator;->hasVibrator()Z HSPLandroid/os/SystemVibrator;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Ljava/lang/String;Landroid/os/VibrationAttributes;)V HSPLandroid/os/SystemVibratorManager;->(Landroid/content/Context;)V @@ -13142,12 +13009,12 @@ HSPLandroid/os/Temperature;->(FILjava/lang/String;I)V HSPLandroid/os/Temperature;->getStatus()I HSPLandroid/os/Temperature;->isValidStatus(I)Z HSPLandroid/os/ThreadLocalWorkSource$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; -HSPLandroid/os/ThreadLocalWorkSource;->getToken()J -HSPLandroid/os/ThreadLocalWorkSource;->getUid()I +HSPLandroid/os/ThreadLocalWorkSource;->getToken()J+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; +HSPLandroid/os/ThreadLocalWorkSource;->getUid()I+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; HSPLandroid/os/ThreadLocalWorkSource;->lambda$static$0()[I HSPLandroid/os/ThreadLocalWorkSource;->parseUidFromToken(J)I -HSPLandroid/os/ThreadLocalWorkSource;->restore(J)V -HSPLandroid/os/ThreadLocalWorkSource;->setUid(I)J +HSPLandroid/os/ThreadLocalWorkSource;->restore(J)V+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; +HSPLandroid/os/ThreadLocalWorkSource;->setUid(I)J+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal; HSPLandroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V HSPLandroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V HSPLandroid/os/Trace;->asyncTraceForTrackBegin(JLjava/lang/String;Ljava/lang/String;I)V @@ -13165,7 +13032,7 @@ HSPLandroid/os/Trace;->setCounter(Ljava/lang/String;J)V HSPLandroid/os/Trace;->traceBegin(JLjava/lang/String;)V HSPLandroid/os/Trace;->traceCounter(JLjava/lang/String;I)V HSPLandroid/os/Trace;->traceEnd(J)V -HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle; +HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle;+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/os/UserHandle;->(I)V HSPLandroid/os/UserHandle;->equals(Ljava/lang/Object;)Z @@ -13208,7 +13075,6 @@ HSPLandroid/os/UserManager$3;->bypass(Ljava/lang/Object;)Z HSPLandroid/os/UserManager$3;->recompute(Ljava/lang/Integer;)Ljava/lang/String; HSPLandroid/os/UserManager$3;->recompute(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/os/UserManager$4;->(Landroid/os/UserManager;ILjava/lang/String;)V -HSPLandroid/os/UserManager$4;->recompute(Ljava/lang/Integer;)Landroid/content/pm/UserProperties;+]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/os/IUserManager;Landroid/os/IUserManager$Stub$Proxy; HSPLandroid/os/UserManager;->-$$Nest$fgetmService(Landroid/os/UserManager;)Landroid/os/IUserManager; HSPLandroid/os/UserManager;->(Landroid/content/Context;Landroid/os/IUserManager;)V HSPLandroid/os/UserManager;->convertUserIdsToUserHandles([I)Ljava/util/List; @@ -13235,7 +13101,6 @@ HSPLandroid/os/UserManager;->getUserHandle(I)I HSPLandroid/os/UserManager;->getUserHandles(Z)Ljava/util/List; HSPLandroid/os/UserManager;->getUserInfo(I)Landroid/content/pm/UserInfo; HSPLandroid/os/UserManager;->getUserProfiles()Ljava/util/List; -HSPLandroid/os/UserManager;->getUserProperties(Landroid/os/UserHandle;)Landroid/content/pm/UserProperties;+]Landroid/os/UserHandle;Landroid/os/UserHandle;]Landroid/app/PropertyInvalidatedCache;Landroid/os/UserManager$4; HSPLandroid/os/UserManager;->getUserRestrictionSources(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List; HSPLandroid/os/UserManager;->getUserRestrictions()Landroid/os/Bundle; HSPLandroid/os/UserManager;->getUserRestrictions(Landroid/os/UserHandle;)Landroid/os/Bundle; @@ -13261,7 +13126,6 @@ HSPLandroid/os/UserManager;->isUserRunning(I)Z HSPLandroid/os/UserManager;->isUserRunning(Landroid/os/UserHandle;)Z HSPLandroid/os/UserManager;->isUserSwitcherEnabled()Z HSPLandroid/os/UserManager;->isUserSwitcherEnabled(Z)Z -HSPLandroid/os/UserManager;->isUserTypeCloneProfile(Ljava/lang/String;)Z HSPLandroid/os/UserManager;->isUserTypeManagedProfile(Ljava/lang/String;)Z HSPLandroid/os/UserManager;->isUserTypeRestricted(Ljava/lang/String;)Z HSPLandroid/os/UserManager;->isUserUnlocked()Z @@ -13283,7 +13147,6 @@ HSPLandroid/os/VibrationEffect;->get(IZ)Landroid/os/VibrationEffect; HSPLandroid/os/Vibrator;->(Landroid/content/Context;)V HSPLandroid/os/Vibrator;->vibrate(Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V HSPLandroid/os/Vibrator;->vibrate(Landroid/os/VibrationEffect;Landroid/os/VibrationAttributes;)V -HSPLandroid/os/VibratorInfo;->hasCapability(J)Z HSPLandroid/os/VibratorManager;->(Landroid/content/Context;)V HSPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/WorkSource; HSPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -13417,7 +13280,7 @@ HSPLandroid/permission/IPermissionManager$Stub$Proxy;->(Landroid/os/IBinde HSPLandroid/permission/IPermissionManager$Stub$Proxy;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V HSPLandroid/permission/IPermissionManager$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLandroid/permission/IPermissionManager$Stub$Proxy;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo; -HSPLandroid/permission/IPermissionManager$Stub$Proxy;->getSplitPermissions()Ljava/util/List; +HSPLandroid/permission/IPermissionManager$Stub$Proxy;->getSplitPermissions()Ljava/util/List;+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/permission/IPermissionManager$Stub$Proxy;Landroid/permission/IPermissionManager$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/permission/IPermissionManager$Stub$Proxy;->removeOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V HSPLandroid/permission/IPermissionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/permission/IPermissionManager; HSPLandroid/permission/LegacyPermissionManager;->()V @@ -13441,7 +13304,7 @@ HSPLandroid/permission/PermissionManager$PermissionQuery;->hashCode()I HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->(Landroid/content/pm/permission/SplitPermissionInfoParcelable;)V HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getNewPermissions()Ljava/util/List; HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getSplitPermission()Ljava/lang/String; -HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getTargetSdk()I +HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getTargetSdk()I+]Landroid/content/pm/permission/SplitPermissionInfoParcelable;Landroid/content/pm/permission/SplitPermissionInfoParcelable; HSPLandroid/permission/PermissionManager;->(Landroid/content/Context;)V HSPLandroid/permission/PermissionManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V HSPLandroid/permission/PermissionManager;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)I @@ -13489,9 +13352,8 @@ HSPLandroid/provider/Settings$Config;->checkCallingOrSelfPermission(Ljava/lang/S HSPLandroid/provider/Settings$Config;->createCompositeName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/provider/Settings$Config;->createNamespaceUri(Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/provider/Settings$Config;->createPrefix(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLandroid/provider/Settings$Config;->enforceReadPermission(Ljava/lang/String;)V HSPLandroid/provider/Settings$Config;->getContentResolver()Landroid/content/ContentResolver; -HSPLandroid/provider/Settings$Config;->getStrings(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;+]Landroid/provider/Settings$NameValueCache;Landroid/provider/Settings$NameValueCache;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList; +HSPLandroid/provider/Settings$Config;->getStrings(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;+]Landroid/provider/Settings$NameValueCache;Landroid/provider/Settings$NameValueCache;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/Arrays$ArrayList;,Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/Arrays$ArrayItr; HSPLandroid/provider/Settings$Config;->getStrings(Ljava/lang/String;Ljava/util/List;)Ljava/util/Map; HSPLandroid/provider/Settings$Config;->registerContentObserver(Ljava/lang/String;ZLandroid/database/ContentObserver;)V HSPLandroid/provider/Settings$ContentProviderHolder;->-$$Nest$fgetmUri(Landroid/provider/Settings$ContentProviderHolder;)Landroid/net/Uri; @@ -13500,7 +13362,7 @@ HSPLandroid/provider/Settings$GenerationTracker;->(Ljava/lang/String;Landr HSPLandroid/provider/Settings$GenerationTracker;->destroy()V HSPLandroid/provider/Settings$GenerationTracker;->getCurrentGeneration()I HSPLandroid/provider/Settings$GenerationTracker;->isGenerationChanged()Z -HSPLandroid/provider/Settings$GenerationTracker;->readCurrentGeneration()I +HSPLandroid/provider/Settings$GenerationTracker;->readCurrentGeneration()I+]Landroid/util/MemoryIntArray;Landroid/util/MemoryIntArray; HSPLandroid/provider/Settings$Global;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F HSPLandroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I HSPLandroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I @@ -13514,7 +13376,7 @@ HSPLandroid/provider/Settings$Global;->putString(Landroid/content/ContentResolve HSPLandroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z HSPLandroid/provider/Settings$NameValueCache$$ExternalSyntheticLambda0;->(Landroid/provider/Settings$NameValueCache;)V HSPLandroid/provider/Settings$NameValueCache;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; -HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Landroid/util/ArrayMap;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Landroid/provider/Settings$GenerationTracker;Landroid/provider/Settings$GenerationTracker;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/provider/Settings$ContentProviderHolder;Landroid/provider/Settings$ContentProviderHolder;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/String;Ljava/lang/String;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Landroid/net/Uri;Landroid/net/Uri$StringUri; +HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Landroid/util/ArrayMap;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Landroid/provider/Settings$GenerationTracker;Landroid/provider/Settings$GenerationTracker;]Landroid/os/Bundle;Landroid/os/Bundle;]Landroid/provider/Settings$ContentProviderHolder;Landroid/provider/Settings$ContentProviderHolder;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;]Ljava/lang/String;Ljava/lang/String;]Landroid/content/IContentProvider;Landroid/content/ContentProviderProxy;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/content/ContentResolver;Landroid/app/ContextImpl$ApplicationContentResolver;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/ArrayList$Itr;]Landroid/net/Uri;Landroid/net/Uri$StringUri; HSPLandroid/provider/Settings$NameValueCache;->isCallerExemptFromReadableRestriction()Z HSPLandroid/provider/Settings$NameValueCache;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z HSPLandroid/provider/Settings$NameValueTable;->getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri; @@ -13540,13 +13402,12 @@ HSPLandroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;L HSPLandroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I HSPLandroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)I HSPLandroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I -HSPLandroid/provider/Settings$System;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; +HSPLandroid/provider/Settings$System;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;+]Landroid/provider/Settings$NameValueCache;Landroid/provider/Settings$NameValueCache;]Ljava/util/HashSet;Ljava/util/HashSet; HSPLandroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri; HSPLandroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z HSPLandroid/provider/Settings$System;->putIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z HSPLandroid/provider/Settings$System;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z HSPLandroid/provider/Settings$System;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;IZ)Z -HSPLandroid/provider/Settings;->-$$Nest$smparseFloatSettingWithDefault(Ljava/lang/String;F)F HSPLandroid/provider/Settings;->-$$Nest$smparseIntSetting(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/provider/Settings;->-$$Nest$smparseIntSettingWithDefault(Ljava/lang/String;I)I HSPLandroid/provider/Settings;->canDrawOverlays(Landroid/content/Context;)Z @@ -13732,7 +13593,6 @@ HSPLandroid/security/keystore2/AndroidKeyStoreCipherSpiBase;->resetWhilePreservi HSPLandroid/security/keystore2/AndroidKeyStoreCipherSpiBase;->setKey(Landroid/security/keystore2/AndroidKeyStoreKey;)V HSPLandroid/security/keystore2/AndroidKeyStoreKey;->(Landroid/system/keystore2/KeyDescriptor;J[Landroid/system/keystore2/Authorization;Ljava/lang/String;Landroid/security/KeyStoreSecurityLevel;)V HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getAlgorithm()Ljava/lang/String; -HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getAuthorizations()[Landroid/system/keystore2/Authorization; HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getFormat()Ljava/lang/String; HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getKeyIdDescriptor()Landroid/system/keystore2/KeyDescriptor; HSPLandroid/security/keystore2/AndroidKeyStoreKey;->getSecurityLevel()Landroid/security/KeyStoreSecurityLevel; @@ -13924,14 +13784,14 @@ HSPLandroid/service/notification/NotificationListenerService$NotificationListene HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRankingUpdate(Landroid/service/notification/NotificationRankingUpdate;)V HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V HSPLandroid/service/notification/NotificationListenerService$Ranking;->()V -HSPLandroid/service/notification/NotificationListenerService$Ranking;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/NotificationListenerService$Ranking;->(Landroid/os/Parcel;)V+]Ljava/lang/Object;Landroid/service/notification/NotificationListenerService$Ranking;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/service/notification/NotificationListenerService$Ranking;->getChannel()Landroid/app/NotificationChannel; HSPLandroid/service/notification/NotificationListenerService$Ranking;->getKey()Ljava/lang/String; HSPLandroid/service/notification/NotificationListenerService$Ranking;->populate(Landroid/service/notification/NotificationListenerService$Ranking;)V HSPLandroid/service/notification/NotificationListenerService$Ranking;->populate(Ljava/lang/String;IZIIILjava/lang/CharSequence;Ljava/lang/String;Landroid/app/NotificationChannel;Ljava/util/ArrayList;Ljava/util/ArrayList;ZIZJZLjava/util/ArrayList;Ljava/util/ArrayList;ZZZLandroid/content/pm/ShortcutInfo;IZIZ)V HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationListenerService$RankingMap; HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/service/notification/NotificationListenerService$RankingMap;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/NotificationListenerService$RankingMap;->(Landroid/os/Parcel;)V+]Landroid/service/notification/NotificationListenerService$Ranking;Landroid/service/notification/NotificationListenerService$Ranking;]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Landroid/service/notification/NotificationListenerService$RankingMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getOrderedKeys()[Ljava/lang/String; HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getRanking(Ljava/lang/String;Landroid/service/notification/NotificationListenerService$Ranking;)Z HSPLandroid/service/notification/NotificationListenerService;->()V @@ -13960,7 +13820,7 @@ HSPLandroid/service/notification/NotificationRankingUpdate;->(Landroid/os/ HSPLandroid/service/notification/NotificationRankingUpdate;->getRankingMap()Landroid/service/notification/NotificationListenerService$RankingMap; HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/StatusBarNotification; HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/service/notification/StatusBarNotification;->(Landroid/os/Parcel;)V +HSPLandroid/service/notification/StatusBarNotification;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/service/notification/StatusBarNotification;->getGroupKey()Ljava/lang/String; HSPLandroid/service/notification/StatusBarNotification;->getId()I HSPLandroid/service/notification/StatusBarNotification;->getInstanceId()Lcom/android/internal/logging/InstanceId; @@ -13975,11 +13835,11 @@ HSPLandroid/service/notification/StatusBarNotification;->getTag()Ljava/lang/Stri HSPLandroid/service/notification/StatusBarNotification;->getUid()I HSPLandroid/service/notification/StatusBarNotification;->getUser()Landroid/os/UserHandle; HSPLandroid/service/notification/StatusBarNotification;->getUserId()I -HSPLandroid/service/notification/StatusBarNotification;->groupKey()Ljava/lang/String; +HSPLandroid/service/notification/StatusBarNotification;->groupKey()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/UserHandle;Landroid/os/UserHandle; HSPLandroid/service/notification/StatusBarNotification;->isAppGroup()Z HSPLandroid/service/notification/StatusBarNotification;->isGroup()Z HSPLandroid/service/notification/StatusBarNotification;->isOngoing()Z -HSPLandroid/service/notification/StatusBarNotification;->key()Ljava/lang/String; +HSPLandroid/service/notification/StatusBarNotification;->key()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/service/notification/StatusBarNotification;Landroid/service/notification/StatusBarNotification;]Landroid/app/Notification;Landroid/app/Notification;]Landroid/os/UserHandle;Landroid/os/UserHandle; HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/ZenModeConfig$ZenRule; HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/service/notification/ZenModeConfig$ZenRule;->(Landroid/os/Parcel;)V @@ -14039,7 +13899,7 @@ HSPLandroid/speech/tts/TtsEngines;->isEngineInstalled(Ljava/lang/String;)Z HSPLandroid/speech/tts/TtsEngines;->isSystemEngine(Landroid/content/pm/ServiceInfo;)Z HSPLandroid/sysprop/DisplayProperties;->debug_force_rtl()Ljava/util/Optional; HSPLandroid/sysprop/DisplayProperties;->debug_layout()Ljava/util/Optional; -HSPLandroid/sysprop/DisplayProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean; +HSPLandroid/sysprop/DisplayProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/sysprop/InputProperties;->force_enable_stylus_pointer_icon()Ljava/util/Optional; HSPLandroid/sysprop/InputProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean; HSPLandroid/sysprop/InputProperties;->tryParseString(Ljava/lang/String;)Ljava/lang/String; @@ -14097,7 +13957,7 @@ HSPLandroid/system/Os;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAdd HSPLandroid/system/Os;->getpgid(I)I HSPLandroid/system/Os;->getpid()I HSPLandroid/system/Os;->gettid()I -HSPLandroid/system/Os;->getuid()I +HSPLandroid/system/Os;->getuid()I+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; HSPLandroid/system/Os;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B HSPLandroid/system/Os;->ioctlInt(Ljava/io/FileDescriptor;I)I HSPLandroid/system/Os;->listen(Ljava/io/FileDescriptor;I)V @@ -14106,7 +13966,7 @@ HSPLandroid/system/Os;->lstat(Ljava/lang/String;)Landroid/system/StructStat; HSPLandroid/system/Os;->mkdir(Ljava/lang/String;I)V HSPLandroid/system/Os;->mmap(JJIILjava/io/FileDescriptor;J)J HSPLandroid/system/Os;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor; -HSPLandroid/system/Os;->poll([Landroid/system/StructPollfd;I)I +HSPLandroid/system/Os;->poll([Landroid/system/StructPollfd;I)I+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; HSPLandroid/system/Os;->read(Ljava/io/FileDescriptor;[BII)I HSPLandroid/system/Os;->rename(Ljava/lang/String;Ljava/lang/String;)V HSPLandroid/system/Os;->setenv(Ljava/lang/String;Ljava/lang/String;Z)V @@ -14117,7 +13977,7 @@ HSPLandroid/system/Os;->setsockoptInt(Ljava/io/FileDescriptor;III)V HSPLandroid/system/Os;->setsockoptTimeval(Ljava/io/FileDescriptor;IILandroid/system/StructTimeval;)V HSPLandroid/system/Os;->socket(III)Ljava/io/FileDescriptor; HSPLandroid/system/Os;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V -HSPLandroid/system/Os;->stat(Ljava/lang/String;)Landroid/system/StructStat; +HSPLandroid/system/Os;->stat(Ljava/lang/String;)Landroid/system/StructStat;+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; HSPLandroid/system/Os;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs; HSPLandroid/system/Os;->sysconf(I)J HSPLandroid/system/Os;->write(Ljava/io/FileDescriptor;[BII)I @@ -14364,7 +14224,7 @@ HSPLandroid/telephony/CellSignalStrengthGsm;->equals(Ljava/lang/Object;)Z HSPLandroid/telephony/CellSignalStrengthGsm;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/CellSignalStrengthLte$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthLte; HSPLandroid/telephony/CellSignalStrengthLte$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/CellSignalStrengthLte;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/CellSignalStrengthLte;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/CellSignalStrengthLte;->equals(Ljava/lang/Object;)Z HSPLandroid/telephony/CellSignalStrengthLte;->getDbm()I HSPLandroid/telephony/CellSignalStrengthLte;->getLevel()I @@ -14373,7 +14233,7 @@ HSPLandroid/telephony/CellSignalStrengthLte;->toString()Ljava/lang/String; HSPLandroid/telephony/CellSignalStrengthLte;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/CellSignalStrengthNr$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthNr; HSPLandroid/telephony/CellSignalStrengthNr$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/CellSignalStrengthNr;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/CellSignalStrengthNr;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/CellSignalStrengthNr;->equals(Ljava/lang/Object;)Z HSPLandroid/telephony/CellSignalStrengthNr;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/CellSignalStrengthTdscdma$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthTdscdma; @@ -14390,7 +14250,7 @@ HSPLandroid/telephony/CellSignalStrengthWcdma;->writeToParcel(Landroid/os/Parcel HSPLandroid/telephony/DataFailCause;->toString(I)Ljava/lang/String; HSPLandroid/telephony/DataSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/DataSpecificRegistrationInfo; HSPLandroid/telephony/DataSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/DataSpecificRegistrationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/DataSpecificRegistrationInfo;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/DataSpecificRegistrationInfo;->(Landroid/telephony/DataSpecificRegistrationInfo;)V HSPLandroid/telephony/DataSpecificRegistrationInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/DataSpecificRegistrationInfo;->writeToParcel(Landroid/os/Parcel;I)V @@ -14428,7 +14288,7 @@ HSPLandroid/telephony/ModemActivityInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/NetworkRegistrationInfo$$ExternalSyntheticLambda0;->apply(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/NetworkRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/NetworkRegistrationInfo; HSPLandroid/telephony/NetworkRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/NetworkRegistrationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/NetworkRegistrationInfo;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/NetworkRegistrationInfo;->(Landroid/telephony/NetworkRegistrationInfo;)V HSPLandroid/telephony/NetworkRegistrationInfo;->domainToString(I)Ljava/lang/String; HSPLandroid/telephony/NetworkRegistrationInfo;->getAccessNetworkTechnology()I @@ -14499,7 +14359,7 @@ HSPLandroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/telephony/ServiceState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/ServiceState; HSPLandroid/telephony/ServiceState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/telephony/ServiceState;->()V -HSPLandroid/telephony/ServiceState;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/ServiceState;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/ServiceState;->(Landroid/telephony/ServiceState;)V HSPLandroid/telephony/ServiceState;->copyFrom(Landroid/telephony/ServiceState;)V HSPLandroid/telephony/ServiceState;->createLocationInfoSanitizedCopy(Z)Landroid/telephony/ServiceState; @@ -14533,7 +14393,7 @@ HSPLandroid/telephony/ServiceState;->toString()Ljava/lang/String; HSPLandroid/telephony/ServiceState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/telephony/SignalStrength$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SignalStrength; HSPLandroid/telephony/SignalStrength$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/SignalStrength;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/SignalStrength;->(Landroid/os/Parcel;)V+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/SignalStrength;->getCellSignalStrengths()Ljava/util/List; HSPLandroid/telephony/SignalStrength;->getCellSignalStrengths(Ljava/lang/Class;)Ljava/util/List; HSPLandroid/telephony/SignalStrength;->getLevel()I @@ -14624,7 +14484,6 @@ HSPLandroid/telephony/SubscriptionInfo;->isOpportunistic()Z HSPLandroid/telephony/SubscriptionInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda3;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda4;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; -HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda5;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda6;->applyOrThrow(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda7;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/telephony/SubscriptionManager$$ExternalSyntheticLambda9;->applyOrThrow(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -14783,7 +14642,6 @@ HSPLandroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateLis HSPLandroid/telephony/TelephonyManager;->mergeAttributionAndRenouncedPermissions(Landroid/content/Context;Landroid/content/Context;)Landroid/content/Context; HSPLandroid/telephony/TelephonyManager;->registerTelephonyCallback(ILjava/util/concurrent/Executor;Landroid/telephony/TelephonyCallback;)V HSPLandroid/telephony/TelephonyManager;->registerTelephonyCallback(Ljava/util/concurrent/Executor;Landroid/telephony/TelephonyCallback;)V -HSPLandroid/telephony/TelephonyManager;->unregisterTelephonyCallback(Landroid/telephony/TelephonyCallback;)V HSPLandroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda0;->()V HSPLandroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda0;->applyAsInt(Ljava/lang/Object;)I HSPLandroid/telephony/TelephonyRegistryManager$$ExternalSyntheticLambda1;->()V @@ -14807,7 +14665,7 @@ HSPLandroid/telephony/UiccAccessRule$1;->newArray(I)[Landroid/telephony/UiccAcce HSPLandroid/telephony/UiccAccessRule$1;->newArray(I)[Ljava/lang/Object; HSPLandroid/telephony/VoiceSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/VoiceSpecificRegistrationInfo; HSPLandroid/telephony/VoiceSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->(Landroid/os/Parcel;)V +HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->(Landroid/telephony/VoiceSpecificRegistrationInfo;)V HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->toString()Ljava/lang/String; HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->writeToParcel(Landroid/os/Parcel;I)V @@ -14867,26 +14725,26 @@ HSPLandroid/telephony/ims/RegistrationManager$RegistrationCallback;->getBinder() HSPLandroid/telephony/ims/RegistrationManager$RegistrationCallback;->setExecutor(Ljava/util/concurrent/Executor;)V HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;->()V HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;->asBinder()Landroid/os/IBinder; -HSPLandroid/text/AndroidBidi;->bidi(I[C[B)I +HSPLandroid/text/AndroidBidi;->bidi(I[C[B)I+]Landroid/icu/text/Bidi;Landroid/icu/text/Bidi; HSPLandroid/text/AndroidBidi;->directions(I[BI[CII)Landroid/text/Layout$Directions; HSPLandroid/text/AutoGrowArray$ByteArray;->()V HSPLandroid/text/AutoGrowArray$ByteArray;->(I)V HSPLandroid/text/AutoGrowArray$ByteArray;->clear()V -HSPLandroid/text/AutoGrowArray$ByteArray;->clearWithReleasingLargeArray()V +HSPLandroid/text/AutoGrowArray$ByteArray;->clearWithReleasingLargeArray()V+]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray; HSPLandroid/text/AutoGrowArray$ByteArray;->get(I)B HSPLandroid/text/AutoGrowArray$ByteArray;->getRawArray()[B HSPLandroid/text/AutoGrowArray$ByteArray;->resize(I)V HSPLandroid/text/AutoGrowArray$FloatArray;->()V HSPLandroid/text/AutoGrowArray$FloatArray;->(I)V HSPLandroid/text/AutoGrowArray$FloatArray;->clear()V -HSPLandroid/text/AutoGrowArray$FloatArray;->clearWithReleasingLargeArray()V +HSPLandroid/text/AutoGrowArray$FloatArray;->clearWithReleasingLargeArray()V+]Landroid/text/AutoGrowArray$FloatArray;Landroid/text/AutoGrowArray$FloatArray; HSPLandroid/text/AutoGrowArray$FloatArray;->ensureCapacity(I)V HSPLandroid/text/AutoGrowArray$FloatArray;->getRawArray()[F HSPLandroid/text/AutoGrowArray$FloatArray;->resize(I)V HSPLandroid/text/AutoGrowArray$IntArray;->(I)V HSPLandroid/text/AutoGrowArray$IntArray;->append(I)V HSPLandroid/text/AutoGrowArray$IntArray;->clear()V -HSPLandroid/text/AutoGrowArray$IntArray;->clearWithReleasingLargeArray()V +HSPLandroid/text/AutoGrowArray$IntArray;->clearWithReleasingLargeArray()V+]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray; HSPLandroid/text/AutoGrowArray$IntArray;->ensureCapacity(I)V HSPLandroid/text/AutoGrowArray$IntArray;->getRawArray()[I HSPLandroid/text/AutoGrowArray;->computeNewCapacity(II)I @@ -14903,7 +14761,7 @@ HSPLandroid/text/BoringLayout$Metrics;->()V HSPLandroid/text/BoringLayout$Metrics;->reset()V HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V -HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)V +HSPLandroid/text/BoringLayout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)V+]Landroid/text/BoringLayout;Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V HSPLandroid/text/BoringLayout;->ellipsized(II)V HSPLandroid/text/BoringLayout;->getEllipsisCount(I)I @@ -14915,18 +14773,18 @@ HSPLandroid/text/BoringLayout;->getLineCount()I HSPLandroid/text/BoringLayout;->getLineDescent(I)I HSPLandroid/text/BoringLayout;->getLineDirections(I)Landroid/text/Layout$Directions; HSPLandroid/text/BoringLayout;->getLineMax(I)F -HSPLandroid/text/BoringLayout;->getLineStart(I)I +HSPLandroid/text/BoringLayout;->getLineStart(I)I+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString; HSPLandroid/text/BoringLayout;->getLineTop(I)I HSPLandroid/text/BoringLayout;->getLineWidth(I)F HSPLandroid/text/BoringLayout;->getParagraphDirection(I)I HSPLandroid/text/BoringLayout;->hasAnyInterestingChars(Ljava/lang/CharSequence;I)Z -HSPLandroid/text/BoringLayout;->init(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/Layout$Alignment;Landroid/text/BoringLayout$Metrics;ZZZ)V +HSPLandroid/text/BoringLayout;->init(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/Layout$Alignment;Landroid/text/BoringLayout$Metrics;ZZZ)V+]Landroid/text/TextLine;Landroid/text/TextLine;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics; -HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics; +HSPLandroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;ZLandroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics;+]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types]Landroid/text/TextDirectionHeuristic;Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;,Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal; HSPLandroid/text/BoringLayout;->isFallbackLineSpacingEnabled()Z HSPLandroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; -HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout; +HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;+]Landroid/text/BoringLayout;Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout; HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;IZ)Landroid/text/BoringLayout; HSPLandroid/text/CharSequenceCharacterIterator;->current()C @@ -14936,7 +14794,7 @@ HSPLandroid/text/CharSequenceCharacterIterator;->getEndIndex()I HSPLandroid/text/CharSequenceCharacterIterator;->getIndex()I HSPLandroid/text/CharSequenceCharacterIterator;->next()C HSPLandroid/text/CharSequenceCharacterIterator;->setIndex(I)C -HSPLandroid/text/DynamicLayout$Builder;->obtain(Ljava/lang/CharSequence;Landroid/text/TextPaint;I)Landroid/text/DynamicLayout$Builder; +HSPLandroid/text/DynamicLayout$Builder;->obtain(Ljava/lang/CharSequence;Landroid/text/TextPaint;I)Landroid/text/DynamicLayout$Builder;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; HSPLandroid/text/DynamicLayout$ChangeWatcher;->afterTextChanged(Landroid/text/Editable;)V HSPLandroid/text/DynamicLayout$ChangeWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V @@ -14944,29 +14802,29 @@ HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanChanged(Landroid/text/Spann HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V HSPLandroid/text/DynamicLayout$ChangeWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V HSPLandroid/text/DynamicLayout;->(Landroid/text/DynamicLayout$Builder;)V -HSPLandroid/text/DynamicLayout;->addBlockAtOffset(I)V -HSPLandroid/text/DynamicLayout;->contentMayProtrudeFromLineTopOrBottom(Ljava/lang/CharSequence;II)Z -HSPLandroid/text/DynamicLayout;->createBlocks()V -HSPLandroid/text/DynamicLayout;->generate(Landroid/text/DynamicLayout$Builder;)V +HSPLandroid/text/DynamicLayout;->addBlockAtOffset(I)V+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout; +HSPLandroid/text/DynamicLayout;->contentMayProtrudeFromLineTopOrBottom(Ljava/lang/CharSequence;II)Z+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Landroid/graphics/Paint;Landroid/text/TextPaint;]Landroid/text/Spanned;Landroid/text/SpannableString; +HSPLandroid/text/DynamicLayout;->createBlocks()V+]Ljava/lang/CharSequence;Landroid/text/SpannableString; +HSPLandroid/text/DynamicLayout;->generate(Landroid/text/DynamicLayout$Builder;)V+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector;]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;missing_types]Landroid/text/Spannable;missing_types HSPLandroid/text/DynamicLayout;->getBlockEndLines()[I HSPLandroid/text/DynamicLayout;->getBlockIndices()[I HSPLandroid/text/DynamicLayout;->getBlocksAlwaysNeedToBeRedrawn()Landroid/util/ArraySet; HSPLandroid/text/DynamicLayout;->getEllipsisCount(I)I HSPLandroid/text/DynamicLayout;->getEllipsisStart(I)I HSPLandroid/text/DynamicLayout;->getEllipsizedWidth()I -HSPLandroid/text/DynamicLayout;->getEndHyphenEdit(I)I +HSPLandroid/text/DynamicLayout;->getEndHyphenEdit(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; HSPLandroid/text/DynamicLayout;->getIndexFirstChangedBlock()I -HSPLandroid/text/DynamicLayout;->getLineContainsTab(I)Z -HSPLandroid/text/DynamicLayout;->getLineCount()I +HSPLandroid/text/DynamicLayout;->getLineContainsTab(I)Z+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/DynamicLayout;->getLineCount()I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; HSPLandroid/text/DynamicLayout;->getLineDescent(I)I -HSPLandroid/text/DynamicLayout;->getLineDirections(I)Landroid/text/Layout$Directions; +HSPLandroid/text/DynamicLayout;->getLineDirections(I)Landroid/text/Layout$Directions;+]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector; HSPLandroid/text/DynamicLayout;->getLineExtra(I)I -HSPLandroid/text/DynamicLayout;->getLineStart(I)I -HSPLandroid/text/DynamicLayout;->getLineTop(I)I +HSPLandroid/text/DynamicLayout;->getLineStart(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/DynamicLayout;->getLineTop(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; HSPLandroid/text/DynamicLayout;->getNumberOfBlocks()I -HSPLandroid/text/DynamicLayout;->getParagraphDirection(I)I -HSPLandroid/text/DynamicLayout;->getStartHyphenEdit(I)I -HSPLandroid/text/DynamicLayout;->reflow(Ljava/lang/CharSequence;III)V +HSPLandroid/text/DynamicLayout;->getParagraphDirection(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/DynamicLayout;->getStartHyphenEdit(I)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/DynamicLayout;->reflow(Ljava/lang/CharSequence;III)V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector;]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector;]Landroid/text/StaticLayout;Landroid/text/StaticLayout;]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder; HSPLandroid/text/DynamicLayout;->setIndexFirstChangedBlock(I)V HSPLandroid/text/DynamicLayout;->updateAlwaysNeedsToBeRedrawn(I)V HSPLandroid/text/DynamicLayout;->updateBlocks(III)V @@ -15018,52 +14876,50 @@ HSPLandroid/text/Layout$SpannedEllipsizer;->getSpanStart(Ljava/lang/Object;)I HSPLandroid/text/Layout$SpannedEllipsizer;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; HSPLandroid/text/Layout$SpannedEllipsizer;->nextSpanTransition(IILjava/lang/Class;)I HSPLandroid/text/Layout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V -HSPLandroid/text/Layout;->(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FF)V HSPLandroid/text/Layout;->addSelection(IIIIILandroid/text/Layout$SelectionRectangleConsumer;)V HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;)V HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V -HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V +HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V+]Landroid/text/Layout;Landroid/text/StaticLayout; HSPLandroid/text/Layout;->drawBackground(Landroid/graphics/Canvas;II)V -HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V -HSPLandroid/text/Layout;->drawWithoutText(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V -HSPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V +HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;,Landroid/text/DynamicLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types +HSPLandroid/text/Layout;->drawWithoutText(Landroid/graphics/Canvas;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;III)V+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/text/Layout;Landroid/text/StaticLayout; HSPLandroid/text/Layout;->getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V HSPLandroid/text/Layout;->getDesiredWidth(Ljava/lang/CharSequence;IILandroid/text/TextPaint;)F HSPLandroid/text/Layout;->getDesiredWidth(Ljava/lang/CharSequence;Landroid/text/TextPaint;)F -HSPLandroid/text/Layout;->getDesiredWidthWithLimit(Ljava/lang/CharSequence;IILandroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;F)F HSPLandroid/text/Layout;->getEndHyphenEdit(I)I -HSPLandroid/text/Layout;->getHeight()I -HSPLandroid/text/Layout;->getHeight(Z)I +HSPLandroid/text/Layout;->getHeight()I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/StaticLayout; +HSPLandroid/text/Layout;->getHeight(Z)I+]Landroid/text/Layout;Landroid/text/DynamicLayout; HSPLandroid/text/Layout;->getHorizontal(IZ)F -HSPLandroid/text/Layout;->getHorizontal(IZIZ)F +HSPLandroid/text/Layout;->getHorizontal(IZIZ)F+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;]Landroid/text/TextLine;Landroid/text/TextLine; HSPLandroid/text/Layout;->getIndentAdjust(ILandroid/text/Layout$Alignment;)I -HSPLandroid/text/Layout;->getLineBaseline(I)I +HSPLandroid/text/Layout;->getLineBaseline(I)I+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout; HSPLandroid/text/Layout;->getLineBottom(I)I HSPLandroid/text/Layout;->getLineBottom(IZ)I -HSPLandroid/text/Layout;->getLineEnd(I)I -HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F -HSPLandroid/text/Layout;->getLineExtent(IZ)F -HSPLandroid/text/Layout;->getLineForOffset(I)I +HSPLandroid/text/Layout;->getLineEnd(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout; +HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/text/Layout;->getLineExtent(IZ)F+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/StaticLayout;]Landroid/text/TextLine;Landroid/text/TextLine;]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/text/Layout;->getLineForOffset(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout; HSPLandroid/text/Layout;->getLineForVertical(I)I -HSPLandroid/text/Layout;->getLineLeft(I)F +HSPLandroid/text/Layout;->getLineLeft(I)F+]Landroid/text/Layout$Alignment;Landroid/text/Layout$Alignment;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/StaticLayout;,Landroid/text/BoringLayout; HSPLandroid/text/Layout;->getLineMax(I)F -HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J -HSPLandroid/text/Layout;->getLineRight(I)F -HSPLandroid/text/Layout;->getLineStartPos(III)I -HSPLandroid/text/Layout;->getLineVisibleEnd(I)I -HSPLandroid/text/Layout;->getLineVisibleEnd(III)I +HSPLandroid/text/Layout;->getLineRangeForDraw(Landroid/graphics/Canvas;)J+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/graphics/Canvas;missing_types +HSPLandroid/text/Layout;->getLineRight(I)F+]Landroid/text/Layout$Alignment;Landroid/text/Layout$Alignment;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout; +HSPLandroid/text/Layout;->getLineStartPos(III)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout; +HSPLandroid/text/Layout;->getLineVisibleEnd(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout; +HSPLandroid/text/Layout;->getLineVisibleEnd(III)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout; HSPLandroid/text/Layout;->getLineWidth(I)F HSPLandroid/text/Layout;->getOffsetAtStartOf(I)I HSPLandroid/text/Layout;->getOffsetForHorizontal(IF)I HSPLandroid/text/Layout;->getOffsetForHorizontal(IFZ)I HSPLandroid/text/Layout;->getPaint()Landroid/text/TextPaint; -HSPLandroid/text/Layout;->getParagraphAlignment(I)Landroid/text/Layout$Alignment; -HSPLandroid/text/Layout;->getParagraphLeadingMargin(I)I -HSPLandroid/text/Layout;->getParagraphLeft(I)I -HSPLandroid/text/Layout;->getParagraphRight(I)I -HSPLandroid/text/Layout;->getParagraphSpans(Landroid/text/Spanned;IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/Layout;->getParagraphAlignment(I)Landroid/text/Layout$Alignment;+]Landroid/text/Layout;Landroid/text/DynamicLayout; +HSPLandroid/text/Layout;->getParagraphLeadingMargin(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;]Landroid/text/Spanned;Landroid/text/SpannableString; +HSPLandroid/text/Layout;->getParagraphLeft(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout; +HSPLandroid/text/Layout;->getParagraphRight(I)I+]Landroid/text/Layout;Landroid/text/DynamicLayout; +HSPLandroid/text/Layout;->getParagraphSpans(Landroid/text/Spanned;IILjava/lang/Class;)[Ljava/lang/Object;+]Landroid/text/Spanned;Landroid/text/SpannableString; HSPLandroid/text/Layout;->getPrimaryHorizontal(I)F -HSPLandroid/text/Layout;->getPrimaryHorizontal(IZ)F +HSPLandroid/text/Layout;->getPrimaryHorizontal(IZ)F+]Landroid/text/Layout;Landroid/text/DynamicLayout; HSPLandroid/text/Layout;->getSelection(IILandroid/text/Layout$SelectionRectangleConsumer;)V HSPLandroid/text/Layout;->getSelectionPath(IILandroid/graphics/Path;)V HSPLandroid/text/Layout;->getSpacingAdd()F @@ -15076,42 +14932,39 @@ HSPLandroid/text/Layout;->increaseWidthTo(I)V HSPLandroid/text/Layout;->isFallbackLineSpacingEnabled()Z HSPLandroid/text/Layout;->isJustificationRequired(I)Z HSPLandroid/text/Layout;->isRtlCharAt(I)Z -HSPLandroid/text/Layout;->measurePara(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)F -HSPLandroid/text/Layout;->primaryIsTrailingPrevious(I)Z +HSPLandroid/text/Layout;->primaryIsTrailingPrevious(I)Z+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout; HSPLandroid/text/Layout;->replaceWith(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V -HSPLandroid/text/Layout;->setJustificationMode(I)V HSPLandroid/text/Layout;->shouldClampCursor(I)Z HSPLandroid/text/MeasuredParagraph;->()V HSPLandroid/text/MeasuredParagraph;->breakText(IZF)I HSPLandroid/text/MeasuredParagraph;->buildForBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; HSPLandroid/text/MeasuredParagraph;->buildForMeasurement(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; -HSPLandroid/text/MeasuredParagraph;->buildForStaticLayout(Landroid/text/TextPaint;Landroid/graphics/text/LineBreakConfig;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;IZLandroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph; HSPLandroid/text/MeasuredParagraph;->getCharWidthAt(I)F HSPLandroid/text/MeasuredParagraph;->getChars()[C -HSPLandroid/text/MeasuredParagraph;->getDirections(II)Landroid/text/Layout$Directions; +HSPLandroid/text/MeasuredParagraph;->getDirections(II)Landroid/text/Layout$Directions;+]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray; HSPLandroid/text/MeasuredParagraph;->getFontMetrics()Landroid/text/AutoGrowArray$IntArray; HSPLandroid/text/MeasuredParagraph;->getMeasuredText()Landroid/graphics/text/MeasuredText; HSPLandroid/text/MeasuredParagraph;->getParagraphDir()I HSPLandroid/text/MeasuredParagraph;->getSpanEndCache()Landroid/text/AutoGrowArray$IntArray; HSPLandroid/text/MeasuredParagraph;->getWholeWidth()F -HSPLandroid/text/MeasuredParagraph;->obtain()Landroid/text/MeasuredParagraph; -HSPLandroid/text/MeasuredParagraph;->recycle()V -HSPLandroid/text/MeasuredParagraph;->release()V -HSPLandroid/text/MeasuredParagraph;->reset()V -HSPLandroid/text/MeasuredParagraph;->resetAndAnalyzeBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)V -HSPLandroid/text/PackedIntVector;->adjustValuesBelow(III)V -HSPLandroid/text/PackedIntVector;->deleteAt(II)V -HSPLandroid/text/PackedIntVector;->getValue(II)I -HSPLandroid/text/PackedIntVector;->growBuffer()V -HSPLandroid/text/PackedIntVector;->insertAt(I[I)V +HSPLandroid/text/MeasuredParagraph;->obtain()Landroid/text/MeasuredParagraph;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; +HSPLandroid/text/MeasuredParagraph;->recycle()V+]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; +HSPLandroid/text/MeasuredParagraph;->release()V+]Landroid/text/AutoGrowArray$FloatArray;Landroid/text/AutoGrowArray$FloatArray;]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray; +HSPLandroid/text/MeasuredParagraph;->reset()V+]Landroid/text/AutoGrowArray$FloatArray;Landroid/text/AutoGrowArray$FloatArray;]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray; +HSPLandroid/text/MeasuredParagraph;->resetAndAnalyzeBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)V+]Landroid/text/AutoGrowArray$ByteArray;Landroid/text/AutoGrowArray$ByteArray;]Landroid/text/Spanned;missing_types +HSPLandroid/text/PackedIntVector;->adjustValuesBelow(III)V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/PackedIntVector;->deleteAt(II)V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/PackedIntVector;->getValue(II)I+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/PackedIntVector;->growBuffer()V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; +HSPLandroid/text/PackedIntVector;->insertAt(I[I)V+]Landroid/text/PackedIntVector;Landroid/text/PackedIntVector; HSPLandroid/text/PackedIntVector;->moveRowGapTo(I)V HSPLandroid/text/PackedIntVector;->moveValueGapTo(II)V HSPLandroid/text/PackedIntVector;->size()I HSPLandroid/text/PackedIntVector;->width()I -HSPLandroid/text/PackedObjectVector;->deleteAt(II)V +HSPLandroid/text/PackedObjectVector;->deleteAt(II)V+]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector; HSPLandroid/text/PackedObjectVector;->getValue(II)Ljava/lang/Object; -HSPLandroid/text/PackedObjectVector;->growBuffer()V -HSPLandroid/text/PackedObjectVector;->insertAt(I[Ljava/lang/Object;)V +HSPLandroid/text/PackedObjectVector;->growBuffer()V+]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector; +HSPLandroid/text/PackedObjectVector;->insertAt(I[Ljava/lang/Object;)V+]Landroid/text/PackedObjectVector;Landroid/text/PackedObjectVector; HSPLandroid/text/PackedObjectVector;->moveRowGapTo(I)V HSPLandroid/text/PackedObjectVector;->setValue(IILjava/lang/Object;)V HSPLandroid/text/PackedObjectVector;->size()I @@ -15121,24 +14974,23 @@ HSPLandroid/text/PrecomputedText$Params;->getBreakStrategy()I HSPLandroid/text/PrecomputedText$Params;->getHyphenationFrequency()I HSPLandroid/text/PrecomputedText$Params;->getTextDirection()Landroid/text/TextDirectionHeuristic; HSPLandroid/text/PrecomputedText$Params;->getTextPaint()Landroid/text/TextPaint; -HSPLandroid/text/PrecomputedText;->createMeasuredParagraphs(Ljava/lang/CharSequence;Landroid/text/PrecomputedText$Params;IIZ)[Landroid/text/PrecomputedText$ParagraphInfo; -HSPLandroid/text/Selection;->getSelectionEnd(Ljava/lang/CharSequence;)I -HSPLandroid/text/Selection;->getSelectionStart(Ljava/lang/CharSequence;)I -HSPLandroid/text/Selection;->removeMemory(Landroid/text/Spannable;)V +HSPLandroid/text/Selection;->getSelectionEnd(Ljava/lang/CharSequence;)I+]Landroid/text/Spanned;Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder; +HSPLandroid/text/Selection;->getSelectionStart(Ljava/lang/CharSequence;)I+]Landroid/text/Spanned;Landroid/text/SpannableString;,Landroid/text/SpannableStringBuilder; +HSPLandroid/text/Selection;->removeMemory(Landroid/text/Spannable;)V+]Landroid/text/Spannable;Landroid/text/SpannableStringBuilder;,Landroid/text/SpannableString; HSPLandroid/text/Selection;->removeSelection(Landroid/text/Spannable;)V HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;I)V HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;II)V -HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;III)V +HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;III)V+]Landroid/text/Spannable;Landroid/text/SpannableStringBuilder;,Landroid/text/SpannableString; HSPLandroid/text/Selection;->updateMemory(Landroid/text/Spannable;I)V HSPLandroid/text/SpanSet;->(Ljava/lang/Class;)V HSPLandroid/text/SpanSet;->getNextTransition(II)I HSPLandroid/text/SpanSet;->hasSpansIntersecting(II)Z -HSPLandroid/text/SpanSet;->init(Landroid/text/Spanned;II)V +HSPLandroid/text/SpanSet;->init(Landroid/text/Spanned;II)V+]Landroid/text/Spanned;missing_types HSPLandroid/text/SpanSet;->recycle()V HSPLandroid/text/Spannable$Factory;->getInstance()Landroid/text/Spannable$Factory; HSPLandroid/text/Spannable$Factory;->newSpannable(Ljava/lang/CharSequence;)Landroid/text/Spannable; HSPLandroid/text/SpannableString;->(Ljava/lang/CharSequence;)V -HSPLandroid/text/SpannableString;->(Ljava/lang/CharSequence;Z)V +HSPLandroid/text/SpannableString;->(Ljava/lang/CharSequence;Z)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString; HSPLandroid/text/SpannableString;->equals(Ljava/lang/Object;)Z HSPLandroid/text/SpannableString;->getSpanEnd(Ljava/lang/Object;)I HSPLandroid/text/SpannableString;->getSpanFlags(Ljava/lang/Object;)I @@ -15156,12 +15008,12 @@ HSPLandroid/text/SpannableStringBuilder;->(Ljava/lang/CharSequence;II)V HSPLandroid/text/SpannableStringBuilder;->append(C)Landroid/text/Editable; HSPLandroid/text/SpannableStringBuilder;->append(C)Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/Editable; -HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->calcMax(I)I -HSPLandroid/text/SpannableStringBuilder;->change(IILjava/lang/CharSequence;II)V -HSPLandroid/text/SpannableStringBuilder;->charAt(I)C -HSPLandroid/text/SpannableStringBuilder;->checkRange(Ljava/lang/String;II)V +HSPLandroid/text/SpannableStringBuilder;->change(IILjava/lang/CharSequence;II)V+]Landroid/text/Spanned;Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->charAt(I)C+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->checkRange(Ljava/lang/String;II)V+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->checkSortBuffer([II)[I HSPLandroid/text/SpannableStringBuilder;->clear()V HSPLandroid/text/SpannableStringBuilder;->compareSpans(II[I[I)I @@ -15173,8 +15025,8 @@ HSPLandroid/text/SpannableStringBuilder;->equals(Ljava/lang/Object;)Z HSPLandroid/text/SpannableStringBuilder;->getChars(II[CI)V HSPLandroid/text/SpannableStringBuilder;->getSpanEnd(Ljava/lang/Object;)I HSPLandroid/text/SpannableStringBuilder;->getSpanFlags(Ljava/lang/Object;)I -HSPLandroid/text/SpannableStringBuilder;->getSpanStart(Ljava/lang/Object;)I -HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; +HSPLandroid/text/SpannableStringBuilder;->getSpanStart(Ljava/lang/Object;)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap; +HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;Z)[Ljava/lang/Object; HSPLandroid/text/SpannableStringBuilder;->getSpansRec(IILjava/lang/Class;I[Ljava/lang/Object;[I[IIZ)I HSPLandroid/text/SpannableStringBuilder;->getTextWatcherDepth()I @@ -15184,7 +15036,7 @@ HSPLandroid/text/SpannableStringBuilder;->invalidateIndex(I)V HSPLandroid/text/SpannableStringBuilder;->isInvalidParagraph(II)Z HSPLandroid/text/SpannableStringBuilder;->leftChild(I)I HSPLandroid/text/SpannableStringBuilder;->length()I -HSPLandroid/text/SpannableStringBuilder;->moveGapTo(I)V +HSPLandroid/text/SpannableStringBuilder;->moveGapTo(I)V+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->nextSpanTransition(IILjava/lang/Class;)I HSPLandroid/text/SpannableStringBuilder;->nextSpanTransitionRec(IILjava/lang/Class;I)I HSPLandroid/text/SpannableStringBuilder;->obtain(I)[I @@ -15194,8 +15046,8 @@ HSPLandroid/text/SpannableStringBuilder;->removeSpan(Ljava/lang/Object;)V HSPLandroid/text/SpannableStringBuilder;->removeSpan(Ljava/lang/Object;I)V HSPLandroid/text/SpannableStringBuilder;->removeSpansForChange(IIZI)Z HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/Editable; -HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder; -HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; +HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;+]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/SpannableStringBuilder;->resizeFor(I)V HSPLandroid/text/SpannableStringBuilder;->resolveGap(I)I HSPLandroid/text/SpannableStringBuilder;->restoreInvariants()V @@ -15216,22 +15068,22 @@ HSPLandroid/text/SpannableStringBuilder;->subSequence(II)Ljava/lang/CharSequence HSPLandroid/text/SpannableStringBuilder;->toString()Ljava/lang/String; HSPLandroid/text/SpannableStringBuilder;->treeRoot()I HSPLandroid/text/SpannableStringBuilder;->updatedIntervalBound(IIIIZZ)I -HSPLandroid/text/SpannableStringInternal;->(Ljava/lang/CharSequence;IIZ)V -HSPLandroid/text/SpannableStringInternal;->charAt(I)C -HSPLandroid/text/SpannableStringInternal;->checkRange(Ljava/lang/String;II)V -HSPLandroid/text/SpannableStringInternal;->copySpansFromInternal(Landroid/text/SpannableStringInternal;IIZ)V +HSPLandroid/text/SpannableStringInternal;->(Ljava/lang/CharSequence;IIZ)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringInternal;->charAt(I)C+]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/text/SpannableStringInternal;->checkRange(Ljava/lang/String;II)V+]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringInternal;->copySpansFromInternal(Landroid/text/SpannableStringInternal;IIZ)V+]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; HSPLandroid/text/SpannableStringInternal;->copySpansFromSpanned(Landroid/text/Spanned;IIZ)V HSPLandroid/text/SpannableStringInternal;->equals(Ljava/lang/Object;)Z -HSPLandroid/text/SpannableStringInternal;->getChars(II[CI)V +HSPLandroid/text/SpannableStringInternal;->getChars(II[CI)V+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/text/SpannableStringInternal;->getSpanEnd(Ljava/lang/Object;)I HSPLandroid/text/SpannableStringInternal;->getSpanFlags(Ljava/lang/Object;)I HSPLandroid/text/SpannableStringInternal;->getSpanStart(Ljava/lang/Object;)I -HSPLandroid/text/SpannableStringInternal;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; -HSPLandroid/text/SpannableStringInternal;->length()I -HSPLandroid/text/SpannableStringInternal;->nextSpanTransition(IILjava/lang/Class;)I +HSPLandroid/text/SpannableStringInternal;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class;]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringInternal;->length()I+]Ljava/lang/String;Ljava/lang/String; +HSPLandroid/text/SpannableStringInternal;->nextSpanTransition(IILjava/lang/Class;)I+]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/text/SpannableStringInternal;->removeSpan(Ljava/lang/Object;I)V -HSPLandroid/text/SpannableStringInternal;->sendSpanAdded(Ljava/lang/Object;II)V -HSPLandroid/text/SpannableStringInternal;->sendSpanChanged(Ljava/lang/Object;IIII)V +HSPLandroid/text/SpannableStringInternal;->sendSpanAdded(Ljava/lang/Object;II)V+]Landroid/text/SpanWatcher;Landroid/text/DynamicLayout$ChangeWatcher;,Landroid/widget/Editor$SpanController;,Landroid/widget/TextView$ChangeWatcher;]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; +HSPLandroid/text/SpannableStringInternal;->sendSpanChanged(Ljava/lang/Object;IIII)V+]Landroid/text/SpanWatcher;Landroid/widget/Editor$SpanController;,Landroid/widget/TextView$ChangeWatcher;]Landroid/text/SpannableStringInternal;Landroid/text/SpannableString; HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;III)V HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;IIIZ)V HSPLandroid/text/SpannableStringInternal;->toString()Ljava/lang/String; @@ -15265,8 +15117,8 @@ HSPLandroid/text/StaticLayout$Builder;->-$$Nest$fgetmTextDir(Landroid/text/Stati HSPLandroid/text/StaticLayout$Builder;->-$$Nest$fgetmWidth(Landroid/text/StaticLayout$Builder;)I HSPLandroid/text/StaticLayout$Builder;->()V HSPLandroid/text/StaticLayout$Builder;->build()Landroid/text/StaticLayout; -HSPLandroid/text/StaticLayout$Builder;->obtain(Ljava/lang/CharSequence;IILandroid/text/TextPaint;I)Landroid/text/StaticLayout$Builder; -HSPLandroid/text/StaticLayout$Builder;->recycle(Landroid/text/StaticLayout$Builder;)V +HSPLandroid/text/StaticLayout$Builder;->obtain(Ljava/lang/CharSequence;IILandroid/text/TextPaint;I)Landroid/text/StaticLayout$Builder;+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; +HSPLandroid/text/StaticLayout$Builder;->recycle(Landroid/text/StaticLayout$Builder;)V+]Landroid/util/Pools$SynchronizedPool;Landroid/util/Pools$SynchronizedPool; HSPLandroid/text/StaticLayout$Builder;->setAlignment(Landroid/text/Layout$Alignment;)Landroid/text/StaticLayout$Builder; HSPLandroid/text/StaticLayout$Builder;->setBreakStrategy(I)Landroid/text/StaticLayout$Builder; HSPLandroid/text/StaticLayout$Builder;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)Landroid/text/StaticLayout$Builder; @@ -15279,21 +15131,18 @@ HSPLandroid/text/StaticLayout$Builder;->setLineSpacing(FF)Landroid/text/StaticLa HSPLandroid/text/StaticLayout$Builder;->setMaxLines(I)Landroid/text/StaticLayout$Builder; HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder; HSPLandroid/text/StaticLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/StaticLayout$Builder; -HSPLandroid/text/StaticLayout;->(Landroid/text/StaticLayout$Builder;)V -HSPLandroid/text/StaticLayout;->(Ljava/lang/CharSequence;)V HSPLandroid/text/StaticLayout;->calculateEllipsis(IILandroid/text/MeasuredParagraph;IFLandroid/text/TextUtils$TruncateAt;IFLandroid/text/TextPaint;Z)V -HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V +HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V+]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Landroid/graphics/text/LineBreaker$Builder;Landroid/graphics/text/LineBreaker$Builder;]Landroid/graphics/text/LineBreaker;Landroid/graphics/text/LineBreaker;]Landroid/text/Spanned;Landroid/text/SpannableString;]Ljava/lang/CharSequence;missing_types]Landroid/graphics/text/LineBreaker$ParagraphConstraints;Landroid/graphics/text/LineBreaker$ParagraphConstraints;]Landroid/graphics/text/LineBreaker$Result;Landroid/graphics/text/LineBreaker$Result;]Landroid/text/AutoGrowArray$IntArray;Landroid/text/AutoGrowArray$IntArray;]Landroid/text/StaticLayout;Landroid/text/StaticLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/text/StaticLayout;->getBottomPadding()I HSPLandroid/text/StaticLayout;->getEllipsisCount(I)I HSPLandroid/text/StaticLayout;->getEllipsisStart(I)I -HSPLandroid/text/StaticLayout;->getEllipsizedWidth()I HSPLandroid/text/StaticLayout;->getEndHyphenEdit(I)I HSPLandroid/text/StaticLayout;->getHeight(Z)I HSPLandroid/text/StaticLayout;->getIndentAdjust(ILandroid/text/Layout$Alignment;)I HSPLandroid/text/StaticLayout;->getLineContainsTab(I)Z HSPLandroid/text/StaticLayout;->getLineCount()I HSPLandroid/text/StaticLayout;->getLineDescent(I)I -HSPLandroid/text/StaticLayout;->getLineDirections(I)Landroid/text/Layout$Directions; +HSPLandroid/text/StaticLayout;->getLineDirections(I)Landroid/text/Layout$Directions;+]Landroid/text/StaticLayout;Landroid/text/StaticLayout; HSPLandroid/text/StaticLayout;->getLineExtra(I)I HSPLandroid/text/StaticLayout;->getLineForVertical(I)I HSPLandroid/text/StaticLayout;->getLineStart(I)I @@ -15302,14 +15151,13 @@ HSPLandroid/text/StaticLayout;->getParagraphDirection(I)I HSPLandroid/text/StaticLayout;->getStartHyphenEdit(I)I HSPLandroid/text/StaticLayout;->getTopPadding()I HSPLandroid/text/StaticLayout;->getTotalInsets(I)F -HSPLandroid/text/StaticLayout;->isFallbackLineSpacingEnabled()Z -HSPLandroid/text/StaticLayout;->out(Ljava/lang/CharSequence;IIIIIIIFF[Landroid/text/style/LineHeightSpan;[ILandroid/graphics/Paint$FontMetricsInt;ZIZLandroid/text/MeasuredParagraph;IZZZ[CILandroid/text/TextUtils$TruncateAt;FFLandroid/text/TextPaint;Z)I +HSPLandroid/text/StaticLayout;->out(Ljava/lang/CharSequence;IIIIIIIFF[Landroid/text/style/LineHeightSpan;[ILandroid/graphics/Paint$FontMetricsInt;ZIZLandroid/text/MeasuredParagraph;IZZZ[CILandroid/text/TextUtils$TruncateAt;FFLandroid/text/TextPaint;Z)I+]Landroid/text/MeasuredParagraph;Landroid/text/MeasuredParagraph;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableString;,Landroid/text/SpannedString; HSPLandroid/text/StaticLayout;->packHyphenEdit(II)I HSPLandroid/text/StaticLayout;->unpackEndHyphenEdit(I)I HSPLandroid/text/StaticLayout;->unpackStartHyphenEdit(I)I HSPLandroid/text/TextDirectionHeuristics$FirstStrong;->checkRtl(Ljava/lang/CharSequence;II)I HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z -HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;II)Z +HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;II)Z+]Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;Landroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;]Ljava/lang/CharSequence;missing_types HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl([CII)Z HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->defaultIsRtl()Z HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;->defaultIsRtl()Z @@ -15320,26 +15168,21 @@ HSPLandroid/text/TextLine$DecorationInfo;->hasDecoration()Z HSPLandroid/text/TextLine;->()V HSPLandroid/text/TextLine;->adjustEndHyphenEdit(II)I HSPLandroid/text/TextLine;->adjustStartHyphenEdit(II)I -HSPLandroid/text/TextLine;->draw(Landroid/graphics/Canvas;FIII)V +HSPLandroid/text/TextLine;->draw(Landroid/graphics/Canvas;FIII)V+]Landroid/text/Layout$Directions;Landroid/text/Layout$Directions; HSPLandroid/text/TextLine;->drawRun(Landroid/graphics/Canvas;IIZFIIIZ)F HSPLandroid/text/TextLine;->drawStroke(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V HSPLandroid/text/TextLine;->drawTextRun(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V HSPLandroid/text/TextLine;->equalAttributes(Landroid/text/TextPaint;Landroid/text/TextPaint;)Z -HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V -HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/text/TextPaint;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V -HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V +HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/text/TextPaint;IIIIZLandroid/graphics/Paint$FontMetricsInt;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/text/TextLine;->getOffsetBeforeAfter(IIIZIZ)I HSPLandroid/text/TextLine;->getOffsetToLeftRightOf(IZ)I -HSPLandroid/text/TextLine;->getRunAdvance(Landroid/text/TextPaint;IIIIZI[FI)F HSPLandroid/text/TextLine;->handleReplacement(Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F -HSPLandroid/text/TextLine;->handleRun(IIIZLandroid/graphics/Canvas;Landroid/text/TextShaper$GlyphsConsumer;FIIILandroid/graphics/Paint$FontMetricsInt;Z[FI)F -HSPLandroid/text/TextLine;->handleText(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;Landroid/text/TextShaper$GlyphsConsumer;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList;[FI)F HSPLandroid/text/TextLine;->isLineEndSpace(C)Z -HSPLandroid/text/TextLine;->measure(IZLandroid/graphics/Paint$FontMetricsInt;)F -HSPLandroid/text/TextLine;->metrics(Landroid/graphics/Paint$FontMetricsInt;)F HSPLandroid/text/TextLine;->obtain()Landroid/text/TextLine; -HSPLandroid/text/TextLine;->recycle(Landroid/text/TextLine;)Landroid/text/TextLine; -HSPLandroid/text/TextLine;->set(Landroid/text/TextPaint;Ljava/lang/CharSequence;IIILandroid/text/Layout$Directions;ZLandroid/text/Layout$TabStops;IIZ)V +HSPLandroid/text/TextLine;->recycle(Landroid/text/TextLine;)Landroid/text/TextLine;+]Landroid/text/SpanSet;Landroid/text/SpanSet; +HSPLandroid/text/TextLine;->set(Landroid/text/TextPaint;Ljava/lang/CharSequence;IIILandroid/text/Layout$Directions;ZLandroid/text/Layout$TabStops;IIZ)V+]Landroid/text/SpanSet;Landroid/text/SpanSet; HSPLandroid/text/TextLine;->updateMetrics(Landroid/graphics/Paint$FontMetricsInt;IIIII)V HSPLandroid/text/TextPaint;->()V HSPLandroid/text/TextPaint;->(I)V @@ -15356,7 +15199,6 @@ HSPLandroid/text/TextUtils$SimpleStringSplitter;->next()Ljava/lang/Object; HSPLandroid/text/TextUtils$SimpleStringSplitter;->next()Ljava/lang/String; HSPLandroid/text/TextUtils$SimpleStringSplitter;->setString(Ljava/lang/String;)V HSPLandroid/text/TextUtils$StringWithRemovedChars;->toString()Ljava/lang/String; -HSPLandroid/text/TextUtils$TruncateAt;->values()[Landroid/text/TextUtils$TruncateAt; HSPLandroid/text/TextUtils;->concat([Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->copySpansFrom(Landroid/text/Spanned;IILjava/lang/Class;Landroid/text/Spannable;I)V HSPLandroid/text/TextUtils;->couldAffectRtl(C)Z @@ -15367,23 +15209,23 @@ HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/Tex HSPLandroid/text/TextUtils;->emptyIfNull(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z+]Ljava/lang/Object;Ljava/lang/String;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/text/TextUtils;->expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence; -HSPLandroid/text/TextUtils;->formatSimple(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Long;Ljava/lang/Long; +HSPLandroid/text/TextUtils;->formatSimple(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLandroid/text/TextUtils;->getCapsMode(Ljava/lang/CharSequence;II)I -HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V +HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Object;Ljava/lang/String;,Landroid/text/SpannableString;,Landroid/text/Layout$Ellipsizer;]Landroid/text/GetChars;Landroid/text/SpannableString;,Landroid/text/Layout$Ellipsizer; HSPLandroid/text/TextUtils;->getEllipsisString(Landroid/text/TextUtils$TruncateAt;)Ljava/lang/String; -HSPLandroid/text/TextUtils;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I +HSPLandroid/text/TextUtils;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I+]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;]Ljava/util/Optional;Ljava/util/Optional;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLandroid/text/TextUtils;->getTrimmedLength(Ljava/lang/CharSequence;)I HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;C)I -HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CI)I -HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CII)I+]Ljava/lang/Object;Ljava/lang/String; +HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CI)I+]Ljava/lang/Object;Landroid/text/SpannableString;]Ljava/lang/CharSequence;Landroid/text/SpannableString; +HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CII)I+]Ljava/lang/Object;Landroid/text/SpannedString;,Landroid/text/SpannableString;,Ljava/lang/String; HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I HSPLandroid/text/TextUtils;->isDigitsOnly(Ljava/lang/CharSequence;)Z -HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; +HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z+]Ljava/lang/CharSequence;missing_types HSPLandroid/text/TextUtils;->isGraphic(Ljava/lang/CharSequence;)Z -HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Iterable;Ljava/util/ArrayList; +HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Iterable;missing_types]Ljava/util/Iterator;missing_types HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String; -HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CI)I +HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CI)I+]Ljava/lang/Object;Landroid/text/SpannableString; HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CII)I HSPLandroid/text/TextUtils;->makeSafeForPresentation(Ljava/lang/String;IFI)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->nullIfEmpty(Ljava/lang/String;)Ljava/lang/String; @@ -15395,7 +15237,7 @@ HSPLandroid/text/TextUtils;->safeIntern(Ljava/lang/String;)Ljava/lang/String; HSPLandroid/text/TextUtils;->split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; HSPLandroid/text/TextUtils;->stringOrSpannedString(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->substring(Ljava/lang/CharSequence;II)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; -HSPLandroid/text/TextUtils;->toUpperCase(Ljava/util/Locale;Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence; +HSPLandroid/text/TextUtils;->toUpperCase(Ljava/util/Locale;Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence;+]Landroid/icu/text/CaseMap$Upper;Landroid/icu/text/CaseMap$Upper;]Landroid/icu/text/Edits;Landroid/icu/text/Edits; HSPLandroid/text/TextUtils;->trimNoCopySpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->trimToParcelableSize(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; HSPLandroid/text/TextUtils;->trimToSize(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence; @@ -15403,7 +15245,7 @@ HSPLandroid/text/TextUtils;->unpackRangeEndFromLong(J)I HSPLandroid/text/TextUtils;->unpackRangeStartFromLong(J)I HSPLandroid/text/TextUtils;->writeToParcel(Ljava/lang/CharSequence;Landroid/os/Parcel;I)V HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;J)Ljava/lang/CharSequence; -HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence; +HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/text/DateFormatSymbols;Landroid/icu/text/DateFormatSymbols;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/SpannableStringBuilder;Landroid/text/SpannableStringBuilder; HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence; HSPLandroid/text/format/DateFormat;->getBestDateTimePattern(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String; HSPLandroid/text/format/DateFormat;->getCompatibleEnglishPattern(Landroid/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Landroid/icu/util/ULocale;Landroid/icu/util/ULocale; @@ -15414,16 +15256,16 @@ HSPLandroid/text/format/DateFormat;->getTimeFormatString(Landroid/content/Contex HSPLandroid/text/format/DateFormat;->getYearString(II)Ljava/lang/String; HSPLandroid/text/format/DateFormat;->hasDesignator(Ljava/lang/CharSequence;C)Z HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;)Z -HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;I)Z -HSPLandroid/text/format/DateFormat;->is24HourLocale(Ljava/util/Locale;)Z -HSPLandroid/text/format/DateFormat;->zeroPad(II)Ljava/lang/String; +HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;I)Z+]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/text/format/DateFormat;->is24HourLocale(Ljava/util/Locale;)Z+]Ljava/util/Locale;Ljava/util/Locale; +HSPLandroid/text/format/DateFormat;->zeroPad(II)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/text/format/DateIntervalFormat;->()V HSPLandroid/text/format/DateIntervalFormat;->formatDateRange(JJILjava/lang/String;)Ljava/lang/String; -HSPLandroid/text/format/DateIntervalFormat;->formatDateRange(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJI)Ljava/lang/String; -HSPLandroid/text/format/DateIntervalFormat;->getFormatter(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;)Landroid/icu/text/DateIntervalFormat; -HSPLandroid/text/format/DateIntervalFormat;->isExactlyMidnight(Landroid/icu/util/Calendar;)Z -HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;JJI)Ljava/lang/String; -HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter; +HSPLandroid/text/format/DateIntervalFormat;->formatDateRange(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJI)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Landroid/icu/text/DateIntervalFormat;Landroid/icu/text/DateIntervalFormat; +HSPLandroid/text/format/DateIntervalFormat;->getFormatter(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;)Landroid/icu/text/DateIntervalFormat;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/LruCache;Landroid/util/LruCache; +HSPLandroid/text/format/DateIntervalFormat;->isExactlyMidnight(Landroid/icu/util/Calendar;)Z+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;JJI)Ljava/lang/String;+]Ljava/util/Formatter;Ljava/util/Formatter; +HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter;+]Ljava/util/Formatter;Ljava/util/Formatter;]Ljava/lang/Appendable;Ljava/lang/StringBuilder; HSPLandroid/text/format/DateUtils;->formatDateTime(Landroid/content/Context;JI)Ljava/lang/String; HSPLandroid/text/format/DateUtils;->formatElapsedTime(J)Ljava/lang/String; HSPLandroid/text/format/DateUtils;->formatElapsedTime(Ljava/lang/StringBuilder;J)Ljava/lang/String; @@ -15432,20 +15274,20 @@ HSPLandroid/text/format/DateUtils;->initFormatStrings()V HSPLandroid/text/format/DateUtils;->initFormatStringsLocked()V HSPLandroid/text/format/DateUtils;->isSameDate(JJ)Z HSPLandroid/text/format/DateUtils;->isToday(J)Z -HSPLandroid/text/format/DateUtilsBridge;->createIcuCalendar(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;J)Landroid/icu/util/Calendar; -HSPLandroid/text/format/DateUtilsBridge;->fallInSameMonth(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z +HSPLandroid/text/format/DateUtilsBridge;->createIcuCalendar(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;J)Landroid/icu/util/Calendar;+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/text/format/DateUtilsBridge;->fallInSameMonth(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; HSPLandroid/text/format/DateUtilsBridge;->fallInSameYear(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z -HSPLandroid/text/format/DateUtilsBridge;->fallOnDifferentDates(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z -HSPLandroid/text/format/DateUtilsBridge;->icuTimeZone(Ljava/util/TimeZone;)Landroid/icu/util/TimeZone; +HSPLandroid/text/format/DateUtilsBridge;->fallOnDifferentDates(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z+]Landroid/icu/util/Calendar;Landroid/icu/util/GregorianCalendar; +HSPLandroid/text/format/DateUtilsBridge;->icuTimeZone(Ljava/util/TimeZone;)Landroid/icu/util/TimeZone;+]Landroid/icu/util/TimeZone;Landroid/icu/impl/OlsonTimeZone;]Ljava/util/TimeZone;Llibcore/util/ZoneInfo; HSPLandroid/text/format/DateUtilsBridge;->isThisYear(Landroid/icu/util/Calendar;)Z -HSPLandroid/text/format/DateUtilsBridge;->toSkeleton(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;I)Ljava/lang/String; +HSPLandroid/text/format/DateUtilsBridge;->toSkeleton(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/text/format/Formatter;->formatBytes(Landroid/content/res/Resources;JI)Landroid/text/format/Formatter$BytesResult; HSPLandroid/text/format/Formatter;->formatFileSize(Landroid/content/Context;J)Ljava/lang/String; HSPLandroid/text/format/Formatter;->formatFileSize(Landroid/content/Context;JI)Ljava/lang/String; HSPLandroid/text/format/RelativeDateTimeFormatter;->getFormatter(Landroid/icu/util/ULocale;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;)Landroid/icu/text/RelativeDateTimeFormatter; HSPLandroid/text/format/RelativeDateTimeFormatter;->getRelativeTimeSpanString(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJJILandroid/icu/text/DisplayContext;)Ljava/lang/String; HSPLandroid/text/format/RelativeDateTimeFormatter;->getRelativeTimeSpanString(Ljava/util/Locale;Ljava/util/TimeZone;JJJILandroid/icu/text/DisplayContext;)Ljava/lang/String; -HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsFromTime(Landroid/text/format/Time;)V +HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsFromTime(Landroid/text/format/Time;)V+]Lcom/android/i18n/timezone/WallTime;Lcom/android/i18n/timezone/WallTime; HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsToTime(Landroid/text/format/Time;)V HSPLandroid/text/format/Time$TimeCalculator;->lookupZoneInfoData(Ljava/lang/String;)Lcom/android/i18n/timezone/ZoneInfoData; HSPLandroid/text/format/Time$TimeCalculator;->setTimeInMillis(J)V @@ -15528,7 +15370,7 @@ HSPLandroid/text/style/ClickableSpan;->updateDrawState(Landroid/text/TextPaint;) HSPLandroid/text/style/DynamicDrawableSpan;->(I)V HSPLandroid/text/style/ForegroundColorSpan;->(I)V HSPLandroid/text/style/ForegroundColorSpan;->getSpanTypeIdInternal()I -HSPLandroid/text/style/ForegroundColorSpan;->updateDrawState(Landroid/text/TextPaint;)V +HSPLandroid/text/style/ForegroundColorSpan;->updateDrawState(Landroid/text/TextPaint;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/text/style/ForegroundColorSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V HSPLandroid/text/style/ImageSpan;->(Landroid/graphics/drawable/Drawable;I)V HSPLandroid/text/style/ImageSpan;->getDrawable()Landroid/graphics/drawable/Drawable; @@ -15549,7 +15391,7 @@ HSPLandroid/text/style/StyleSpan;->updateDrawState(Landroid/text/TextPaint;)V HSPLandroid/text/style/StyleSpan;->updateMeasureState(Landroid/text/TextPaint;)V HSPLandroid/text/style/StyleSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V HSPLandroid/text/style/TextAppearanceSpan;->(Landroid/content/Context;I)V -HSPLandroid/text/style/TextAppearanceSpan;->(Landroid/content/Context;II)V +HSPLandroid/text/style/TextAppearanceSpan;->(Landroid/content/Context;II)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/text/style/TextAppearanceSpan;->(Landroid/os/Parcel;)V HSPLandroid/text/style/TextAppearanceSpan;->(Ljava/lang/String;IILandroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;)V HSPLandroid/text/style/TextAppearanceSpan;->getFamily()Ljava/lang/String; @@ -15594,13 +15436,13 @@ HSPLandroid/transition/Transition$2;->onAnimationEnd(Landroid/animation/Animator HSPLandroid/transition/Transition$2;->onAnimationStart(Landroid/animation/Animator;)V HSPLandroid/transition/Transition$3;->onAnimationEnd(Landroid/animation/Animator;)V HSPLandroid/transition/Transition;->()V -HSPLandroid/transition/Transition;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/transition/Transition;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/transition/Transition;Landroid/transition/TransitionSet;,Landroid/transition/ChangeTransform;,Landroid/transition/ChangeBounds;]Ljava/lang/Object;megamorphic_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/transition/Transition;->addListener(Landroid/transition/Transition$TransitionListener;)Landroid/transition/Transition; HSPLandroid/transition/Transition;->addTarget(Landroid/view/View;)Landroid/transition/Transition; HSPLandroid/transition/Transition;->addUnmatched(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V HSPLandroid/transition/Transition;->addViewValues(Landroid/transition/TransitionValuesMaps;Landroid/view/View;Landroid/transition/TransitionValues;)V HSPLandroid/transition/Transition;->animate(Landroid/animation/Animator;)V -HSPLandroid/transition/Transition;->captureHierarchy(Landroid/view/View;Z)V+]Landroid/transition/Transition;Landroid/transition/TransitionSet;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/transition/Transition;->captureHierarchy(Landroid/view/View;Z)V HSPLandroid/transition/Transition;->capturePropagationValues(Landroid/transition/TransitionValues;)V HSPLandroid/transition/Transition;->captureValues(Landroid/view/ViewGroup;Z)V HSPLandroid/transition/Transition;->clearValues(Z)V @@ -15611,7 +15453,7 @@ HSPLandroid/transition/Transition;->getDuration()J HSPLandroid/transition/Transition;->getInterpolator()Landroid/animation/TimeInterpolator; HSPLandroid/transition/Transition;->getName()Ljava/lang/String; HSPLandroid/transition/Transition;->getStartDelay()J -HSPLandroid/transition/Transition;->isValidTarget(Landroid/view/View;)Z+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/transition/Transition;->isValidTarget(Landroid/view/View;)Z HSPLandroid/transition/Transition;->matchIds(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseArray;Landroid/util/SparseArray;)V HSPLandroid/transition/Transition;->matchInstances(Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V HSPLandroid/transition/Transition;->matchItemIds(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;)V @@ -15625,7 +15467,7 @@ HSPLandroid/transition/Transition;->setEpicenterCallback(Landroid/transition/Tra HSPLandroid/transition/Transition;->start()V HSPLandroid/transition/TransitionInflater;->(Landroid/content/Context;)V HSPLandroid/transition/TransitionInflater;->createCustom(Landroid/util/AttributeSet;Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition; +HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition;+]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/transition/TransitionSet;Landroid/transition/TransitionSet; HSPLandroid/transition/TransitionInflater;->from(Landroid/content/Context;)Landroid/transition/TransitionInflater; HSPLandroid/transition/TransitionInflater;->inflateTransition(I)Landroid/transition/Transition; HSPLandroid/transition/TransitionListenerAdapter;->()V @@ -15696,13 +15538,12 @@ HSPLandroid/util/ArrayMap;->containsValue(Ljava/lang/Object;)Z HSPLandroid/util/ArrayMap;->ensureCapacity(I)V HSPLandroid/util/ArrayMap;->entrySet()Ljava/util/Set; HSPLandroid/util/ArrayMap;->equals(Ljava/lang/Object;)Z+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Long;]Ljava/util/Map;Landroid/util/ArrayMap; -HSPLandroid/util/ArrayMap;->forEach(Ljava/util/function/BiConsumer;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/function/BiConsumer;missing_types HSPLandroid/util/ArrayMap;->freeArrays([I[Ljava/lang/Object;I)V HSPLandroid/util/ArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/util/ArrayMap;->getCollection()Landroid/util/MapCollections; -HSPLandroid/util/ArrayMap;->hashCode()I -HSPLandroid/util/ArrayMap;->indexOf(Ljava/lang/Object;I)I+]Ljava/lang/Object;missing_types -HSPLandroid/util/ArrayMap;->indexOfKey(Ljava/lang/Object;)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;missing_types +HSPLandroid/util/ArrayMap;->hashCode()I+]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/Integer;,Ljava/lang/Long; +HSPLandroid/util/ArrayMap;->indexOf(Ljava/lang/Object;I)I+]Ljava/lang/Object;megamorphic_types +HSPLandroid/util/ArrayMap;->indexOfKey(Ljava/lang/Object;)I+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;megamorphic_types HSPLandroid/util/ArrayMap;->indexOfNull()I HSPLandroid/util/ArrayMap;->indexOfValue(Ljava/lang/Object;)I HSPLandroid/util/ArrayMap;->isEmpty()Z @@ -15710,13 +15551,13 @@ HSPLandroid/util/ArrayMap;->keyAt(I)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->keySet()Ljava/util/Set;+]Landroid/util/MapCollections;Landroid/util/ArrayMap$1; HSPLandroid/util/ArrayMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/lang/Object;missing_types HSPLandroid/util/ArrayMap;->putAll(Landroid/util/ArrayMap;)V -HSPLandroid/util/ArrayMap;->putAll(Ljava/util/Map;)V +HSPLandroid/util/ArrayMap;->putAll(Ljava/util/Map;)V+]Landroid/util/ArrayMap;Landroid/util/ArrayMap;]Ljava/util/Map$Entry;Landroid/util/MapCollections$MapIterator;,Ljava/util/HashMap$Node;]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types HSPLandroid/util/ArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->removeAt(I)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->retainAll(Ljava/util/Collection;)Z HSPLandroid/util/ArrayMap;->setValueAt(ILjava/lang/Object;)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->size()I -HSPLandroid/util/ArrayMap;->toString()Ljava/lang/String; +HSPLandroid/util/ArrayMap;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArrayMap;Landroid/util/ArrayMap; HSPLandroid/util/ArrayMap;->validate()V HSPLandroid/util/ArrayMap;->valueAt(I)Ljava/lang/Object; HSPLandroid/util/ArrayMap;->values()Ljava/util/Collection; @@ -15730,7 +15571,7 @@ HSPLandroid/util/ArraySet;->(IZ)V HSPLandroid/util/ArraySet;->(Landroid/util/ArraySet;)V HSPLandroid/util/ArraySet;->(Ljava/util/Collection;)V HSPLandroid/util/ArraySet;->([Ljava/lang/Object;)V -HSPLandroid/util/ArraySet;->add(Ljava/lang/Object;)Z+]Ljava/lang/Object;megamorphic_types +HSPLandroid/util/ArraySet;->add(Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/app/PendingIntent; HSPLandroid/util/ArraySet;->addAll(Landroid/util/ArraySet;)V HSPLandroid/util/ArraySet;->addAll(Ljava/util/Collection;)Z HSPLandroid/util/ArraySet;->allocArrays(I)V @@ -15756,7 +15597,7 @@ HSPLandroid/util/ArraySet;->shouldShrink()Z HSPLandroid/util/ArraySet;->size()I HSPLandroid/util/ArraySet;->toArray()[Ljava/lang/Object; HSPLandroid/util/ArraySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; -HSPLandroid/util/ArraySet;->toString()Ljava/lang/String; +HSPLandroid/util/ArraySet;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/ArraySet;Landroid/util/ArraySet; HSPLandroid/util/ArraySet;->valueAt(I)Ljava/lang/Object; HSPLandroid/util/ArraySet;->valueAtUnchecked(I)Ljava/lang/Object; HSPLandroid/util/AtomicFile;->(Ljava/io/File;)V @@ -15773,11 +15614,11 @@ HSPLandroid/util/Base64$Decoder;->process([BIIZ)Z HSPLandroid/util/Base64$Encoder;->(I[B)V HSPLandroid/util/Base64$Encoder;->maxOutputSize(I)I HSPLandroid/util/Base64$Encoder;->process([BIIZ)Z -HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B +HSPLandroid/util/Base64;->decode(Ljava/lang/String;I)[B+]Ljava/lang/String;Ljava/lang/String; HSPLandroid/util/Base64;->decode([BI)[B HSPLandroid/util/Base64;->decode([BIII)[B+]Landroid/util/Base64$Decoder;Landroid/util/Base64$Decoder; HSPLandroid/util/Base64;->encode([BI)[B -HSPLandroid/util/Base64;->encode([BIII)[B +HSPLandroid/util/Base64;->encode([BIII)[B+]Landroid/util/Base64$Encoder;Landroid/util/Base64$Encoder; HSPLandroid/util/Base64;->encodeToString([BI)Ljava/lang/String; HSPLandroid/util/Base64;->encodeToString([BIII)Ljava/lang/String; HSPLandroid/util/Base64OutputStream;->(Ljava/io/OutputStream;I)V @@ -15800,9 +15641,9 @@ HSPLandroid/util/DisplayMetrics;->setTo(Landroid/util/DisplayMetrics;)V HSPLandroid/util/DisplayMetrics;->setToDefaults()V HSPLandroid/util/DisplayUtils;->getDisplayUniqueIdConfigIndex(Landroid/content/res/Resources;Ljava/lang/String;)I HSPLandroid/util/EventLog$Event;->([B)V -HSPLandroid/util/EventLog$Event;->decodeObject()Ljava/lang/Object; -HSPLandroid/util/EventLog$Event;->getData()Ljava/lang/Object; -HSPLandroid/util/EventLog$Event;->getHeaderSize()I +HSPLandroid/util/EventLog$Event;->decodeObject()Ljava/lang/Object;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLandroid/util/EventLog$Event;->getData()Ljava/lang/Object;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLandroid/util/EventLog$Event;->getHeaderSize()I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLandroid/util/EventLog$Event;->getUid()I HSPLandroid/util/EventLog;->getTagCode(Ljava/lang/String;)I HSPLandroid/util/EventLog;->readTagsFile()V @@ -15885,7 +15726,7 @@ HSPLandroid/util/JsonWriter;->flush()V HSPLandroid/util/JsonWriter;->name(Ljava/lang/String;)Landroid/util/JsonWriter; HSPLandroid/util/JsonWriter;->newline()V HSPLandroid/util/JsonWriter;->open(Landroid/util/JsonScope;Ljava/lang/String;)Landroid/util/JsonWriter; -HSPLandroid/util/JsonWriter;->peek()Landroid/util/JsonScope;+]Ljava/util/List;Ljava/util/ArrayList; +HSPLandroid/util/JsonWriter;->peek()Landroid/util/JsonScope; HSPLandroid/util/JsonWriter;->replaceTop(Landroid/util/JsonScope;)V HSPLandroid/util/JsonWriter;->string(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/Writer;Ljava/io/StringWriter; HSPLandroid/util/JsonWriter;->value(J)Landroid/util/JsonWriter; @@ -15915,7 +15756,7 @@ HSPLandroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I HSPLandroid/util/Log;->logToRadioBuffer(ILjava/lang/String;Ljava/lang/String;)I HSPLandroid/util/Log;->println(ILjava/lang/String;Ljava/lang/String;)I -HSPLandroid/util/Log;->printlns(IILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I +HSPLandroid/util/Log;->printlns(IILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I+]Ljava/lang/String;Ljava/lang/String;]Landroid/util/Log$ImmediateLogWriter;Landroid/util/Log$ImmediateLogWriter;]Lcom/android/internal/util/LineBreakBufferedWriter;Lcom/android/internal/util/LineBreakBufferedWriter;]Ljava/lang/Throwable;missing_types HSPLandroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I HSPLandroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I HSPLandroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I @@ -15978,7 +15819,7 @@ HSPLandroid/util/MapCollections$ArrayIterator;->next()Ljava/lang/Object;+]Landro HSPLandroid/util/MapCollections$ArrayIterator;->remove()V HSPLandroid/util/MapCollections$EntrySet;->(Landroid/util/MapCollections;)V HSPLandroid/util/MapCollections$EntrySet;->iterator()Ljava/util/Iterator; -HSPLandroid/util/MapCollections$EntrySet;->size()I +HSPLandroid/util/MapCollections$EntrySet;->size()I+]Landroid/util/MapCollections;Landroid/util/ArrayMap$1; HSPLandroid/util/MapCollections$KeySet;->(Landroid/util/MapCollections;)V HSPLandroid/util/MapCollections$KeySet;->contains(Ljava/lang/Object;)Z HSPLandroid/util/MapCollections$KeySet;->containsAll(Ljava/util/Collection;)Z @@ -16001,7 +15842,7 @@ HSPLandroid/util/MapCollections;->getKeySet()Ljava/util/Set; HSPLandroid/util/MapCollections;->getValues()Ljava/util/Collection; HSPLandroid/util/MapCollections;->retainAllHelper(Ljava/util/Map;Ljava/util/Collection;)Z HSPLandroid/util/MapCollections;->toArrayHelper(I)[Ljava/lang/Object; -HSPLandroid/util/MapCollections;->toArrayHelper([Ljava/lang/Object;I)[Ljava/lang/Object; +HSPLandroid/util/MapCollections;->toArrayHelper([Ljava/lang/Object;I)[Ljava/lang/Object;+]Ljava/lang/Object;[Ljava/lang/String;]Landroid/util/MapCollections;Landroid/util/ArrayMap$1;]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/util/MathUtils;->addOrThrow(II)I HSPLandroid/util/MathUtils;->constrain(FFF)F HSPLandroid/util/MathUtils;->constrain(III)I @@ -16015,8 +15856,8 @@ HSPLandroid/util/MemoryIntArray$1;->createFromParcel(Landroid/os/Parcel;)Ljava/l HSPLandroid/util/MemoryIntArray;->(Landroid/os/Parcel;)V HSPLandroid/util/MemoryIntArray;->(Landroid/os/Parcel;Landroid/util/MemoryIntArray-IA;)V HSPLandroid/util/MemoryIntArray;->close()V -HSPLandroid/util/MemoryIntArray;->enforceNotClosed()V -HSPLandroid/util/MemoryIntArray;->enforceValidIndex(I)V +HSPLandroid/util/MemoryIntArray;->enforceNotClosed()V+]Landroid/util/MemoryIntArray;Landroid/util/MemoryIntArray; +HSPLandroid/util/MemoryIntArray;->enforceValidIndex(I)V+]Landroid/util/MemoryIntArray;Landroid/util/MemoryIntArray; HSPLandroid/util/MemoryIntArray;->finalize()V HSPLandroid/util/MemoryIntArray;->get(I)I HSPLandroid/util/MemoryIntArray;->isClosed()Z @@ -16037,7 +15878,7 @@ HSPLandroid/util/MutableBoolean;->(Z)V HSPLandroid/util/Pair;->(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair; HSPLandroid/util/Pair;->equals(Ljava/lang/Object;)Z -HSPLandroid/util/Pair;->hashCode()I +HSPLandroid/util/Pair;->hashCode()I+]Ljava/lang/Object;missing_types HSPLandroid/util/Pair;->toString()Ljava/lang/String; HSPLandroid/util/PathParser$PathData;->(Landroid/util/PathParser$PathData;)V HSPLandroid/util/PathParser$PathData;->(Ljava/lang/String;)V @@ -16096,7 +15937,7 @@ HSPLandroid/util/SparseArray;->append(ILjava/lang/Object;)V+]Landroid/util/Spars HSPLandroid/util/SparseArray;->clear()V HSPLandroid/util/SparseArray;->clone()Landroid/util/SparseArray; HSPLandroid/util/SparseArray;->contains(I)Z -HSPLandroid/util/SparseArray;->contentEquals(Landroid/util/SparseArray;)Z +HSPLandroid/util/SparseArray;->contentEquals(Landroid/util/SparseArray;)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/util/SparseArray;->delete(I)V HSPLandroid/util/SparseArray;->gc()V HSPLandroid/util/SparseArray;->get(I)Ljava/lang/Object;+]Landroid/util/SparseArray;missing_types @@ -16105,7 +15946,7 @@ HSPLandroid/util/SparseArray;->indexOfKey(I)I HSPLandroid/util/SparseArray;->indexOfValue(Ljava/lang/Object;)I HSPLandroid/util/SparseArray;->keyAt(I)I HSPLandroid/util/SparseArray;->put(ILjava/lang/Object;)V -HSPLandroid/util/SparseArray;->remove(I)V +HSPLandroid/util/SparseArray;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/util/SparseArray;->removeAt(I)V HSPLandroid/util/SparseArray;->removeReturnOld(I)Ljava/lang/Object; HSPLandroid/util/SparseArray;->setValueAt(ILjava/lang/Object;)V @@ -16121,7 +15962,6 @@ HSPLandroid/util/SparseBooleanArray;->append(IZ)V HSPLandroid/util/SparseBooleanArray;->clear()V HSPLandroid/util/SparseBooleanArray;->clone()Landroid/util/SparseBooleanArray; HSPLandroid/util/SparseBooleanArray;->delete(I)V -HSPLandroid/util/SparseBooleanArray;->equals(Ljava/lang/Object;)Z HSPLandroid/util/SparseBooleanArray;->get(I)Z HSPLandroid/util/SparseBooleanArray;->get(IZ)Z HSPLandroid/util/SparseBooleanArray;->indexOfKey(I)I @@ -16287,8 +16127,8 @@ HSPLandroid/view/Choreographer$CallbackQueue;->extractDueCallbacksLocked(J)Landr HSPLandroid/view/Choreographer$CallbackQueue;->removeCallbacksLocked(Ljava/lang/Object;Ljava/lang/Object;)V HSPLandroid/view/Choreographer$CallbackRecord;->()V HSPLandroid/view/Choreographer$CallbackRecord;->(Landroid/view/Choreographer$CallbackRecord-IA;)V -HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V -HSPLandroid/view/Choreographer$CallbackRecord;->run(Landroid/view/Choreographer$FrameData;)V +HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V+]Landroid/view/Choreographer$FrameCallback;missing_types]Ljava/lang/Runnable;missing_types +HSPLandroid/view/Choreographer$CallbackRecord;->run(Landroid/view/Choreographer$FrameData;)V+]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord; HSPLandroid/view/Choreographer$FrameData;->-$$Nest$fgetmFrameTimeNanos(Landroid/view/Choreographer$FrameData;)J HSPLandroid/view/Choreographer$FrameData;->()V HSPLandroid/view/Choreographer$FrameData;->allocateFrameTimelines(I)V @@ -16301,8 +16141,8 @@ HSPLandroid/view/Choreographer$FrameData;->update(JI)V HSPLandroid/view/Choreographer$FrameData;->update(JLandroid/view/DisplayEventReceiver$VsyncEventData;)Landroid/view/Choreographer$FrameTimeline;+]Landroid/view/Choreographer$FrameTimeline;Landroid/view/Choreographer$FrameTimeline; HSPLandroid/view/Choreographer$FrameData;->update(JLandroid/view/DisplayEventReceiver;J)Landroid/view/Choreographer$FrameTimeline;+]Landroid/view/DisplayEventReceiver;Landroid/view/Choreographer$FrameDisplayEventReceiver;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData; HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->(Landroid/view/Choreographer;Landroid/os/Looper;IJ)V -HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJILandroid/view/DisplayEventReceiver$VsyncEventData;)V -HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->run()V +HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData; +HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->run()V+]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/Choreographer$FrameHandler;->(Landroid/view/Choreographer;Landroid/os/Looper;)V HSPLandroid/view/Choreographer$FrameHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/view/Choreographer$FrameTimeline;->-$$Nest$fgetmDeadlineNanos(Landroid/view/Choreographer$FrameTimeline;)J @@ -16318,8 +16158,8 @@ HSPLandroid/view/Choreographer;->-$$Nest$sfputmMainInstance(Landroid/view/Choreo HSPLandroid/view/Choreographer;->(Landroid/os/Looper;I)V HSPLandroid/view/Choreographer;->(Landroid/os/Looper;IJ)V HSPLandroid/view/Choreographer;->(Landroid/os/Looper;ILandroid/view/Choreographer-IA;)V -HSPLandroid/view/Choreographer;->doCallbacks(IJ)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord; -HSPLandroid/view/Choreographer;->doFrame(JILandroid/view/DisplayEventReceiver$VsyncEventData;)V +HSPLandroid/view/Choreographer;->doCallbacks(IJ)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$CallbackRecord;Landroid/view/Choreographer$CallbackRecord;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData; +HSPLandroid/view/Choreographer;->doFrame(JILandroid/view/DisplayEventReceiver$VsyncEventData;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/Choreographer$FrameData;Landroid/view/Choreographer$FrameData;]Landroid/graphics/FrameInfo;Landroid/graphics/FrameInfo;]Landroid/view/Choreographer;Landroid/view/Choreographer;]Landroid/view/DisplayEventReceiver$VsyncEventData;Landroid/view/DisplayEventReceiver$VsyncEventData; HSPLandroid/view/Choreographer;->doScheduleCallback(I)V HSPLandroid/view/Choreographer;->doScheduleVsync()V HSPLandroid/view/Choreographer;->getFrameIntervalNanos()J @@ -16332,17 +16172,17 @@ HSPLandroid/view/Choreographer;->getSfInstance()Landroid/view/Choreographer; HSPLandroid/view/Choreographer;->getVsyncId()J HSPLandroid/view/Choreographer;->isRunningOnLooperThreadLocked()Z HSPLandroid/view/Choreographer;->obtainCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord; -HSPLandroid/view/Choreographer;->postCallback(ILjava/lang/Runnable;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer;->postCallback(ILjava/lang/Runnable;Ljava/lang/Object;)V+]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/Choreographer;->postCallbackDelayed(ILjava/lang/Runnable;Ljava/lang/Object;J)V -HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V +HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler; HSPLandroid/view/Choreographer;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V HSPLandroid/view/Choreographer;->postFrameCallbackDelayed(Landroid/view/Choreographer$FrameCallback;J)V HSPLandroid/view/Choreographer;->recycleCallbackLocked(Landroid/view/Choreographer$CallbackRecord;)V HSPLandroid/view/Choreographer;->removeCallbacks(ILjava/lang/Runnable;Ljava/lang/Object;)V -HSPLandroid/view/Choreographer;->removeCallbacksInternal(ILjava/lang/Object;Ljava/lang/Object;)V +HSPLandroid/view/Choreographer;->removeCallbacksInternal(ILjava/lang/Object;Ljava/lang/Object;)V+]Landroid/view/Choreographer$CallbackQueue;Landroid/view/Choreographer$CallbackQueue;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler; HSPLandroid/view/Choreographer;->removeFrameCallback(Landroid/view/Choreographer$FrameCallback;)V -HSPLandroid/view/Choreographer;->scheduleFrameLocked(J)V -HSPLandroid/view/Choreographer;->scheduleVsyncLocked()V +HSPLandroid/view/Choreographer;->scheduleFrameLocked(J)V+]Landroid/os/Message;Landroid/os/Message;]Landroid/view/Choreographer$FrameHandler;Landroid/view/Choreographer$FrameHandler; +HSPLandroid/view/Choreographer;->scheduleVsyncLocked()V+]Landroid/view/Choreographer$FrameDisplayEventReceiver;Landroid/view/Choreographer$FrameDisplayEventReceiver; HSPLandroid/view/Choreographer;->setFPSDivisor(I)V HSPLandroid/view/ContextThemeWrapper;->()V HSPLandroid/view/ContextThemeWrapper;->(Landroid/content/Context;I)V @@ -16352,18 +16192,18 @@ HSPLandroid/view/ContextThemeWrapper;->getAssets()Landroid/content/res/AssetMana HSPLandroid/view/ContextThemeWrapper;->getOverrideConfiguration()Landroid/content/res/Configuration; HSPLandroid/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources; HSPLandroid/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources; -HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; -HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme; +HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater;]Landroid/content/Context;missing_types]Landroid/view/ContextThemeWrapper;missing_types +HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme;+]Landroid/view/ContextThemeWrapper;Landroid/view/ContextThemeWrapper; HSPLandroid/view/ContextThemeWrapper;->initializeTheme()V HSPLandroid/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V HSPLandroid/view/ContextThemeWrapper;->setTheme(I)V HSPLandroid/view/CrossWindowBlurListeners;->()V HSPLandroid/view/Display$HdrCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$HdrCapabilities; HSPLandroid/view/Display$HdrCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; -HSPLandroid/view/Display$HdrCapabilities;->(Landroid/os/Parcel;)V+]Landroid/view/Display$HdrCapabilities;Landroid/view/Display$HdrCapabilities; +HSPLandroid/view/Display$HdrCapabilities;->(Landroid/os/Parcel;)V HSPLandroid/view/Display$HdrCapabilities;->(Landroid/os/Parcel;Landroid/view/Display$HdrCapabilities-IA;)V HSPLandroid/view/Display$HdrCapabilities;->equals(Ljava/lang/Object;)Z -HSPLandroid/view/Display$HdrCapabilities;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/view/Display$HdrCapabilities;->readFromParcel(Landroid/os/Parcel;)V HSPLandroid/view/Display$HdrCapabilities;->toString()Ljava/lang/String; HSPLandroid/view/Display$HdrCapabilities;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/Display$Mode$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$Mode; @@ -16384,7 +16224,7 @@ HSPLandroid/view/Display;->(Landroid/hardware/display/DisplayManagerGlobal HSPLandroid/view/Display;->(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/view/DisplayAdjustments;Landroid/content/res/Resources;)V HSPLandroid/view/Display;->getAppVsyncOffsetNanos()J HSPLandroid/view/Display;->getCutout()Landroid/view/DisplayCutout; -HSPLandroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; +HSPLandroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments; HSPLandroid/view/Display;->getDisplayId()I HSPLandroid/view/Display;->getDisplayInfo(Landroid/view/DisplayInfo;)Z HSPLandroid/view/Display;->getFlags()I @@ -16408,7 +16248,6 @@ HSPLandroid/view/Display;->getSupportedModes()[Landroid/view/Display$Mode; HSPLandroid/view/Display;->getSupportedWideColorGamut()[Landroid/graphics/ColorSpace; HSPLandroid/view/Display;->getWidth()I HSPLandroid/view/Display;->hasAccess(IIII)Z -HSPLandroid/view/Display;->isDozeState(I)Z HSPLandroid/view/Display;->isValid()Z HSPLandroid/view/Display;->isWideColorGamut()Z HSPLandroid/view/Display;->shouldReportMaxBounds()Z @@ -16475,13 +16314,13 @@ HSPLandroid/view/DisplayEventReceiver$VsyncEventData;->copyFrom(Landroid/view/Di HSPLandroid/view/DisplayEventReceiver$VsyncEventData;->preferredFrameTimeline()Landroid/view/DisplayEventReceiver$VsyncEventData$FrameTimeline; HSPLandroid/view/DisplayEventReceiver;->(Landroid/os/Looper;II)V HSPLandroid/view/DisplayEventReceiver;->(Landroid/os/Looper;IIJ)V -HSPLandroid/view/DisplayEventReceiver;->dispatchVsync(JJI)V +HSPLandroid/view/DisplayEventReceiver;->dispatchVsync(JJI)V+]Landroid/view/DisplayEventReceiver;Landroid/view/Choreographer$FrameDisplayEventReceiver; HSPLandroid/view/DisplayEventReceiver;->getLatestVsyncEventData()Landroid/view/DisplayEventReceiver$VsyncEventData; HSPLandroid/view/DisplayEventReceiver;->scheduleVsync()V HSPLandroid/view/DisplayInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayInfo; HSPLandroid/view/DisplayInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/DisplayInfo;->()V -HSPLandroid/view/DisplayInfo;->(Landroid/os/Parcel;)V+]Landroid/view/DisplayInfo;Landroid/view/DisplayInfo; +HSPLandroid/view/DisplayInfo;->(Landroid/os/Parcel;)V HSPLandroid/view/DisplayInfo;->(Landroid/os/Parcel;Landroid/view/DisplayInfo-IA;)V HSPLandroid/view/DisplayInfo;->copyFrom(Landroid/view/DisplayInfo;)V HSPLandroid/view/DisplayInfo;->equals(Landroid/view/DisplayInfo;)Z @@ -16491,12 +16330,12 @@ HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landro HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landroid/view/DisplayAdjustments;)V HSPLandroid/view/DisplayInfo;->getLogicalMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V HSPLandroid/view/DisplayInfo;->getMaxBoundsMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V -HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V+]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration; +HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V+]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/DisplayInfo;->getMode()Landroid/view/Display$Mode; HSPLandroid/view/DisplayInfo;->getRefreshRate()F HSPLandroid/view/DisplayInfo;->hasAccess(I)Z HSPLandroid/view/DisplayInfo;->isWideColorGamut()Z -HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V +HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/view/Display$Mode$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/DisplayInfo;->toString()Ljava/lang/String; HSPLandroid/view/DisplayInfo;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/DisplayShape$1;->()V @@ -16546,7 +16385,7 @@ HSPLandroid/view/GestureDetector;->cancel()V HSPLandroid/view/GestureDetector;->cancelTaps()V HSPLandroid/view/GestureDetector;->init(Landroid/content/Context;)V HSPLandroid/view/GestureDetector;->isConsideredDoubleTap(Landroid/view/MotionEvent;Landroid/view/MotionEvent;Landroid/view/MotionEvent;)Z -HSPLandroid/view/GestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z +HSPLandroid/view/GestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/VelocityTracker;Landroid/view/VelocityTracker;]Landroid/os/Handler;Landroid/view/GestureDetector$GestureHandler;]Landroid/view/MotionEvent;Landroid/view/MotionEvent; HSPLandroid/view/GestureDetector;->recordGestureClassification(I)V HSPLandroid/view/GestureDetector;->setContextClickListener(Landroid/view/GestureDetector$OnContextClickListener;)V HSPLandroid/view/GestureDetector;->setIsLongpressEnabled(Z)V @@ -16561,7 +16400,7 @@ HSPLandroid/view/Gravity;->isVertical(I)Z HSPLandroid/view/HandlerActionQueue$HandlerAction;->(Ljava/lang/Runnable;J)V HSPLandroid/view/HandlerActionQueue$HandlerAction;->matches(Ljava/lang/Runnable;)Z HSPLandroid/view/HandlerActionQueue;->()V -HSPLandroid/view/HandlerActionQueue;->executeActions(Landroid/os/Handler;)V +HSPLandroid/view/HandlerActionQueue;->executeActions(Landroid/os/Handler;)V+]Landroid/os/Handler;Landroid/view/ViewRootImpl$ViewRootHandler; HSPLandroid/view/HandlerActionQueue;->post(Ljava/lang/Runnable;)V HSPLandroid/view/HandlerActionQueue;->postDelayed(Ljava/lang/Runnable;J)V HSPLandroid/view/HandlerActionQueue;->removeCallbacks(Ljava/lang/Runnable;)V @@ -16621,7 +16460,6 @@ HSPLandroid/view/IWindowSession$Stub$Proxy;->reportSystemGestureExclusionChanged HSPLandroid/view/IWindowSession$Stub$Proxy;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V HSPLandroid/view/IWindowSession$Stub$Proxy;->setOnBackInvokedCallbackInfo(Landroid/view/IWindow;Landroid/window/OnBackInvokedCallbackInfo;)V HSPLandroid/view/IWindowSession$Stub$Proxy;->setWallpaperZoomOut(Landroid/os/IBinder;F)V -HSPLandroid/view/IWindowSession$Stub$Proxy;->updateRequestedVisibleTypes(Landroid/view/IWindow;I)V HSPLandroid/view/IWindowSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowSession; HSPLandroid/view/IWindowSessionCallback$Stub;->()V HSPLandroid/view/IWindowSessionCallback$Stub;->asBinder()Landroid/os/IBinder; @@ -16633,7 +16471,7 @@ HSPLandroid/view/ImeFocusController;->onPostWindowFocus(Landroid/view/View;ZLand HSPLandroid/view/ImeFocusController;->onPreWindowFocus(ZLandroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/ImeFocusController;->onProcessImeInputStage(Ljava/lang/Object;Landroid/view/InputEvent;Landroid/view/WindowManager$LayoutParams;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;)I HSPLandroid/view/ImeFocusController;->onTraversal(ZLandroid/view/WindowManager$LayoutParams;)V -HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V +HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V+]Landroid/view/ImeFocusController$InputMethodManagerDelegate;Landroid/view/inputmethod/InputMethodManager$DelegateImpl; HSPLandroid/view/ImeFocusController;->onViewFocusChanged(Landroid/view/View;Z)V HSPLandroid/view/ImeFocusController;->onWindowDismissed()V HSPLandroid/view/ImeInsetsSourceConsumer;->(ILandroid/view/InsetsState;Ljava/util/function/Supplier;Landroid/view/InsetsController;)V @@ -16656,7 +16494,7 @@ HSPLandroid/view/InputChannel;->setNativeInputChannel(J)V HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputDevice; HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/InputDevice$MotionRange;->(IIFFFFF)V -HSPLandroid/view/InputDevice;->(Landroid/os/Parcel;)V +HSPLandroid/view/InputDevice;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/view/KeyCharacterMap$1;,Landroid/hardware/input/HostUsiVersion$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/InputDevice;->addMotionRange(IIFFFFF)V HSPLandroid/view/InputDevice;->getDevice(I)Landroid/view/InputDevice; HSPLandroid/view/InputDevice;->getDeviceIds()[I @@ -16666,7 +16504,7 @@ HSPLandroid/view/InputDevice;->isVirtual()Z HSPLandroid/view/InputEvent;->()V HSPLandroid/view/InputEvent;->getSequenceNumber()I HSPLandroid/view/InputEvent;->isFromSource(I)Z -HSPLandroid/view/InputEvent;->prepareForReuse()V +HSPLandroid/view/InputEvent;->prepareForReuse()V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; HSPLandroid/view/InputEvent;->recycle()V HSPLandroid/view/InputEvent;->recycleIfNeededAfterDispatch()V HSPLandroid/view/InputEventAssigner;->()V @@ -16697,7 +16535,7 @@ HSPLandroid/view/InputMonitor;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/InsetsAnimationControlImpl$$ExternalSyntheticLambda0;->accept(Ljava/lang/Object;)V HSPLandroid/view/InsetsAnimationControlImpl;->(Landroid/util/SparseArray;Landroid/graphics/Rect;Landroid/view/InsetsState;Landroid/view/WindowInsetsAnimationControlListener;ILandroid/view/InsetsAnimationControlCallbacks;JLandroid/view/animation/Interpolator;IILandroid/content/res/CompatibilityInfo$Translator;Landroid/view/inputmethod/ImeTracker$Token;)V HSPLandroid/view/InsetsAnimationControlImpl;->addTranslationToMatrix(IILandroid/graphics/Matrix;Landroid/graphics/Rect;)V -HSPLandroid/view/InsetsAnimationControlImpl;->applyChangeInsets(Landroid/view/InsetsState;)Z+]Landroid/view/InsetsAnimationControlCallbacks;Landroid/view/InsetsAnimationThreadControlRunner$1;]Landroid/view/WindowInsetsAnimation;Landroid/view/WindowInsetsAnimation;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/InsetsAnimationControlImpl;->applyChangeInsets(Landroid/view/InsetsState;)Z HSPLandroid/view/InsetsAnimationControlImpl;->buildSideControlsMap(Landroid/util/SparseSetArray;Landroid/util/SparseArray;)V HSPLandroid/view/InsetsAnimationControlImpl;->calculateInsets(Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/util/SparseArray;ZLandroid/util/SparseIntArray;)Landroid/graphics/Insets; HSPLandroid/view/InsetsAnimationControlImpl;->calculateInsets(Landroid/view/InsetsState;Landroid/util/SparseArray;Z)Landroid/graphics/Insets; @@ -16712,17 +16550,14 @@ HSPLandroid/view/InsetsAnimationControlImpl;->getCurrentAlpha()F HSPLandroid/view/InsetsAnimationControlImpl;->getHiddenStateInsets()Landroid/graphics/Insets; HSPLandroid/view/InsetsAnimationControlImpl;->getInsetsFromState(Landroid/view/InsetsState;Landroid/graphics/Rect;Landroid/util/SparseIntArray;)Landroid/graphics/Insets; HSPLandroid/view/InsetsAnimationControlImpl;->getShownStateInsets()Landroid/graphics/Insets; -HSPLandroid/view/InsetsAnimationControlImpl;->getStatsToken()Landroid/view/inputmethod/ImeTracker$Token; HSPLandroid/view/InsetsAnimationControlImpl;->getTypes()I HSPLandroid/view/InsetsAnimationControlImpl;->hasZeroInsetsIme()Z HSPLandroid/view/InsetsAnimationControlImpl;->isCancelled()Z HSPLandroid/view/InsetsAnimationControlImpl;->notifyControlRevoked(I)V HSPLandroid/view/InsetsAnimationControlImpl;->releaseLeashes()V HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FF)V -HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FFZ)V+]Landroid/view/InsetsAnimationControlCallbacks;Landroid/view/InsetsAnimationThreadControlRunner$1;]Ljava/lang/Boolean;Ljava/lang/Boolean; -HSPLandroid/view/InsetsAnimationControlImpl;->updateLeashesForSide(IIILjava/util/ArrayList;Landroid/view/InsetsState;F)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/util/SparseSetArray;Landroid/util/SparseSetArray;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/ArraySet;Landroid/util/ArraySet;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/InsetsAnimationControlImpl;->setInsetsAndAlpha(Landroid/graphics/Insets;FFZ)V HSPLandroid/view/InsetsAnimationControlImpl;->updateSurfacePosition(Landroid/util/SparseArray;)V -HSPLandroid/view/InsetsAnimationControlRunner;->controlsType(I)Z HSPLandroid/view/InsetsAnimationThread;->ensureThreadLocked()V HSPLandroid/view/InsetsAnimationThread;->getHandler()Landroid/os/Handler; HSPLandroid/view/InsetsAnimationThread;->release()V @@ -16753,8 +16588,6 @@ HSPLandroid/view/InsetsController$$ExternalSyntheticLambda11;->(Landroid/v HSPLandroid/view/InsetsController$$ExternalSyntheticLambda1;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLandroid/view/InsetsController$$ExternalSyntheticLambda7;->()V HSPLandroid/view/InsetsController$$ExternalSyntheticLambda8;->get()Ljava/lang/Object; -HSPLandroid/view/InsetsController$1;->getDisplayContext()Landroid/content/Context; -HSPLandroid/view/InsetsController$1;->getTargetSurfaceControl()Landroid/view/SurfaceControl; HSPLandroid/view/InsetsController$2;->onFinish(Landroid/view/InsetsState;Landroid/view/InsetsState;)V HSPLandroid/view/InsetsController$2;->onIdNotFoundInState2(ILandroid/view/InsetsSource;)V HSPLandroid/view/InsetsController$3;->(Landroid/view/InsetsController;)V @@ -16767,9 +16600,6 @@ HSPLandroid/view/InsetsController$InternalAnimationControlListener$$ExternalSynt HSPLandroid/view/InsetsController$InternalAnimationControlListener$1;->initialValue()Landroid/animation/AnimationHandler; HSPLandroid/view/InsetsController$InternalAnimationControlListener$1;->initialValue()Ljava/lang/Object; HSPLandroid/view/InsetsController$InternalAnimationControlListener$2;->onAnimationEnd(Landroid/animation/Animator;)V -HSPLandroid/view/InsetsController$InternalAnimationControlListener$2;->onAnimationStart(Landroid/animation/Animator;)V -HSPLandroid/view/InsetsController$InternalAnimationControlListener;->-$$Nest$fgetmHasAnimationCallbacks(Landroid/view/InsetsController$InternalAnimationControlListener;)Z -HSPLandroid/view/InsetsController$InternalAnimationControlListener;->-$$Nest$fgetmInputMethodJankContext(Landroid/view/InsetsController$InternalAnimationControlListener;)Landroid/view/inputmethod/ImeTracker$InputMethodJankContext; HSPLandroid/view/InsetsController$InternalAnimationControlListener;->(ZZIIZILandroid/view/WindowInsetsAnimationControlListener;Landroid/view/inputmethod/ImeTracker$InputMethodJankContext;)V HSPLandroid/view/InsetsController$InternalAnimationControlListener;->calculateDurationMs()J HSPLandroid/view/InsetsController$InternalAnimationControlListener;->getAlphaInterpolator()Landroid/view/animation/Interpolator; @@ -16778,21 +16608,18 @@ HSPLandroid/view/InsetsController$InternalAnimationControlListener;->getInsetsIn HSPLandroid/view/InsetsController$InternalAnimationControlListener;->lambda$getAlphaInterpolator$2(F)F HSPLandroid/view/InsetsController$InternalAnimationControlListener;->lambda$getAlphaInterpolator$3(F)F HSPLandroid/view/InsetsController$InternalAnimationControlListener;->lambda$getAlphaInterpolator$4(F)F -HSPLandroid/view/InsetsController$InternalAnimationControlListener;->lambda$onReady$0(Landroid/view/animation/Interpolator;Landroid/view/WindowInsetsAnimationController;Landroid/graphics/Insets;Landroid/graphics/Insets;Landroid/view/animation/Interpolator;Landroid/animation/ValueAnimator;)V+]Landroid/view/animation/Interpolator;megamorphic_types]Landroid/animation/TypeEvaluator;Landroid/view/InsetsController$$ExternalSyntheticLambda1;]Landroid/view/WindowInsetsAnimationController;Landroid/view/InsetsAnimationControlImpl;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator; HSPLandroid/view/InsetsController$InternalAnimationControlListener;->onAnimationFinish()V HSPLandroid/view/InsetsController$InternalAnimationControlListener;->onCancelled(Landroid/view/WindowInsetsAnimationController;)V HSPLandroid/view/InsetsController$InternalAnimationControlListener;->onFinished(Landroid/view/WindowInsetsAnimationController;)V HSPLandroid/view/InsetsController$InternalAnimationControlListener;->onReady(Landroid/view/WindowInsetsAnimationController;I)V HSPLandroid/view/InsetsController$RunningAnimation;->(Landroid/view/InsetsAnimationControlRunner;I)V -HSPLandroid/view/InsetsController;->-$$Nest$fgetmHost(Landroid/view/InsetsController;)Landroid/view/InsetsController$Host; HSPLandroid/view/InsetsController;->-$$Nest$sfgetsEvaluator()Landroid/animation/TypeEvaluator; HSPLandroid/view/InsetsController;->(Landroid/view/InsetsController$Host;)V HSPLandroid/view/InsetsController;->abortPendingImeControlRequest()V HSPLandroid/view/InsetsController;->applyAnimation(IZZLandroid/view/inputmethod/ImeTracker$Token;)V HSPLandroid/view/InsetsController;->applyAnimation(IZZZLandroid/view/inputmethod/ImeTracker$Token;)V -HSPLandroid/view/InsetsController;->applyLocalVisibilityOverride()V -HSPLandroid/view/InsetsController;->calculateControllableTypes()I -HSPLandroid/view/InsetsController;->calculateInsets(ZZIIIII)Landroid/view/WindowInsets; +HSPLandroid/view/InsetsController;->applyLocalVisibilityOverride()V+]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/InsetsController;->calculateControllableTypes()I+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/InsetsController;->calculateVisibleInsets(IIII)Landroid/graphics/Insets; HSPLandroid/view/InsetsController;->cancelAnimation(Landroid/view/InsetsAnimationControlRunner;Z)V HSPLandroid/view/InsetsController;->cancelExistingAnimations()V @@ -16801,22 +16628,20 @@ HSPLandroid/view/InsetsController;->captionInsetsUnchanged()Z HSPLandroid/view/InsetsController;->collectSourceControls(ZILandroid/util/SparseArray;ILandroid/view/inputmethod/ImeTracker$Token;)Landroid/util/Pair; HSPLandroid/view/InsetsController;->controlAnimationUncheckedInner(ILandroid/os/CancellationSignal;Landroid/view/WindowInsetsAnimationControlListener;Landroid/graphics/Rect;ZJLandroid/view/animation/Interpolator;IIZLandroid/view/inputmethod/ImeTracker$Token;)V HSPLandroid/view/InsetsController;->dispatchAnimationEnd(Landroid/view/WindowInsetsAnimation;)V -HSPLandroid/view/InsetsController;->getAnimationType(I)I +HSPLandroid/view/InsetsController;->getAnimationType(I)I+]Landroid/view/InsetsAnimationControlRunner;Landroid/view/InsetsAnimationThreadControlRunner;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/InsetsController;->getHost()Landroid/view/InsetsController$Host; -HSPLandroid/view/InsetsController;->getImeSourceConsumer()Landroid/view/InsetsSourceConsumer; HSPLandroid/view/InsetsController;->getLastDispatchedState()Landroid/view/InsetsState; HSPLandroid/view/InsetsController;->getRequestedVisibleTypes()I HSPLandroid/view/InsetsController;->getState()Landroid/view/InsetsState; HSPLandroid/view/InsetsController;->getSystemBarsAppearance()I HSPLandroid/view/InsetsController;->hide(I)V HSPLandroid/view/InsetsController;->invokeControllableInsetsChangedListeners()I -HSPLandroid/view/InsetsController;->lambda$new$3()V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsAnimationControlRunner;Landroid/view/InsetsAnimationControlImpl;,Landroid/view/InsetsResizeAnimationRunner;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/view/InsetsController$Host;Landroid/view/ViewRootInsetsControllerHost;]Ljava/util/List;Ljava/util/ArrayList;]Landroid/view/InternalInsetsAnimationController;Landroid/view/InsetsAnimationControlImpl;,Landroid/view/InsetsResizeAnimationRunner;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/InsetsController;->lambda$static$1(FLandroid/graphics/Insets;Landroid/graphics/Insets;)Landroid/graphics/Insets; HSPLandroid/view/InsetsController;->notifyControlRevoked(Landroid/view/InsetsSourceConsumer;)V HSPLandroid/view/InsetsController;->notifyFinished(Landroid/view/InsetsAnimationControlRunner;Z)V HSPLandroid/view/InsetsController;->notifyVisibilityChanged()V -HSPLandroid/view/InsetsController;->onAnimationStateChanged(IZ)V -HSPLandroid/view/InsetsController;->onControlsChanged([Landroid/view/InsetsSourceControl;)V +HSPLandroid/view/InsetsController;->onAnimationStateChanged(IZ)V+]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsController;Landroid/view/InsetsController; +HSPLandroid/view/InsetsController;->onControlsChanged([Landroid/view/InsetsSourceControl;)V+]Landroid/view/InsetsAnimationControlRunner;Landroid/view/InsetsAnimationThreadControlRunner;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/InsetsController;Landroid/view/InsetsController;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/InsetsController;->onFrameChanged(Landroid/graphics/Rect;)V HSPLandroid/view/InsetsController;->onStateChanged(Landroid/view/InsetsState;)Z HSPLandroid/view/InsetsController;->onWindowFocusGained(Z)V @@ -16827,31 +16652,29 @@ HSPLandroid/view/InsetsController;->setRequestedVisibleTypes(II)V HSPLandroid/view/InsetsController;->show(I)V HSPLandroid/view/InsetsController;->show(IZLandroid/view/inputmethod/ImeTracker$Token;)V HSPLandroid/view/InsetsController;->updateCompatSysUiVisibility()V -HSPLandroid/view/InsetsController;->updateDisabledUserAnimationTypes(I)V -HSPLandroid/view/InsetsController;->updateState(Landroid/view/InsetsState;)V +HSPLandroid/view/InsetsController;->updateState(Landroid/view/InsetsState;)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsController;Landroid/view/InsetsController; HSPLandroid/view/InsetsFlags;->()V HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSource; -HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/InsetsSource$1;Landroid/view/InsetsSource$1; HSPLandroid/view/InsetsSource;->(II)V -HSPLandroid/view/InsetsSource;->(Landroid/os/Parcel;)V +HSPLandroid/view/InsetsSource;->(Landroid/os/Parcel;)V+]Landroid/os/Parcelable$Creator;Landroid/graphics/Rect$1;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/InsetsSource;->(Landroid/view/InsetsSource;)V -HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets; +HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Z)Landroid/graphics/Insets; HSPLandroid/view/InsetsSource;->calculateVisibleInsets(Landroid/graphics/Rect;)Landroid/graphics/Insets; -HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;)Z -HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z +HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource; +HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;Z)Z+]Ljava/lang/Object;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/InsetsSource;->getFlags()I HSPLandroid/view/InsetsSource;->getFrame()Landroid/graphics/Rect; HSPLandroid/view/InsetsSource;->getId()I HSPLandroid/view/InsetsSource;->getIntersection(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z HSPLandroid/view/InsetsSource;->getType()I HSPLandroid/view/InsetsSource;->getVisibleFrame()Landroid/graphics/Rect; -HSPLandroid/view/InsetsSource;->isUserControllable()Z HSPLandroid/view/InsetsSource;->isVisible()Z HSPLandroid/view/InsetsSource;->setVisible(Z)Landroid/view/InsetsSource; HSPLandroid/view/InsetsSource;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/InsetsSourceConsumer;->(IILandroid/view/InsetsState;Ljava/util/function/Supplier;Landroid/view/InsetsController;)V -HSPLandroid/view/InsetsSourceConsumer;->applyLocalVisibilityOverride()Z +HSPLandroid/view/InsetsSourceConsumer;->applyLocalVisibilityOverride()Z+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsController;Landroid/view/InsetsController; HSPLandroid/view/InsetsSourceConsumer;->applyRequestedVisibilityToControl()V HSPLandroid/view/InsetsSourceConsumer;->getControl()Landroid/view/InsetsSourceControl; HSPLandroid/view/InsetsSourceConsumer;->getId()I @@ -16863,8 +16686,8 @@ HSPLandroid/view/InsetsSourceConsumer;->onPerceptible(Z)V HSPLandroid/view/InsetsSourceConsumer;->onWindowFocusGained(Z)V HSPLandroid/view/InsetsSourceConsumer;->onWindowFocusLost()V HSPLandroid/view/InsetsSourceConsumer;->removeSurface()V -HSPLandroid/view/InsetsSourceConsumer;->setControl(Landroid/view/InsetsSourceControl;[I[I)Z -HSPLandroid/view/InsetsSourceConsumer;->updateSource(Landroid/view/InsetsSource;I)V +HSPLandroid/view/InsetsSourceConsumer;->setControl(Landroid/view/InsetsSourceControl;[I[I)Z+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSourceConsumer;Landroid/view/InsetsSourceConsumer;,Landroid/view/ImeInsetsSourceConsumer;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/view/InsetsSourceControl;Landroid/view/InsetsSourceControl;]Landroid/view/InsetsController;Landroid/view/InsetsController; +HSPLandroid/view/InsetsSourceConsumer;->updateSource(Landroid/view/InsetsSource;I)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/InsetsSourceControl$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSourceControl; HSPLandroid/view/InsetsSourceControl$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/InsetsSourceControl$1;->newArray(I)[Landroid/view/InsetsSourceControl; @@ -16894,20 +16717,18 @@ HSPLandroid/view/InsetsState$OnTraverseCallbacks;->onStart(Landroid/view/InsetsS HSPLandroid/view/InsetsState;->()V HSPLandroid/view/InsetsState;->(Landroid/os/Parcel;)V HSPLandroid/view/InsetsState;->(Landroid/view/InsetsState;Z)V -HSPLandroid/view/InsetsState;->addSource(Landroid/view/InsetsSource;)V +HSPLandroid/view/InsetsState;->addSource(Landroid/view/InsetsSource;)V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;II)Landroid/graphics/Insets; HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;IZ)Landroid/graphics/Insets; -HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;Landroid/view/InsetsState;ZZIIIIILandroid/util/SparseIntArray;)Landroid/view/WindowInsets; HSPLandroid/view/InsetsState;->calculateRelativeCutout(Landroid/graphics/Rect;)Landroid/view/DisplayCutout; HSPLandroid/view/InsetsState;->calculateRelativeDisplayShape(Landroid/graphics/Rect;)Landroid/view/DisplayShape; HSPLandroid/view/InsetsState;->calculateRelativePrivacyIndicatorBounds(Landroid/graphics/Rect;)Landroid/view/PrivacyIndicatorBounds; HSPLandroid/view/InsetsState;->calculateRelativeRoundedCorners(Landroid/graphics/Rect;)Landroid/view/RoundedCorners; -HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/graphics/Rect;)I +HSPLandroid/view/InsetsState;->calculateUncontrollableInsetsFromFrame(Landroid/graphics/Rect;)I+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/InsetsState;->calculateVisibleInsets(Landroid/graphics/Rect;IIII)Landroid/graphics/Insets; -HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z -HSPLandroid/view/InsetsState;->clearsCompatInsets(III)Z +HSPLandroid/view/InsetsState;->canControlSource(Landroid/graphics/Rect;Landroid/view/InsetsSource;)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;)Z -HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;ZZ)Z +HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;ZZ)Z+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Ljava/lang/Object;Landroid/view/InsetsState;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/DisplayShape;Landroid/view/DisplayShape;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/view/RoundedCorners;Landroid/view/RoundedCorners;]Landroid/view/PrivacyIndicatorBounds;Landroid/view/PrivacyIndicatorBounds; HSPLandroid/view/InsetsState;->getDisplayCutout()Landroid/view/DisplayCutout; HSPLandroid/view/InsetsState;->getDisplayCutoutSafe(Landroid/graphics/Rect;)V HSPLandroid/view/InsetsState;->getDisplayFrame()Landroid/graphics/Rect; @@ -16916,21 +16737,20 @@ HSPLandroid/view/InsetsState;->getInsetSide(Landroid/graphics/Insets;)I HSPLandroid/view/InsetsState;->getPrivacyIndicatorBounds()Landroid/view/PrivacyIndicatorBounds; HSPLandroid/view/InsetsState;->getRoundedCorners()Landroid/view/RoundedCorners; HSPLandroid/view/InsetsState;->isSourceOrDefaultVisible(II)Z -HSPLandroid/view/InsetsState;->peekSource(I)Landroid/view/InsetsSource; -HSPLandroid/view/InsetsState;->processSource(Landroid/view/InsetsSource;Landroid/graphics/Rect;Z[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z)V -HSPLandroid/view/InsetsState;->processSourceAsPublicType(Landroid/view/InsetsSource;[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[ZLandroid/graphics/Insets;I)V -HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray; -HSPLandroid/view/InsetsState;->removeSourceAt(I)V +HSPLandroid/view/InsetsState;->peekSource(I)Landroid/view/InsetsSource;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/InsetsState;->processSource(Landroid/view/InsetsSource;Landroid/graphics/Rect;Z[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z)V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource; +HSPLandroid/view/InsetsState;->processSourceAsPublicType(Landroid/view/InsetsSource;[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[ZLandroid/graphics/Insets;I)V+]Landroid/view/InsetsSource;Landroid/view/InsetsSource; +HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)Landroid/util/SparseArray;+]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;I)V -HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V +HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsSource;Landroid/view/InsetsSource;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/DisplayCutout$ParcelableWrapper; HSPLandroid/view/InsetsState;->setDisplayCutout(Landroid/view/DisplayCutout;)V HSPLandroid/view/InsetsState;->setDisplayFrame(Landroid/graphics/Rect;)V HSPLandroid/view/InsetsState;->setPrivacyIndicatorBounds(Landroid/view/PrivacyIndicatorBounds;)V HSPLandroid/view/InsetsState;->setRoundedCorners(Landroid/view/RoundedCorners;)V -HSPLandroid/view/InsetsState;->sourceAt(I)Landroid/view/InsetsSource; -HSPLandroid/view/InsetsState;->sourceIdAt(I)I +HSPLandroid/view/InsetsState;->sourceAt(I)Landroid/view/InsetsSource;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/InsetsState;->sourceIdAt(I)I+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/InsetsState;->sourceSize()I -HSPLandroid/view/InsetsState;->traverse(Landroid/view/InsetsState;Landroid/view/InsetsState;Landroid/view/InsetsState$OnTraverseCallbacks;)V +HSPLandroid/view/InsetsState;->traverse(Landroid/view/InsetsState;Landroid/view/InsetsState;Landroid/view/InsetsState$OnTraverseCallbacks;)V+]Landroid/view/InsetsState;Landroid/view/InsetsState;]Landroid/view/InsetsState$OnTraverseCallbacks;Landroid/view/InsetsController$2; HSPLandroid/view/InsetsState;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/KeyCharacterMap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/KeyCharacterMap; HSPLandroid/view/KeyCharacterMap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -16978,34 +16798,34 @@ HSPLandroid/view/KeyEvent;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/LayoutInflater$FactoryMerger;->(Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;)V HSPLandroid/view/LayoutInflater$FactoryMerger;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; HSPLandroid/view/LayoutInflater;->(Landroid/content/Context;)V -HSPLandroid/view/LayoutInflater;->(Landroid/view/LayoutInflater;Landroid/content/Context;)V -HSPLandroid/view/LayoutInflater;->advanceToRootNode(Lorg/xmlpull/v1/XmlPullParser;)V +HSPLandroid/view/LayoutInflater;->(Landroid/view/LayoutInflater;Landroid/content/Context;)V+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; +HSPLandroid/view/LayoutInflater;->advanceToRootNode(Lorg/xmlpull/v1/XmlPullParser;)V+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/view/LayoutInflater;->consumeChildElements(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor; -HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;]Landroid/view/LayoutInflater;missing_types]Landroid/view/ViewStub;Landroid/view/ViewStub;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/content/Context;missing_types +HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; +HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater;missing_types +HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View;+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/LayoutInflater;missing_types]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/util/AttributeSet;Landroid/content/res/XmlBlock$Parser; HSPLandroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater; HSPLandroid/view/LayoutInflater;->getContext()Landroid/content/Context; HSPLandroid/view/LayoutInflater;->getFactory()Landroid/view/LayoutInflater$Factory; HSPLandroid/view/LayoutInflater;->getFactory2()Landroid/view/LayoutInflater$Factory2; HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->inflate(ILandroid/view/ViewGroup;Z)Landroid/view/View;+]Landroid/view/LayoutInflater;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser;]Landroid/content/Context;missing_types +HSPLandroid/view/LayoutInflater;->inflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/ViewGroup;Z)Landroid/view/View;+]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/LayoutInflater;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/LayoutInflater;->initPrecompiledViews()V HSPLandroid/view/LayoutInflater;->initPrecompiledViews(Z)V -HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/content/Context;Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/content/Context;Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; +HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Landroid/view/LayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; HSPLandroid/view/LayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; HSPLandroid/view/LayoutInflater;->parseInclude(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/Context;Landroid/view/View;Landroid/util/AttributeSet;)V -HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V -HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V +HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/View;missing_types]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser;]Landroid/view/ViewGroup;missing_types]Landroid/view/LayoutInflater;missing_types +HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V+]Landroid/view/View;missing_types]Landroid/view/LayoutInflater;missing_types HSPLandroid/view/LayoutInflater;->setFactory2(Landroid/view/LayoutInflater$Factory2;)V HSPLandroid/view/LayoutInflater;->setFilter(Landroid/view/LayoutInflater$Filter;)V HSPLandroid/view/LayoutInflater;->setPrivateFactory(Landroid/view/LayoutInflater$Factory2;)V -HSPLandroid/view/LayoutInflater;->tryCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLandroid/view/LayoutInflater;->tryCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;+]Ljava/lang/String;Ljava/lang/String;]Landroid/view/LayoutInflater$Factory2;missing_types HSPLandroid/view/LayoutInflater;->tryInflatePrecompiled(ILandroid/content/res/Resources;Landroid/view/ViewGroup;Z)Landroid/view/View; -HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z +HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor;]Landroid/content/Context;missing_types HSPLandroid/view/MenuInflater;->(Landroid/content/Context;)V HSPLandroid/view/MotionEvent$PointerCoords;->()V HSPLandroid/view/MotionEvent$PointerProperties;->()V @@ -17023,6 +16843,7 @@ HSPLandroid/view/MotionEvent;->getDeviceId()I HSPLandroid/view/MotionEvent;->getDownTime()J HSPLandroid/view/MotionEvent;->getEdgeFlags()I HSPLandroid/view/MotionEvent;->getEventTime()J +HSPLandroid/view/MotionEvent;->getEventTimeNanos()J HSPLandroid/view/MotionEvent;->getFlags()I HSPLandroid/view/MotionEvent;->getHistoricalEventTime(I)J HSPLandroid/view/MotionEvent;->getHistoricalX(II)F @@ -17048,7 +16869,7 @@ HSPLandroid/view/MotionEvent;->getY(I)F HSPLandroid/view/MotionEvent;->initialize(IIIIIIIIIFFFFJJI[Landroid/view/MotionEvent$PointerProperties;[Landroid/view/MotionEvent$PointerCoords;)Z HSPLandroid/view/MotionEvent;->isTargetAccessibilityFocus()Z HSPLandroid/view/MotionEvent;->isTouchEvent()Z -HSPLandroid/view/MotionEvent;->obtain()Landroid/view/MotionEvent; +HSPLandroid/view/MotionEvent;->obtain()Landroid/view/MotionEvent;+]Landroid/view/MotionEvent;Landroid/view/MotionEvent; HSPLandroid/view/MotionEvent;->obtain(JJIFFFFIFFII)Landroid/view/MotionEvent; HSPLandroid/view/MotionEvent;->obtain(JJIFFFFIFFIIII)Landroid/view/MotionEvent; HSPLandroid/view/MotionEvent;->obtain(JJIFFI)Landroid/view/MotionEvent; @@ -17094,12 +16915,12 @@ HSPLandroid/view/RemoteAccessibilityController;->setRemoteAccessibilityEmbeddedC HSPLandroid/view/RemoteAnimationAdapter;->(Landroid/view/IRemoteAnimationRunner;JJ)V HSPLandroid/view/RemoteAnimationAdapter;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/RoundedCorner$1;->()V -HSPLandroid/view/RoundedCorner$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RoundedCorner; -HSPLandroid/view/RoundedCorner$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; +HSPLandroid/view/RoundedCorner$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RoundedCorner;+]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/view/RoundedCorner$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/RoundedCorner$1;Landroid/view/RoundedCorner$1; HSPLandroid/view/RoundedCorner;->()V HSPLandroid/view/RoundedCorner;->(I)V HSPLandroid/view/RoundedCorner;->(IIII)V -HSPLandroid/view/RoundedCorner;->equals(Ljava/lang/Object;)Z +HSPLandroid/view/RoundedCorner;->equals(Ljava/lang/Object;)Z+]Landroid/graphics/Point;Landroid/graphics/Point; HSPLandroid/view/RoundedCorner;->getCenter()Landroid/graphics/Point; HSPLandroid/view/RoundedCorner;->getRadius()I HSPLandroid/view/RoundedCorner;->isEmpty()Z @@ -17122,7 +16943,6 @@ HSPLandroid/view/ScaleGestureDetector;->onTouchEvent(Landroid/view/MotionEvent;) HSPLandroid/view/ScaleGestureDetector;->setQuickScaleEnabled(Z)V HSPLandroid/view/ScaleGestureDetector;->setStylusScaleEnabled(Z)V HSPLandroid/view/Surface$CompatibleCanvas;->(Landroid/view/Surface;)V -HSPLandroid/view/Surface$CompatibleCanvas;->(Landroid/view/Surface;Landroid/view/Surface$CompatibleCanvas-IA;)V HSPLandroid/view/Surface;->()V HSPLandroid/view/Surface;->(J)V HSPLandroid/view/Surface;->(Landroid/graphics/SurfaceTexture;)V @@ -17162,7 +16982,6 @@ HSPLandroid/view/SurfaceControl$Builder;->setName(Ljava/lang/String;)Landroid/vi HSPLandroid/view/SurfaceControl$Builder;->setOpaque(Z)Landroid/view/SurfaceControl$Builder; HSPLandroid/view/SurfaceControl$Builder;->setParent(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Builder; HSPLandroid/view/SurfaceControl$Builder;->unsetBufferSize()V -HSPLandroid/view/SurfaceControl$RefreshRateRange;->(FF)V HSPLandroid/view/SurfaceControl$Transaction;->()V HSPLandroid/view/SurfaceControl$Transaction;->(J)V HSPLandroid/view/SurfaceControl$Transaction;->apply()V @@ -17218,7 +17037,6 @@ HSPLandroid/view/SurfaceControl;->release()V HSPLandroid/view/SurfaceControl;->removeFromRegistry()V HSPLandroid/view/SurfaceControl;->rotationToBufferTransform(I)I HSPLandroid/view/SurfaceControl;->setTransformHint(I)V -HSPLandroid/view/SurfaceControl;->setUnreleasedWarningCallSite(Ljava/lang/String;)V HSPLandroid/view/SurfaceControlRegistry$DefaultReporter;->()V HSPLandroid/view/SurfaceControlRegistry$DefaultReporter;->(Landroid/view/SurfaceControlRegistry$DefaultReporter-IA;)V HSPLandroid/view/SurfaceControlRegistry;->()V @@ -17272,19 +17090,19 @@ HSPLandroid/view/SurfaceView;->updateBackgroundVisibility(Landroid/view/SurfaceC HSPLandroid/view/SurfaceView;->updateEmbeddedAccessibilityMatrix(Z)V HSPLandroid/view/SurfaceView;->updateRelativeZ(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/view/SurfaceView;->updateSurface()V -HSPLandroid/view/SurfaceView;->vriDrawStarted(Z)V +HSPLandroid/view/SurfaceView;->vriDrawStarted(Z)V+]Landroid/view/SurfaceView;Landroid/view/SurfaceView;]Landroid/util/ArraySet;Landroid/util/ArraySet; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->(Landroid/view/SurfaceControl;)V HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->build()Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->withAlpha(F)Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->withMatrix(Landroid/graphics/Matrix;)Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder;->withVisibility(Z)Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams$Builder; HSPLandroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;->(Landroid/view/SurfaceControl;IFLandroid/graphics/Matrix;Landroid/graphics/Rect;IFIZLandroid/view/SurfaceControl$Transaction;)V -HSPLandroid/view/SyncRtSurfaceTransactionApplier;->applyParams(Landroid/view/SurfaceControl$Transaction;Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;[F)V+]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction; +HSPLandroid/view/SyncRtSurfaceTransactionApplier;->applyParams(Landroid/view/SurfaceControl$Transaction;Landroid/view/SyncRtSurfaceTransactionApplier$SurfaceParams;[F)V HSPLandroid/view/TextureView;->(Landroid/content/Context;)V -HSPLandroid/view/TextureView;->applyUpdate()V +HSPLandroid/view/TextureView;->applyUpdate()V+]Landroid/graphics/TextureLayer;Landroid/graphics/TextureLayer; HSPLandroid/view/TextureView;->destroyHardwareLayer()V HSPLandroid/view/TextureView;->destroyHardwareResources()V -HSPLandroid/view/TextureView;->draw(Landroid/graphics/Canvas;)V +HSPLandroid/view/TextureView;->draw(Landroid/graphics/Canvas;)V+]Landroid/graphics/TextureLayer;Landroid/graphics/TextureLayer;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/view/TextureView;->getLayerType()I HSPLandroid/view/TextureView;->getTextureLayer()Landroid/graphics/TextureLayer; HSPLandroid/view/TextureView;->isOpaque()Z @@ -17314,7 +17132,7 @@ HSPLandroid/view/ThreadedRenderer;->create(Landroid/content/Context;ZLjava/lang/ HSPLandroid/view/ThreadedRenderer;->destroy()V HSPLandroid/view/ThreadedRenderer;->destroyHardwareResources(Landroid/view/View;)V HSPLandroid/view/ThreadedRenderer;->destroyResources(Landroid/view/View;)V -HSPLandroid/view/ThreadedRenderer;->draw(Landroid/view/View;Landroid/view/View$AttachInfo;Landroid/view/ThreadedRenderer$DrawCallbacks;)V +HSPLandroid/view/ThreadedRenderer;->draw(Landroid/view/View;Landroid/view/View$AttachInfo;Landroid/view/ThreadedRenderer$DrawCallbacks;)V+]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ThreadedRenderer;->dumpArgsToFlags([Ljava/lang/String;)I HSPLandroid/view/ThreadedRenderer;->getHeight()I HSPLandroid/view/ThreadedRenderer;->getWidth()I @@ -17335,9 +17153,9 @@ HSPLandroid/view/ThreadedRenderer;->setSurfaceControl(Landroid/view/SurfaceContr HSPLandroid/view/ThreadedRenderer;->setSurfaceControlOpaque(Z)Z HSPLandroid/view/ThreadedRenderer;->setup(IILandroid/view/View$AttachInfo;Landroid/graphics/Rect;)V HSPLandroid/view/ThreadedRenderer;->updateEnabledState(Landroid/view/Surface;)V -HSPLandroid/view/ThreadedRenderer;->updateRootDisplayList(Landroid/view/View;Landroid/view/ThreadedRenderer$DrawCallbacks;)V +HSPLandroid/view/ThreadedRenderer;->updateRootDisplayList(Landroid/view/View;Landroid/view/ThreadedRenderer$DrawCallbacks;)V+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/ThreadedRenderer$DrawCallbacks;Landroid/view/ViewRootImpl;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/ThreadedRenderer;->updateSurface(Landroid/view/Surface;)V -HSPLandroid/view/ThreadedRenderer;->updateViewTreeDisplayList(Landroid/view/View;)V +HSPLandroid/view/ThreadedRenderer;->updateViewTreeDisplayList(Landroid/view/View;)V+]Landroid/view/View;Lcom/android/internal/policy/DecorView;,Landroid/widget/FrameLayout; HSPLandroid/view/ThreadedRenderer;->updateWebViewOverlayCallbacks()V HSPLandroid/view/TouchDelegate;->(Landroid/graphics/Rect;Landroid/view/View;)V HSPLandroid/view/VelocityTracker;->(I)V @@ -17393,7 +17211,7 @@ HSPLandroid/view/View$AccessibilityDelegate;->getAccessibilityNodeProvider(Landr HSPLandroid/view/View$AccessibilityDelegate;->sendAccessibilityEvent(Landroid/view/View;I)V HSPLandroid/view/View$AttachInfo;->(Landroid/view/IWindowSession;Landroid/view/IWindow;Landroid/view/Display;Landroid/view/ViewRootImpl;Landroid/os/Handler;Landroid/view/View$AttachInfo$Callbacks;Landroid/content/Context;)V HSPLandroid/view/View$AttachInfo;->delayNotifyContentCaptureInsetsEvent(Landroid/graphics/Insets;)V -HSPLandroid/view/View$AttachInfo;->ensureEvents(Landroid/view/contentcapture/ContentCaptureSession;)Ljava/util/ArrayList; +HSPLandroid/view/View$AttachInfo;->ensureEvents(Landroid/view/contentcapture/ContentCaptureSession;)Ljava/util/ArrayList;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/contentcapture/ContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; HSPLandroid/view/View$BaseSavedState$1;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/view/View$BaseSavedState; HSPLandroid/view/View$BaseSavedState$1;->createFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object; HSPLandroid/view/View$BaseSavedState;->(Landroid/os/Parcel;)V @@ -17420,22 +17238,21 @@ HSPLandroid/view/View$MeasureSpec;->getSize(I)I HSPLandroid/view/View$MeasureSpec;->makeMeasureSpec(II)I HSPLandroid/view/View$MeasureSpec;->makeSafeMeasureSpec(II)I HSPLandroid/view/View$PerformClick;->run()V -HSPLandroid/view/View$ScrollabilityCache;->(Landroid/view/ViewConfiguration;Landroid/view/View;)V +HSPLandroid/view/View$ScrollabilityCache;->(Landroid/view/ViewConfiguration;Landroid/view/View;)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration; HSPLandroid/view/View$ScrollabilityCache;->run()V HSPLandroid/view/View$TintInfo;->()V -HSPLandroid/view/View$TransformationInfo;->-$$Nest$fgetmAlpha(Landroid/view/View$TransformationInfo;)F HSPLandroid/view/View$TransformationInfo;->()V HSPLandroid/view/View$UnsetPressedState;->run()V HSPLandroid/view/View$VisibilityChangeForAutofillHandler;->handleMessage(Landroid/os/Message;)V HSPLandroid/view/View;->(Landroid/content/Context;)V+]Landroid/view/View;megamorphic_types]Ljava/lang/Object;megamorphic_types]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Landroid/content/Context;missing_types]Ljava/lang/Class;Ljava/lang/Class; HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/view/View;megamorphic_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/content/Context;missing_types +HSPLandroid/view/View;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/view/View;megamorphic_types]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;I)V HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;II)V HSPLandroid/view/View;->addFrameMetricsListener(Landroid/view/Window;Landroid/view/Window$OnFrameMetricsAvailableListener;Landroid/os/Handler;)V HSPLandroid/view/View;->addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V -HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V +HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/View;->animate()Landroid/view/ViewPropertyAnimator; HSPLandroid/view/View;->announceForAccessibility(Ljava/lang/CharSequence;)V HSPLandroid/view/View;->appendId(Ljava/lang/StringBuilder;)V @@ -17446,18 +17263,18 @@ HSPLandroid/view/View;->applyLegacyAnimation(Landroid/view/ViewGroup;JLandroid/v HSPLandroid/view/View;->areDrawablesResolved()Z HSPLandroid/view/View;->assignParent(Landroid/view/ViewParent;)V HSPLandroid/view/View;->awakenScrollBars()Z -HSPLandroid/view/View;->awakenScrollBars(IZ)Z +HSPLandroid/view/View;->awakenScrollBars(IZ)Z+]Landroid/os/Handler;Landroid/view/ViewRootImpl$ViewRootHandler; HSPLandroid/view/View;->bringToFront()V HSPLandroid/view/View;->buildDrawingCache(Z)V -HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V +HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V+]Landroid/graphics/Bitmap;Landroid/graphics/Bitmap;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Landroid/graphics/Canvas;Landroid/graphics/Canvas; HSPLandroid/view/View;->buildLayer()V HSPLandroid/view/View;->calculateAccessibilityDataSensitive()V -HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z +HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->canHaveDisplayList()Z HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z HSPLandroid/view/View;->canReceivePointerEvents()Z -HSPLandroid/view/View;->canResolveLayoutDirection()Z -HSPLandroid/view/View;->canResolveTextDirection()Z +HSPLandroid/view/View;->canResolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types +HSPLandroid/view/View;->canResolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->canScrollHorizontally(I)Z HSPLandroid/view/View;->canScrollVertically(I)Z HSPLandroid/view/View;->canTakeFocus()Z @@ -17466,17 +17283,17 @@ HSPLandroid/view/View;->cancelLongPress()V HSPLandroid/view/View;->cancelPendingInputEvents()V HSPLandroid/view/View;->checkForLongClick(JFFI)V HSPLandroid/view/View;->checkInputConnectionProxy(Landroid/view/View;)Z -HSPLandroid/view/View;->cleanupDraw()V -HSPLandroid/view/View;->clearAccessibilityFocus()V +HSPLandroid/view/View;->cleanupDraw()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; +HSPLandroid/view/View;->clearAccessibilityFocus()V+]Landroid/view/View;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/View;->clearAccessibilityFocusNoCallbacks(I)V HSPLandroid/view/View;->clearAccessibilityThrottles()V HSPLandroid/view/View;->clearAnimation()V HSPLandroid/view/View;->clearFocus()V HSPLandroid/view/View;->clearFocusInternal(Landroid/view/View;ZZ)V HSPLandroid/view/View;->clearParentsWantFocus()V -HSPLandroid/view/View;->clearTranslationState()V +HSPLandroid/view/View;->clearTranslationState()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->clearViewTranslationResponse()V -HSPLandroid/view/View;->collectPreferKeepClearRects()Ljava/util/List; +HSPLandroid/view/View;->collectPreferKeepClearRects()Ljava/util/List;+]Landroid/view/View;missing_types]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration; HSPLandroid/view/View;->collectUnrestrictedPreferKeepClearRects()Ljava/util/List; HSPLandroid/view/View;->combineMeasuredStates(II)I HSPLandroid/view/View;->combineVisibility(II)I @@ -17484,21 +17301,21 @@ HSPLandroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/ HSPLandroid/view/View;->computeHorizontalScrollExtent()I HSPLandroid/view/View;->computeHorizontalScrollOffset()I HSPLandroid/view/View;->computeHorizontalScrollRange()I -HSPLandroid/view/View;->computeOpaqueFlags()V +HSPLandroid/view/View;->computeOpaqueFlags()V+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/view/View;->computeScroll()V HSPLandroid/view/View;->computeSystemWindowInsets(Landroid/view/WindowInsets;Landroid/graphics/Rect;)Landroid/view/WindowInsets; HSPLandroid/view/View;->computeVerticalScrollExtent()I HSPLandroid/view/View;->computeVerticalScrollOffset()I HSPLandroid/view/View;->computeVerticalScrollRange()I -HSPLandroid/view/View;->damageInParent()V +HSPLandroid/view/View;->damageInParent()V+]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->destroyDrawingCache()V HSPLandroid/view/View;->destroyHardwareResources()V -HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; -HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;+]Landroid/view/View;missing_types +HSPLandroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup; HSPLandroid/view/View;->dispatchCancelPendingInputEvents()V -HSPLandroid/view/View;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/View;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/view/View;->dispatchDetachedFromWindow()V+]Landroid/view/View;missing_types]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/View$OnAttachStateChangeListener;missing_types +HSPLandroid/view/View;->dispatchDetachedFromWindow()V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/View$OnAttachStateChangeListener;missing_types]Ljava/util/Iterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup; HSPLandroid/view/View;->dispatchDraw(Landroid/graphics/Canvas;)V HSPLandroid/view/View;->dispatchDrawableHotspotChanged(FF)V HSPLandroid/view/View;->dispatchFinishTemporaryDetach()V @@ -17521,22 +17338,21 @@ HSPLandroid/view/View;->dispatchSetPressed(Z)V HSPLandroid/view/View;->dispatchSetSelected(Z)V HSPLandroid/view/View;->dispatchStartTemporaryDetach()V HSPLandroid/view/View;->dispatchSystemUiVisibilityChanged(I)V -HSPLandroid/view/View;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z -HSPLandroid/view/View;->dispatchVisibilityAggregated(Z)Z +HSPLandroid/view/View;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/View;missing_types]Landroid/view/MotionEvent;Landroid/view/MotionEvent; +HSPLandroid/view/View;->dispatchVisibilityAggregated(Z)Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->dispatchVisibilityChanged(Landroid/view/View;I)V HSPLandroid/view/View;->dispatchWindowFocusChanged(Z)V HSPLandroid/view/View;->dispatchWindowInsetsAnimationEnd(Landroid/view/WindowInsetsAnimation;)V -HSPLandroid/view/View;->dispatchWindowInsetsAnimationProgress(Landroid/view/WindowInsets;Ljava/util/List;)Landroid/view/WindowInsets; HSPLandroid/view/View;->dispatchWindowSystemUiVisiblityChanged(I)V HSPLandroid/view/View;->dispatchWindowVisibilityChanged(I)V -HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;)V -HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z -HSPLandroid/view/View;->drawAutofilledHighlight(Landroid/graphics/Canvas;)V -HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/view/View;->draw(Landroid/graphics/Canvas;Landroid/view/ViewGroup;J)Z+]Landroid/view/View;missing_types]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/view/View;->drawAutofilledHighlight(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/view/View;->drawDefaultFocusHighlight(Landroid/graphics/Canvas;)V HSPLandroid/view/View;->drawableHotspotChanged(FF)V -HSPLandroid/view/View;->drawableStateChanged()V -HSPLandroid/view/View;->drawsWithRenderNode(Landroid/graphics/Canvas;)Z +HSPLandroid/view/View;->drawableStateChanged()V+]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator;]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/view/View;->drawsWithRenderNode(Landroid/graphics/Canvas;)Z+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/view/View;->ensureTransformationInfo()V HSPLandroid/view/View;->findAccessibilityFocusHost(Z)Landroid/view/View; HSPLandroid/view/View;->findFocus()Landroid/view/View; @@ -17545,7 +17361,7 @@ HSPLandroid/view/View;->findKeyboardNavigationCluster()Landroid/view/View; HSPLandroid/view/View;->findOnBackInvokedDispatcher()Landroid/window/OnBackInvokedDispatcher; HSPLandroid/view/View;->findUserSetNextFocus(Landroid/view/View;I)Landroid/view/View; HSPLandroid/view/View;->findViewByAutofillIdTraversal(I)Landroid/view/View; -HSPLandroid/view/View;->findViewById(I)Landroid/view/View; +HSPLandroid/view/View;->findViewById(I)Landroid/view/View;+]Landroid/view/View;megamorphic_types HSPLandroid/view/View;->findViewTraversal(I)Landroid/view/View; HSPLandroid/view/View;->findViewWithTag(Ljava/lang/Object;)Landroid/view/View; HSPLandroid/view/View;->findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View; @@ -17565,7 +17381,7 @@ HSPLandroid/view/View;->getAndCacheContentCaptureSession()Landroid/view/contentc HSPLandroid/view/View;->getAnimation()Landroid/view/animation/Animation; HSPLandroid/view/View;->getApplicationWindowToken()Landroid/os/IBinder; HSPLandroid/view/View;->getAutofillHints()[Ljava/lang/String; -HSPLandroid/view/View;->getAutofillId()Landroid/view/autofill/AutofillId; +HSPLandroid/view/View;->getAutofillId()Landroid/view/autofill/AutofillId;+]Landroid/view/View;missing_types HSPLandroid/view/View;->getAutofillType()I HSPLandroid/view/View;->getAutofillViewId()I HSPLandroid/view/View;->getBackground()Landroid/graphics/drawable/Drawable; @@ -17580,12 +17396,12 @@ HSPLandroid/view/View;->getContentDescription()Ljava/lang/CharSequence; HSPLandroid/view/View;->getContext()Landroid/content/Context; HSPLandroid/view/View;->getDefaultSize(II)I HSPLandroid/view/View;->getDisplay()Landroid/view/Display; -HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/graphics/RenderNode;)Landroid/graphics/RenderNode; -HSPLandroid/view/View;->getDrawableState()[I +HSPLandroid/view/View;->getDrawableRenderNode(Landroid/graphics/drawable/Drawable;Landroid/graphics/RenderNode;)Landroid/graphics/RenderNode;+]Ljava/lang/Object;megamorphic_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Ljava/lang/Class;Ljava/lang/Class;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/view/View;->getDrawableState()[I+]Landroid/view/View;missing_types HSPLandroid/view/View;->getDrawingCache(Z)Landroid/graphics/Bitmap; HSPLandroid/view/View;->getDrawingRect(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getDrawingTime()J -HSPLandroid/view/View;->getElevation()F +HSPLandroid/view/View;->getElevation()F+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->getFilterTouchesWhenObscured()Z HSPLandroid/view/View;->getFinalAlpha()F HSPLandroid/view/View;->getFitsSystemWindows()Z @@ -17595,9 +17411,9 @@ HSPLandroid/view/View;->getFocusedRect(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getForeground()Landroid/graphics/drawable/Drawable; HSPLandroid/view/View;->getForegroundGravity()I HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;)Z -HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z +HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z+]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;Landroid/widget/FrameLayout; HSPLandroid/view/View;->getHandler()Landroid/os/Handler; -HSPLandroid/view/View;->getHasOverlappingRendering()Z +HSPLandroid/view/View;->getHasOverlappingRendering()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->getHeight()I HSPLandroid/view/View;->getHitRect(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getHorizontalFadingEdgeLength()I @@ -17610,7 +17426,7 @@ HSPLandroid/view/View;->getImportantForContentCapture()I HSPLandroid/view/View;->getInverseMatrix()Landroid/graphics/Matrix; HSPLandroid/view/View;->getKeyDispatcherState()Landroid/view/KeyEvent$DispatcherState; HSPLandroid/view/View;->getLayerType()I -HSPLandroid/view/View;->getLayoutDirection()I+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types +HSPLandroid/view/View;->getLayoutDirection()I+]Landroid/view/View;megamorphic_types]Landroid/content/Context;missing_types HSPLandroid/view/View;->getLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/view/View;->getLeft()I HSPLandroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo; @@ -17618,8 +17434,8 @@ HSPLandroid/view/View;->getLocalVisibleRect(Landroid/graphics/Rect;)Z HSPLandroid/view/View;->getLocationInSurface([I)V HSPLandroid/view/View;->getLocationInWindow([I)V HSPLandroid/view/View;->getLocationOnScreen()[I -HSPLandroid/view/View;->getLocationOnScreen([I)V -HSPLandroid/view/View;->getMatrix()Landroid/graphics/Matrix; +HSPLandroid/view/View;->getLocationOnScreen([I)V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; +HSPLandroid/view/View;->getMatrix()Landroid/graphics/Matrix;+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->getMeasuredHeight()I HSPLandroid/view/View;->getMeasuredState()I HSPLandroid/view/View;->getMeasuredWidth()I @@ -17631,14 +17447,14 @@ HSPLandroid/view/View;->getOutlineProvider()Landroid/view/ViewOutlineProvider; HSPLandroid/view/View;->getOverScrollMode()I HSPLandroid/view/View;->getPaddingBottom()I HSPLandroid/view/View;->getPaddingEnd()I -HSPLandroid/view/View;->getPaddingLeft()I -HSPLandroid/view/View;->getPaddingRight()I +HSPLandroid/view/View;->getPaddingLeft()I+]Landroid/view/View;missing_types +HSPLandroid/view/View;->getPaddingRight()I+]Landroid/view/View;missing_types HSPLandroid/view/View;->getPaddingStart()I HSPLandroid/view/View;->getPaddingTop()I HSPLandroid/view/View;->getParent()Landroid/view/ViewParent; HSPLandroid/view/View;->getPivotX()F HSPLandroid/view/View;->getPivotY()F -HSPLandroid/view/View;->getProjectionReceiver()Landroid/view/View;+]Landroid/view/ViewParent;missing_types]Landroid/view/View;missing_types +HSPLandroid/view/View;->getProjectionReceiver()Landroid/view/View;+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->getRawLayoutDirection()I HSPLandroid/view/View;->getRawTextAlignment()I HSPLandroid/view/View;->getRawTextDirection()I @@ -17657,9 +17473,9 @@ HSPLandroid/view/View;->getScrollX()I HSPLandroid/view/View;->getScrollY()I HSPLandroid/view/View;->getSolidColor()I HSPLandroid/view/View;->getStateListAnimator()Landroid/animation/StateListAnimator; -HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V -HSPLandroid/view/View;->getSuggestedMinimumHeight()I -HSPLandroid/view/View;->getSuggestedMinimumWidth()I +HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->getSuggestedMinimumHeight()I+]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/view/View;->getSuggestedMinimumWidth()I+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/view/View;->getSystemGestureExclusionRects()Ljava/util/List; HSPLandroid/view/View;->getSystemUiVisibility()I HSPLandroid/view/View;->getTag()Ljava/lang/Object; @@ -17672,7 +17488,7 @@ HSPLandroid/view/View;->getTransitionAlpha()F HSPLandroid/view/View;->getTransitionName()Ljava/lang/String; HSPLandroid/view/View;->getTranslationX()F HSPLandroid/view/View;->getTranslationY()F -HSPLandroid/view/View;->getTranslationZ()F +HSPLandroid/view/View;->getTranslationZ()F+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->getVerticalFadingEdgeLength()I HSPLandroid/view/View;->getVerticalScrollbarWidth()I HSPLandroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl; @@ -17689,11 +17505,11 @@ HSPLandroid/view/View;->getWindowVisibility()I HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V HSPLandroid/view/View;->getX()F HSPLandroid/view/View;->getY()F -HSPLandroid/view/View;->getZ()F +HSPLandroid/view/View;->getZ()F+]Landroid/view/View;megamorphic_types HSPLandroid/view/View;->handleFocusGainInternal(ILandroid/graphics/Rect;)V HSPLandroid/view/View;->handleScrollBarDragging(Landroid/view/MotionEvent;)Z HSPLandroid/view/View;->hasAncestorThatBlocksDescendantFocus()Z -HSPLandroid/view/View;->hasDefaultFocus()Z +HSPLandroid/view/View;->hasDefaultFocus()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->hasExplicitFocusable()Z HSPLandroid/view/View;->hasFocus()Z HSPLandroid/view/View;->hasFocusable()Z @@ -17704,7 +17520,7 @@ HSPLandroid/view/View;->hasListenersForAccessibility()Z HSPLandroid/view/View;->hasNestedScrollingParent()Z HSPLandroid/view/View;->hasOnClickListeners()Z HSPLandroid/view/View;->hasOverlappingRendering()Z -HSPLandroid/view/View;->hasRtlSupport()Z +HSPLandroid/view/View;->hasRtlSupport()Z+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/Context;missing_types HSPLandroid/view/View;->hasSize()Z HSPLandroid/view/View;->hasTransientState()Z HSPLandroid/view/View;->hasTranslationTransientState()Z @@ -17717,22 +17533,22 @@ HSPLandroid/view/View;->includeForAccessibility()Z HSPLandroid/view/View;->includeForAccessibility(Z)Z HSPLandroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View; HSPLandroid/view/View;->initScrollCache()V -HSPLandroid/view/View;->initialAwakenScrollBars()Z +HSPLandroid/view/View;->initialAwakenScrollBars()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->initializeFadingEdgeInternal(Landroid/content/res/TypedArray;)V HSPLandroid/view/View;->initializeScrollIndicatorsInternal()V -HSPLandroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V -HSPLandroid/view/View;->internalSetPadding(IIII)V -HSPLandroid/view/View;->invalidate()V -HSPLandroid/view/View;->invalidate(IIII)V +HSPLandroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V+]Landroid/view/View;missing_types]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; +HSPLandroid/view/View;->internalSetPadding(IIII)V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->invalidate()V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->invalidate(IIII)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->invalidate(Landroid/graphics/Rect;)V -HSPLandroid/view/View;->invalidate(Z)V -HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/GhostView;Landroid/view/GhostView;]Landroid/view/ViewParent;missing_types]Landroid/graphics/drawable/Drawable;missing_types -HSPLandroid/view/View;->invalidateOutline()V +HSPLandroid/view/View;->invalidate(Z)V+]Landroid/view/View;missing_types +HSPLandroid/view/View;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/view/View;->invalidateInternal(IIIIZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;missing_types]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/view/View;->invalidateOutline()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->invalidateParentCaches()V HSPLandroid/view/View;->invalidateParentIfNeeded()V HSPLandroid/view/View;->invalidateParentIfNeededAndWasQuickRejected()V -HSPLandroid/view/View;->invalidateViewProperty(ZZ)V +HSPLandroid/view/View;->invalidateViewProperty(ZZ)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->isAccessibilityFocused()Z HSPLandroid/view/View;->isAccessibilityFocusedViewOrHost()Z HSPLandroid/view/View;->isAccessibilityPane()Z @@ -17741,7 +17557,7 @@ HSPLandroid/view/View;->isActivated()Z HSPLandroid/view/View;->isAggregatedVisible()Z HSPLandroid/view/View;->isAttachedToWindow()Z HSPLandroid/view/View;->isAutoHandwritingEnabled()Z -HSPLandroid/view/View;->isAutofillable()Z +HSPLandroid/view/View;->isAutofillable()Z+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager; HSPLandroid/view/View;->isAutofilled()Z HSPLandroid/view/View;->isClickable()Z HSPLandroid/view/View;->isContextClickable()Z @@ -17767,73 +17583,71 @@ HSPLandroid/view/View;->isInScrollingContainer()Z HSPLandroid/view/View;->isInTouchMode()Z HSPLandroid/view/View;->isKeyboardNavigationCluster()Z HSPLandroid/view/View;->isLaidOut()Z -HSPLandroid/view/View;->isLayoutDirectionInherited()Z +HSPLandroid/view/View;->isLayoutDirectionInherited()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->isLayoutDirectionResolved()Z -HSPLandroid/view/View;->isLayoutModeOptical(Ljava/lang/Object;)Z +HSPLandroid/view/View;->isLayoutModeOptical(Ljava/lang/Object;)Z+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/View;->isLayoutRequested()Z -HSPLandroid/view/View;->isLayoutRtl()Z -HSPLandroid/view/View;->isLayoutValid()Z +HSPLandroid/view/View;->isLayoutRtl()Z+]Landroid/view/View;missing_types +HSPLandroid/view/View;->isLayoutValid()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->isLongClickable()Z HSPLandroid/view/View;->isNestedScrollingEnabled()Z HSPLandroid/view/View;->isOpaque()Z HSPLandroid/view/View;->isPaddingResolved()Z HSPLandroid/view/View;->isPressed()Z HSPLandroid/view/View;->isProjectionReceiver()Z -HSPLandroid/view/View;->isRelayoutTracingEnabled()Z HSPLandroid/view/View;->isRootNamespace()Z -HSPLandroid/view/View;->isRtlCompatibilityMode()Z +HSPLandroid/view/View;->isRtlCompatibilityMode()Z+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types HSPLandroid/view/View;->isSelected()Z HSPLandroid/view/View;->isShowingLayoutBounds()Z HSPLandroid/view/View;->isShown()Z HSPLandroid/view/View;->isSoundEffectsEnabled()Z HSPLandroid/view/View;->isTemporarilyDetached()Z -HSPLandroid/view/View;->isTextAlignmentInherited()Z +HSPLandroid/view/View;->isTextAlignmentInherited()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->isTextAlignmentResolved()Z -HSPLandroid/view/View;->isTextDirectionInherited()Z +HSPLandroid/view/View;->isTextDirectionInherited()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->isTextDirectionResolved()Z -HSPLandroid/view/View;->isTraversalTracingEnabled()Z HSPLandroid/view/View;->isVerticalFadingEdgeEnabled()Z HSPLandroid/view/View;->isVerticalScrollBarEnabled()Z HSPLandroid/view/View;->isVerticalScrollBarHidden()Z HSPLandroid/view/View;->isViewIdGenerated(I)Z HSPLandroid/view/View;->isVisibleToUser()Z HSPLandroid/view/View;->isVisibleToUser(Landroid/graphics/Rect;)Z+]Landroid/view/View;missing_types -HSPLandroid/view/View;->jumpDrawablesToCurrentState()V -HSPLandroid/view/View;->layout(IIII)V +HSPLandroid/view/View;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator; +HSPLandroid/view/View;->layout(IIII)V+]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/View;->makeFrameworkOptionalFitsSystemWindows()V HSPLandroid/view/View;->makeOptionalFitsSystemWindows()V HSPLandroid/view/View;->mapRectFromViewToScreenCoords(Landroid/graphics/RectF;Z)V HSPLandroid/view/View;->mapRectFromViewToWindowCoords(Landroid/graphics/RectF;Z)V -HSPLandroid/view/View;->measure(II)V +HSPLandroid/view/View;->measure(II)V+]Landroid/view/View;missing_types]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray; HSPLandroid/view/View;->mergeDrawableStates([I[I)[I HSPLandroid/view/View;->needGlobalAttributesUpdate(Z)V HSPLandroid/view/View;->needRtlPropertiesResolution()Z -HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeeded(Z)V +HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeeded(Z)V+]Landroid/view/View;missing_types]Landroid/content/Context;missing_types HSPLandroid/view/View;->notifyAutofillManagerOnClick()V -HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V +HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager; HSPLandroid/view/View;->notifyGlobalFocusCleared(Landroid/view/View;)V HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedByParentIfNeeded()V -HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V -HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V +HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; +HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/View;->offsetLeftAndRight(I)V -HSPLandroid/view/View;->offsetTopAndBottom(I)V +HSPLandroid/view/View;->offsetTopAndBottom(I)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->onAnimationEnd()V HSPLandroid/view/View;->onAnimationStart()V HSPLandroid/view/View;->onApplyFrameworkOptionalFitSystemWindows(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; HSPLandroid/view/View;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; -HSPLandroid/view/View;->onAttachedToWindow()V +HSPLandroid/view/View;->onAttachedToWindow()V+]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;]Landroid/view/View;missing_types HSPLandroid/view/View;->onCancelPendingInputEvents()V HSPLandroid/view/View;->onCheckIsTextEditor()Z HSPLandroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V HSPLandroid/view/View;->onConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/view/View;->onCreateDrawableState(I)[I +HSPLandroid/view/View;->onCreateDrawableState(I)[I+]Landroid/view/View;missing_types HSPLandroid/view/View;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; HSPLandroid/view/View;->onDetachedFromWindow()V HSPLandroid/view/View;->onDetachedFromWindowInternal()V+]Landroid/view/accessibility/AccessibilityNodeIdManager;Landroid/view/accessibility/AccessibilityNodeIdManager;]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->onDraw(Landroid/graphics/Canvas;)V -HSPLandroid/view/View;->onDrawForeground(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->onDrawForeground(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/view/View;->onDrawHorizontalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V -HSPLandroid/view/View;->onDrawScrollBars(Landroid/graphics/Canvas;)V +HSPLandroid/view/View;->onDrawScrollBars(Landroid/graphics/Canvas;)V+]Landroid/graphics/Interpolator;Landroid/graphics/Interpolator;]Landroid/view/View;missing_types]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable; HSPLandroid/view/View;->onDrawScrollIndicators(Landroid/graphics/Canvas;)V HSPLandroid/view/View;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V HSPLandroid/view/View;->onFilterTouchEventForSecurity(Landroid/view/MotionEvent;)Z @@ -17849,7 +17663,7 @@ HSPLandroid/view/View;->onMeasure(II)V HSPLandroid/view/View;->onProvideAutofillStructure(Landroid/view/ViewStructure;I)V HSPLandroid/view/View;->onProvideAutofillVirtualStructure(Landroid/view/ViewStructure;I)V HSPLandroid/view/View;->onProvideContentCaptureStructure(Landroid/view/ViewStructure;I)V -HSPLandroid/view/View;->onProvideStructure(Landroid/view/ViewStructure;II)V +HSPLandroid/view/View;->onProvideStructure(Landroid/view/ViewStructure;II)V+]Landroid/view/View;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/view/ViewStructure;Landroid/view/contentcapture/ViewNode$ViewStructureImpl;,Landroid/app/assist/AssistStructure$ViewNodeBuilder;]Ljava/lang/CharSequence;Ljava/lang/String; HSPLandroid/view/View;->onResolveDrawables(I)V HSPLandroid/view/View;->onRestoreInstanceState(Landroid/os/Parcelable;)V HSPLandroid/view/View;->onRtlPropertiesChanged(I)V @@ -17860,7 +17674,7 @@ HSPLandroid/view/View;->onSetAlpha(I)Z HSPLandroid/view/View;->onSizeChanged(IIII)V HSPLandroid/view/View;->onStartTemporaryDetach()V HSPLandroid/view/View;->onTouchEvent(Landroid/view/MotionEvent;)Z -HSPLandroid/view/View;->onVisibilityAggregated(Z)V +HSPLandroid/view/View;->onVisibilityAggregated(Z)V+]Landroid/view/View;missing_types]Ljava/util/List;Ljava/util/Collections$EmptyList;,Ljava/util/ArrayList;]Landroid/graphics/drawable/Drawable;megamorphic_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/os/Handler;Landroid/view/View$VisibilityChangeForAutofillHandler;]Landroid/os/Message;Landroid/os/Message; HSPLandroid/view/View;->onVisibilityChanged(Landroid/view/View;I)V HSPLandroid/view/View;->onWindowFocusChanged(Z)V HSPLandroid/view/View;->onWindowSystemUiVisibilityChanged(I)V @@ -17881,20 +17695,20 @@ HSPLandroid/view/View;->post(Ljava/lang/Runnable;)Z HSPLandroid/view/View;->postDelayed(Ljava/lang/Runnable;J)Z HSPLandroid/view/View;->postInvalidate()V HSPLandroid/view/View;->postInvalidateDelayed(J)V -HSPLandroid/view/View;->postInvalidateOnAnimation()V +HSPLandroid/view/View;->postInvalidateOnAnimation()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/View;->postOnAnimation(Ljava/lang/Runnable;)V HSPLandroid/view/View;->postOnAnimationDelayed(Ljava/lang/Runnable;J)V -HSPLandroid/view/View;->postSendViewScrolledAccessibilityEventCallback(II)V +HSPLandroid/view/View;->postSendViewScrolledAccessibilityEventCallback(II)V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/View;->postUpdate(Ljava/lang/Runnable;)V -HSPLandroid/view/View;->rebuildOutline()V +HSPLandroid/view/View;->rebuildOutline()V+]Landroid/view/ViewOutlineProvider;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/Outline;Landroid/graphics/Outline; HSPLandroid/view/View;->recomputePadding()V -HSPLandroid/view/View;->refreshDrawableState()V +HSPLandroid/view/View;->refreshDrawableState()V+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->registerPendingFrameMetricsObservers()V -HSPLandroid/view/View;->removeCallbacks(Ljava/lang/Runnable;)Z +HSPLandroid/view/View;->removeCallbacks(Ljava/lang/Runnable;)Z+]Landroid/os/Handler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/View;->removeFrameMetricsListener(Landroid/view/Window$OnFrameMetricsAvailableListener;)V HSPLandroid/view/View;->removeLongPressCallback()V HSPLandroid/view/View;->removeOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V -HSPLandroid/view/View;->removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V +HSPLandroid/view/View;->removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/View;->removePerformClickCallback()V HSPLandroid/view/View;->removeTapCallback()V HSPLandroid/view/View;->removeUnsetPressCallback()V @@ -17904,30 +17718,30 @@ HSPLandroid/view/View;->requestFocus()Z HSPLandroid/view/View;->requestFocus(I)Z HSPLandroid/view/View;->requestFocus(ILandroid/graphics/Rect;)Z HSPLandroid/view/View;->requestFocusNoSearch(ILandroid/graphics/Rect;)Z -HSPLandroid/view/View;->requestLayout()V +HSPLandroid/view/View;->requestLayout()V+]Landroid/view/View;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/util/LongSparseLongArray;Landroid/util/LongSparseLongArray;]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;)Z HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z HSPLandroid/view/View;->requireViewById(I)Landroid/view/View; -HSPLandroid/view/View;->resetDisplayList()V +HSPLandroid/view/View;->resetDisplayList()V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->resetPressedState()V -HSPLandroid/view/View;->resetResolvedDrawables()V +HSPLandroid/view/View;->resetResolvedDrawables()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->resetResolvedDrawablesInternal()V HSPLandroid/view/View;->resetResolvedLayoutDirection()V -HSPLandroid/view/View;->resetResolvedPadding()V +HSPLandroid/view/View;->resetResolvedPadding()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->resetResolvedPaddingInternal()V HSPLandroid/view/View;->resetResolvedTextAlignment()V HSPLandroid/view/View;->resetResolvedTextDirection()V -HSPLandroid/view/View;->resetRtlProperties()V +HSPLandroid/view/View;->resetRtlProperties()V+]Landroid/view/View;missing_types HSPLandroid/view/View;->resetSubtreeAccessibilityStateChanged()V -HSPLandroid/view/View;->resolveDrawables()V -HSPLandroid/view/View;->resolveLayoutDirection()Z -HSPLandroid/view/View;->resolveLayoutParams()V -HSPLandroid/view/View;->resolvePadding()V -HSPLandroid/view/View;->resolveRtlPropertiesIfNeeded()Z +HSPLandroid/view/View;->resolveDrawables()V+]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/view/View;->resolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types +HSPLandroid/view/View;->resolveLayoutParams()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup$LayoutParams;missing_types +HSPLandroid/view/View;->resolvePadding()V+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/view/View;missing_types +HSPLandroid/view/View;->resolveRtlPropertiesIfNeeded()Z+]Landroid/view/View;missing_types HSPLandroid/view/View;->resolveSize(II)I HSPLandroid/view/View;->resolveSizeAndState(III)I -HSPLandroid/view/View;->resolveTextAlignment()Z -HSPLandroid/view/View;->resolveTextDirection()Z +HSPLandroid/view/View;->resolveTextAlignment()Z+]Landroid/view/View;missing_types +HSPLandroid/view/View;->resolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->restoreHierarchyState(Landroid/util/SparseArray;)V HSPLandroid/view/View;->retrieveExplicitStyle(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V HSPLandroid/view/View;->rootViewRequestFocus()Z @@ -17939,7 +17753,7 @@ HSPLandroid/view/View;->scheduleDrawable(Landroid/graphics/drawable/Drawable;Lja HSPLandroid/view/View;->scrollBy(II)V HSPLandroid/view/View;->scrollTo(II)V HSPLandroid/view/View;->sendAccessibilityEvent(I)V -HSPLandroid/view/View;->sendAccessibilityEventInternal(I)V +HSPLandroid/view/View;->sendAccessibilityEventInternal(I)V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/View;->setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V HSPLandroid/view/View;->setAccessibilityHeading(Z)V HSPLandroid/view/View;->setAccessibilityLiveRegion(I)V @@ -17953,39 +17767,38 @@ HSPLandroid/view/View;->setAlphaNoInvalidation(F)Z HSPLandroid/view/View;->setAnimation(Landroid/view/animation/Animation;)V HSPLandroid/view/View;->setAutofilled(ZZ)V HSPLandroid/view/View;->setBackground(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/view/View;->setBackgroundBounds()V +HSPLandroid/view/View;->setBackgroundBounds()V+]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/view/View;->setBackgroundColor(I)V -HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Landroid/graphics/drawable/Drawable;missing_types -HSPLandroid/view/View;->setBackgroundRenderNodeProperties(Landroid/graphics/RenderNode;)V +HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/view/View;missing_types]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal$SuppliedThreadLocal;]Landroid/graphics/drawable/Drawable;megamorphic_types +HSPLandroid/view/View;->setBackgroundRenderNodeProperties(Landroid/graphics/RenderNode;)V+]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->setBackgroundResource(I)V HSPLandroid/view/View;->setBackgroundTintList(Landroid/content/res/ColorStateList;)V HSPLandroid/view/View;->setBottom(I)V HSPLandroid/view/View;->setClickable(Z)V HSPLandroid/view/View;->setClipBounds(Landroid/graphics/Rect;)V HSPLandroid/view/View;->setClipToOutline(Z)V -HSPLandroid/view/View;->setContentDescription(Ljava/lang/CharSequence;)V +HSPLandroid/view/View;->setContentDescription(Ljava/lang/CharSequence;)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;]Landroid/view/View;missing_types]Ljava/lang/Object;Ljava/lang/StringBuilder;,Ljava/lang/String; HSPLandroid/view/View;->setDefaultFocusHighlightEnabled(Z)V HSPLandroid/view/View;->setDetached(Z)V -HSPLandroid/view/View;->setDisplayListProperties(Landroid/graphics/RenderNode;)V +HSPLandroid/view/View;->setDisplayListProperties(Landroid/graphics/RenderNode;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->setDrawingCacheEnabled(Z)V HSPLandroid/view/View;->setElevation(F)V HSPLandroid/view/View;->setEnabled(Z)V HSPLandroid/view/View;->setFitsSystemWindows(Z)V -HSPLandroid/view/View;->setFlags(II)V +HSPLandroid/view/View;->setFlags(II)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/view/ViewParent;missing_types HSPLandroid/view/View;->setFocusable(I)V HSPLandroid/view/View;->setFocusable(Z)V HSPLandroid/view/View;->setFocusableInTouchMode(Z)V -HSPLandroid/view/View;->setForceDarkAllowed(Z)V+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->setForeground(Landroid/graphics/drawable/Drawable;)V HSPLandroid/view/View;->setForegroundGravity(I)V -HSPLandroid/view/View;->setFrame(IIII)Z +HSPLandroid/view/View;->setFrame(IIII)Z+]Landroid/view/View;missing_types]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->setHandwritingArea(Landroid/graphics/Rect;)V HSPLandroid/view/View;->setHapticFeedbackEnabled(Z)V HSPLandroid/view/View;->setHasTransientState(Z)V HSPLandroid/view/View;->setHorizontalFadingEdgeEnabled(Z)V HSPLandroid/view/View;->setHorizontalScrollBarEnabled(Z)V HSPLandroid/view/View;->setId(I)V -HSPLandroid/view/View;->setImportantForAccessibility(I)V +HSPLandroid/view/View;->setImportantForAccessibility(I)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->setImportantForAutofill(I)V HSPLandroid/view/View;->setImportantForContentCapture(I)V HSPLandroid/view/View;->setIsRootNamespace(Z)V @@ -17995,7 +17808,7 @@ HSPLandroid/view/View;->setKeyedTag(ILjava/lang/Object;)V HSPLandroid/view/View;->setLayerPaint(Landroid/graphics/Paint;)V HSPLandroid/view/View;->setLayerType(ILandroid/graphics/Paint;)V HSPLandroid/view/View;->setLayoutDirection(I)V -HSPLandroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/View;->setLeft(I)V HSPLandroid/view/View;->setLeftTopRightBottom(IIII)V HSPLandroid/view/View;->setLongClickable(Z)V @@ -18020,7 +17833,7 @@ HSPLandroid/view/View;->setOutlineProvider(Landroid/view/ViewOutlineProvider;)V HSPLandroid/view/View;->setOutlineProviderFromAttribute(I)V HSPLandroid/view/View;->setOutlineSpotShadowColor(I)V HSPLandroid/view/View;->setOverScrollMode(I)V -HSPLandroid/view/View;->setPadding(IIII)V +HSPLandroid/view/View;->setPadding(IIII)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->setPaddingRelative(IIII)V HSPLandroid/view/View;->setPivotX(F)V HSPLandroid/view/View;->setPivotY(F)V @@ -18049,7 +17862,7 @@ HSPLandroid/view/View;->setTag(Ljava/lang/Object;)V HSPLandroid/view/View;->setTagInternal(ILjava/lang/Object;)V HSPLandroid/view/View;->setTextAlignment(I)V HSPLandroid/view/View;->setTextDirection(I)V -HSPLandroid/view/View;->setTooltipText(Ljava/lang/CharSequence;)V +HSPLandroid/view/View;->setTooltipText(Ljava/lang/CharSequence;)V+]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration; HSPLandroid/view/View;->setTop(I)V HSPLandroid/view/View;->setTouchDelegate(Landroid/view/TouchDelegate;)V HSPLandroid/view/View;->setTransitionAlpha(F)V @@ -18059,13 +17872,13 @@ HSPLandroid/view/View;->setTranslationX(F)V HSPLandroid/view/View;->setTranslationY(F)V HSPLandroid/view/View;->setTranslationZ(F)V HSPLandroid/view/View;->setVerticalScrollBarEnabled(Z)V -HSPLandroid/view/View;->setVisibility(I)V +HSPLandroid/view/View;->setVisibility(I)V+]Landroid/view/View;missing_types HSPLandroid/view/View;->setWillNotDraw(Z)V HSPLandroid/view/View;->setWindowInsetsAnimationCallback(Landroid/view/WindowInsetsAnimation$Callback;)V HSPLandroid/view/View;->setX(F)V HSPLandroid/view/View;->setY(F)V -HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z -HSPLandroid/view/View;->sizeChange(IIII)V +HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/Configuration;Landroid/content/res/Configuration; +HSPLandroid/view/View;->sizeChange(IIII)V+]Landroid/view/View;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/ViewGroup;missing_types HSPLandroid/view/View;->skipInvalidate()Z+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V HSPLandroid/view/View;->startNestedScroll(I)Z @@ -18077,7 +17890,7 @@ HSPLandroid/view/View;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V+]Lan HSPLandroid/view/View;->unFocus(Landroid/view/View;)V HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V -HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;+]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;Landroid/view/ViewOverlay$OverlayViewGroup;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode;]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;+]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/View;missing_types]Landroid/graphics/RecordingCanvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/RenderNode;Landroid/graphics/RenderNode; HSPLandroid/view/View;->updateFocusedInCluster(Landroid/view/View;I)V HSPLandroid/view/View;->updateHandwritingArea()V HSPLandroid/view/View;->updateKeepClearRects()V @@ -18093,7 +17906,7 @@ HSPLandroid/view/ViewAnimationHostBridge;->isAttached()Z HSPLandroid/view/ViewAnimationHostBridge;->registerAnimatingRenderNode(Landroid/graphics/RenderNode;)V HSPLandroid/view/ViewAnimationHostBridge;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V HSPLandroid/view/ViewConfiguration;->(Landroid/content/Context;)V -HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration; +HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration;+]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/Context;missing_types HSPLandroid/view/ViewConfiguration;->getDoubleTapTimeout()I HSPLandroid/view/ViewConfiguration;->getLongPressTimeout()I HSPLandroid/view/ViewConfiguration;->getPressedStateDuration()I @@ -18140,9 +17953,9 @@ HSPLandroid/view/ViewGroup$LayoutParams;->(II)V HSPLandroid/view/ViewGroup$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/ViewGroup$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/view/ViewGroup$LayoutParams;->resolveLayoutDirection(I)V -HSPLandroid/view/ViewGroup$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V +HSPLandroid/view/ViewGroup$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/ViewGroup$MarginLayoutParams;->(II)V -HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/view/ViewGroup$MarginLayoutParams;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/view/ViewGroup$MarginLayoutParams;missing_types]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/view/ViewGroup$MarginLayoutParams;->(Landroid/view/ViewGroup$MarginLayoutParams;)V HSPLandroid/view/ViewGroup$MarginLayoutParams;->doResolveMargins()V @@ -18150,7 +17963,7 @@ HSPLandroid/view/ViewGroup$MarginLayoutParams;->getLayoutDirection()I HSPLandroid/view/ViewGroup$MarginLayoutParams;->getMarginEnd()I HSPLandroid/view/ViewGroup$MarginLayoutParams;->getMarginStart()I HSPLandroid/view/ViewGroup$MarginLayoutParams;->isMarginRelative()Z -HSPLandroid/view/ViewGroup$MarginLayoutParams;->resolveLayoutDirection(I)V +HSPLandroid/view/ViewGroup$MarginLayoutParams;->resolveLayoutDirection(I)V+]Landroid/view/ViewGroup$MarginLayoutParams;missing_types HSPLandroid/view/ViewGroup$MarginLayoutParams;->setLayoutDirection(I)V HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginEnd(I)V HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginStart(I)V @@ -18166,14 +17979,14 @@ HSPLandroid/view/ViewGroup;->addFocusables(Ljava/util/ArrayList;II)V HSPLandroid/view/ViewGroup;->addInArray(Landroid/view/View;I)V HSPLandroid/view/ViewGroup;->addTouchTarget(Landroid/view/View;I)Landroid/view/ViewGroup$TouchTarget; HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;)V -HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;I)V +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;I)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;II)V -HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V -HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)Z HSPLandroid/view/ViewGroup;->addViewInLayout(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z -HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types -HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V +HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/animation/LayoutTransition;Landroid/animation/LayoutTransition; +HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->bringChildToFront(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->buildOrderedChildList()Ljava/util/ArrayList; HSPLandroid/view/ViewGroup;->buildTouchDispatchChildList()Ljava/util/ArrayList; @@ -18190,20 +18003,20 @@ HSPLandroid/view/ViewGroup;->clearDisappearingChildren()V HSPLandroid/view/ViewGroup;->clearFocus()V HSPLandroid/view/ViewGroup;->clearFocusedInCluster()V HSPLandroid/view/ViewGroup;->clearTouchTargets()V -HSPLandroid/view/ViewGroup;->destroyHardwareResources()V +HSPLandroid/view/ViewGroup;->destroyHardwareResources()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->detachAllViewsFromParent()V HSPLandroid/view/ViewGroup;->detachViewFromParent(I)V HSPLandroid/view/ViewGroup;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; -HSPLandroid/view/ViewGroup;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/ViewGroup;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->dispatchCancelPendingInputEvents()V -HSPLandroid/view/ViewGroup;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V +HSPLandroid/view/ViewGroup;->dispatchCollectViewAttributes(Landroid/view/View$AttachInfo;I)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V -HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V +HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/view/ViewGroup;->dispatchDrawableHotspotChanged(FF)V HSPLandroid/view/ViewGroup;->dispatchFinishTemporaryDetach()V HSPLandroid/view/ViewGroup;->dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V -HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V+]Landroid/view/View;missing_types]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V+]Landroid/view/ViewOverlay;Landroid/view/ViewGroupOverlay;]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewGroup;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z HSPLandroid/view/ViewGroup;->dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z HSPLandroid/view/ViewGroup;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V @@ -18217,19 +18030,18 @@ HSPLandroid/view/ViewGroup;->dispatchSetSelected(Z)V HSPLandroid/view/ViewGroup;->dispatchStartTemporaryDetach()V HSPLandroid/view/ViewGroup;->dispatchSystemUiVisibilityChanged(I)V HSPLandroid/view/ViewGroup;->dispatchThawSelfOnly(Landroid/util/SparseArray;)V -HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/View;megamorphic_types]Landroid/view/ViewGroup;megamorphic_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/MotionEvent;Landroid/view/MotionEvent; +HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z+]Landroid/view/View;megamorphic_types]Landroid/view/ViewGroup;megamorphic_types]Landroid/view/MotionEvent;Landroid/view/MotionEvent;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/ViewGroup$TouchTarget;Landroid/view/ViewGroup$TouchTarget; HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z+]Landroid/view/View;missing_types]Landroid/view/MotionEvent;Landroid/view/MotionEvent; HSPLandroid/view/ViewGroup;->dispatchUnhandledKeyEvent(Landroid/view/KeyEvent;)Landroid/view/View; -HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->dispatchViewRemoved(Landroid/view/View;)V -HSPLandroid/view/ViewGroup;->dispatchVisibilityAggregated(Z)Z -HSPLandroid/view/ViewGroup;->dispatchVisibilityChanged(Landroid/view/View;I)V -HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V +HSPLandroid/view/ViewGroup;->dispatchVisibilityAggregated(Z)Z+]Landroid/view/View;missing_types +HSPLandroid/view/ViewGroup;->dispatchVisibilityChanged(Landroid/view/View;I)V+]Landroid/view/View;missing_types +HSPLandroid/view/ViewGroup;->dispatchWindowFocusChanged(Z)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->dispatchWindowInsetsAnimationEnd(Landroid/view/WindowInsetsAnimation;)V -HSPLandroid/view/ViewGroup;->dispatchWindowInsetsAnimationProgress(Landroid/view/WindowInsets;Ljava/util/List;)Landroid/view/WindowInsets;+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->dispatchWindowSystemUiVisiblityChanged(I)V -HSPLandroid/view/ViewGroup;->dispatchWindowVisibilityChanged(I)V -HSPLandroid/view/ViewGroup;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z +HSPLandroid/view/ViewGroup;->dispatchWindowVisibilityChanged(I)V+]Landroid/view/View;missing_types +HSPLandroid/view/ViewGroup;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->drawableStateChanged()V HSPLandroid/view/ViewGroup;->endViewTransition(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->exitHoverTargets()V @@ -18243,18 +18055,18 @@ HSPLandroid/view/ViewGroup;->findViewWithTagTraversal(Ljava/lang/Object;)Landroi HSPLandroid/view/ViewGroup;->finishAnimatingView(Landroid/view/View;Landroid/view/animation/Animation;)V HSPLandroid/view/ViewGroup;->focusSearch(Landroid/view/View;I)Landroid/view/View; HSPLandroid/view/ViewGroup;->focusableViewAvailable(Landroid/view/View;)V -HSPLandroid/view/ViewGroup;->gatherTransparentRegion(Landroid/graphics/Region;)Z +HSPLandroid/view/ViewGroup;->gatherTransparentRegion(Landroid/graphics/Region;)Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewGroup;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/view/ViewGroup;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; HSPLandroid/view/ViewGroup;->getAccessibilityClassName()Ljava/lang/CharSequence; HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedIndex(IIZ)I -HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedView(Ljava/util/ArrayList;[Landroid/view/View;I)Landroid/view/View; +HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedView(Ljava/util/ArrayList;[Landroid/view/View;I)Landroid/view/View;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewGroup;->getChildAt(I)Landroid/view/View; HSPLandroid/view/ViewGroup;->getChildCount()I HSPLandroid/view/ViewGroup;->getChildMeasureSpec(III)I HSPLandroid/view/ViewGroup;->getChildTransformation()Landroid/view/animation/Transformation; HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z -HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/view/View;missing_types]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/ViewGroup;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;Landroid/view/ViewRootImpl; +HSPLandroid/view/ViewGroup;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;Z)Z+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewParent;Landroid/view/ViewRootImpl;]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/view/ViewGroup;->getChildrenForAutofill(I)Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture; HSPLandroid/view/ViewGroup;->getChildrenForContentCapture()Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture; HSPLandroid/view/ViewGroup;->getClipChildren()Z @@ -18271,7 +18083,7 @@ HSPLandroid/view/ViewGroup;->getTouchTarget(Landroid/view/View;)Landroid/view/Vi HSPLandroid/view/ViewGroup;->getTouchscreenBlocksFocus()Z HSPLandroid/view/ViewGroup;->handleFocusGainInternal(ILandroid/graphics/Rect;)V HSPLandroid/view/ViewGroup;->hasBooleanFlag(I)Z -HSPLandroid/view/ViewGroup;->hasChildWithZ()Z +HSPLandroid/view/ViewGroup;->hasChildWithZ()Z+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->hasDefaultFocus()Z HSPLandroid/view/ViewGroup;->hasFocus()Z HSPLandroid/view/ViewGroup;->hasFocusable(ZZ)Z @@ -18280,25 +18092,25 @@ HSPLandroid/view/ViewGroup;->hasTransientState()Z HSPLandroid/view/ViewGroup;->hasUnhandledKeyListener()Z HSPLandroid/view/ViewGroup;->hasWindowInsetsAnimationCallback()Z HSPLandroid/view/ViewGroup;->indexOfChild(Landroid/view/View;)I -HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V -HSPLandroid/view/ViewGroup;->initViewGroup()V +HSPLandroid/view/ViewGroup;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/view/ViewGroup;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/Context;missing_types +HSPLandroid/view/ViewGroup;->initViewGroup()V+]Landroid/view/ViewGroup;missing_types]Landroid/content/Context;missing_types HSPLandroid/view/ViewGroup;->internalSetPadding(IIII)V -HSPLandroid/view/ViewGroup;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V +HSPLandroid/view/ViewGroup;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V+]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent; HSPLandroid/view/ViewGroup;->isChildrenDrawingOrderEnabled()Z HSPLandroid/view/ViewGroup;->isLayoutModeOptical()Z HSPLandroid/view/ViewGroup;->isLayoutSuppressed()Z HSPLandroid/view/ViewGroup;->isTransformedTouchPointInView(FFLandroid/view/View;Landroid/graphics/PointF;)Z HSPLandroid/view/ViewGroup;->isViewTransitioning(Landroid/view/View;)Z -HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V -HSPLandroid/view/ViewGroup;->layout(IIII)V +HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V+]Landroid/view/View;missing_types +HSPLandroid/view/ViewGroup;->layout(IIII)V+]Landroid/animation/LayoutTransition;Landroid/animation/LayoutTransition; HSPLandroid/view/ViewGroup;->makeFrameworkOptionalFitsSystemWindows()V HSPLandroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V HSPLandroid/view/ViewGroup;->measureChild(Landroid/view/View;II)V -HSPLandroid/view/ViewGroup;->measureChildWithMargins(Landroid/view/View;IIII)V +HSPLandroid/view/ViewGroup;->measureChildWithMargins(Landroid/view/View;IIII)V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->measureChildren(II)V HSPLandroid/view/ViewGroup;->newDispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets; -HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V +HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/ViewGroup;->offsetDescendantRectToMyCoords(Landroid/view/View;Landroid/graphics/Rect;)V HSPLandroid/view/ViewGroup;->offsetRectBetweenParentAndChild(Landroid/view/View;Landroid/graphics/Rect;ZZ)V HSPLandroid/view/ViewGroup;->onAttachedToWindow()V @@ -18326,7 +18138,7 @@ HSPLandroid/view/ViewGroup;->removePointersFromTouchTargets(I)V HSPLandroid/view/ViewGroup;->removeView(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->removeViewAt(I)V HSPLandroid/view/ViewGroup;->removeViewInLayout(Landroid/view/View;)V -HSPLandroid/view/ViewGroup;->removeViewInternal(ILandroid/view/View;)V +HSPLandroid/view/ViewGroup;->removeViewInternal(ILandroid/view/View;)V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->removeViewInternal(Landroid/view/View;)Z HSPLandroid/view/ViewGroup;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V HSPLandroid/view/ViewGroup;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z @@ -18335,20 +18147,20 @@ HSPLandroid/view/ViewGroup;->requestFocus(ILandroid/graphics/Rect;)Z HSPLandroid/view/ViewGroup;->requestTransitionStart(Landroid/animation/LayoutTransition;)V HSPLandroid/view/ViewGroup;->requestTransparentRegion(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->resetCancelNextUpFlag(Landroid/view/View;)Z -HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V -HSPLandroid/view/ViewGroup;->resetResolvedLayoutDirection()V -HSPLandroid/view/ViewGroup;->resetResolvedPadding()V -HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V -HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V -HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V +HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetResolvedLayoutDirection()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetResolvedPadding()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V+]Landroid/view/View;missing_types HSPLandroid/view/ViewGroup;->resetTouchState()V -HSPLandroid/view/ViewGroup;->resolveDrawables()V -HSPLandroid/view/ViewGroup;->resolveLayoutDirection()Z -HSPLandroid/view/ViewGroup;->resolveLayoutParams()V -HSPLandroid/view/ViewGroup;->resolvePadding()V -HSPLandroid/view/ViewGroup;->resolveRtlPropertiesIfNeeded()Z -HSPLandroid/view/ViewGroup;->resolveTextAlignment()Z -HSPLandroid/view/ViewGroup;->resolveTextDirection()Z +HSPLandroid/view/ViewGroup;->resolveDrawables()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveLayoutDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveLayoutParams()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolvePadding()V+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveRtlPropertiesIfNeeded()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveTextAlignment()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types +HSPLandroid/view/ViewGroup;->resolveTextDirection()Z+]Landroid/view/View;missing_types]Landroid/view/ViewGroup;missing_types HSPLandroid/view/ViewGroup;->restoreDefaultFocus()Z HSPLandroid/view/ViewGroup;->setAddStatesFromChildren(Z)V HSPLandroid/view/ViewGroup;->setAlwaysDrawnWithCacheEnabled(Z)V @@ -18362,18 +18174,17 @@ HSPLandroid/view/ViewGroup;->setLayoutTransition(Landroid/animation/LayoutTransi HSPLandroid/view/ViewGroup;->setMotionEventSplittingEnabled(Z)V HSPLandroid/view/ViewGroup;->setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V HSPLandroid/view/ViewGroup;->setTouchscreenBlocksFocus(Z)V -HSPLandroid/view/ViewGroup;->setWindowInsetsAnimationCallback(Landroid/view/WindowInsetsAnimation$Callback;)V HSPLandroid/view/ViewGroup;->shouldBlockFocusForTouchscreen()Z HSPLandroid/view/ViewGroup;->shouldDelayChildPressedState()Z HSPLandroid/view/ViewGroup;->startViewTransition(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->suppressLayout(Z)V -HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V +HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V+]Landroid/content/Context;missing_types HSPLandroid/view/ViewGroup;->transformPointToViewLocal([FLandroid/view/View;)V HSPLandroid/view/ViewGroup;->unFocus(Landroid/view/View;)V HSPLandroid/view/ViewGroup;->updateLocalSystemUiVisibility(II)Z HSPLandroid/view/ViewGroupOverlay;->add(Landroid/view/View;)V HSPLandroid/view/ViewGroupOverlay;->remove(Landroid/view/View;)V -HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V +HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V+]Landroid/view/View;missing_types]Landroid/graphics/Outline;Landroid/graphics/Outline;]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/view/ViewOutlineProvider$2;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V HSPLandroid/view/ViewOutlineProvider;->()V HSPLandroid/view/ViewOverlay$OverlayViewGroup;->(Landroid/content/Context;Landroid/view/View;)V @@ -18399,7 +18210,7 @@ HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->(Landroid/vi HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationCancel(Landroid/animation/Animator;)V HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationEnd(Landroid/animation/Animator;)V HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationStart(Landroid/animation/Animator;)V -HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V +HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/view/View;Landroid/widget/LinearLayout;,Landroid/widget/FrameLayout;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator; HSPLandroid/view/ViewPropertyAnimator$NameValuesHolder;->(IFF)V HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;->(ILjava/util/ArrayList;)V HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;->cancel(I)Z @@ -18407,7 +18218,7 @@ HSPLandroid/view/ViewPropertyAnimator;->(Landroid/view/View;)V HSPLandroid/view/ViewPropertyAnimator;->alpha(F)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->animateProperty(IF)V HSPLandroid/view/ViewPropertyAnimator;->animatePropertyBy(IFF)V -HSPLandroid/view/ViewPropertyAnimator;->cancel()V +HSPLandroid/view/ViewPropertyAnimator;->cancel()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewPropertyAnimator;->getValue(I)F HSPLandroid/view/ViewPropertyAnimator;->scaleX(F)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->scaleY(F)Landroid/view/ViewPropertyAnimator; @@ -18417,7 +18228,7 @@ HSPLandroid/view/ViewPropertyAnimator;->setListener(Landroid/animation/Animator$ HSPLandroid/view/ViewPropertyAnimator;->setStartDelay(J)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->setValue(IF)V HSPLandroid/view/ViewPropertyAnimator;->start()V -HSPLandroid/view/ViewPropertyAnimator;->startAnimation()V +HSPLandroid/view/ViewPropertyAnimator;->startAnimation()V+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator; HSPLandroid/view/ViewPropertyAnimator;->translationX(F)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->translationY(F)Landroid/view/ViewPropertyAnimator; HSPLandroid/view/ViewPropertyAnimator;->withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator; @@ -18467,19 +18278,19 @@ HSPLandroid/view/ViewRootImpl$InputMetricsListener;->(Landroid/view/ViewRo HSPLandroid/view/ViewRootImpl$InputMetricsListener;->onFrameMetricsAvailable(I)V HSPLandroid/view/ViewRootImpl$InputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V HSPLandroid/view/ViewRootImpl$InputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V -HSPLandroid/view/ViewRootImpl$InputStage;->deliver(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl$InputStage;->deliver(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Landroid/view/ViewRootImpl$InputStage;Landroid/view/ViewRootImpl$NativePostImeInputStage;,Landroid/view/ViewRootImpl$ViewPostImeInputStage;,Landroid/view/ViewRootImpl$EarlyPostImeInputStage;,Landroid/view/ViewRootImpl$SyntheticInputStage; HSPLandroid/view/ViewRootImpl$InputStage;->finish(Landroid/view/ViewRootImpl$QueuedInputEvent;Z)V HSPLandroid/view/ViewRootImpl$InputStage;->forward(Landroid/view/ViewRootImpl$QueuedInputEvent;)V HSPLandroid/view/ViewRootImpl$InputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V HSPLandroid/view/ViewRootImpl$InputStage;->onDetachedFromWindow()V HSPLandroid/view/ViewRootImpl$InputStage;->onWindowFocusChanged(Z)V -HSPLandroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z -HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V +HSPLandroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z+]Landroid/view/InputEvent;Landroid/view/MotionEvent; +HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/InputEvent;Landroid/view/MotionEvent; HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V -HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V -HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V -HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V+]Landroid/view/Choreographer;Landroid/view/Choreographer; +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I HSPLandroid/view/ViewRootImpl$NativePreImeInputStage;->(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V @@ -18503,7 +18314,7 @@ HSPLandroid/view/ViewRootImpl$SyntheticTrackballHandler;->(Landroid/view/V HSPLandroid/view/ViewRootImpl$SystemUiVisibilityInfo;->()V HSPLandroid/view/ViewRootImpl$TrackballAxis;->()V HSPLandroid/view/ViewRootImpl$TraversalRunnable;->(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/ViewRootImpl$TraversalRunnable;->run()V +HSPLandroid/view/ViewRootImpl$TraversalRunnable;->run()V+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->()V HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->(Landroid/view/ViewRootImpl$UnhandledKeyManager-IA;)V HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->dispatch(Landroid/view/View;Landroid/view/KeyEvent;)Z @@ -18533,7 +18344,7 @@ HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->(Landroid/view/Vi HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onBatchedInputEventPending(I)V HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onFocusEvent(Z)V -HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V +HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V+]Landroid/view/InputEventCompatProcessor;Landroid/view/InputEventCompatProcessor;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ViewRootImpl;->$r8$lambda$cb26dxdYlLa0pFTTRhgboKYoMu0(Landroid/view/ViewRootImpl;)V HSPLandroid/view/ViewRootImpl;->-$$Nest$fgetmBlastBufferQueue(Landroid/view/ViewRootImpl;)Landroid/graphics/BLASTBufferQueue; HSPLandroid/view/ViewRootImpl;->-$$Nest$fputmProfileRendering(Landroid/view/ViewRootImpl;Z)V @@ -18543,24 +18354,24 @@ HSPLandroid/view/ViewRootImpl;->-$$Nest$mprofileRendering(Landroid/view/ViewRoot HSPLandroid/view/ViewRootImpl;->(Landroid/content/Context;Landroid/view/Display;)V HSPLandroid/view/ViewRootImpl;->(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;Landroid/view/WindowLayout;)V HSPLandroid/view/ViewRootImpl;->addConfigCallback(Landroid/view/ViewRootImpl$ConfigChangedCallback;)V -HSPLandroid/view/ViewRootImpl;->addFrameCommitCallbackIfNeeded()V +HSPLandroid/view/ViewRootImpl;->addFrameCommitCallbackIfNeeded()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ViewRootImpl;->addSurfaceChangedCallback(Landroid/view/ViewRootImpl$SurfaceChangedCallback;)V HSPLandroid/view/ViewRootImpl;->addWindowCallbacks(Landroid/view/WindowCallbacks;)V HSPLandroid/view/ViewRootImpl;->adjustLayoutParamsForCompatibility(Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/ViewRootImpl;->applyKeepScreenOnFlag(Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/ViewRootImpl;->applyTransactionOnDraw(Landroid/view/SurfaceControl$Transaction;)Z HSPLandroid/view/ViewRootImpl;->canResolveTextDirection()Z -HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V+]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable; HSPLandroid/view/ViewRootImpl;->checkForLeavingTouchModeAndConsume(Landroid/view/KeyEvent;)Z HSPLandroid/view/ViewRootImpl;->checkThread()V HSPLandroid/view/ViewRootImpl;->childDrawableStateChanged(Landroid/view/View;)V HSPLandroid/view/ViewRootImpl;->childHasTransientStateChanged(Landroid/view/View;Z)V HSPLandroid/view/ViewRootImpl;->clearChildFocus(Landroid/view/View;)V HSPLandroid/view/ViewRootImpl;->clearLowProfileModeIfNeeded(IZ)V -HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z +HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z+]Landroid/view/View;Lcom/android/internal/policy/DecorView; HSPLandroid/view/ViewRootImpl;->controlInsetsForCompatibility(Landroid/view/WindowManager$LayoutParams;)V -HSPLandroid/view/ViewRootImpl;->createSyncIfNeeded()V -HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl;->createSyncIfNeeded()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup; +HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Landroid/view/ViewRootImpl$InputStage;Landroid/view/ViewRootImpl$EarlyPostImeInputStage;]Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;]Landroid/view/InputEvent;Landroid/view/MotionEvent;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLandroid/view/ViewRootImpl;->destroyHardwareRenderer()V HSPLandroid/view/ViewRootImpl;->destroyHardwareResources()V HSPLandroid/view/ViewRootImpl;->destroySurface()V @@ -18574,24 +18385,24 @@ HSPLandroid/view/ViewRootImpl;->dispatchDispatchSystemUiVisibilityChanged()V HSPLandroid/view/ViewRootImpl;->dispatchFocusEvent(ZZ)V HSPLandroid/view/ViewRootImpl;->dispatchInsetsControlChanged(Landroid/view/InsetsState;[Landroid/view/InsetsSourceControl;)V HSPLandroid/view/ViewRootImpl;->dispatchInvalidateDelayed(Landroid/view/View;J)V -HSPLandroid/view/ViewRootImpl;->dispatchInvalidateOnAnimation(Landroid/view/View;)V +HSPLandroid/view/ViewRootImpl;->dispatchInvalidateOnAnimation(Landroid/view/View;)V+]Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;Landroid/view/ViewRootImpl$InvalidateOnAnimationRunnable; HSPLandroid/view/ViewRootImpl;->dispatchMoved(II)V HSPLandroid/view/ViewRootImpl;->dispatchResized(Landroid/window/ClientWindowFrames;ZLandroid/util/MergedConfiguration;Landroid/view/InsetsState;ZZIIZ)V HSPLandroid/view/ViewRootImpl;->doConsumeBatchedInput(J)Z HSPLandroid/view/ViewRootImpl;->doDie()V HSPLandroid/view/ViewRootImpl;->doProcessInputEvents()V+]Landroid/view/InputEventAssigner;Landroid/view/InputEventAssigner;]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo; -HSPLandroid/view/ViewRootImpl;->doTraversal()V +HSPLandroid/view/ViewRootImpl;->doTraversal()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/os/MessageQueue;Landroid/os/MessageQueue; HSPLandroid/view/ViewRootImpl;->drawAccessibilityFocusedDrawableIfNeeded(Landroid/graphics/Canvas;)V HSPLandroid/view/ViewRootImpl;->drawSoftware(Landroid/view/Surface;Landroid/view/View$AttachInfo;IIZLandroid/graphics/Rect;Landroid/graphics/Rect;)Z HSPLandroid/view/ViewRootImpl;->enableHardwareAcceleration(Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/ViewRootImpl;->endDragResizing()V HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;)V -HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)V +HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)V+]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/MotionEvent;Landroid/view/MotionEvent; HSPLandroid/view/ViewRootImpl;->ensureTouchMode(Z)Z HSPLandroid/view/ViewRootImpl;->ensureTouchModeLocally(Z)Z HSPLandroid/view/ViewRootImpl;->enterTouchMode()Z HSPLandroid/view/ViewRootImpl;->findOnBackInvokedDispatcherForChild(Landroid/view/View;Landroid/view/View;)Landroid/window/OnBackInvokedDispatcher; -HSPLandroid/view/ViewRootImpl;->finishInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V +HSPLandroid/view/ViewRootImpl;->finishInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V+]Landroid/view/InputEventReceiver;Landroid/view/ViewRootImpl$WindowInputEventReceiver;]Landroid/view/InputEvent;Landroid/view/MotionEvent; HSPLandroid/view/ViewRootImpl;->fireAccessibilityFocusEventIfHasFocusedNode()V HSPLandroid/view/ViewRootImpl;->focusableViewAvailable(Landroid/view/View;)V HSPLandroid/view/ViewRootImpl;->forceLayout(Landroid/view/View;)V @@ -18603,9 +18414,9 @@ HSPLandroid/view/ViewRootImpl;->getBufferTransformHint()I HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z HSPLandroid/view/ViewRootImpl;->getCompatWindowConfiguration()Landroid/app/WindowConfiguration; HSPLandroid/view/ViewRootImpl;->getConfiguration()Landroid/content/res/Configuration; -HSPLandroid/view/ViewRootImpl;->getDisplayId()I +HSPLandroid/view/ViewRootImpl;->getDisplayId()I+]Landroid/view/Display;Landroid/view/Display; HSPLandroid/view/ViewRootImpl;->getHandwritingInitiator()Landroid/view/HandwritingInitiator; -HSPLandroid/view/ViewRootImpl;->getHostVisibility()I +HSPLandroid/view/ViewRootImpl;->getHostVisibility()I+]Landroid/view/View;Lcom/android/internal/policy/DecorView; HSPLandroid/view/ViewRootImpl;->getImeFocusController()Landroid/view/ImeFocusController; HSPLandroid/view/ViewRootImpl;->getImpliedSystemUiVisibility(Landroid/view/WindowManager$LayoutParams;)I HSPLandroid/view/ViewRootImpl;->getInsetsController()Landroid/view/InsetsController; @@ -18614,12 +18425,12 @@ HSPLandroid/view/ViewRootImpl;->getOnBackInvokedDispatcher()Landroid/window/Wind HSPLandroid/view/ViewRootImpl;->getOrCreateSurfaceSyncGroup()Landroid/window/SurfaceSyncGroup; HSPLandroid/view/ViewRootImpl;->getParent()Landroid/view/ViewParent; HSPLandroid/view/ViewRootImpl;->getRootMeasureSpec(III)I -HSPLandroid/view/ViewRootImpl;->getRunQueue()Landroid/view/HandlerActionQueue; +HSPLandroid/view/ViewRootImpl;->getRunQueue()Landroid/view/HandlerActionQueue;+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLandroid/view/ViewRootImpl;->getSurfaceControl()Landroid/view/SurfaceControl; HSPLandroid/view/ViewRootImpl;->getSurfaceSequenceId()I HSPLandroid/view/ViewRootImpl;->getTextDirection()I HSPLandroid/view/ViewRootImpl;->getTitle()Ljava/lang/CharSequence; -HSPLandroid/view/ViewRootImpl;->getUpdatedFrameInfo()Landroid/graphics/FrameInfo; +HSPLandroid/view/ViewRootImpl;->getUpdatedFrameInfo()Landroid/graphics/FrameInfo;+]Landroid/view/InputEventAssigner;Landroid/view/InputEventAssigner;]Landroid/view/ViewFrameInfo;Landroid/view/ViewFrameInfo; HSPLandroid/view/ViewRootImpl;->getValidLayoutRequesters(Ljava/util/ArrayList;Z)Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl;->getView()Landroid/view/View; HSPLandroid/view/ViewRootImpl;->getViewBoundsSandboxingEnabled()Z @@ -18638,7 +18449,7 @@ HSPLandroid/view/ViewRootImpl;->invalidateChildInParent([ILandroid/graphics/Rect HSPLandroid/view/ViewRootImpl;->invalidateRectOnScreen(Landroid/graphics/Rect;)V HSPLandroid/view/ViewRootImpl;->isContentCaptureEnabled()Z HSPLandroid/view/ViewRootImpl;->isContentCaptureReallyEnabled()Z -HSPLandroid/view/ViewRootImpl;->isHardwareEnabled()Z +HSPLandroid/view/ViewRootImpl;->isHardwareEnabled()Z+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer; HSPLandroid/view/ViewRootImpl;->isInLayout()Z HSPLandroid/view/ViewRootImpl;->isInTouchMode()Z HSPLandroid/view/ViewRootImpl;->isInWMSRequestedSync()Z @@ -18656,10 +18467,10 @@ HSPLandroid/view/ViewRootImpl;->maybeHandleWindowMove(Landroid/graphics/Rect;)V HSPLandroid/view/ViewRootImpl;->maybeUpdateTooltip(Landroid/view/MotionEvent;)V HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;IIZ)Z HSPLandroid/view/ViewRootImpl;->mergeWithNextTransaction(Landroid/view/SurfaceControl$Transaction;J)V -HSPLandroid/view/ViewRootImpl;->notifyContentCaptureEvents()V -HSPLandroid/view/ViewRootImpl;->notifyDrawStarted(Z)V +HSPLandroid/view/ViewRootImpl;->notifyContentCaptureEvents()V+]Landroid/view/View;missing_types]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/view/contentcapture/ContentCaptureManager;Landroid/view/contentcapture/ContentCaptureManager;]Landroid/view/contentcapture/ContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/contentcapture/MainContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; +HSPLandroid/view/ViewRootImpl;->notifyDrawStarted(Z)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl;->notifyInsetsChanged()V -HSPLandroid/view/ViewRootImpl;->notifyRendererOfFramePending()V +HSPLandroid/view/ViewRootImpl;->notifyRendererOfFramePending()V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer; HSPLandroid/view/ViewRootImpl;->notifySurfaceCreated(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/view/ViewRootImpl;->notifySurfaceDestroyed()V HSPLandroid/view/ViewRootImpl;->obtainQueuedInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;I)Landroid/view/ViewRootImpl$QueuedInputEvent; @@ -18674,7 +18485,7 @@ HSPLandroid/view/ViewRootImpl;->performContentCaptureInitialReport()V HSPLandroid/view/ViewRootImpl;->performHapticFeedback(IZ)Z HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V HSPLandroid/view/ViewRootImpl;->performMeasure(II)V -HSPLandroid/view/ViewRootImpl;->performTraversals()V +HSPLandroid/view/ViewRootImpl;->performTraversals()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/view/View;missing_types]Landroid/graphics/Point;Landroid/graphics/Point;]Landroid/content/res/CompatibilityInfo;Landroid/content/res/CompatibilityInfo$1;]Landroid/view/HandlerActionQueue;Landroid/view/HandlerActionQueue;]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/content/Context;missing_types]Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;]Lcom/android/internal/view/RootViewSurfaceTaker;Lcom/android/internal/policy/DecorView;]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Region;Landroid/graphics/Region;]Landroid/view/Surface;Landroid/view/Surface;]Landroid/util/MergedConfiguration;Landroid/util/MergedConfiguration;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ImeFocusController;Landroid/view/ImeFocusController;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/window/SurfaceSyncGroup;Landroid/window/SurfaceSyncGroup;]Landroid/content/res/Configuration;Landroid/content/res/Configuration;]Landroid/view/DisplayAdjustments;Landroid/view/DisplayAdjustments;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/window/WindowOnBackInvokedDispatcher;Landroid/window/WindowOnBackInvokedDispatcher;]Landroid/view/Display;Landroid/view/Display;]Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl$Transaction; HSPLandroid/view/ViewRootImpl;->playSoundEffect(I)V HSPLandroid/view/ViewRootImpl;->pokeDrawLockIfNeeded()V HSPLandroid/view/ViewRootImpl;->prepareSurfaces()V @@ -18698,9 +18509,9 @@ HSPLandroid/view/ViewRootImpl;->requestChildRectangleOnScreen(Landroid/view/View HSPLandroid/view/ViewRootImpl;->requestDisallowInterceptTouchEvent(Z)V HSPLandroid/view/ViewRootImpl;->requestFitSystemWindows()V HSPLandroid/view/ViewRootImpl;->requestLayout()V -HSPLandroid/view/ViewRootImpl;->requestLayoutDuringLayout(Landroid/view/View;)Z +HSPLandroid/view/ViewRootImpl;->requestLayoutDuringLayout(Landroid/view/View;)Z+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl;->requestTransparentRegion(Landroid/view/View;)V -HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V +HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V+]Landroid/view/ThreadedRenderer;Landroid/view/ThreadedRenderer;]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V+]Landroid/os/Looper;Landroid/os/Looper;]Landroid/view/ViewRootImpl$ViewRootHandler;Landroid/view/ViewRootImpl$ViewRootHandler;]Landroid/os/MessageQueue;Landroid/os/MessageQueue;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl;]Landroid/view/Choreographer;Landroid/view/Choreographer; HSPLandroid/view/ViewRootImpl;->scrollToRectOrFocus(Landroid/graphics/Rect;Z)Z HSPLandroid/view/ViewRootImpl;->sendBackKeyEvent(I)V @@ -18709,7 +18520,7 @@ HSPLandroid/view/ViewRootImpl;->setAccessibilityWindowAttributesIfNeeded()V HSPLandroid/view/ViewRootImpl;->setActivityConfigCallback(Landroid/view/ViewRootImpl$ActivityConfigCallback;)V HSPLandroid/view/ViewRootImpl;->setBoundsLayerCrop(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/view/ViewRootImpl;->setFrame(Landroid/graphics/Rect;Z)V -HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V +HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V+]Landroid/view/WindowManager$LayoutParams;Landroid/view/WindowManager$LayoutParams;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/ViewRootImpl;->setOnContentApplyWindowInsetsListener(Landroid/view/Window$OnContentApplyWindowInsetsListener;)V HSPLandroid/view/ViewRootImpl;->setTag()V HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;I)V @@ -18718,7 +18529,6 @@ HSPLandroid/view/ViewRootImpl;->shouldDispatchCutout()Z HSPLandroid/view/ViewRootImpl;->shouldOptimizeMeasure(Landroid/view/WindowManager$LayoutParams;)Z HSPLandroid/view/ViewRootImpl;->shouldUseDisplaySize(Landroid/view/WindowManager$LayoutParams;)Z HSPLandroid/view/ViewRootImpl;->systemGestureExclusionChanged()V -HSPLandroid/view/ViewRootImpl;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/view/ViewRootImpl;->unscheduleConsumeBatchedInput()V HSPLandroid/view/ViewRootImpl;->unscheduleTraversals()V HSPLandroid/view/ViewRootImpl;->updateBlastSurfaceIfNeeded()V @@ -18728,7 +18538,7 @@ HSPLandroid/view/ViewRootImpl;->updateColorModeIfNeeded(I)V HSPLandroid/view/ViewRootImpl;->updateCompatSysUiVisibility(III)V HSPLandroid/view/ViewRootImpl;->updateCompatSystemUiVisibilityInfo(IIII)V HSPLandroid/view/ViewRootImpl;->updateConfiguration(I)V -HSPLandroid/view/ViewRootImpl;->updateContentDrawBounds()Z +HSPLandroid/view/ViewRootImpl;->updateContentDrawBounds()Z+]Landroid/view/WindowCallbacks;Lcom/android/internal/policy/DecorView;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewRootImpl;->updateForceDarkMode()V HSPLandroid/view/ViewRootImpl;->updateInternalDisplay(ILandroid/content/res/Resources;)V HSPLandroid/view/ViewRootImpl;->updateKeepClearForAccessibilityFocusRect()V @@ -18744,7 +18554,6 @@ HSPLandroid/view/ViewRootInsetsControllerHost;->dipToPx(I)I HSPLandroid/view/ViewRootInsetsControllerHost;->dispatchWindowInsetsAnimationEnd(Landroid/view/WindowInsetsAnimation;)V HSPLandroid/view/ViewRootInsetsControllerHost;->getHandler()Landroid/os/Handler; HSPLandroid/view/ViewRootInsetsControllerHost;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager; -HSPLandroid/view/ViewRootInsetsControllerHost;->getRootViewContext()Landroid/content/Context; HSPLandroid/view/ViewRootInsetsControllerHost;->getSystemBarsAppearance()I HSPLandroid/view/ViewRootInsetsControllerHost;->getSystemBarsBehavior()I HSPLandroid/view/ViewRootInsetsControllerHost;->getTranslator()Landroid/content/res/CompatibilityInfo$Translator; @@ -18753,7 +18562,6 @@ HSPLandroid/view/ViewRootInsetsControllerHost;->hasAnimationCallbacks()Z HSPLandroid/view/ViewRootInsetsControllerHost;->isSystemBarsAppearanceControlled()Z HSPLandroid/view/ViewRootInsetsControllerHost;->notifyInsetsChanged()V HSPLandroid/view/ViewRootInsetsControllerHost;->updateCompatSysUiVisibility(III)V -HSPLandroid/view/ViewRootInsetsControllerHost;->updateRequestedVisibleTypes(I)V HSPLandroid/view/ViewRootRectTracker$ViewInfo;->(Landroid/view/ViewRootRectTracker;Landroid/view/View;)V HSPLandroid/view/ViewRootRectTracker$ViewInfo;->getView()Landroid/view/View; HSPLandroid/view/ViewRootRectTracker$ViewInfo;->update()I @@ -18767,23 +18575,23 @@ HSPLandroid/view/ViewStructure;->()V HSPLandroid/view/ViewStructure;->setImportantForAutofill(I)V HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/view/ViewStub;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/view/ViewStub;Landroid/view/ViewStub; HSPLandroid/view/ViewStub;->inflate()Landroid/view/View; HSPLandroid/view/ViewStub;->setLayoutInflater(Landroid/view/LayoutInflater;)V HSPLandroid/view/ViewStub;->setLayoutResource(I)V HSPLandroid/view/ViewStub;->setOnInflateListener(Landroid/view/ViewStub$OnInflateListener;)V HSPLandroid/view/ViewStub;->setVisibility(I)V HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->()V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->get(I)Ljava/lang/Object; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->get(I)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->size()I HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->()V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->add(Ljava/lang/Object;)V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->addAll(Landroid/view/ViewTreeObserver$CopyOnWriteArray;)V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->end()V +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->add(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->addAll(Landroid/view/ViewTreeObserver$CopyOnWriteArray;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->end()V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->getArray()Ljava/util/ArrayList; -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->remove(Ljava/lang/Object;)V -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->size()I -HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->start()Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->remove(Ljava/lang/Object;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->size()I+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->start()Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->()V HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->isEmpty()Z @@ -18792,18 +18600,17 @@ HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->set(Landroid/view/ViewTre HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->setTouchableInsets(I)V HSPLandroid/view/ViewTreeObserver;->(Landroid/content/Context;)V HSPLandroid/view/ViewTreeObserver;->addOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V -HSPLandroid/view/ViewTreeObserver;->addOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver;->addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V -HSPLandroid/view/ViewTreeObserver;->addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V+]Landroid/view/ViewTreeObserver$CopyOnWriteArray;Landroid/view/ViewTreeObserver$CopyOnWriteArray; HSPLandroid/view/ViewTreeObserver;->addOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V -HSPLandroid/view/ViewTreeObserver;->addOnWindowFocusChangeListener(Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;)V HSPLandroid/view/ViewTreeObserver;->captureFrameCommitCallbacks()Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver;->checkIsAlive()V HSPLandroid/view/ViewTreeObserver;->dispatchOnComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V -HSPLandroid/view/ViewTreeObserver;->dispatchOnDraw()V +HSPLandroid/view/ViewTreeObserver;->dispatchOnDraw()V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/ViewTreeObserver$OnDrawListener;Landroid/widget/Editor$2; HSPLandroid/view/ViewTreeObserver;->dispatchOnEnterAnimationComplete()V HSPLandroid/view/ViewTreeObserver;->dispatchOnGlobalLayout()V -HSPLandroid/view/ViewTreeObserver;->dispatchOnPreDraw()Z +HSPLandroid/view/ViewTreeObserver;->dispatchOnPreDraw()Z+]Landroid/view/ViewTreeObserver$OnPreDrawListener;missing_types]Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;]Landroid/view/ViewTreeObserver$CopyOnWriteArray;Landroid/view/ViewTreeObserver$CopyOnWriteArray; HSPLandroid/view/ViewTreeObserver;->dispatchOnScrollChanged()V HSPLandroid/view/ViewTreeObserver;->dispatchOnSystemGestureExclusionRectsChanged(Ljava/util/List;)V HSPLandroid/view/ViewTreeObserver;->dispatchOnTouchModeChanged(Z)V @@ -18814,12 +18621,12 @@ HSPLandroid/view/ViewTreeObserver;->dispatchOnWindowVisibilityChange(I)V HSPLandroid/view/ViewTreeObserver;->hasComputeInternalInsetsListeners()Z HSPLandroid/view/ViewTreeObserver;->isAlive()Z HSPLandroid/view/ViewTreeObserver;->kill()V -HSPLandroid/view/ViewTreeObserver;->merge(Landroid/view/ViewTreeObserver;)V +HSPLandroid/view/ViewTreeObserver;->merge(Landroid/view/ViewTreeObserver;)V+]Landroid/view/ViewTreeObserver$CopyOnWriteArray;Landroid/view/ViewTreeObserver$CopyOnWriteArray; HSPLandroid/view/ViewTreeObserver;->removeGlobalOnLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V HSPLandroid/view/ViewTreeObserver;->removeOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V -HSPLandroid/view/ViewTreeObserver;->removeOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->removeOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/ViewTreeObserver;->removeOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V -HSPLandroid/view/ViewTreeObserver;->removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V +HSPLandroid/view/ViewTreeObserver;->removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V+]Landroid/view/ViewTreeObserver$CopyOnWriteArray;Landroid/view/ViewTreeObserver$CopyOnWriteArray; HSPLandroid/view/ViewTreeObserver;->removeOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V HSPLandroid/view/Window;->(Landroid/content/Context;)V HSPLandroid/view/Window;->addFlags(I)V @@ -18885,7 +18692,7 @@ HSPLandroid/view/WindowInsets$Type;->navigationBars()I HSPLandroid/view/WindowInsets$Type;->statusBars()I HSPLandroid/view/WindowInsets$Type;->systemBars()I HSPLandroid/view/WindowInsets$Type;->systemGestures()I -HSPLandroid/view/WindowInsets$Type;->toString(I)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLandroid/view/WindowInsets$Type;->toString(I)Ljava/lang/String; HSPLandroid/view/WindowInsets;->assignCompatInsets([Landroid/graphics/Insets;Landroid/graphics/Rect;)V HSPLandroid/view/WindowInsets;->consumeDisplayCutout()Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->consumeStableInsets()Landroid/view/WindowInsets; @@ -18907,12 +18714,12 @@ HSPLandroid/view/WindowInsets;->getSystemWindowInsetBottom()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetLeft()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetRight()I HSPLandroid/view/WindowInsets;->getSystemWindowInsetTop()I -HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets; -HSPLandroid/view/WindowInsets;->getSystemWindowInsetsAsRect()Landroid/graphics/Rect; +HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets;+]Landroid/view/WindowInsets;Landroid/view/WindowInsets; +HSPLandroid/view/WindowInsets;->getSystemWindowInsetsAsRect()Landroid/graphics/Rect;+]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/WindowInsets;->inset(IIII)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->inset(Landroid/graphics/Insets;)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->insetInsets(Landroid/graphics/Insets;IIII)Landroid/graphics/Insets; -HSPLandroid/view/WindowInsets;->insetInsets([Landroid/graphics/Insets;IIII)[Landroid/graphics/Insets; +HSPLandroid/view/WindowInsets;->insetInsets([Landroid/graphics/Insets;IIII)[Landroid/graphics/Insets;+][Landroid/graphics/Insets;[Landroid/graphics/Insets; HSPLandroid/view/WindowInsets;->insetUnchecked(IIII)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsets;->isConsumed()Z HSPLandroid/view/WindowInsets;->isRound()Z @@ -18920,7 +18727,6 @@ HSPLandroid/view/WindowInsets;->isVisible(I)Z HSPLandroid/view/WindowInsets;->replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets; HSPLandroid/view/WindowInsetsAnimation$Bounds;->(Landroid/graphics/Insets;Landroid/graphics/Insets;)V HSPLandroid/view/WindowInsetsAnimation$Callback;->(I)V -HSPLandroid/view/WindowInsetsAnimation$Callback;->getDispatchMode()I HSPLandroid/view/WindowInsetsAnimation;->(ILandroid/view/animation/Interpolator;J)V HSPLandroid/view/WindowInsetsAnimation;->getTypeMask()I HSPLandroid/view/WindowInsetsAnimation;->setAlpha(F)V @@ -18934,7 +18740,7 @@ HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Par HSPLandroid/view/WindowManager$LayoutParams;->()V HSPLandroid/view/WindowManager$LayoutParams;->(IIIII)V HSPLandroid/view/WindowManager$LayoutParams;->(Landroid/os/Parcel;)V -HSPLandroid/view/WindowManager$LayoutParams;->copyFrom(Landroid/view/WindowManager$LayoutParams;)I +HSPLandroid/view/WindowManager$LayoutParams;->copyFrom(Landroid/view/WindowManager$LayoutParams;)I+]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/WindowManager$LayoutParams;->forRotation(I)Landroid/view/WindowManager$LayoutParams; HSPLandroid/view/WindowManager$LayoutParams;->getColorMode()I HSPLandroid/view/WindowManager$LayoutParams;->getFitInsetsSides()I @@ -18949,7 +18755,7 @@ HSPLandroid/view/WindowManager$LayoutParams;->setFitInsetsSides(I)V HSPLandroid/view/WindowManager$LayoutParams;->setFitInsetsTypes(I)V HSPLandroid/view/WindowManager$LayoutParams;->setSurfaceInsets(Landroid/view/View;ZZ)V HSPLandroid/view/WindowManager$LayoutParams;->setTitle(Ljava/lang/CharSequence;)V -HSPLandroid/view/WindowManager$LayoutParams;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/WindowManager$LayoutParams;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/WindowManager;->hasWindowExtensionsEnabled()Z HSPLandroid/view/WindowManagerGlobal$1;->()V HSPLandroid/view/WindowManagerGlobal$2;->(Landroid/view/WindowManagerGlobal;)V @@ -19010,7 +18816,7 @@ HSPLandroid/view/accessibility/AccessibilityManager;->getRecommendedTimeoutMilli HSPLandroid/view/accessibility/AccessibilityManager;->getServiceLocked()Landroid/view/accessibility/IAccessibilityManager; HSPLandroid/view/accessibility/AccessibilityManager;->hasAnyDirectConnection()Z HSPLandroid/view/accessibility/AccessibilityManager;->initialFocusAppearanceLocked(Landroid/content/res/Resources;)V -HSPLandroid/view/accessibility/AccessibilityManager;->isEnabled()Z +HSPLandroid/view/accessibility/AccessibilityManager;->isEnabled()Z+]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager; HSPLandroid/view/accessibility/AccessibilityManager;->isHighTextContrastEnabled()Z HSPLandroid/view/accessibility/AccessibilityManager;->isTouchExplorationEnabled()Z HSPLandroid/view/accessibility/AccessibilityManager;->notifyAccessibilityStateChanged()V @@ -19026,8 +18832,8 @@ HSPLandroid/view/accessibility/AccessibilityManager;->updateFocusAppearanceLocke HSPLandroid/view/accessibility/AccessibilityManager;->updateUiTimeout(J)V HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->()V HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->getInstance()Landroid/view/accessibility/AccessibilityNodeIdManager; -HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V -HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V +HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V+]Landroid/view/accessibility/WeakSparseArray;Landroid/view/accessibility/WeakSparseArray; +HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V+]Landroid/view/accessibility/WeakSparseArray;Landroid/view/accessibility/WeakSparseArray; HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->(ILjava/lang/CharSequence;)V HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->equals(Ljava/lang/Object;)Z HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->getId()I @@ -19067,9 +18873,9 @@ HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->getTransaction HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z HSPLandroid/view/accessibility/WeakSparseArray$WeakReferenceWithId;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;I)V HSPLandroid/view/accessibility/WeakSparseArray;->()V -HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V -HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V -HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V +HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue; HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->()V HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->createNativeInterpolator()J HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->getInterpolation(F)F @@ -19097,12 +18903,12 @@ HSPLandroid/view/animation/Animation;->ensureInterpolator()V HSPLandroid/view/animation/Animation;->finalize()V HSPLandroid/view/animation/Animation;->getDuration()J HSPLandroid/view/animation/Animation;->getFillAfter()Z -HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation; HSPLandroid/view/animation/Animation;->getScaleFactor()F HSPLandroid/view/animation/Animation;->getStartOffset()J -HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z +HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z+]Landroid/view/animation/Animation;missing_types]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;F)Z -HSPLandroid/view/animation/Animation;->getTransformationAt(FLandroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Animation;->getTransformationAt(FLandroid/view/animation/Transformation;)V+]Landroid/view/animation/Interpolator;missing_types HSPLandroid/view/animation/Animation;->hasAlpha()Z HSPLandroid/view/animation/Animation;->hasEnded()Z HSPLandroid/view/animation/Animation;->hasStarted()Z @@ -19137,7 +18943,7 @@ HSPLandroid/view/animation/AnimationSet;->(Landroid/content/Context;Landro HSPLandroid/view/animation/AnimationSet;->(Z)V HSPLandroid/view/animation/AnimationSet;->addAnimation(Landroid/view/animation/Animation;)V HSPLandroid/view/animation/AnimationSet;->getDuration()J -HSPLandroid/view/animation/AnimationSet;->getTransformation(JLandroid/view/animation/Transformation;)Z +HSPLandroid/view/animation/AnimationSet;->getTransformation(JLandroid/view/animation/Transformation;)Z+]Landroid/view/animation/AnimationSet;missing_types]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Landroid/view/animation/Animation;Landroid/view/animation/AnimationSet;,Landroid/view/animation/TranslateAnimation;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/view/animation/AnimationSet;->hasAlpha()Z HSPLandroid/view/animation/AnimationSet;->init()V HSPLandroid/view/animation/AnimationSet;->initialize(IIII)V @@ -19159,12 +18965,12 @@ HSPLandroid/view/animation/AnimationUtils$AnimationState;->()V HSPLandroid/view/animation/AnimationUtils$AnimationState;->(Landroid/view/animation/AnimationUtils$AnimationState-IA;)V HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Animation; HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/view/animation/AnimationSet;Landroid/util/AttributeSet;)Landroid/view/animation/Animation; -HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator; -HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J +HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator;+]Ljava/lang/String;Ljava/lang/String;]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser; +HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J+]Ljava/lang/ThreadLocal;Landroid/view/animation/AnimationUtils$1; HSPLandroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation; -HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator; +HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/res/XmlResourceParser;Landroid/content/res/XmlBlock$Parser; HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;I)Landroid/view/animation/Interpolator; -HSPLandroid/view/animation/AnimationUtils;->unlockAnimationClock()V +HSPLandroid/view/animation/AnimationUtils;->unlockAnimationClock()V+]Ljava/lang/ThreadLocal;Landroid/view/animation/AnimationUtils$1; HSPLandroid/view/animation/BaseInterpolator;->()V HSPLandroid/view/animation/BaseInterpolator;->getChangingConfiguration()I HSPLandroid/view/animation/BaseInterpolator;->setChangingConfiguration(I)V @@ -19179,12 +18985,12 @@ HSPLandroid/view/animation/OvershootInterpolator;->()V HSPLandroid/view/animation/OvershootInterpolator;->(F)V HSPLandroid/view/animation/OvershootInterpolator;->getInterpolation(F)F HSPLandroid/view/animation/PathInterpolator;->(FFFF)V -HSPLandroid/view/animation/PathInterpolator;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V +HSPLandroid/view/animation/PathInterpolator;->(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V+]Landroid/view/animation/PathInterpolator;Landroid/view/animation/PathInterpolator;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/animation/PathInterpolator;->createNativeInterpolator()J HSPLandroid/view/animation/PathInterpolator;->getInterpolation(F)F -HSPLandroid/view/animation/PathInterpolator;->initCubic(FFFF)V -HSPLandroid/view/animation/PathInterpolator;->initPath(Landroid/graphics/Path;)V -HSPLandroid/view/animation/PathInterpolator;->parseInterpolatorFromTypeArray(Landroid/content/res/TypedArray;)V +HSPLandroid/view/animation/PathInterpolator;->initCubic(FFFF)V+]Landroid/graphics/Path;Landroid/graphics/Path; +HSPLandroid/view/animation/PathInterpolator;->initPath(Landroid/graphics/Path;)V+]Landroid/graphics/Path;Landroid/graphics/Path; +HSPLandroid/view/animation/PathInterpolator;->parseInterpolatorFromTypeArray(Landroid/content/res/TypedArray;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/view/animation/ScaleAnimation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/view/animation/ScaleAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V HSPLandroid/view/animation/ScaleAnimation;->initialize(IIII)V @@ -19192,16 +18998,16 @@ HSPLandroid/view/animation/ScaleAnimation;->initializePivotPoint()V HSPLandroid/view/animation/ScaleAnimation;->resolveScale(FIIII)F HSPLandroid/view/animation/Transformation;->()V HSPLandroid/view/animation/Transformation;->clear()V -HSPLandroid/view/animation/Transformation;->compose(Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Transformation;->compose(Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation; HSPLandroid/view/animation/Transformation;->getAlpha()F HSPLandroid/view/animation/Transformation;->getInsets()Landroid/graphics/Insets; HSPLandroid/view/animation/Transformation;->getMatrix()Landroid/graphics/Matrix; HSPLandroid/view/animation/Transformation;->getTransformationType()I -HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V +HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation;]Landroid/graphics/Rect;Landroid/graphics/Rect; HSPLandroid/view/animation/Transformation;->setAlpha(F)V HSPLandroid/view/animation/Transformation;->setInsets(Landroid/graphics/Insets;)V HSPLandroid/view/animation/TranslateAnimation;->(Landroid/content/Context;Landroid/util/AttributeSet;)V -HSPLandroid/view/animation/TranslateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V +HSPLandroid/view/animation/TranslateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V+]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/view/animation/Transformation;Landroid/view/animation/Transformation; HSPLandroid/view/animation/TranslateAnimation;->initialize(IIII)V HSPLandroid/view/autofill/AutofillClientController;->()V HSPLandroid/view/autofill/AutofillClientController;->(Landroid/app/Activity;)V @@ -19237,8 +19043,8 @@ HSPLandroid/view/autofill/AutofillFeatureFlags;->isTriggerFillRequestOnUnimporta HSPLandroid/view/autofill/AutofillFeatureFlags;->lambda$getFillDialogEnabledHints$1(Ljava/lang/String;)Z HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeAllChildrenViewInAssistStructure()Z HSPLandroid/view/autofill/AutofillFeatureFlags;->shouldIncludeAllViewsAutofillTypeNotNoneInAssistStructrue()Z -HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillId;+]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;+]Landroid/view/autofill/AutofillId$1;Landroid/view/autofill/AutofillId$1; +HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillId; +HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/autofill/AutofillId;->(I)V HSPLandroid/view/autofill/AutofillId;->(IIJI)V HSPLandroid/view/autofill/AutofillId;->equals(Ljava/lang/Object;)Z @@ -19248,8 +19054,8 @@ HSPLandroid/view/autofill/AutofillId;->hashCode()I HSPLandroid/view/autofill/AutofillId;->isVirtualInt()Z HSPLandroid/view/autofill/AutofillId;->isVirtualLong()Z HSPLandroid/view/autofill/AutofillId;->resetSessionId()V -HSPLandroid/view/autofill/AutofillId;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillId; -HSPLandroid/view/autofill/AutofillId;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/autofill/AutofillId;->toString()Ljava/lang/String; +HSPLandroid/view/autofill/AutofillId;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillId;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/autofill/AutofillManager$$ExternalSyntheticLambda0;->(Landroid/view/autofill/IAutoFillManager;Landroid/view/autofill/IAutoFillManagerClient;I)V HSPLandroid/view/autofill/AutofillManager$AugmentedAutofillManagerClient;->(Landroid/view/autofill/AutofillManager;)V HSPLandroid/view/autofill/AutofillManager$AugmentedAutofillManagerClient;->getView(Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillId;)Landroid/view/View; @@ -19271,11 +19077,9 @@ HSPLandroid/view/autofill/AutofillManager;->hasFillDialogUiFeature()Z HSPLandroid/view/autofill/AutofillManager;->isActiveLocked()Z HSPLandroid/view/autofill/AutofillManager;->isActivityAllowedForAutofill()Z HSPLandroid/view/autofill/AutofillManager;->isActivityDeniedForAutofill()Z -HSPLandroid/view/autofill/AutofillManager;->isAutofillable(Landroid/view/View;)Z+]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/view/View;missing_types +HSPLandroid/view/autofill/AutofillManager;->isAutofillable(Landroid/view/View;)Z+]Landroid/view/View;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager; HSPLandroid/view/autofill/AutofillManager;->isDisabledByServiceLocked()Z HSPLandroid/view/autofill/AutofillManager;->isEnabled()Z -HSPLandroid/view/autofill/AutofillManager;->isPassingImeActionCheck(Landroid/widget/EditText;)Z+]Ljava/util/Set;Landroid/util/ArraySet; -HSPLandroid/view/autofill/AutofillManager;->isPassingMultilineCheck(Landroid/widget/EditText;)Z HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V HSPLandroid/view/autofill/AutofillManager;->notifyViewEntered(Landroid/view/View;I)V HSPLandroid/view/autofill/AutofillManager;->notifyViewEnteredForAugmentedAutofill(Landroid/view/View;)V @@ -19315,7 +19119,7 @@ HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->getAutofillServiceCompon HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->removeClient(Landroid/view/autofill/IAutoFillManagerClient;I)V HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->setHasCallback(IIZ)V HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILandroid/content/ComponentName;ZLcom/android/internal/os/IResultReceiver;)V -HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V +HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Landroid/os/Parcel;Landroid/os/Parcel;]Landroid/view/autofill/IAutoFillManager$Stub$Proxy;Landroid/view/autofill/IAutoFillManager$Stub$Proxy; HSPLandroid/view/autofill/IAutoFillManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManager; HSPLandroid/view/autofill/IAutoFillManagerClient$Stub;->asBinder()Landroid/os/IBinder; HSPLandroid/view/autofill/IAutoFillManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z @@ -19335,7 +19139,7 @@ HSPLandroid/view/contentcapture/ContentCaptureEvent;->setInsets(Landroid/graphic HSPLandroid/view/contentcapture/ContentCaptureEvent;->setSelectionIndex(II)Landroid/view/contentcapture/ContentCaptureEvent; HSPLandroid/view/contentcapture/ContentCaptureEvent;->setText(Ljava/lang/CharSequence;)Landroid/view/contentcapture/ContentCaptureEvent; HSPLandroid/view/contentcapture/ContentCaptureEvent;->setViewNode(Landroid/view/contentcapture/ViewNode;)Landroid/view/contentcapture/ContentCaptureEvent; -HSPLandroid/view/contentcapture/ContentCaptureEvent;->writeToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/contentcapture/ContentCaptureEvent;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/contentcapture/ContentCaptureHelper;->getLoggingLevelAsString(I)Ljava/lang/String; HSPLandroid/view/contentcapture/ContentCaptureHelper;->setLoggingLevel(I)V HSPLandroid/view/contentcapture/ContentCaptureManager$LocalDataShareAdapterResourceManager;->()V @@ -19343,7 +19147,7 @@ HSPLandroid/view/contentcapture/ContentCaptureManager$StrippedContext;->(L HSPLandroid/view/contentcapture/ContentCaptureManager;->(Landroid/content/Context;Landroid/view/contentcapture/IContentCaptureManager;Landroid/content/ContentCaptureOptions;)V HSPLandroid/view/contentcapture/ContentCaptureManager;->getFlushViewTreeAppearingEventDisabled()Z HSPLandroid/view/contentcapture/ContentCaptureManager;->getMainContentCaptureSession()Landroid/view/contentcapture/MainContentCaptureSession; -HSPLandroid/view/contentcapture/ContentCaptureManager;->isContentCaptureEnabled()Z +HSPLandroid/view/contentcapture/ContentCaptureManager;->isContentCaptureEnabled()Z+]Landroid/view/contentcapture/MainContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; HSPLandroid/view/contentcapture/ContentCaptureManager;->onActivityCreated(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/content/ComponentName;)V HSPLandroid/view/contentcapture/ContentCaptureManager;->setFlushViewTreeAppearingEventDisabled(Z)V HSPLandroid/view/contentcapture/ContentCaptureManager;->updateWindowAttributes(Landroid/view/WindowManager$LayoutParams;)V @@ -19392,7 +19196,7 @@ HSPLandroid/view/contentcapture/MainContentCaptureSession$SessionStateReceiver;- HSPLandroid/view/contentcapture/MainContentCaptureSession;->(Landroid/view/contentcapture/ContentCaptureManager$StrippedContext;Landroid/view/contentcapture/ContentCaptureManager;Landroid/os/Handler;Landroid/view/contentcapture/IContentCaptureManager;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->clearEvents()Landroid/content/pm/ParceledListSlice; HSPLandroid/view/contentcapture/MainContentCaptureSession;->destroySession()V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->flush(I)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->flush(I)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/os/Handler;Landroid/os/Handler;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/view/contentcapture/IContentCaptureDirectManager;Landroid/view/contentcapture/IContentCaptureDirectManager$Stub$Proxy;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/util/LocalLog;Landroid/util/LocalLog; HSPLandroid/view/contentcapture/MainContentCaptureSession;->flushIfNeeded(I)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->getActivityName()Ljava/lang/String; HSPLandroid/view/contentcapture/MainContentCaptureSession;->getDebugState()Ljava/lang/String; @@ -19401,24 +19205,24 @@ HSPLandroid/view/contentcapture/MainContentCaptureSession;->hasStarted()Z HSPLandroid/view/contentcapture/MainContentCaptureSession;->internalNotifyViewAppeared(Landroid/view/contentcapture/ViewNode$ViewStructureImpl;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->internalNotifyViewTextChanged(Landroid/view/autofill/AutofillId;Ljava/lang/CharSequence;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->internalNotifyViewTreeEvent(Z)V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->isContentCaptureEnabled()Z -HSPLandroid/view/contentcapture/MainContentCaptureSession;->isDisabled()Z -HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewAppeared(ILandroid/view/contentcapture/ViewNode$ViewStructureImpl;)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->isContentCaptureEnabled()Z+]Landroid/view/contentcapture/ContentCaptureManager;Landroid/view/contentcapture/ContentCaptureManager; +HSPLandroid/view/contentcapture/MainContentCaptureSession;->isDisabled()Z+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean; +HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewAppeared(ILandroid/view/contentcapture/ViewNode$ViewStructureImpl;)V+]Landroid/os/Handler;Landroid/os/Handler; HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewDisappeared(ILandroid/view/autofill/AutofillId;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewInsetsChanged(ILandroid/graphics/Insets;)V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewTextChanged(ILandroid/view/autofill/AutofillId;Ljava/lang/CharSequence;)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewTextChanged(ILandroid/view/autofill/AutofillId;Ljava/lang/CharSequence;)V+]Landroid/os/Handler;Landroid/os/Handler;]Ljava/lang/CharSequence;missing_types HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyViewTreeEvent(IZ)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->notifyWindowBoundsChanged(ILandroid/graphics/Rect;)V HSPLandroid/view/contentcapture/MainContentCaptureSession;->onDestroy()V HSPLandroid/view/contentcapture/MainContentCaptureSession;->onSessionStarted(ILandroid/os/IBinder;)V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->scheduleFlush(IZ)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->scheduleFlush(IZ)V+]Landroid/os/Handler;Landroid/os/Handler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean; HSPLandroid/view/contentcapture/MainContentCaptureSession;->sendEvent(Landroid/view/contentcapture/ContentCaptureEvent;)V -HSPLandroid/view/contentcapture/MainContentCaptureSession;->sendEvent(Landroid/view/contentcapture/ContentCaptureEvent;Z)V +HSPLandroid/view/contentcapture/MainContentCaptureSession;->sendEvent(Landroid/view/contentcapture/ContentCaptureEvent;Z)V+]Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;]Landroid/view/contentcapture/ContentCaptureEvent;Landroid/view/contentcapture/ContentCaptureEvent;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/view/contentcapture/MainContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; HSPLandroid/view/contentcapture/MainContentCaptureSession;->start(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/content/ComponentName;I)V HSPLandroid/view/contentcapture/ViewNode$ViewNodeText;->()V HSPLandroid/view/contentcapture/ViewNode$ViewNodeText;->isSimple()Z -HSPLandroid/view/contentcapture/ViewNode$ViewNodeText;->writeToParcel(Landroid/os/Parcel;Z)V -HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->(Landroid/view/View;)V +HSPLandroid/view/contentcapture/ViewNode$ViewNodeText;->writeToParcel(Landroid/os/Parcel;Z)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannableStringBuilder;]Landroid/os/Parcel;Landroid/os/Parcel; +HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->(Landroid/view/View;)V+]Landroid/view/View;missing_types HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->getNodeText()Landroid/view/contentcapture/ViewNode$ViewNodeText; HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->setAutofillHints([Ljava/lang/String;)V HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->setAutofillType(I)V @@ -19449,7 +19253,7 @@ HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->setTextStyle(FIII)V HSPLandroid/view/contentcapture/ViewNode$ViewStructureImpl;->setVisibility(I)V HSPLandroid/view/contentcapture/ViewNode;->-$$Nest$fputmReceiveContentMimeTypes(Landroid/view/contentcapture/ViewNode;[Ljava/lang/String;)V HSPLandroid/view/contentcapture/ViewNode;->()V -HSPLandroid/view/contentcapture/ViewNode;->writeSelfToParcel(Landroid/os/Parcel;I)V +HSPLandroid/view/contentcapture/ViewNode;->writeSelfToParcel(Landroid/os/Parcel;I)V+]Landroid/view/contentcapture/ViewNode$ViewNodeText;Landroid/view/contentcapture/ViewNode$ViewNodeText;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/contentcapture/ViewNode;->writeToParcel(Landroid/os/Parcel;Landroid/view/contentcapture/ViewNode;I)V HSPLandroid/view/inputmethod/BaseInputConnection;->(Landroid/view/View;Z)V HSPLandroid/view/inputmethod/BaseInputConnection;->(Landroid/view/inputmethod/InputMethodManager;Z)V @@ -19475,16 +19279,10 @@ HSPLandroid/view/inputmethod/BaseInputConnection;->setComposingRegion(II)Z HSPLandroid/view/inputmethod/BaseInputConnection;->setComposingSpans(Landroid/text/Spannable;II)V HSPLandroid/view/inputmethod/BaseInputConnection;->setComposingText(Ljava/lang/CharSequence;I)Z HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->()V -HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->addVisibleLineBounds(FFFF)Landroid/view/inputmethod/CursorAnchorInfo$Builder; HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->reset()V+]Landroid/view/inputmethod/CursorAnchorInfo$Builder;Landroid/view/inputmethod/CursorAnchorInfo$Builder;]Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder; -HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->setInsertionMarkerLocation(FFFFI)Landroid/view/inputmethod/CursorAnchorInfo$Builder; -HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;->setMatrix(Landroid/graphics/Matrix;)Landroid/view/inputmethod/CursorAnchorInfo$Builder;+]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/view/inputmethod/CursorAnchorInfo;->(IIILjava/lang/CharSequence;IFFFFLandroid/view/inputmethod/SparseRectFArray;Landroid/view/inputmethod/EditorBoundsInfo;[F[FLandroid/view/inputmethod/TextAppearanceInfo;)V HSPLandroid/view/inputmethod/CursorAnchorInfo;->create(Landroid/view/inputmethod/CursorAnchorInfo$Builder;)Landroid/view/inputmethod/CursorAnchorInfo;+]Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder;Landroid/view/inputmethod/SparseRectFArray$SparseRectFArrayBuilder; HSPLandroid/view/inputmethod/CursorAnchorInfo;->equals(Ljava/lang/Object;)Z+]Landroid/view/inputmethod/CursorAnchorInfo;Landroid/view/inputmethod/CursorAnchorInfo; -HSPLandroid/view/inputmethod/CursorAnchorInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/Parcel;Landroid/os/Parcel; -HSPLandroid/view/inputmethod/EditorBoundsInfo;->(Landroid/view/inputmethod/EditorBoundsInfo$Builder;)V -HSPLandroid/view/inputmethod/EditorBoundsInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/view/inputmethod/EditorInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/EditorInfo; HSPLandroid/view/inputmethod/EditorInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/inputmethod/EditorInfo;->()V @@ -19500,7 +19298,7 @@ HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->getImeTrackerSer HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->getService()Lcom/android/internal/view/IInputMethodManager; HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->isAvailable()Z HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->isImeTraceEnabled()Z -HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->onFailed(Landroid/view/inputmethod/ImeTracker$Token;I)V +HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->onFailed(Landroid/view/inputmethod/ImeTracker$Token;I)V+]Lcom/android/internal/inputmethod/IImeTracker;Lcom/android/internal/inputmethod/IImeTracker$Stub$Proxy; HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->onRequestHide(Ljava/lang/String;III)Landroid/view/inputmethod/ImeTracker$Token; HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->removeImeSurfaceFromWindowAsync(Landroid/os/IBinder;)V HSPLandroid/view/inputmethod/IInputMethodManagerGlobalInvoker;->reportPerceptibleAsync(Landroid/os/IBinder;Z)V @@ -19531,7 +19329,6 @@ HSPLandroid/view/inputmethod/ImeTracker$Debug;->getFieldValue(Ljava/lang/reflect HSPLandroid/view/inputmethod/ImeTracker$Debug;->lambda$getFieldMapping$0(Ljava/lang/String;Ljava/lang/reflect/Field;)Z HSPLandroid/view/inputmethod/ImeTracker$Debug;->originToString(I)Ljava/lang/String; HSPLandroid/view/inputmethod/ImeTracker$Debug;->phaseToString(I)Ljava/lang/String; -HSPLandroid/view/inputmethod/ImeTracker$ImeJankTracker;->onRequestAnimation(Landroid/view/inputmethod/ImeTracker$InputMethodJankContext;IZ)V HSPLandroid/view/inputmethod/ImeTracker$Token$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/ImeTracker$Token; HSPLandroid/view/inputmethod/ImeTracker$Token$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; HSPLandroid/view/inputmethod/ImeTracker$Token;->-$$Nest$fgetmTag(Landroid/view/inputmethod/ImeTracker$Token;)Ljava/lang/String; @@ -19539,7 +19336,6 @@ HSPLandroid/view/inputmethod/ImeTracker$Token;->(Landroid/os/Parcel;)V HSPLandroid/view/inputmethod/ImeTracker$Token;->(Landroid/os/Parcel;Landroid/view/inputmethod/ImeTracker$Token-IA;)V HSPLandroid/view/inputmethod/ImeTracker$Token;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/inputmethod/ImeTracker;->()V -HSPLandroid/view/inputmethod/ImeTracker;->forJank()Landroid/view/inputmethod/ImeTracker$ImeJankTracker; HSPLandroid/view/inputmethod/ImeTracker;->forLogging()Landroid/view/inputmethod/ImeTracker; HSPLandroid/view/inputmethod/InlineSuggestionsRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InlineSuggestionsRequest; HSPLandroid/view/inputmethod/InlineSuggestionsRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object; @@ -19579,8 +19375,7 @@ HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->(Landroid/v HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onPostWindowGainedFocus(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;)V HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onPreWindowGainedFocus(Landroid/view/ViewRootImpl;)V HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onScheduledCheckFocus(Landroid/view/ViewRootImpl;)V -HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onViewDetachedFromWindow(Landroid/view/View;Landroid/view/ViewRootImpl;)V -HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onViewFocusChanged(Landroid/view/View;Z)V +HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onViewDetachedFromWindow(Landroid/view/View;Landroid/view/ViewRootImpl;)V+]Landroid/view/View;missing_types]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onWindowDismissed(Landroid/view/ViewRootImpl;)V HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->onWindowLostFocus(Landroid/view/ViewRootImpl;)V HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->setCurrentRootViewLocked(Landroid/view/ViewRootImpl;)V @@ -19589,7 +19384,6 @@ HSPLandroid/view/inputmethod/InputMethodManager$H;->(Landroid/view/inputme HSPLandroid/view/inputmethod/InputMethodManager$H;->handleMessage(Landroid/os/Message;)V HSPLandroid/view/inputmethod/InputMethodManager$ImeInputEventSender;->onInputEventFinished(IZ)V HSPLandroid/view/inputmethod/InputMethodManager$PendingEvent;->run()V -HSPLandroid/view/inputmethod/InputMethodManager;->-$$Nest$fgetmFallbackInputConnection(Landroid/view/inputmethod/InputMethodManager;)Landroid/view/inputmethod/RemoteInputConnectionImpl; HSPLandroid/view/inputmethod/InputMethodManager;->-$$Nest$fgetmFullscreenMode(Landroid/view/inputmethod/InputMethodManager;)Z HSPLandroid/view/inputmethod/InputMethodManager;->-$$Nest$fgetmImeDispatcher(Landroid/view/inputmethod/InputMethodManager;)Landroid/window/ImeOnBackInvokedDispatcher; HSPLandroid/view/inputmethod/InputMethodManager;->-$$Nest$fgetmImeInsetsConsumer(Landroid/view/inputmethod/InputMethodManager;)Landroid/view/ImeInsetsSourceConsumer; @@ -19610,7 +19404,7 @@ HSPLandroid/view/inputmethod/InputMethodManager;->(Lcom/android/internal/v HSPLandroid/view/inputmethod/InputMethodManager;->areSameInputChannel(Landroid/view/InputChannel;Landroid/view/InputChannel;)Z HSPLandroid/view/inputmethod/InputMethodManager;->canStartInput(Landroid/view/View;)Z HSPLandroid/view/inputmethod/InputMethodManager;->checkFocus()V -HSPLandroid/view/inputmethod/InputMethodManager;->checkFocusInternalLocked(ZLandroid/view/ViewRootImpl;)Z +HSPLandroid/view/inputmethod/InputMethodManager;->checkFocusInternalLocked(ZLandroid/view/ViewRootImpl;)Z+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager; HSPLandroid/view/inputmethod/InputMethodManager;->clearConnectionLocked()V HSPLandroid/view/inputmethod/InputMethodManager;->clearCurRootViewIfNeeded()Z HSPLandroid/view/inputmethod/InputMethodManager;->closeCurrentInput()V @@ -19624,12 +19418,12 @@ HSPLandroid/view/inputmethod/InputMethodManager;->finishInputLocked()V HSPLandroid/view/inputmethod/InputMethodManager;->finishedInputEvent(IZZ)V HSPLandroid/view/inputmethod/InputMethodManager;->flushPendingEventsLocked()V HSPLandroid/view/inputmethod/InputMethodManager;->forAccessibilitySessionsLocked(Ljava/util/function/Consumer;)V -HSPLandroid/view/inputmethod/InputMethodManager;->forContext(Landroid/content/Context;)Landroid/view/inputmethod/InputMethodManager; -HSPLandroid/view/inputmethod/InputMethodManager;->forContextInternal(ILandroid/os/Looper;)Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/view/inputmethod/InputMethodManager;->forContext(Landroid/content/Context;)Landroid/view/inputmethod/InputMethodManager;+]Landroid/content/res/Resources;Landroid/content/res/Resources; +HSPLandroid/view/inputmethod/InputMethodManager;->forContextInternal(ILandroid/os/Looper;)Landroid/view/inputmethod/InputMethodManager;+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLandroid/view/inputmethod/InputMethodManager;->getDelegate()Landroid/view/inputmethod/InputMethodManager$DelegateImpl; HSPLandroid/view/inputmethod/InputMethodManager;->getEnabledInputMethodList()Ljava/util/List; HSPLandroid/view/inputmethod/InputMethodManager;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List; -HSPLandroid/view/inputmethod/InputMethodManager;->getFallbackInputMethodManagerIfNecessary(Landroid/view/View;)Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/view/inputmethod/InputMethodManager;->getFallbackInputMethodManagerIfNecessary(Landroid/view/View;)Landroid/view/inputmethod/InputMethodManager;+]Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl; HSPLandroid/view/inputmethod/InputMethodManager;->getServedViewLocked()Landroid/view/View; HSPLandroid/view/inputmethod/InputMethodManager;->getStartInputFlags(Landroid/view/View;I)I HSPLandroid/view/inputmethod/InputMethodManager;->hasServedByInputMethodLocked(Landroid/view/View;)Z @@ -19638,7 +19432,7 @@ HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landro HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;I)Z HSPLandroid/view/inputmethod/InputMethodManager;->invalidateInput(Landroid/view/View;)V HSPLandroid/view/inputmethod/InputMethodManager;->isActive()Z -HSPLandroid/view/inputmethod/InputMethodManager;->isActive(Landroid/view/View;)Z +HSPLandroid/view/inputmethod/InputMethodManager;->isActive(Landroid/view/View;)Z+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager; HSPLandroid/view/inputmethod/InputMethodManager;->isCursorAnchorInfoEnabled()Z HSPLandroid/view/inputmethod/InputMethodManager;->isFullscreenMode()Z HSPLandroid/view/inputmethod/InputMethodManager;->isImeSessionAvailableLocked()Z @@ -19671,8 +19465,6 @@ HSPLandroid/view/inputmethod/InputMethodSubtype;->getLocale()Ljava/lang/String; HSPLandroid/view/inputmethod/InputMethodSubtype;->getMode()Ljava/lang/String; HSPLandroid/view/inputmethod/InputMethodSubtype;->hashCode()I HSPLandroid/view/inputmethod/InputMethodSubtypeArray;->get(I)Landroid/view/inputmethod/InputMethodSubtype; -HSPLandroid/view/inputmethod/RemoteInputConnectionImpl$$ExternalSyntheticLambda36;->(Landroid/view/inputmethod/RemoteInputConnectionImpl;I)V -HSPLandroid/view/inputmethod/RemoteInputConnectionImpl$$ExternalSyntheticLambda36;->run()V HSPLandroid/view/inputmethod/RemoteInputConnectionImpl$1;->(Landroid/view/inputmethod/RemoteInputConnectionImpl;)V HSPLandroid/view/inputmethod/RemoteInputConnectionImpl;->$r8$lambda$qFXKyAWDZEWw0AFK9ybLLKWARnY(Landroid/view/inputmethod/RemoteInputConnectionImpl;I)V HSPLandroid/view/inputmethod/RemoteInputConnectionImpl;->(Landroid/os/Looper;Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputMethodManager;Landroid/view/View;)V @@ -19689,7 +19481,7 @@ HSPLandroid/view/inputmethod/SurroundingText;->copyWithParcelableSpans(Ljava/lan HSPLandroid/view/inputmethod/SurroundingText;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/view/inputmethod/TextAppearanceInfo$Builder;->()V HSPLandroid/view/inputmethod/TextAppearanceInfo;->(Landroid/view/inputmethod/TextAppearanceInfo$Builder;)V -HSPLandroid/view/inputmethod/TextAppearanceInfo;->createFromTextView(Landroid/widget/TextView;)Landroid/view/inputmethod/TextAppearanceInfo;+]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/view/inputmethod/TextAppearanceInfo$Builder;Landroid/view/inputmethod/TextAppearanceInfo$Builder;]Landroid/graphics/Typeface;Landroid/graphics/Typeface;]Landroid/text/style/CharacterStyle;missing_types]Landroid/widget/TextView;missing_types]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types +HSPLandroid/view/inputmethod/TextAppearanceInfo;->createFromTextView(Landroid/widget/TextView;)Landroid/view/inputmethod/TextAppearanceInfo;+]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/text/Spanned;missing_types]Ljava/lang/CharSequence;missing_types]Landroid/view/inputmethod/TextAppearanceInfo$Builder;Landroid/view/inputmethod/TextAppearanceInfo$Builder;]Landroid/graphics/Typeface;Landroid/graphics/Typeface;]Landroid/text/style/CharacterStyle;megamorphic_types HSPLandroid/view/inputmethod/TextAppearanceInfo;->equals(Ljava/lang/Object;)Z HSPLandroid/view/inputmethod/TextAppearanceInfo;->writeToParcel(Landroid/os/Parcel;I)V+]Landroid/os/LocaleList;Landroid/os/LocaleList;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLandroid/view/inputmethod/ViewFocusParameterInfo;->(Landroid/view/inputmethod/EditorInfo;IIII)V @@ -20077,7 +19869,7 @@ HSPLandroid/widget/AutoCompleteTextView$DropDownItemClickListener;->(Landr HSPLandroid/widget/AutoCompleteTextView$MyWatcher;->(Landroid/widget/AutoCompleteTextView;)V HSPLandroid/widget/AutoCompleteTextView$PassThroughClickListener;->(Landroid/widget/AutoCompleteTextView;)V HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V -HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILandroid/content/res/Resources$Theme;)V +HSPLandroid/widget/AutoCompleteTextView;->(Landroid/content/Context;Landroid/util/AttributeSet;IILandroid/content/res/Resources$Theme;)V+]Landroid/widget/ListPopupWindow;Landroid/widget/ListPopupWindow;]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/AutoCompleteTextView;->setCompletionHint(Ljava/lang/CharSequence;)V HSPLandroid/widget/BaseAdapter;->()V HSPLandroid/widget/BaseAdapter;->areAllItemsEnabled()Z @@ -20156,7 +19948,7 @@ HSPLandroid/widget/Editor$AccessibilitySmartActions;->(Landroid/widget/Tex HSPLandroid/widget/Editor$Blink;->cancel()V HSPLandroid/widget/Editor$Blink;->run()V HSPLandroid/widget/Editor$Blink;->uncancel()V -HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;->updatePosition(IIZZ)V +HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;->updatePosition(IIZZ)V+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager; HSPLandroid/widget/Editor$EditOperation;->(Landroid/widget/Editor;Ljava/lang/String;ILjava/lang/String;Z)V HSPLandroid/widget/Editor$EditOperation;->commit()V HSPLandroid/widget/Editor$EditOperation;->forceMergeWith(Landroid/widget/Editor$EditOperation;)V @@ -20199,10 +19991,10 @@ HSPLandroid/widget/Editor$InsertionPointCursorController;->isCursorBeingModified HSPLandroid/widget/Editor$InsertionPointCursorController;->onDetached()V HSPLandroid/widget/Editor$InsertionPointCursorController;->onTouchEvent(Landroid/view/MotionEvent;)V HSPLandroid/widget/Editor$InsertionPointCursorController;->show()V -HSPLandroid/widget/Editor$PositionListener;->addSubscriber(Landroid/widget/Editor$TextViewPositionListener;Z)V +HSPLandroid/widget/Editor$PositionListener;->addSubscriber(Landroid/widget/Editor$TextViewPositionListener;Z)V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver; HSPLandroid/widget/Editor$PositionListener;->onPreDraw()Z+]Landroid/widget/Editor$TextViewPositionListener;Landroid/widget/Editor$CursorAnchorInfoNotifier; HSPLandroid/widget/Editor$PositionListener;->onScrollChanged()V -HSPLandroid/widget/Editor$PositionListener;->removeSubscriber(Landroid/widget/Editor$TextViewPositionListener;)V +HSPLandroid/widget/Editor$PositionListener;->removeSubscriber(Landroid/widget/Editor$TextViewPositionListener;)V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver; HSPLandroid/widget/Editor$PositionListener;->updatePosition()V HSPLandroid/widget/Editor$ProcessTextIntentActionsHandler;->(Landroid/widget/Editor;)V HSPLandroid/widget/Editor$SelectionModifierCursorController;->getMinTouchOffset()I @@ -20231,8 +20023,8 @@ HSPLandroid/widget/Editor$UndoInputFilter;->restoreInstanceState(Landroid/os/Par HSPLandroid/widget/Editor$UndoInputFilter;->saveInstanceState(Landroid/os/Parcel;)V HSPLandroid/widget/Editor;->-$$Nest$fgetmTextView(Landroid/widget/Editor;)Landroid/widget/TextView; HSPLandroid/widget/Editor;->-$$Nest$mgetInputMethodManager(Landroid/widget/Editor;)Landroid/view/inputmethod/InputMethodManager; -HSPLandroid/widget/Editor;->(Landroid/widget/TextView;)V -HSPLandroid/widget/Editor;->addSpanWatchers(Landroid/text/Spannable;)V +HSPLandroid/widget/Editor;->(Landroid/widget/TextView;)V+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/content/UndoManager;Landroid/content/UndoManager;]Landroid/content/Context;missing_types +HSPLandroid/widget/Editor;->addSpanWatchers(Landroid/text/Spannable;)V+]Landroid/text/Spannable;Landroid/text/SpannableString; HSPLandroid/widget/Editor;->adjustInputType(ZZZZ)V HSPLandroid/widget/Editor;->beginBatchEdit()V HSPLandroid/widget/Editor;->clampHorizontalPosition(Landroid/graphics/drawable/Drawable;F)I @@ -20240,17 +20032,17 @@ HSPLandroid/widget/Editor;->createInputContentTypeIfNeeded()V HSPLandroid/widget/Editor;->createInputMethodStateIfNeeded()V HSPLandroid/widget/Editor;->discardTextDisplayLists()V HSPLandroid/widget/Editor;->downgradeEasyCorrectionSpans()V -HSPLandroid/widget/Editor;->drawHardwareAccelerated(Landroid/graphics/Canvas;Landroid/text/Layout;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/util/ArraySet;Landroid/util/ArraySet; +HSPLandroid/widget/Editor;->drawHardwareAccelerated(Landroid/graphics/Canvas;Landroid/text/Layout;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V+]Landroid/text/DynamicLayout;Landroid/text/DynamicLayout;]Ljava/lang/Integer;Ljava/lang/Integer;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/util/ArraySet;Landroid/util/ArraySet; HSPLandroid/widget/Editor;->drawHardwareAcceleratedInner(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I[I[IIII)I HSPLandroid/widget/Editor;->endBatchEdit()V HSPLandroid/widget/Editor;->ensureEndedBatchEdit()V HSPLandroid/widget/Editor;->ensureNoSelectionIfNonSelectable()V -HSPLandroid/widget/Editor;->extractedTextModeWillBeStarted()Z +HSPLandroid/widget/Editor;->extractedTextModeWillBeStarted()Z+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager; HSPLandroid/widget/Editor;->finishBatchEdit(Landroid/widget/Editor$InputMethodState;)V HSPLandroid/widget/Editor;->forgetUndoRedo()V HSPLandroid/widget/Editor;->getAvailableDisplayListIndex([III)I HSPLandroid/widget/Editor;->getDefaultOnReceiveContentListener()Landroid/widget/TextViewOnReceiveContentListener; -HSPLandroid/widget/Editor;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager; +HSPLandroid/widget/Editor;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager;+]Landroid/content/Context;missing_types HSPLandroid/widget/Editor;->getInsertionController()Landroid/widget/Editor$InsertionPointCursorController; HSPLandroid/widget/Editor;->getLastTapPosition()I HSPLandroid/widget/Editor;->getPositionListener()Landroid/widget/Editor$PositionListener; @@ -20270,9 +20062,9 @@ HSPLandroid/widget/Editor;->loadCursorDrawable()V HSPLandroid/widget/Editor;->loadHandleDrawables(Z)V HSPLandroid/widget/Editor;->makeBlink()V HSPLandroid/widget/Editor;->maybeFireScheduledRestartInputForSetText()V -HSPLandroid/widget/Editor;->onAttachedToWindow()V -HSPLandroid/widget/Editor;->onDetachedFromWindow()V -HSPLandroid/widget/Editor;->onDraw(Landroid/graphics/Canvas;Landroid/text/Layout;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V +HSPLandroid/widget/Editor;->onAttachedToWindow()V+]Landroid/widget/Editor$PositionListener;Landroid/widget/Editor$PositionListener;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Ljava/lang/CharSequence;Landroid/text/SpannableString; +HSPLandroid/widget/Editor;->onDetachedFromWindow()V+]Landroid/widget/Editor$PositionListener;Landroid/widget/Editor$PositionListener;]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver;]Landroid/widget/TextViewOnReceiveContentListener;Landroid/widget/TextViewOnReceiveContentListener;]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/Editor;->onDraw(Landroid/graphics/Canvas;Landroid/text/Layout;Ljava/util/List;Ljava/util/List;Landroid/graphics/Path;Landroid/graphics/Paint;I)V+]Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager;]Landroid/widget/SelectionActionModeHelper;Landroid/widget/SelectionActionModeHelper;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; HSPLandroid/widget/Editor;->onFocusChanged(ZI)V HSPLandroid/widget/Editor;->onLocaleChanged()V HSPLandroid/widget/Editor;->onScreenStateChanged(I)V @@ -20280,14 +20072,14 @@ HSPLandroid/widget/Editor;->onScrollChanged()V HSPLandroid/widget/Editor;->onTouchEvent(Landroid/view/MotionEvent;)V HSPLandroid/widget/Editor;->onTouchUpEvent(Landroid/view/MotionEvent;)V HSPLandroid/widget/Editor;->onWindowFocusChanged(Z)V -HSPLandroid/widget/Editor;->prepareCursorControllers()V -HSPLandroid/widget/Editor;->refreshTextActionMode()V +HSPLandroid/widget/Editor;->prepareCursorControllers()V+]Landroid/view/View;missing_types]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/Editor;->refreshTextActionMode()V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/Editor;->reportExtractedText()Z HSPLandroid/widget/Editor;->restoreInstanceState(Landroid/os/ParcelableParcel;)V -HSPLandroid/widget/Editor;->resumeBlink()V +HSPLandroid/widget/Editor;->resumeBlink()V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/Editor;->saveInstanceState()Landroid/os/ParcelableParcel; HSPLandroid/widget/Editor;->scheduleRestartInputForSetText()V -HSPLandroid/widget/Editor;->sendOnTextChanged(III)V +HSPLandroid/widget/Editor;->sendOnTextChanged(III)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/SelectionActionModeHelper;Landroid/widget/SelectionActionModeHelper; HSPLandroid/widget/Editor;->sendUpdateSelection()V HSPLandroid/widget/Editor;->setFrame()V HSPLandroid/widget/Editor;->setTransformationMethod(Landroid/text/method/TransformationMethod;)V @@ -20312,12 +20104,12 @@ HSPLandroid/widget/ForwardingListener;->onViewAttachedToWindow(Landroid/view/Vie HSPLandroid/widget/ForwardingListener;->onViewDetachedFromWindow(Landroid/view/View;)V HSPLandroid/widget/FrameLayout$LayoutParams;->(II)V HSPLandroid/widget/FrameLayout$LayoutParams;->(III)V -HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/FrameLayout$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;)V HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/FrameLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/FrameLayout;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/FrameLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/FrameLayout;->generateDefaultLayoutParams()Landroid/widget/FrameLayout$LayoutParams; @@ -20325,13 +20117,13 @@ HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/util/AttributeSet HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/FrameLayout$LayoutParams; HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/FrameLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; -HSPLandroid/widget/FrameLayout;->getPaddingBottomWithForeground()I -HSPLandroid/widget/FrameLayout;->getPaddingLeftWithForeground()I -HSPLandroid/widget/FrameLayout;->getPaddingRightWithForeground()I -HSPLandroid/widget/FrameLayout;->getPaddingTopWithForeground()I -HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V +HSPLandroid/widget/FrameLayout;->getPaddingBottomWithForeground()I+]Landroid/widget/FrameLayout;missing_types +HSPLandroid/widget/FrameLayout;->getPaddingLeftWithForeground()I+]Landroid/widget/FrameLayout;missing_types +HSPLandroid/widget/FrameLayout;->getPaddingRightWithForeground()I+]Landroid/widget/FrameLayout;missing_types +HSPLandroid/widget/FrameLayout;->getPaddingTopWithForeground()I+]Landroid/widget/FrameLayout;missing_types +HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V+]Landroid/widget/FrameLayout;missing_types]Landroid/view/View;missing_types HSPLandroid/widget/FrameLayout;->onLayout(ZIIII)V -HSPLandroid/widget/FrameLayout;->onMeasure(II)V +HSPLandroid/widget/FrameLayout;->onMeasure(II)V+]Landroid/widget/FrameLayout;missing_types]Landroid/view/View;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/widget/FrameLayout;->setForegroundGravity(I)V HSPLandroid/widget/FrameLayout;->setMeasureAllChildren(Z)V HSPLandroid/widget/FrameLayout;->shouldDelayChildPressedState()Z @@ -20408,7 +20200,7 @@ HSPLandroid/widget/HorizontalScrollView;->getAccessibilityClassName()Ljava/lang/ HSPLandroid/widget/HorizontalScrollView;->getScrollRange()I HSPLandroid/widget/HorizontalScrollView;->inChild(II)Z HSPLandroid/widget/HorizontalScrollView;->initScrollView()V -HSPLandroid/widget/HorizontalScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V +HSPLandroid/widget/HorizontalScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V+]Landroid/view/View;Landroid/widget/LinearLayout; HSPLandroid/widget/HorizontalScrollView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z HSPLandroid/widget/HorizontalScrollView;->onLayout(ZIIII)V HSPLandroid/widget/HorizontalScrollView;->onMeasure(II)V @@ -20428,13 +20220,13 @@ HSPLandroid/widget/ImageView$ScaleType;->values()[Landroid/widget/ImageView$Scal HSPLandroid/widget/ImageView;->(Landroid/content/Context;)V HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/ImageView;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; +HSPLandroid/widget/ImageView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/ImageView;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/Context;missing_types HSPLandroid/widget/ImageView;->applyAlpha()V -HSPLandroid/widget/ImageView;->applyColorFilter()V -HSPLandroid/widget/ImageView;->applyImageTint()V +HSPLandroid/widget/ImageView;->applyColorFilter()V+]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/widget/ImageView;->applyImageTint()V+]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/widget/ImageView;->applyXfermode()V HSPLandroid/widget/ImageView;->clearColorFilter()V -HSPLandroid/widget/ImageView;->configureBounds()V +HSPLandroid/widget/ImageView;->configureBounds()V+]Landroid/graphics/RectF;Landroid/graphics/RectF;]Landroid/graphics/Matrix;Landroid/graphics/Matrix;]Landroid/graphics/drawable/Drawable;missing_types]Landroid/widget/ImageView;missing_types HSPLandroid/widget/ImageView;->drawableHotspotChanged(FF)V HSPLandroid/widget/ImageView;->drawableStateChanged()V HSPLandroid/widget/ImageView;->getAccessibilityClassName()Ljava/lang/CharSequence; @@ -20443,18 +20235,18 @@ HSPLandroid/widget/ImageView;->getDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/ImageView;->getImageMatrix()Landroid/graphics/Matrix; HSPLandroid/widget/ImageView;->getScaleType()Landroid/widget/ImageView$ScaleType; HSPLandroid/widget/ImageView;->hasOverlappingRendering()Z -HSPLandroid/widget/ImageView;->initImageView()V -HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->initImageView()V+]Landroid/widget/ImageView;missing_types +HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/widget/ImageView;->isFilledByImage()Z -HSPLandroid/widget/ImageView;->isOpaque()Z -HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/ImageView;->isOpaque()Z+]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/widget/ImageView;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/widget/ImageView;->onAttachedToWindow()V HSPLandroid/widget/ImageView;->onCreateDrawableState(I)[I HSPLandroid/widget/ImageView;->onDetachedFromWindow()V -HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V -HSPLandroid/widget/ImageView;->onMeasure(II)V +HSPLandroid/widget/ImageView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;,Landroid/graphics/Canvas;]Landroid/graphics/drawable/Drawable;missing_types +HSPLandroid/widget/ImageView;->onMeasure(II)V+]Landroid/widget/ImageView;missing_types HSPLandroid/widget/ImageView;->onRtlPropertiesChanged(I)V -HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V +HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V+]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/widget/ImageView;->resizeFromDrawable()V HSPLandroid/widget/ImageView;->resolveAdjustedSize(III)I HSPLandroid/widget/ImageView;->resolveUri()V @@ -20468,7 +20260,7 @@ HSPLandroid/widget/ImageView;->setCropToPadding(Z)V HSPLandroid/widget/ImageView;->setFrame(IIII)Z HSPLandroid/widget/ImageView;->setImageAlpha(I)V HSPLandroid/widget/ImageView;->setImageBitmap(Landroid/graphics/Bitmap;)V -HSPLandroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ImageView;missing_types HSPLandroid/widget/ImageView;->setImageMatrix(Landroid/graphics/Matrix;)V HSPLandroid/widget/ImageView;->setImageResource(I)V HSPLandroid/widget/ImageView;->setImageTintBlendMode(Landroid/graphics/BlendMode;)V @@ -20478,24 +20270,24 @@ HSPLandroid/widget/ImageView;->setMaxWidth(I)V HSPLandroid/widget/ImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V HSPLandroid/widget/ImageView;->setSelected(Z)V HSPLandroid/widget/ImageView;->setVisibility(I)V -HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ImageView;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/widget/ImageView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z HSPLandroid/widget/LinearLayout$LayoutParams;->(II)V HSPLandroid/widget/LinearLayout$LayoutParams;->(IIF)V -HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/Context;missing_types HSPLandroid/widget/LinearLayout$LayoutParams;->(Landroid/view/ViewGroup$LayoutParams;)V HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;)V HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/LinearLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/content/Context;missing_types]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/LinearLayout;missing_types HSPLandroid/widget/LinearLayout;->allViewsAreGoneBefore(I)Z HSPLandroid/widget/LinearLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z HSPLandroid/widget/LinearLayout;->forceUniformHeight(II)V HSPLandroid/widget/LinearLayout;->forceUniformWidth(II)V HSPLandroid/widget/LinearLayout;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/LinearLayout;->generateDefaultLayoutParams()Landroid/widget/LinearLayout$LayoutParams; -HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams; -HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/LinearLayout$LayoutParams; +HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; +HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/LinearLayout$LayoutParams;+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams; HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/LinearLayout$LayoutParams; HSPLandroid/widget/LinearLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; @@ -20506,23 +20298,23 @@ HSPLandroid/widget/LinearLayout;->getGravity()I HSPLandroid/widget/LinearLayout;->getLocationOffset(Landroid/view/View;)I HSPLandroid/widget/LinearLayout;->getNextLocationOffset(Landroid/view/View;)I HSPLandroid/widget/LinearLayout;->getOrientation()I -HSPLandroid/widget/LinearLayout;->getVirtualChildAt(I)Landroid/view/View; -HSPLandroid/widget/LinearLayout;->getVirtualChildCount()I +HSPLandroid/widget/LinearLayout;->getVirtualChildAt(I)Landroid/view/View;+]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->getVirtualChildCount()I+]Landroid/widget/LinearLayout;missing_types HSPLandroid/widget/LinearLayout;->hasDividerBeforeChildAt(I)Z -HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V -HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V -HSPLandroid/widget/LinearLayout;->measureChildBeforeLayout(Landroid/view/View;IIIII)V -HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V -HSPLandroid/widget/LinearLayout;->measureVertical(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; +HSPLandroid/widget/LinearLayout;->layoutHorizontal(IIII)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->layoutVertical(IIII)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->measureChildBeforeLayout(Landroid/view/View;IIIII)V+]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->measureHorizontal(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types +HSPLandroid/widget/LinearLayout;->measureVertical(II)V+]Landroid/view/View;missing_types]Landroid/widget/LinearLayout;missing_types HSPLandroid/widget/LinearLayout;->onDraw(Landroid/graphics/Canvas;)V -HSPLandroid/widget/LinearLayout;->onLayout(ZIIII)V -HSPLandroid/widget/LinearLayout;->onMeasure(II)V -HSPLandroid/widget/LinearLayout;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/LinearLayout;->onLayout(ZIIII)V+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; +HSPLandroid/widget/LinearLayout;->onMeasure(II)V+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; +HSPLandroid/widget/LinearLayout;->onRtlPropertiesChanged(I)V+]Landroid/widget/LinearLayout;missing_types HSPLandroid/widget/LinearLayout;->setBaselineAligned(Z)V -HSPLandroid/widget/LinearLayout;->setChildFrame(Landroid/view/View;IIII)V +HSPLandroid/widget/LinearLayout;->setChildFrame(Landroid/view/View;IIII)V+]Landroid/view/View;missing_types HSPLandroid/widget/LinearLayout;->setDividerDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/LinearLayout;->setGravity(I)V -HSPLandroid/widget/LinearLayout;->setOrientation(I)V +HSPLandroid/widget/LinearLayout;->setOrientation(I)V+]Landroid/widget/LinearLayout;Landroid/widget/LinearLayout; HSPLandroid/widget/LinearLayout;->shouldDelayChildPressedState()Z HSPLandroid/widget/ListPopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/ListPopupWindow;->isShowing()Z @@ -20589,7 +20381,7 @@ HSPLandroid/widget/OverScroller$SplineOverScroller;->updateScroll(F)V HSPLandroid/widget/OverScroller;->(Landroid/content/Context;)V HSPLandroid/widget/OverScroller;->(Landroid/content/Context;Landroid/view/animation/Interpolator;)V HSPLandroid/widget/OverScroller;->(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V -HSPLandroid/widget/OverScroller;->abortAnimation()V +HSPLandroid/widget/OverScroller;->abortAnimation()V+]Landroid/widget/OverScroller$SplineOverScroller;Landroid/widget/OverScroller$SplineOverScroller; HSPLandroid/widget/OverScroller;->computeScrollOffset()Z HSPLandroid/widget/OverScroller;->fling(IIIIIIII)V HSPLandroid/widget/OverScroller;->fling(IIIIIIIIII)V @@ -20609,7 +20401,7 @@ HSPLandroid/widget/PopupWindow$PopupDecorView;->onAttachedToWindow()V HSPLandroid/widget/PopupWindow$PopupDecorView;->onDetachedFromWindow()V HSPLandroid/widget/PopupWindow;->-$$Nest$munregisterBackCallback(Landroid/widget/PopupWindow;Landroid/window/OnBackInvokedDispatcher;)V HSPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V +HSPLandroid/widget/PopupWindow;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/widget/PopupWindow;Landroid/widget/PopupWindow;]Landroid/content/Context;Landroid/view/ContextThemeWrapper;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/PopupWindow;->(Landroid/view/View;II)V HSPLandroid/widget/PopupWindow;->(Landroid/view/View;IIZ)V HSPLandroid/widget/PopupWindow;->attachToAnchor(Landroid/view/View;III)V @@ -20680,7 +20472,7 @@ HSPLandroid/widget/ProgressBar;->getMin()I HSPLandroid/widget/ProgressBar;->getProgress()I HSPLandroid/widget/ProgressBar;->getProgressDrawable()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/ProgressBar;->initProgressBar()V -HSPLandroid/widget/ProgressBar;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/ProgressBar;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ProgressBar;missing_types]Landroid/graphics/drawable/Drawable;missing_types HSPLandroid/widget/ProgressBar;->isIndeterminate()Z HSPLandroid/widget/ProgressBar;->jumpDrawablesToCurrentState()V HSPLandroid/widget/ProgressBar;->needsTileify(Landroid/graphics/drawable/Drawable;)Z @@ -20729,7 +20521,7 @@ HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fgetmTop(Landroid/widge HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fputmBottom(Landroid/widget/RelativeLayout$LayoutParams;I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->-$$Nest$fputmTop(Landroid/widget/RelativeLayout$LayoutParams;I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->(II)V -HSPLandroid/widget/RelativeLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V +HSPLandroid/widget/RelativeLayout$LayoutParams;->(Landroid/content/Context;Landroid/util/AttributeSet;)V+]Landroid/content/pm/ApplicationInfo;Landroid/content/pm/ApplicationInfo;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray; HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(II)V HSPLandroid/widget/RelativeLayout$LayoutParams;->getRules()[I @@ -20738,7 +20530,7 @@ HSPLandroid/widget/RelativeLayout$LayoutParams;->hasRelativeRules()Z HSPLandroid/widget/RelativeLayout$LayoutParams;->removeRule(I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->resolveLayoutDirection(I)V HSPLandroid/widget/RelativeLayout$LayoutParams;->resolveRules(I)V -HSPLandroid/widget/RelativeLayout$LayoutParams;->shouldResolveLayoutDirection(I)Z +HSPLandroid/widget/RelativeLayout$LayoutParams;->shouldResolveLayoutDirection(I)Z+]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;)V HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/RelativeLayout;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V @@ -20756,16 +20548,16 @@ HSPLandroid/widget/RelativeLayout;->generateLayoutParams(Landroid/view/ViewGroup HSPLandroid/widget/RelativeLayout;->getAccessibilityClassName()Ljava/lang/CharSequence; HSPLandroid/widget/RelativeLayout;->getBaseline()I HSPLandroid/widget/RelativeLayout;->getChildMeasureSpec(IIIIIIII)I -HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;+]Landroid/util/SparseArray;Landroid/util/SparseArray; +HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;+]Landroid/view/View;missing_types]Landroid/util/SparseArray;Landroid/util/SparseArray;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->getRelatedViewBaselineOffset([I)I HSPLandroid/widget/RelativeLayout;->getRelatedViewParams([II)Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V HSPLandroid/widget/RelativeLayout;->measureChild(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/view/View;missing_types HSPLandroid/widget/RelativeLayout;->measureChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V+]Landroid/view/View;missing_types -HSPLandroid/widget/RelativeLayout;->onLayout(ZIIII)V+]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;]Landroid/view/View;missing_types -HSPLandroid/widget/RelativeLayout;->onMeasure(II)V+]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;]Landroid/view/View;missing_types]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; -HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V -HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/widget/RelativeLayout;Landroid/widget/RelativeLayout;]Landroid/view/View;Landroid/widget/Switch;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; +HSPLandroid/widget/RelativeLayout;->onLayout(ZIIII)V+]Landroid/widget/RelativeLayout;missing_types]Landroid/view/View;missing_types +HSPLandroid/widget/RelativeLayout;->onMeasure(II)V+]Landroid/widget/RelativeLayout;missing_types]Landroid/view/View;missing_types]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; +HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V+]Landroid/widget/RelativeLayout;missing_types]Landroid/view/View;missing_types +HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/widget/RelativeLayout;missing_types]Landroid/view/View;Landroid/widget/Switch;]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z+]Landroid/view/View;missing_types]Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams; HSPLandroid/widget/RelativeLayout;->queryCompatibilityModes(Landroid/content/Context;)V HSPLandroid/widget/RelativeLayout;->requestLayout()V @@ -20847,16 +20639,16 @@ HSPLandroid/widget/RtlSpacingHelper;->setAbsolute(II)V HSPLandroid/widget/RtlSpacingHelper;->setDirection(Z)V HSPLandroid/widget/RtlSpacingHelper;->setRelative(II)V HSPLandroid/widget/ScrollBarDrawable;->()V -HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V -HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V +HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V+]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas; +HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; HSPLandroid/widget/ScrollBarDrawable;->getSize(Z)I -HSPLandroid/widget/ScrollBarDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/widget/ScrollBarDrawable;->isStateful()Z +HSPLandroid/widget/ScrollBarDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable; +HSPLandroid/widget/ScrollBarDrawable;->isStateful()Z+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; HSPLandroid/widget/ScrollBarDrawable;->mutate()Landroid/widget/ScrollBarDrawable; HSPLandroid/widget/ScrollBarDrawable;->onBoundsChange(Landroid/graphics/Rect;)V -HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z -HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V -HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V +HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; +HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/ScrollBarDrawable;Landroid/widget/ScrollBarDrawable;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; +HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/GradientDrawable; HSPLandroid/widget/ScrollBarDrawable;->setAlwaysDrawVerticalTrack(Z)V HSPLandroid/widget/ScrollBarDrawable;->setHorizontalThumbDrawable(Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/ScrollBarDrawable;->setHorizontalTrackDrawable(Landroid/graphics/drawable/Drawable;)V @@ -20907,16 +20699,13 @@ HSPLandroid/widget/SelectionActionModeHelper$$ExternalSyntheticLambda8;->( HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;->isSelectionStarted()Z HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;->onTextChanged(IILandroid/view/textclassifier/TextClassification;)V HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;->resetSelection(ILandroid/widget/Editor;)Z -HSPLandroid/widget/SelectionActionModeHelper$TextClassificationHelper;->init(Ljava/util/function/Supplier;Ljava/lang/CharSequence;IILandroid/os/LocaleList;)V -HSPLandroid/widget/SelectionActionModeHelper;->(Landroid/widget/Editor;)V +HSPLandroid/widget/SelectionActionModeHelper$TextClassificationHelper;->init(Ljava/util/function/Supplier;Ljava/lang/CharSequence;IILandroid/os/LocaleList;)V+]Ljava/lang/CharSequence;Landroid/text/SpannableString; +HSPLandroid/widget/SelectionActionModeHelper;->(Landroid/widget/Editor;)V+]Landroid/view/textclassifier/TextClassificationConstants;Landroid/view/textclassifier/TextClassificationConstants;]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/SelectionActionModeHelper;->getText(Landroid/widget/TextView;)Ljava/lang/CharSequence; HSPLandroid/widget/SelectionActionModeHelper;->getTextClassificationSettings()Landroid/view/textclassifier/TextClassificationConstants; -HSPLandroid/widget/SelectionActionModeHelper;->isDrawingHighlight()Z+]Landroid/widget/SmartSelectSprite;Landroid/widget/SmartSelectSprite; -HSPLandroid/widget/SelectionActionModeHelper;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/widget/SelectionActionModeHelper;Landroid/widget/SelectionActionModeHelper; -HSPLandroid/widget/SelectionActionModeHelper;->onTextChanged(II)V +HSPLandroid/widget/SelectionActionModeHelper;->onTextChanged(II)V+]Landroid/widget/SelectionActionModeHelper$SelectionTracker;Landroid/widget/SelectionActionModeHelper$SelectionTracker; HSPLandroid/widget/SelectionActionModeHelper;->sortSelectionIndices(II)[I HSPLandroid/widget/SmartSelectSprite;->(Landroid/content/Context;ILjava/lang/Runnable;)V -HSPLandroid/widget/SmartSelectSprite;->isAnimationActive()Z HSPLandroid/widget/Space;->(Landroid/content/Context;)V HSPLandroid/widget/Space;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/Space;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V @@ -20975,21 +20764,21 @@ HSPLandroid/widget/TextView$TextAppearanceAttributes;->(Landroid/widget/Te HSPLandroid/widget/TextView;->(Landroid/content/Context;)V HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;I)V -HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/content/Context;missing_types]Landroid/widget/TextView;megamorphic_types +HSPLandroid/widget/TextView;->(Landroid/content/Context;Landroid/util/AttributeSet;II)V+]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/content/res/Resources$Theme;Landroid/content/res/Resources$Theme;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/content/Context;missing_types]Landroid/widget/TextView;megamorphic_types]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/view/ViewConfiguration;Landroid/view/ViewConfiguration; HSPLandroid/widget/TextView;->addSearchHighlightPaths()V HSPLandroid/widget/TextView;->addTextChangedListener(Landroid/text/TextWatcher;)V HSPLandroid/widget/TextView;->applyCompoundDrawableTint()V HSPLandroid/widget/TextView;->applySingleLine(ZZZZ)V -HSPLandroid/widget/TextView;->applyTextAppearance(Landroid/widget/TextView$TextAppearanceAttributes;)V +HSPLandroid/widget/TextView;->applyTextAppearance(Landroid/widget/TextView$TextAppearanceAttributes;)V+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->assumeLayout()V HSPLandroid/widget/TextView;->autoSizeText()V HSPLandroid/widget/TextView;->beginBatchEdit()V HSPLandroid/widget/TextView;->bringPointIntoView(I)Z -HSPLandroid/widget/TextView;->bringPointIntoView(IZ)Z +HSPLandroid/widget/TextView;->bringPointIntoView(IZ)Z+]Landroid/text/Layout$Alignment;Landroid/text/Layout$Alignment;]Landroid/text/Layout;Landroid/text/DynamicLayout; HSPLandroid/widget/TextView;->bringTextIntoView()Z HSPLandroid/widget/TextView;->canMarquee()Z HSPLandroid/widget/TextView;->cancelLongPress()V -HSPLandroid/widget/TextView;->checkForRelayout()V +HSPLandroid/widget/TextView;->checkForRelayout()V+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout; HSPLandroid/widget/TextView;->checkForResize()V HSPLandroid/widget/TextView;->cleanupAutoSizePresetSizes([I)[I HSPLandroid/widget/TextView;->compressText(F)Z+]Landroid/text/Layout;Landroid/text/BoringLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint; @@ -20999,11 +20788,10 @@ HSPLandroid/widget/TextView;->computeVerticalScrollExtent()I+]Landroid/widget/Te HSPLandroid/widget/TextView;->computeVerticalScrollRange()I HSPLandroid/widget/TextView;->convertToLocalHorizontalCoordinate(F)F HSPLandroid/widget/TextView;->createEditorIfNeeded()V -HSPLandroid/widget/TextView;->desired(Landroid/text/Layout;)I HSPLandroid/widget/TextView;->didTouchFocusSelect()Z HSPLandroid/widget/TextView;->doKeyDown(ILandroid/view/KeyEvent;Landroid/view/KeyEvent;)I HSPLandroid/widget/TextView;->drawableHotspotChanged(FF)V -HSPLandroid/widget/TextView;->drawableStateChanged()V +HSPLandroid/widget/TextView;->drawableStateChanged()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/widget/TextView;->endBatchEdit()V HSPLandroid/widget/TextView;->findLargestTextSizeWhichFits(Landroid/graphics/RectF;)I HSPLandroid/widget/TextView;->fixFocusableAndClickableSettings()V @@ -21030,13 +20818,12 @@ HSPLandroid/widget/TextView;->getCursorAnchorInfo(ILandroid/view/inputmethod/Cur HSPLandroid/widget/TextView;->getDefaultEditable()Z HSPLandroid/widget/TextView;->getDefaultMovementMethod()Landroid/text/method/MovementMethod; HSPLandroid/widget/TextView;->getDesiredHeight()I -HSPLandroid/widget/TextView;->getDesiredHeight(Landroid/text/Layout;Z)I -HSPLandroid/widget/TextView;->getDisplayMetricsOrSystem()Landroid/util/DisplayMetrics; +HSPLandroid/widget/TextView;->getDesiredHeight(Landroid/text/Layout;Z)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->getEditableText()Landroid/text/Editable; HSPLandroid/widget/TextView;->getEllipsize()Landroid/text/TextUtils$TruncateAt; HSPLandroid/widget/TextView;->getError()Ljava/lang/CharSequence; -HSPLandroid/widget/TextView;->getExtendedPaddingBottom()I -HSPLandroid/widget/TextView;->getExtendedPaddingTop()I +HSPLandroid/widget/TextView;->getExtendedPaddingBottom()I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types +HSPLandroid/widget/TextView;->getExtendedPaddingTop()I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->getFilters()[Landroid/text/InputFilter; HSPLandroid/widget/TextView;->getFocusedRect(Landroid/graphics/Rect;)V HSPLandroid/widget/TextView;->getFreezesText()Z @@ -21063,23 +20850,22 @@ HSPLandroid/widget/TextView;->getLineSpacingMultiplier()F HSPLandroid/widget/TextView;->getMaxEms()I HSPLandroid/widget/TextView;->getMaxLines()I HSPLandroid/widget/TextView;->getMinEms()I -HSPLandroid/widget/TextView;->getMinLines()I HSPLandroid/widget/TextView;->getMinWidth()I HSPLandroid/widget/TextView;->getOffsetAtCoordinate(IF)I HSPLandroid/widget/TextView;->getOffsetForPosition(FF)I HSPLandroid/widget/TextView;->getPaint()Landroid/text/TextPaint; -HSPLandroid/widget/TextView;->getSelectionEnd()I +HSPLandroid/widget/TextView;->getSelectionEnd()I+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->getSelectionEndTransformed()I -HSPLandroid/widget/TextView;->getSelectionStart()I +HSPLandroid/widget/TextView;->getSelectionStart()I+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->getSelectionStartTransformed()I HSPLandroid/widget/TextView;->getServiceManagerForUser(Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/Object; HSPLandroid/widget/TextView;->getSpellCheckerLocale()Ljava/util/Locale; HSPLandroid/widget/TextView;->getText()Ljava/lang/CharSequence; HSPLandroid/widget/TextView;->getTextColors()Landroid/content/res/ColorStateList; HSPLandroid/widget/TextView;->getTextCursorDrawable()Landroid/graphics/drawable/Drawable; -HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic; -HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale; -HSPLandroid/widget/TextView;->getTextLocales()Landroid/os/LocaleList; +HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;+]Landroid/widget/TextView;missing_types +HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale;+]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/widget/TextView;->getTextLocales()Landroid/os/LocaleList;+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/widget/TextView;->getTextSelectHandle()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/TextView;->getTextSelectHandleLeft()Landroid/graphics/drawable/Drawable; HSPLandroid/widget/TextView;->getTextSelectHandleRight()Landroid/graphics/drawable/Drawable; @@ -21091,23 +20877,23 @@ HSPLandroid/widget/TextView;->getTotalPaddingTop()I HSPLandroid/widget/TextView;->getTransformationMethod()Landroid/text/method/TransformationMethod; HSPLandroid/widget/TextView;->getTypeface()Landroid/graphics/Typeface; HSPLandroid/widget/TextView;->getTypefaceStyle()I -HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path; -HSPLandroid/widget/TextView;->getVerticalOffset(Z)I +HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path;+]Landroid/graphics/Path;Landroid/graphics/Path;]Landroid/graphics/Paint;Landroid/graphics/Paint;]Landroid/text/Layout;Landroid/text/DynamicLayout;]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/TextView;->getVerticalOffset(Z)I+]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Ljava/lang/CharSequence;missing_types HSPLandroid/widget/TextView;->handleBackInTextActionModeIfNeeded(Landroid/view/KeyEvent;)Z HSPLandroid/widget/TextView;->handleTextChanged(Ljava/lang/CharSequence;III)V HSPLandroid/widget/TextView;->hasGesturePreviewHighlight()Z HSPLandroid/widget/TextView;->hasOverlappingRendering()Z HSPLandroid/widget/TextView;->hasPasswordTransformationMethod()Z -HSPLandroid/widget/TextView;->hasSelection()Z +HSPLandroid/widget/TextView;->hasSelection()Z+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->hideErrorIfUnchanged()V HSPLandroid/widget/TextView;->invalidateCursor()V -HSPLandroid/widget/TextView;->invalidateCursorPath()V -HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->invalidateCursorPath()V+]Landroid/graphics/Path;Landroid/graphics/Path;]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/TextView;missing_types]Landroid/graphics/drawable/Drawable;megamorphic_types HSPLandroid/widget/TextView;->invalidateRegion(IIZ)V HSPLandroid/widget/TextView;->isAnyPasswordInputType()Z HSPLandroid/widget/TextView;->isAutoHandwritingEnabled()Z+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->isAutoSizeEnabled()Z -HSPLandroid/widget/TextView;->isAutofillable()Z +HSPLandroid/widget/TextView;->isAutofillable()Z+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->isFallbackLineSpacingForStaticLayout()Z HSPLandroid/widget/TextView;->isFromPrimePointer(Landroid/view/MotionEvent;Z)Z HSPLandroid/widget/TextView;->isInBatchEditMode()Z @@ -21116,28 +20902,28 @@ HSPLandroid/widget/TextView;->isInputMethodTarget()Z HSPLandroid/widget/TextView;->isMarqueeFadeEnabled()Z HSPLandroid/widget/TextView;->isMultilineInputType(I)Z HSPLandroid/widget/TextView;->isPasswordInputType(I)Z -HSPLandroid/widget/TextView;->isPositionVisible(FF)Z +HSPLandroid/widget/TextView;->isPositionVisible(FF)Z+]Landroid/view/View;missing_types]Landroid/graphics/Matrix;Landroid/graphics/Matrix; HSPLandroid/widget/TextView;->isShowingHint()Z HSPLandroid/widget/TextView;->isSuggestionsEnabled()Z HSPLandroid/widget/TextView;->isTextEditable()Z HSPLandroid/widget/TextView;->isTextSelectable()Z HSPLandroid/widget/TextView;->isVisibleToAccessibility()Z -HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V +HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V+]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/widget/TextView;->length()I -HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V -HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout; -HSPLandroid/widget/TextView;->maybeUpdateHighlightPaths()V -HSPLandroid/widget/TextView;->notifyContentCaptureTextChanged()V -HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V -HSPLandroid/widget/TextView;->nullLayouts()V -HSPLandroid/widget/TextView;->onAttachedToWindow()V +HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;]Ljava/lang/CharSequence;Ljava/lang/String;]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder; +HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout;+]Landroid/text/BoringLayout;Landroid/text/BoringLayout;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;]Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$Builder;]Landroid/text/DynamicLayout$Builder;Landroid/text/DynamicLayout$Builder;]Landroid/widget/TextView;missing_types +HSPLandroid/widget/TextView;->maybeUpdateHighlightPaths()V+]Ljava/util/List;Ljava/util/ArrayList; +HSPLandroid/widget/TextView;->notifyContentCaptureTextChanged()V+]Landroid/view/contentcapture/ContentCaptureManager;Landroid/view/contentcapture/ContentCaptureManager;]Landroid/view/contentcapture/ContentCaptureSession;Landroid/view/contentcapture/MainContentCaptureSession; +HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V+]Landroid/widget/TextView;missing_types]Landroid/view/autofill/AutofillManager;Landroid/view/autofill/AutofillManager;]Landroid/content/Context;missing_types +HSPLandroid/widget/TextView;->nullLayouts()V+]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/TextView;->onAttachedToWindow()V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/TextView;->onBeginBatchEdit()V HSPLandroid/widget/TextView;->onCheckIsTextEditor()Z HSPLandroid/widget/TextView;->onConfigurationChanged(Landroid/content/res/Configuration;)V -HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I +HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection; -HSPLandroid/widget/TextView;->onDetachedFromWindowInternal()V -HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V +HSPLandroid/widget/TextView;->onDetachedFromWindowInternal()V+]Landroid/widget/Editor;Landroid/widget/Editor; +HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;,Landroid/text/DynamicLayout;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Canvas;Landroid/graphics/RecordingCanvas;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/BitmapDrawable;,Landroid/graphics/drawable/VectorDrawable;]Landroid/widget/Editor;Landroid/widget/Editor;]Ljava/lang/CharSequence;Landroid/text/SpannableStringBuilder;]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->onEditorAction(I)V HSPLandroid/widget/TextView;->onEndBatchEdit()V HSPLandroid/widget/TextView;->onFocusChanged(ZILandroid/graphics/Rect;)V @@ -21148,12 +20934,12 @@ HSPLandroid/widget/TextView;->onKeyPreIme(ILandroid/view/KeyEvent;)Z HSPLandroid/widget/TextView;->onKeyUp(ILandroid/view/KeyEvent;)Z HSPLandroid/widget/TextView;->onLayout(ZIIII)V HSPLandroid/widget/TextView;->onLocaleChanged()V -HSPLandroid/widget/TextView;->onMeasure(II)V+]Landroid/text/Layout;Landroid/text/BoringLayout; +HSPLandroid/widget/TextView;->onMeasure(II)V+]Landroid/text/Layout;Landroid/text/BoringLayout;,Landroid/text/StaticLayout;,Landroid/text/DynamicLayout;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; HSPLandroid/widget/TextView;->onPreDraw()Z -HSPLandroid/widget/TextView;->onProvideStructure(Landroid/view/ViewStructure;II)V +HSPLandroid/widget/TextView;->onProvideStructure(Landroid/view/ViewStructure;II)V+]Landroid/view/View;missing_types]Landroid/widget/TextViewOnReceiveContentListener;Landroid/widget/TextViewOnReceiveContentListener;]Landroid/text/InputFilter$LengthFilter;Landroid/text/InputFilter$LengthFilter;]Landroid/text/Layout;Landroid/text/DynamicLayout;,Landroid/text/BoringLayout;,Landroid/text/StaticLayout;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/view/ViewStructure;Landroid/app/assist/AssistStructure$ViewNodeBuilder;,Landroid/view/contentcapture/ViewNode$ViewStructureImpl;]Ljava/lang/CharSequence;Ljava/lang/String;,Landroid/text/SpannedString;,Landroid/text/SpannableString; HSPLandroid/widget/TextView;->onResolveDrawables(I)V HSPLandroid/widget/TextView;->onRestoreInstanceState(Landroid/os/Parcelable;)V -HSPLandroid/widget/TextView;->onRtlPropertiesChanged(I)V +HSPLandroid/widget/TextView;->onRtlPropertiesChanged(I)V+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->onSaveInstanceState()Landroid/os/Parcelable; HSPLandroid/widget/TextView;->onScreenStateChanged(I)V HSPLandroid/widget/TextView;->onScrollChanged(IIII)V @@ -21165,12 +20951,12 @@ HSPLandroid/widget/TextView;->onVisibilityChanged(Landroid/view/View;I)V HSPLandroid/widget/TextView;->onWindowFocusChanged(Z)V HSPLandroid/widget/TextView;->originalToTransformed(II)I HSPLandroid/widget/TextView;->preloadFontCache()V -HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V -HSPLandroid/widget/TextView;->registerForPreDraw()V +HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray;]Landroid/util/TypedValue;Landroid/util/TypedValue;]Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;]Landroid/content/Context;missing_types +HSPLandroid/widget/TextView;->registerForPreDraw()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver; HSPLandroid/widget/TextView;->removeAdjacentSuggestionSpans(I)V -HSPLandroid/widget/TextView;->removeIntersectingNonAdjacentSpans(IILjava/lang/Class;)V +HSPLandroid/widget/TextView;->removeIntersectingNonAdjacentSpans(IILjava/lang/Class;)V+]Landroid/text/Editable;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLandroid/widget/TextView;->removeMisspelledSpans(Landroid/text/Spannable;)V -HSPLandroid/widget/TextView;->removeSuggestionSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; +HSPLandroid/widget/TextView;->removeSuggestionSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Landroid/text/SpannableString;]Landroid/text/Spannable;Landroid/text/SpannableString; HSPLandroid/widget/TextView;->removeTextChangedListener(Landroid/text/TextWatcher;)V HSPLandroid/widget/TextView;->resetErrorChangedFlag()V HSPLandroid/widget/TextView;->resetResolvedDrawables()V @@ -21178,14 +20964,14 @@ HSPLandroid/widget/TextView;->resolveStyleAndSetTypeface(Landroid/graphics/Typef HSPLandroid/widget/TextView;->restartMarqueeIfNeeded()V HSPLandroid/widget/TextView;->sendAccessibilityEventInternal(I)V HSPLandroid/widget/TextView;->sendAfterTextChanged(Landroid/text/Editable;)V -HSPLandroid/widget/TextView;->sendBeforeTextChanged(Ljava/lang/CharSequence;III)V -HSPLandroid/widget/TextView;->sendOnTextChanged(Ljava/lang/CharSequence;III)V +HSPLandroid/widget/TextView;->sendBeforeTextChanged(Ljava/lang/CharSequence;III)V+]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/text/TextWatcher;missing_types +HSPLandroid/widget/TextView;->sendOnTextChanged(Ljava/lang/CharSequence;III)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Landroid/text/TextWatcher;missing_types HSPLandroid/widget/TextView;->setAllCaps(Z)V HSPLandroid/widget/TextView;->setAutoSizeTextTypeUniformWithPresetSizes([II)V HSPLandroid/widget/TextView;->setBreakStrategy(I)V -HSPLandroid/widget/TextView;->setCompoundDrawablePadding(I)V +HSPLandroid/widget/TextView;->setCompoundDrawablePadding(I)V+]Landroid/widget/TextView;missing_types HSPLandroid/widget/TextView;->setCompoundDrawableTintList(Landroid/content/res/ColorStateList;)V -HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V +HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V+]Landroid/widget/TextView;missing_types]Landroid/graphics/Rect;Landroid/graphics/Rect;]Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/VectorDrawable;,Landroid/graphics/drawable/BitmapDrawable; HSPLandroid/widget/TextView;->setCompoundDrawablesRelative(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/TextView;->setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V @@ -21193,16 +20979,16 @@ HSPLandroid/widget/TextView;->setCursorVisible(Z)V HSPLandroid/widget/TextView;->setEditableFactory(Landroid/text/Editable$Factory;)V HSPLandroid/widget/TextView;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)V HSPLandroid/widget/TextView;->setEnabled(Z)V -HSPLandroid/widget/TextView;->setFilters(Landroid/text/Editable;[Landroid/text/InputFilter;)V +HSPLandroid/widget/TextView;->setFilters(Landroid/text/Editable;[Landroid/text/InputFilter;)V+]Landroid/text/Editable;missing_types HSPLandroid/widget/TextView;->setFilters([Landroid/text/InputFilter;)V HSPLandroid/widget/TextView;->setFontFeatureSettings(Ljava/lang/String;)V -HSPLandroid/widget/TextView;->setFrame(IIII)Z +HSPLandroid/widget/TextView;->setFrame(IIII)Z+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/TextView;->setGravity(I)V HSPLandroid/widget/TextView;->setHeight(I)V HSPLandroid/widget/TextView;->setHighlightColor(I)V HSPLandroid/widget/TextView;->setHint(I)V HSPLandroid/widget/TextView;->setHint(Ljava/lang/CharSequence;)V -HSPLandroid/widget/TextView;->setHintInternal(Ljava/lang/CharSequence;)V +HSPLandroid/widget/TextView;->setHintInternal(Ljava/lang/CharSequence;)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Ljava/lang/CharSequence;missing_types HSPLandroid/widget/TextView;->setHintTextColor(I)V HSPLandroid/widget/TextView;->setHintTextColor(Landroid/content/res/ColorStateList;)V HSPLandroid/widget/TextView;->setHorizontallyScrolling(Z)V @@ -21215,10 +21001,8 @@ HSPLandroid/widget/TextView;->setInputTypeFromEditor()V HSPLandroid/widget/TextView;->setInputTypeSingleLine(Z)V HSPLandroid/widget/TextView;->setKeyListener(Landroid/text/method/KeyListener;)V HSPLandroid/widget/TextView;->setKeyListenerOnly(Landroid/text/method/KeyListener;)V -HSPLandroid/widget/TextView;->setLetterSpacing(F)V +HSPLandroid/widget/TextView;->setLetterSpacing(F)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/widget/TextView;->setLineHeight(I)V -HSPLandroid/widget/TextView;->setLineHeight(IF)V+]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/widget/TextView;Landroid/widget/TextView; -HSPLandroid/widget/TextView;->setLineHeightPx(F)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/widget/TextView;Landroid/widget/TextView; HSPLandroid/widget/TextView;->setLineSpacing(FF)V HSPLandroid/widget/TextView;->setLines(I)V HSPLandroid/widget/TextView;->setLinkTextColor(Landroid/content/res/ColorStateList;)V @@ -21228,13 +21012,13 @@ HSPLandroid/widget/TextView;->setMaxWidth(I)V HSPLandroid/widget/TextView;->setMinHeight(I)V HSPLandroid/widget/TextView;->setMinLines(I)V HSPLandroid/widget/TextView;->setMinWidth(I)V -HSPLandroid/widget/TextView;->setMovementMethod(Landroid/text/method/MovementMethod;)V +HSPLandroid/widget/TextView;->setMovementMethod(Landroid/text/method/MovementMethod;)V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/TextView;->setOnEditorActionListener(Landroid/widget/TextView$OnEditorActionListener;)V HSPLandroid/widget/TextView;->setPadding(IIII)V HSPLandroid/widget/TextView;->setPaddingRelative(IIII)V HSPLandroid/widget/TextView;->setPrivateImeOptions(Ljava/lang/String;)V HSPLandroid/widget/TextView;->setRawInputType(I)V -HSPLandroid/widget/TextView;->setRawTextSize(FZ)V +HSPLandroid/widget/TextView;->setRawTextSize(FZ)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; HSPLandroid/widget/TextView;->setRelativeDrawablesIfNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V HSPLandroid/widget/TextView;->setSelected(Z)V HSPLandroid/widget/TextView;->setShadowLayer(FFFI)V @@ -21243,36 +21027,35 @@ HSPLandroid/widget/TextView;->setSingleLine(Z)V HSPLandroid/widget/TextView;->setText(I)V HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V -HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V +HSPLandroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V+]Landroid/text/method/TransformationMethod;missing_types]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Ljava/lang/CharSequence;missing_types]Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager;]Landroid/text/Spanned;missing_types]Landroid/text/method/MovementMethod;missing_types]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/text/Spannable$Factory;Landroid/text/Spannable$Factory;]Landroid/text/Spannable;missing_types]Landroid/text/Editable$Factory;missing_types]Landroid/text/InputFilter;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLandroid/widget/TextView;->setTextAppearance(I)V HSPLandroid/widget/TextView;->setTextAppearance(Landroid/content/Context;I)V HSPLandroid/widget/TextView;->setTextColor(I)V HSPLandroid/widget/TextView;->setTextColor(Landroid/content/res/ColorStateList;)V HSPLandroid/widget/TextView;->setTextInternal(Ljava/lang/CharSequence;)V -HSPLandroid/widget/TextView;->setTextIsSelectable(Z)V +HSPLandroid/widget/TextView;->setTextIsSelectable(Z)V+]Landroid/widget/Editor;Landroid/widget/Editor; HSPLandroid/widget/TextView;->setTextSize(F)V HSPLandroid/widget/TextView;->setTextSize(IF)V HSPLandroid/widget/TextView;->setTextSizeInternal(IFZ)V HSPLandroid/widget/TextView;->setTransformationMethod(Landroid/text/method/TransformationMethod;)V -HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V -HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V +HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V+]Landroid/text/TextPaint;Landroid/text/TextPaint; +HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V+]Landroid/widget/TextView;missing_types]Landroid/text/TextPaint;Landroid/text/TextPaint;]Landroid/graphics/Typeface;Landroid/graphics/Typeface; HSPLandroid/widget/TextView;->setTypefaceFromAttrs(Landroid/graphics/Typeface;Ljava/lang/String;III)V HSPLandroid/widget/TextView;->setupAutoSizeText()Z HSPLandroid/widget/TextView;->setupAutoSizeUniformPresetSizesConfiguration()Z HSPLandroid/widget/TextView;->shouldAdvanceFocusOnEnter()Z -HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V +HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V+]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/text/Spanned;missing_types HSPLandroid/widget/TextView;->startMarquee()V HSPLandroid/widget/TextView;->startStopMarquee(Z)V HSPLandroid/widget/TextView;->stopMarquee()V HSPLandroid/widget/TextView;->stopTextActionMode()V HSPLandroid/widget/TextView;->suggestedSizeFitsInSpace(ILandroid/graphics/RectF;)Z HSPLandroid/widget/TextView;->supportsAutoSizeText()Z -HSPLandroid/widget/TextView;->textCanBeSelected()Z -HSPLandroid/widget/TextView;->transformedToOriginal(II)I -HSPLandroid/widget/TextView;->unregisterForPreDraw()V +HSPLandroid/widget/TextView;->textCanBeSelected()Z+]Landroid/text/method/MovementMethod;Landroid/text/method/ArrowKeyMovementMethod; +HSPLandroid/widget/TextView;->unregisterForPreDraw()V+]Landroid/view/ViewTreeObserver;Landroid/view/ViewTreeObserver; HSPLandroid/widget/TextView;->updateAfterEdit()V HSPLandroid/widget/TextView;->updateCursorVisibleInternal()V -HSPLandroid/widget/TextView;->updateTextColors()V +HSPLandroid/widget/TextView;->updateTextColors()V+]Landroid/content/res/ColorStateList;Landroid/content/res/ColorStateList;]Landroid/widget/Editor;Landroid/widget/Editor;]Landroid/widget/TextView;missing_types]Ljava/lang/CharSequence;missing_types HSPLandroid/widget/TextView;->useDynamicLayout()Z HSPLandroid/widget/TextView;->validateAndSetAutoSizeTextTypeUniformConfiguration(FFF)V HSPLandroid/widget/TextView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z @@ -21322,7 +21105,6 @@ HSPLandroid/widget/Toolbar;->setTitle(Ljava/lang/CharSequence;)V HSPLandroid/widget/Toolbar;->shouldCollapse()Z HSPLandroid/widget/ViewAnimator;->(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ViewAnimator;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V -HSPLandroid/widget/ViewAnimator;->getCurrentView()Landroid/view/View;+]Landroid/widget/ViewAnimator;Landroid/widget/ViewFlipper; HSPLandroid/widget/ViewAnimator;->initViewAnimator(Landroid/content/Context;Landroid/util/AttributeSet;)V HSPLandroid/widget/ViewAnimator;->setAnimateFirstView(Z)V HSPLandroid/widget/ViewAnimator;->setDisplayedChild(I)V @@ -21386,14 +21168,12 @@ HSPLandroid/window/OnBackInvokedCallbackInfo;->writeToParcel(Landroid/os/Parcel; HSPLandroid/window/ProxyOnBackInvokedDispatcher$$ExternalSyntheticLambda0;->(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->clearCallbacksOnDispatcher()V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->registerOnBackInvokedCallback(ILandroid/window/OnBackInvokedCallback;)V -HSPLandroid/window/ProxyOnBackInvokedDispatcher;->registerOnBackInvokedCallbackUnchecked(Landroid/window/OnBackInvokedCallback;I)V -HSPLandroid/window/ProxyOnBackInvokedDispatcher;->registerSystemOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->setActualDispatcher(Landroid/window/OnBackInvokedDispatcher;)V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->transferCallbacksToDispatcher()V HSPLandroid/window/ProxyOnBackInvokedDispatcher;->unregisterOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/SizeConfigurationBuckets$1;->()V HSPLandroid/window/SizeConfigurationBuckets;->()V -HSPLandroid/window/SizeConfigurationBuckets;->([Landroid/content/res/Configuration;)V +HSPLandroid/window/SizeConfigurationBuckets;->([Landroid/content/res/Configuration;)V+]Landroid/util/SparseIntArray;Landroid/util/SparseIntArray; HSPLandroid/window/SizeConfigurationBuckets;->writeToParcel(Landroid/os/Parcel;I)V HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda1;->accept(Ljava/lang/Object;)V HSPLandroid/window/SurfaceSyncGroup$$ExternalSyntheticLambda2;->accept(Ljava/lang/Object;)V @@ -21416,7 +21196,6 @@ HSPLandroid/window/SurfaceSyncGroup;->add(Landroid/window/ISurfaceSyncGroup;ZLja HSPLandroid/window/SurfaceSyncGroup;->addLocalSync(Landroid/window/ISurfaceSyncGroup;Z)Z HSPLandroid/window/SurfaceSyncGroup;->addSyncCompleteCallback(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V HSPLandroid/window/SurfaceSyncGroup;->addTimeout()V+]Landroid/os/HandlerThread;Landroid/os/HandlerThread;]Landroid/os/Handler;Landroid/os/Handler; -HSPLandroid/window/SurfaceSyncGroup;->addTransaction(Landroid/view/SurfaceControl$Transaction;)V HSPLandroid/window/SurfaceSyncGroup;->checkIfSyncIsComplete()V HSPLandroid/window/SurfaceSyncGroup;->createTransactionReadyCallback(Z)Landroid/window/ITransactionReadyCallback; HSPLandroid/window/SurfaceSyncGroup;->getSurfaceSyncGroup(Landroid/window/ISurfaceSyncGroup;)Landroid/window/SurfaceSyncGroup; @@ -21487,7 +21266,6 @@ HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnable HSPLandroid/window/WindowOnBackInvokedDispatcher;->isOnBackInvokedCallbackEnabled(Landroid/content/Context;)Z HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerOnBackInvokedCallback(ILandroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerOnBackInvokedCallbackUnchecked(Landroid/window/OnBackInvokedCallback;I)V -HSPLandroid/window/WindowOnBackInvokedDispatcher;->registerSystemOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->sendCancelledIfInProgress(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->setTopOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V HSPLandroid/window/WindowOnBackInvokedDispatcher;->unregisterOnBackInvokedCallback(Landroid/window/OnBackInvokedCallback;)V @@ -21501,7 +21279,7 @@ HSPLandroid/window/WindowTokenClient;->onConfigurationChanged(Landroid/content/r HSPLcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap;->getCountryCodeToRegionCodeMap()Ljava/util/Map; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->buildNationalNumberForParsing(Ljava/lang/String;Ljava/lang/StringBuilder;)V HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->checkRegionForParsing(Ljava/lang/CharSequence;Ljava/lang/String;)Z -HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->chooseFormattingPatternForNumber(Ljava/util/List;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;+]Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Lcom/android/i18n/phonenumbers/internal/RegexCache;Lcom/android/i18n/phonenumbers/internal/RegexCache; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->chooseFormattingPatternForNumber(Ljava/util/List;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;+]Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Lcom/android/i18n/phonenumbers/internal/RegexCache;Lcom/android/i18n/phonenumbers/internal/RegexCache; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->createInstance(Lcom/android/i18n/phonenumbers/MetadataLoader;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->extractCountryCode(Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)I+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Map;Ljava/util/HashMap; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->extractPossibleNumber(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;+]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern; @@ -21535,7 +21313,7 @@ HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalize(Ljava/lang/StringB HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDiallableCharsOnly(Ljava/lang/CharSequence;)Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDigits(Ljava/lang/CharSequence;Z)Ljava/lang/StringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDigitsOnly(Ljava/lang/CharSequence;)Ljava/lang/String; -HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeHelper(Ljava/lang/CharSequence;Ljava/util/Map;Z)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/String; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeHelper(Ljava/lang/CharSequence;Ljava/util/Map;Z)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/Map;Ljava/util/Collections$UnmodifiableMap; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/CharSequence;Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parseAndKeepRawInput(Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber; @@ -21546,7 +21324,7 @@ HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->prefixNumberWithCountryCalli HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->setInstance(Lcom/android/i18n/phonenumbers/PhoneNumberUtil;)V HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->setItalianLeadingZerosForPhoneNumber(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->testNumberLength(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult; -HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->testNumberLength(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/List;Ljava/util/ArrayList;]Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;]Lcom/android/i18n/phonenumbers/PhoneNumberUtil;Lcom/android/i18n/phonenumbers/PhoneNumberUtil; +HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->testNumberLength(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/ArrayList;]Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;]Lcom/android/i18n/phonenumbers/PhoneNumberUtil;Lcom/android/i18n/phonenumbers/PhoneNumberUtil; HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->()V HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getFormat()Ljava/lang/String; HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getLeadingDigitsPattern(I)Ljava/lang/String; @@ -21663,18 +21441,18 @@ HSPLcom/android/i18n/timezone/ZoneInfoData;->(Lcom/android/i18n/timezone/Z HSPLcom/android/i18n/timezone/ZoneInfoData;->(Lcom/android/i18n/timezone/ZoneInfoData;I)V HSPLcom/android/i18n/timezone/ZoneInfoData;->(Ljava/lang/String;[J[B[I[B)V HSPLcom/android/i18n/timezone/ZoneInfoData;->checkTzifVersionAcceptable(Ljava/lang/String;B)V -HSPLcom/android/i18n/timezone/ZoneInfoData;->findOffsetIndexForTimeInMilliseconds(J)I -HSPLcom/android/i18n/timezone/ZoneInfoData;->findOffsetIndexForTimeInSeconds(J)I +HSPLcom/android/i18n/timezone/ZoneInfoData;->findOffsetIndexForTimeInMilliseconds(J)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; +HSPLcom/android/i18n/timezone/ZoneInfoData;->findOffsetIndexForTimeInSeconds(J)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; HSPLcom/android/i18n/timezone/ZoneInfoData;->findTransitionIndex(J)I HSPLcom/android/i18n/timezone/ZoneInfoData;->getID()Ljava/lang/String; HSPLcom/android/i18n/timezone/ZoneInfoData;->getLatestDstSavingsMillis(J)Ljava/lang/Integer; -HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffset(J)I +HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffset(J)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; HSPLcom/android/i18n/timezone/ZoneInfoData;->getOffsetsByUtcTime(J[I)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; HSPLcom/android/i18n/timezone/ZoneInfoData;->getRawOffset()I HSPLcom/android/i18n/timezone/ZoneInfoData;->getTransitions()[J+][J[J HSPLcom/android/i18n/timezone/ZoneInfoData;->hashCode()I HSPLcom/android/i18n/timezone/ZoneInfoData;->isInDaylightTime(J)Z -HSPLcom/android/i18n/timezone/ZoneInfoData;->read64BitData(Ljava/lang/String;Lcom/android/i18n/timezone/internal/BufferIterator;)Lcom/android/i18n/timezone/ZoneInfoData; +HSPLcom/android/i18n/timezone/ZoneInfoData;->read64BitData(Ljava/lang/String;Lcom/android/i18n/timezone/internal/BufferIterator;)Lcom/android/i18n/timezone/ZoneInfoData;+]Lcom/android/i18n/timezone/internal/BufferIterator;Lcom/android/i18n/timezone/internal/NioBufferIterator; HSPLcom/android/i18n/timezone/ZoneInfoData;->readTimeZone(Ljava/lang/String;Lcom/android/i18n/timezone/internal/BufferIterator;)Lcom/android/i18n/timezone/ZoneInfoData; HSPLcom/android/i18n/timezone/ZoneInfoData;->roundDownMillisToSeconds(J)J HSPLcom/android/i18n/timezone/ZoneInfoData;->roundUpMillisToSeconds(J)J @@ -21705,37 +21483,37 @@ HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readInt()I HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->readLongArray([JII)V HSPLcom/android/i18n/timezone/internal/NioBufferIterator;->skip(I)V HSPLcom/android/icu/charset/CharsetDecoderICU;->(Ljava/nio/charset/Charset;FJ)V -HSPLcom/android/icu/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; -HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I -HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/CharBuffer;)I +HSPLcom/android/icu/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/CharBuffer;)I+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLcom/android/icu/charset/CharsetDecoderICU;->implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;+]Lcom/android/icu/charset/CharsetDecoderICU;Lcom/android/icu/charset/CharsetDecoderICU; HSPLcom/android/icu/charset/CharsetDecoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V HSPLcom/android/icu/charset/CharsetDecoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V HSPLcom/android/icu/charset/CharsetDecoderICU;->implReplaceWith(Ljava/lang/String;)V HSPLcom/android/icu/charset/CharsetDecoderICU;->implReset()V HSPLcom/android/icu/charset/CharsetDecoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Lcom/android/icu/charset/CharsetDecoderICU; -HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/ByteBuffer;)V -HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/CharBuffer;)V +HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/ByteBuffer;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/CharBuffer;)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLcom/android/icu/charset/CharsetDecoderICU;->updateCallback()V HSPLcom/android/icu/charset/CharsetEncoderICU;->(Ljava/nio/charset/Charset;FF[BJ)V -HSPLcom/android/icu/charset/CharsetEncoderICU;->encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; -HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/ByteBuffer;)I -HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/CharBuffer;)I +HSPLcom/android/icu/charset/CharsetEncoderICU;->encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; +HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/ByteBuffer;)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/CharBuffer;)I+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLcom/android/icu/charset/CharsetEncoderICU;->implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;+]Lcom/android/icu/charset/CharsetEncoderICU;Lcom/android/icu/charset/CharsetEncoderICU; HSPLcom/android/icu/charset/CharsetEncoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V HSPLcom/android/icu/charset/CharsetEncoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V HSPLcom/android/icu/charset/CharsetEncoderICU;->implReset()V HSPLcom/android/icu/charset/CharsetEncoderICU;->makeReplacement(Ljava/lang/String;J)[B HSPLcom/android/icu/charset/CharsetEncoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Lcom/android/icu/charset/CharsetEncoderICU; -HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/ByteBuffer;)V -HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/CharBuffer;)V +HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/ByteBuffer;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/CharBuffer;)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLcom/android/icu/charset/CharsetEncoderICU;->updateCallback()V HSPLcom/android/icu/charset/CharsetFactory;->create(Ljava/lang/String;)Ljava/nio/charset/Charset; HSPLcom/android/icu/charset/CharsetICU;->(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V HSPLcom/android/icu/charset/CharsetICU;->newDecoder()Ljava/nio/charset/CharsetDecoder; HSPLcom/android/icu/charset/CharsetICU;->newEncoder()Ljava/nio/charset/CharsetEncoder; HSPLcom/android/icu/charset/NativeConverter;->U_FAILURE(I)Z -HSPLcom/android/icu/charset/NativeConverter;->registerConverter(Ljava/lang/Object;J)V +HSPLcom/android/icu/charset/NativeConverter;->registerConverter(Ljava/lang/Object;J)V+]Llibcore/util/NativeAllocationRegistry;Llibcore/util/NativeAllocationRegistry; HSPLcom/android/icu/charset/NativeConverter;->setCallbackDecode(JLjava/nio/charset/CharsetDecoder;)V+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLcom/android/icu/charset/NativeConverter;->setCallbackEncode(JLjava/nio/charset/CharsetEncoder;)V HSPLcom/android/icu/charset/NativeConverter;->translateCodingErrorAction(Ljava/nio/charset/CodingErrorAction;)I @@ -21835,7 +21613,6 @@ HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->startActiv HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->trackProcState(IIJ)V HSPLcom/android/internal/app/procstats/AssociationState;->getProcess()Lcom/android/internal/app/procstats/ProcessState; HSPLcom/android/internal/app/procstats/ProcessState;->getCombinedState()I -HSPLcom/android/internal/app/procstats/ProcessState;->setCombinedState(IJ)V HSPLcom/android/internal/app/procstats/ProcessStats;->splitAndParseNumbers(Ljava/lang/String;)[I HSPLcom/android/internal/app/procstats/ProcessStats;->updateTrackingAssociationsLocked(IJ)V HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->assertConsistency()V @@ -21848,13 +21625,13 @@ HSPLcom/android/internal/appwidget/IAppWidgetService$Stub;->asInterface(Landroid HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->getMainColor()I HSPLcom/android/internal/colorextraction/ColorExtractor$GradientColors;->supportsDarkText()Z HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->(JI)V -HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->equals(Ljava/lang/Object;)Z +HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Object;Lcom/android/internal/compat/ChangeReporter$ChangeReport; HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->hashCode()I HSPLcom/android/internal/compat/ChangeReporter;->(I)V HSPLcom/android/internal/compat/ChangeReporter;->debugLog(IJI)V -HSPLcom/android/internal/compat/ChangeReporter;->isAlreadyReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)Z -HSPLcom/android/internal/compat/ChangeReporter;->markAsReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)V -HSPLcom/android/internal/compat/ChangeReporter;->reportChange(IJI)V +HSPLcom/android/internal/compat/ChangeReporter;->isAlreadyReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)Z+]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashSet; +HSPLcom/android/internal/compat/ChangeReporter;->markAsReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)V+]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Set;Ljava/util/HashSet; +HSPLcom/android/internal/compat/ChangeReporter;->reportChange(IJI)V+]Lcom/android/internal/compat/ChangeReporter;Lcom/android/internal/compat/ChangeReporter; HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToDebug(IJI)Z HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToStatsLog(IJI)Z HSPLcom/android/internal/compat/ChangeReporter;->stateToString(I)Ljava/lang/String; @@ -21887,7 +21664,6 @@ HSPLcom/android/internal/dynamicanimation/animation/SpringForce;->setValueThresh HSPLcom/android/internal/graphics/ColorUtils;->HSLToColor([F)I HSPLcom/android/internal/graphics/ColorUtils;->RGBToHSL(III[F)V HSPLcom/android/internal/graphics/ColorUtils;->colorToHSL(I[F)V -HSPLcom/android/internal/graphics/ColorUtils;->colorToXYZ(I[D)V HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->()V HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->getFrameTime()J HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V @@ -21995,27 +21771,17 @@ HSPLcom/android/internal/inputmethod/InputConnectionCommandHeader;->()V HSPLcom/android/internal/inputmethod/InputConnectionCommandHeader;->(I)V HSPLcom/android/internal/inputmethod/InputMethodDebug;->softInputDisplayReasonToString(I)Ljava/lang/String; HSPLcom/android/internal/inputmethod/SubtypeLocaleUtils;->constructLocaleFromString(Ljava/lang/String;)Ljava/util/Locale; -HSPLcom/android/internal/jank/EventLogTags;->writeJankCujEventsEndRequest(IJJJ)V HSPLcom/android/internal/jank/FrameTracker$FrameMetricsWrapper;->()V HSPLcom/android/internal/jank/FrameTracker$FrameMetricsWrapper;->getMetric(I)J HSPLcom/android/internal/jank/FrameTracker$FrameMetricsWrapper;->getTiming()[J HSPLcom/android/internal/jank/FrameTracker$ThreadedRendererWrapper;->(Landroid/view/ThreadedRenderer;)V HSPLcom/android/internal/jank/FrameTracker$ThreadedRendererWrapper;->addObserver(Landroid/graphics/HardwareRendererObserver;)V HSPLcom/android/internal/jank/FrameTracker$ThreadedRendererWrapper;->removeObserver(Landroid/graphics/HardwareRendererObserver;)V -HSPLcom/android/internal/jank/FrameTracker;->(Lcom/android/internal/jank/InteractionJankMonitor;Lcom/android/internal/jank/InteractionJankMonitor$Session;Landroid/os/Handler;Lcom/android/internal/jank/FrameTracker$ThreadedRendererWrapper;Lcom/android/internal/jank/FrameTracker$ViewRootWrapper;Lcom/android/internal/jank/FrameTracker$SurfaceControlWrapper;Lcom/android/internal/jank/FrameTracker$ChoreographerWrapper;Lcom/android/internal/jank/FrameTracker$FrameMetricsWrapper;Lcom/android/internal/jank/FrameTracker$StatsLogWrapper;IILcom/android/internal/jank/FrameTracker$FrameTrackerListener;Lcom/android/internal/jank/InteractionJankMonitor$Configuration;)V HSPLcom/android/internal/jank/FrameTracker;->begin()V -HSPLcom/android/internal/jank/FrameTracker;->beginInternal()V -HSPLcom/android/internal/jank/FrameTracker;->end(I)Z -HSPLcom/android/internal/jank/FrameTracker;->finish()V+]Landroid/os/Handler;Landroid/app/ActivityThread$H;,Landroid/view/ViewRootImpl$ViewRootHandler;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Landroid/util/SparseArray;Landroid/util/SparseArray;]Lcom/android/internal/jank/FrameTracker$StatsLogWrapper;Lcom/android/internal/jank/FrameTracker$StatsLogWrapper;]Lcom/android/internal/jank/FrameTracker;Lcom/android/internal/jank/FrameTracker;]Lcom/android/internal/jank/InteractionJankMonitor$Session;Lcom/android/internal/jank/InteractionJankMonitor$Session; -HSPLcom/android/internal/jank/FrameTracker;->getHandler()Landroid/os/Handler; HSPLcom/android/internal/jank/FrameTracker;->onFrameMetricsAvailable(I)V HSPLcom/android/internal/jank/FrameTracker;->triggerPerfetto()V HSPLcom/android/internal/jank/InteractionJankMonitor$$ExternalSyntheticLambda5;->(Lcom/android/internal/jank/InteractionJankMonitor$TimeFunction;JJJ)V HSPLcom/android/internal/jank/InteractionJankMonitor$$ExternalSyntheticLambda5;->run()V -HSPLcom/android/internal/jank/InteractionJankMonitor$$ExternalSyntheticLambda9;->invoke(JJJ)V -HSPLcom/android/internal/jank/InteractionJankMonitor$Configuration$Builder;->(I)V -HSPLcom/android/internal/jank/InteractionJankMonitor$Configuration$Builder;->build()Lcom/android/internal/jank/InteractionJankMonitor$Configuration; -HSPLcom/android/internal/jank/InteractionJankMonitor$Configuration;->(ILandroid/view/View;Ljava/lang/String;JZLandroid/content/Context;Landroid/view/SurfaceControl;Z)V HSPLcom/android/internal/jank/InteractionJankMonitor$InstanceHolder;->()V HSPLcom/android/internal/jank/InteractionJankMonitor$Session;->getName()Ljava/lang/String; HSPLcom/android/internal/jank/InteractionJankMonitor$Session;->getStatsdInteractionType()I @@ -22023,14 +21789,10 @@ HSPLcom/android/internal/jank/InteractionJankMonitor$Session;->logToStatsd()Z HSPLcom/android/internal/jank/InteractionJankMonitor;->-$$Nest$sfgetDEFAULT_WORKER_NAME()Ljava/lang/String; HSPLcom/android/internal/jank/InteractionJankMonitor;->()V HSPLcom/android/internal/jank/InteractionJankMonitor;->(Landroid/os/HandlerThread;)V -HSPLcom/android/internal/jank/InteractionJankMonitor;->begin(Lcom/android/internal/jank/InteractionJankMonitor$Configuration$Builder;)Z -HSPLcom/android/internal/jank/InteractionJankMonitor;->beginInternal(Lcom/android/internal/jank/InteractionJankMonitor$Configuration;)Z HSPLcom/android/internal/jank/InteractionJankMonitor;->cancel(I)Z -HSPLcom/android/internal/jank/InteractionJankMonitor;->createFrameTracker(Lcom/android/internal/jank/InteractionJankMonitor$Configuration;Lcom/android/internal/jank/InteractionJankMonitor$Session;)Lcom/android/internal/jank/FrameTracker; HSPLcom/android/internal/jank/InteractionJankMonitor;->end(I)Z HSPLcom/android/internal/jank/InteractionJankMonitor;->getInstance()Lcom/android/internal/jank/InteractionJankMonitor; HSPLcom/android/internal/jank/InteractionJankMonitor;->getTracker(I)Lcom/android/internal/jank/FrameTracker; -HSPLcom/android/internal/jank/InteractionJankMonitor;->lambda$end$6(IJJJ)V HSPLcom/android/internal/jank/InteractionJankMonitor;->lambda$postEventLogToWorkerThread$11(Lcom/android/internal/jank/InteractionJankMonitor$TimeFunction;JJJ)V HSPLcom/android/internal/jank/InteractionJankMonitor;->postEventLogToWorkerThread(Lcom/android/internal/jank/InteractionJankMonitor$TimeFunction;)V HSPLcom/android/internal/listeners/ListenerExecutor$$ExternalSyntheticLambda0;->(Ljava/lang/Object;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V @@ -22039,7 +21801,7 @@ HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onComple HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onPostExecute(Z)V HSPLcom/android/internal/listeners/ListenerExecutor$ListenerOperation;->onPreExecute()V HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;)V+]Lcom/android/internal/listeners/ListenerExecutor;Landroid/location/LocationManager$LocationListenerTransport; -HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V+]Ljava/util/concurrent/Executor;missing_types]Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Landroid/location/LocationManager$LocationListenerTransport$1;]Ljava/util/function/Supplier;Landroid/location/LocationManager$LocationListenerTransport$$ExternalSyntheticLambda2; +HSPLcom/android/internal/listeners/ListenerExecutor;->executeSafely(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V+]Ljava/util/concurrent/Executor;missing_types]Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Landroid/location/LocationManager$LocationListenerTransport$1;,Landroid/location/LocationManager$LocationListenerTransport$$ExternalSyntheticLambda4;]Ljava/util/function/Supplier;Landroid/location/LocationManager$LocationListenerTransport$$ExternalSyntheticLambda2;,Landroid/location/LocationManager$LocationListenerTransport$$ExternalSyntheticLambda3; HSPLcom/android/internal/listeners/ListenerExecutor;->lambda$executeSafely$0(Ljava/lang/Object;Ljava/util/function/Supplier;Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation;Lcom/android/internal/listeners/ListenerExecutor$FailureCallback;)V HSPLcom/android/internal/logging/AndroidConfig;->()V HSPLcom/android/internal/logging/AndroidHandler$1;->format(Ljava/util/logging/LogRecord;)Ljava/lang/String; @@ -22266,7 +22028,7 @@ HSPLcom/android/internal/os/ZygoteServer;->setForkChild()V HSPLcom/android/internal/policy/DecorContext;->(Landroid/content/Context;Lcom/android/internal/policy/PhoneWindow;)V HSPLcom/android/internal/policy/DecorContext;->getAutofillOptions()Landroid/content/AutofillOptions; HSPLcom/android/internal/policy/DecorContext;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions; -HSPLcom/android/internal/policy/DecorContext;->getResources()Landroid/content/res/Resources; +HSPLcom/android/internal/policy/DecorContext;->getResources()Landroid/content/res/Resources;+]Ljava/lang/ref/WeakReference;Ljava/lang/ref/WeakReference; HSPLcom/android/internal/policy/DecorContext;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; HSPLcom/android/internal/policy/DecorContext;->isUiContext()Z HSPLcom/android/internal/policy/DecorContext;->setPhoneWindow(Lcom/android/internal/policy/PhoneWindow;)V @@ -22340,7 +22102,7 @@ HSPLcom/android/internal/policy/DecorView;->updateBackgroundBlurRadius()V HSPLcom/android/internal/policy/DecorView;->updateBackgroundDrawable()V HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIZZIZZI)V HSPLcom/android/internal/policy/DecorView;->updateColorViewTranslations()V -HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets; +HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets;+]Lcom/android/internal/policy/DecorView;Lcom/android/internal/policy/DecorView;]Lcom/android/internal/policy/PhoneWindow;Lcom/android/internal/policy/PhoneWindow;]Landroid/view/WindowInsets;Landroid/view/WindowInsets;]Landroid/view/ViewGroup;Landroid/widget/LinearLayout;]Landroid/content/res/Resources;Landroid/content/res/Resources;]Landroid/app/WindowConfiguration;Landroid/app/WindowConfiguration;]Landroid/view/WindowInsetsController;Landroid/view/InsetsController;,Landroid/view/PendingInsetsController; HSPLcom/android/internal/policy/DecorView;->updateDecorCaptionStatus(Landroid/content/res/Configuration;)V HSPLcom/android/internal/policy/DecorView;->updateElevation()V HSPLcom/android/internal/policy/DecorView;->updateLogTag(Landroid/view/WindowManager$LayoutParams;)V @@ -22363,7 +22125,7 @@ HSPLcom/android/internal/policy/PhoneFallbackEventHandler;->setView(Landroid/vie HSPLcom/android/internal/policy/PhoneLayoutInflater;->(Landroid/content/Context;)V HSPLcom/android/internal/policy/PhoneLayoutInflater;->(Landroid/view/LayoutInflater;Landroid/content/Context;)V HSPLcom/android/internal/policy/PhoneLayoutInflater;->cloneInContext(Landroid/content/Context;)Landroid/view/LayoutInflater; -HSPLcom/android/internal/policy/PhoneLayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View; +HSPLcom/android/internal/policy/PhoneLayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;+]Lcom/android/internal/policy/PhoneLayoutInflater;Lcom/android/internal/policy/PhoneLayoutInflater; HSPLcom/android/internal/policy/PhoneWindow$$ExternalSyntheticLambda0;->onContentApplyWindowInsets(Landroid/view/View;Landroid/view/WindowInsets;)Landroid/util/Pair; HSPLcom/android/internal/policy/PhoneWindow$1;->(Lcom/android/internal/policy/PhoneWindow;)V HSPLcom/android/internal/policy/PhoneWindow$1;->run()V @@ -22471,7 +22233,7 @@ HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->asBinder()Landroid HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->getDefaultTransactionName(I)Ljava/lang/String; HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->getMaxTransactionId()I HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->getTransactionName(I)Ljava/lang/String; -HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z +HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z+]Lcom/android/internal/telephony/IPhoneStateListener$Stub;Landroid/telephony/TelephonyCallback$IPhoneStateListenerStub;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->asBinder()Landroid/os/IBinder; HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getGroupIdLevel1ForSubscriber(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String; @@ -22493,7 +22255,7 @@ HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getAvailableSubscriptionInf HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultDataSubId()I HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultSmsSubId()I HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultSubId()I -HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultVoiceSubId()I +HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultVoiceSubId()I+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/internal/telephony/ISub$Stub$Proxy;Lcom/android/internal/telephony/ISub$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getPhoneId(I)I HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getSlotIndex(I)I HSPLcom/android/internal/telephony/ISub$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ISub; @@ -22516,7 +22278,7 @@ HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getSubscriptionCarrie HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getSubscriptionSpecificCarrierId(I)I HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getVoiceNetworkTypeForSubscriber(ILjava/lang/String;Ljava/lang/String;)I HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isDataEnabledForReason(II)Z -HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isEmergencyNumber(Ljava/lang/String;Z)Z +HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isEmergencyNumber(Ljava/lang/String;Z)Z+]Landroid/os/IBinder;Landroid/os/BinderProxy;]Lcom/android/internal/telephony/ITelephony$Stub$Proxy;Lcom/android/internal/telephony/ITelephony$Stub$Proxy;]Landroid/os/Parcel;Landroid/os/Parcel; HSPLcom/android/internal/telephony/ITelephony$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephony; HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->(Landroid/os/IBinder;)V HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->addOnSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V @@ -22578,7 +22340,7 @@ HSPLcom/android/internal/util/ArrayUtils;->convertToIntArray(Ljava/util/List;)[I HSPLcom/android/internal/util/ArrayUtils;->deepToString(Ljava/lang/Object;)Ljava/lang/String; HSPLcom/android/internal/util/ArrayUtils;->defeatNullable([Ljava/io/File;)[Ljava/io/File; HSPLcom/android/internal/util/ArrayUtils;->defeatNullable([Ljava/lang/String;)[Ljava/lang/String; -HSPLcom/android/internal/util/ArrayUtils;->emptyArray(Ljava/lang/Class;)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->emptyArray(Ljava/lang/Class;)[Ljava/lang/Object;+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class; HSPLcom/android/internal/util/ArrayUtils;->emptyIfNull([Ljava/lang/Object;Ljava/lang/Class;)[Ljava/lang/Object; HSPLcom/android/internal/util/ArrayUtils;->filter([Ljava/lang/Object;Ljava/util/function/IntFunction;Ljava/util/function/Predicate;)[Ljava/lang/Object; HSPLcom/android/internal/util/ArrayUtils;->getOrNull([Ljava/lang/Object;I)Ljava/lang/Object; @@ -22586,14 +22348,14 @@ HSPLcom/android/internal/util/ArrayUtils;->indexOf([Ljava/lang/Object;Ljava/lang HSPLcom/android/internal/util/ArrayUtils;->isEmpty(Ljava/util/Collection;)Z HSPLcom/android/internal/util/ArrayUtils;->isEmpty([I)Z HSPLcom/android/internal/util/ArrayUtils;->isEmpty([Ljava/lang/Object;)Z -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedArray(Ljava/lang/Class;I)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedArray(Ljava/lang/Class;I)[Ljava/lang/Object;+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedBooleanArray(I)[Z -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedByteArray(I)[B +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedByteArray(I)[B+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedCharArray(I)[C -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedFloatArray(I)[F -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedIntArray(I)[I -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedLongArray(I)[J -HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedObjectArray(I)[Ljava/lang/Object; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedFloatArray(I)[F+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedIntArray(I)[I+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedLongArray(I)[J+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; +HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedObjectArray(I)[Ljava/lang/Object;+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; HSPLcom/android/internal/util/ArrayUtils;->remove(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList; HSPLcom/android/internal/util/ArrayUtils;->removeElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object; HSPLcom/android/internal/util/ArrayUtils;->size([Ljava/lang/Object;)I @@ -22611,8 +22373,6 @@ HSPLcom/android/internal/util/CollectionUtils;->isEmpty(Ljava/util/Collection;)Z HSPLcom/android/internal/util/CollectionUtils;->size(Ljava/util/Collection;)I HSPLcom/android/internal/util/CollectionUtils;->size(Ljava/util/Map;)I HSPLcom/android/internal/util/ConcurrentUtils$DirectExecutor;->execute(Ljava/lang/Runnable;)V -HSPLcom/android/internal/util/ContrastColorUtil$ColorUtilsFromCompat;->RGBToXYZ(III[D)V -HSPLcom/android/internal/util/ContrastColorUtil$ColorUtilsFromCompat;->getTempDouble3Array()[D+]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal; HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->(I)V HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->add(I)V HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->log(Ljava/lang/String;Ljava/lang/CharSequence;)V @@ -22640,7 +22400,7 @@ HSPLcom/android/internal/util/FastPrintWriter;->write(Ljava/lang/String;)V+]Ljav HSPLcom/android/internal/util/FastPrintWriter;->write([CII)V HSPLcom/android/internal/util/FastXmlSerializer;->()V HSPLcom/android/internal/util/FastXmlSerializer;->(I)V -HSPLcom/android/internal/util/FastXmlSerializer;->append(C)V +HSPLcom/android/internal/util/FastXmlSerializer;->append(C)V+]Lcom/android/internal/util/FastXmlSerializer;Lcom/android/internal/util/FastXmlSerializer; HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String;]Lcom/android/internal/util/FastXmlSerializer;Lcom/android/internal/util/FastXmlSerializer; HSPLcom/android/internal/util/FastXmlSerializer;->appendIndent(I)V+]Ljava/lang/String;Ljava/lang/String; @@ -22654,7 +22414,7 @@ HSPLcom/android/internal/util/FastXmlSerializer;->setFeature(Ljava/lang/String;Z HSPLcom/android/internal/util/FastXmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V HSPLcom/android/internal/util/FastXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V HSPLcom/android/internal/util/FastXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; -HSPLcom/android/internal/util/FastXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLcom/android/internal/util/FastXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Ljava/lang/String;Ljava/lang/String; HSPLcom/android/internal/util/FrameworkStatsLog;->write(III)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(IIII)V HSPLcom/android/internal/util/FrameworkStatsLog;->write(IIILjava/lang/String;I)V @@ -22669,7 +22429,7 @@ HSPLcom/android/internal/util/GrowingArrayUtils;->append([ZIZ)[Z HSPLcom/android/internal/util/GrowingArrayUtils;->growSize(I)I HSPLcom/android/internal/util/GrowingArrayUtils;->insert([IIII)[I HSPLcom/android/internal/util/GrowingArrayUtils;->insert([JIIJ)[J -HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object; +HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object;+]Ljava/lang/Object;[Ljava/lang/Object;]Ljava/lang/Class;Ljava/lang/Class; HSPLcom/android/internal/util/GrowingArrayUtils;->insert([ZIIZ)[Z HSPLcom/android/internal/util/IndentingPrintWriter;->decreaseIndent()Lcom/android/internal/util/IndentingPrintWriter; HSPLcom/android/internal/util/IndentingPrintWriter;->increaseIndent()Lcom/android/internal/util/IndentingPrintWriter; @@ -22678,14 +22438,11 @@ HSPLcom/android/internal/util/IntPair;->first(J)I HSPLcom/android/internal/util/IntPair;->of(II)J HSPLcom/android/internal/util/IntPair;->second(J)I HSPLcom/android/internal/util/LatencyTracker$$ExternalSyntheticLambda0;->(Lcom/android/internal/util/LatencyTracker;I)V -HSPLcom/android/internal/util/LatencyTracker$$ExternalSyntheticLambda1;->(Lcom/android/internal/util/LatencyTracker;Landroid/content/Context;)V -HSPLcom/android/internal/util/LatencyTracker$$ExternalSyntheticLambda1;->run()V HSPLcom/android/internal/util/LatencyTracker$SLatencyTrackerHolder;->-$$Nest$sfgetsLatencyTracker()Lcom/android/internal/util/LatencyTracker; HSPLcom/android/internal/util/LatencyTracker$SLatencyTrackerHolder;->()V HSPLcom/android/internal/util/LatencyTracker$Session;->(ILjava/lang/String;)V HSPLcom/android/internal/util/LatencyTracker$Session;->begin(Ljava/lang/Runnable;)V HSPLcom/android/internal/util/LatencyTracker$Session;->traceName()Ljava/lang/String; -HSPLcom/android/internal/util/LatencyTracker;->$r8$lambda$uPhaBjaIKsSqJgZ3Mw-LznEJiBg(Lcom/android/internal/util/LatencyTracker;Landroid/content/Context;)V HSPLcom/android/internal/util/LatencyTracker;->-$$Nest$smgetTraceNameOfAction(ILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/util/LatencyTracker;->()V HSPLcom/android/internal/util/LatencyTracker;->getInstance(Landroid/content/Context;)Lcom/android/internal/util/LatencyTracker; @@ -22693,19 +22450,17 @@ HSPLcom/android/internal/util/LatencyTracker;->getNameOfAction(I)Ljava/lang/Stri HSPLcom/android/internal/util/LatencyTracker;->getTraceNameOfAction(ILjava/lang/String;)Ljava/lang/String; HSPLcom/android/internal/util/LatencyTracker;->isEnabled()Z HSPLcom/android/internal/util/LatencyTracker;->isEnabled(I)Z+]Landroid/util/SparseArray;Landroid/util/SparseArray; -HSPLcom/android/internal/util/LatencyTracker;->lambda$startListeningForLatencyTrackerConfigChanges$0(Landroid/content/Context;)V HSPLcom/android/internal/util/LatencyTracker;->logAction(II)V HSPLcom/android/internal/util/LatencyTracker;->onActionCancel(I)V+]Landroid/util/SparseArray;Landroid/util/SparseArray; HSPLcom/android/internal/util/LatencyTracker;->onActionEnd(I)V HSPLcom/android/internal/util/LatencyTracker;->onActionStart(ILjava/lang/String;)V -HSPLcom/android/internal/util/LatencyTracker;->onDeviceConfigPropertiesUpdated(Landroid/util/SparseArray;)V HSPLcom/android/internal/util/LatencyTracker;->startListeningForLatencyTrackerConfigChanges()V HSPLcom/android/internal/util/LatencyTracker;->updateProperties(Landroid/provider/DeviceConfig$Properties;)V HSPLcom/android/internal/util/LineBreakBufferedWriter;->(Ljava/io/Writer;I)V HSPLcom/android/internal/util/LineBreakBufferedWriter;->(Ljava/io/Writer;II)V HSPLcom/android/internal/util/LineBreakBufferedWriter;->ensureCapacity(I)V HSPLcom/android/internal/util/LineBreakBufferedWriter;->flush()V -HSPLcom/android/internal/util/LineBreakBufferedWriter;->println()V +HSPLcom/android/internal/util/LineBreakBufferedWriter;->println()V+]Lcom/android/internal/util/LineBreakBufferedWriter;Lcom/android/internal/util/LineBreakBufferedWriter; HSPLcom/android/internal/util/LineBreakBufferedWriter;->write(Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String; HSPLcom/android/internal/util/LineBreakBufferedWriter;->writeBuffer(I)V HSPLcom/android/internal/util/MemInfoReader;->()V @@ -22739,7 +22494,7 @@ HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(J)J HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(JLjava/lang/String;)J HSPLcom/android/internal/util/Preconditions;->checkArgumentPositive(ILjava/lang/String;)I HSPLcom/android/internal/util/Preconditions;->checkArrayElementsNotNull([Ljava/lang/Object;Ljava/lang/String;)[Ljava/lang/Object; -HSPLcom/android/internal/util/Preconditions;->checkCollectionElementsNotNull(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/Collection;+]Ljava/util/Collection;Ljava/util/ArrayList; +HSPLcom/android/internal/util/Preconditions;->checkCollectionElementsNotNull(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/Collection;+]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLcom/android/internal/util/Preconditions;->checkFlagsArgument(II)I HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -22786,14 +22541,14 @@ HSPLcom/android/internal/util/VirtualRefBasePtr;->finalize()V HSPLcom/android/internal/util/VirtualRefBasePtr;->get()J HSPLcom/android/internal/util/VirtualRefBasePtr;->release()V HSPLcom/android/internal/util/XmlPullParserWrapper;->(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeCount()I +HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeCount()I+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser; HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeName(I)Ljava/lang/String; HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeValue(I)Ljava/lang/String; -HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLcom/android/internal/util/XmlPullParserWrapper;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser; HSPLcom/android/internal/util/XmlPullParserWrapper;->getEventType()I -HSPLcom/android/internal/util/XmlPullParserWrapper;->getName()Ljava/lang/String; +HSPLcom/android/internal/util/XmlPullParserWrapper;->getName()Ljava/lang/String;+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser; HSPLcom/android/internal/util/XmlPullParserWrapper;->getText()Ljava/lang/String; -HSPLcom/android/internal/util/XmlPullParserWrapper;->next()I +HSPLcom/android/internal/util/XmlPullParserWrapper;->next()I+]Lorg/xmlpull/v1/XmlPullParser;Lcom/android/org/kxml2/io/KXmlParser; HSPLcom/android/internal/util/XmlPullParserWrapper;->setInput(Ljava/io/InputStream;Ljava/lang/String;)V HSPLcom/android/internal/util/XmlSerializerWrapper;->(Lorg/xmlpull/v1/XmlSerializer;)V HSPLcom/android/internal/util/XmlSerializerWrapper;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/FastXmlSerializer; @@ -22803,9 +22558,9 @@ HSPLcom/android/internal/util/XmlSerializerWrapper;->setFeature(Ljava/lang/Strin HSPLcom/android/internal/util/XmlSerializerWrapper;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V HSPLcom/android/internal/util/XmlSerializerWrapper;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V HSPLcom/android/internal/util/XmlSerializerWrapper;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/FastXmlSerializer; -HSPLcom/android/internal/util/XmlSerializerWrapper;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer; +HSPLcom/android/internal/util/XmlSerializerWrapper;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;+]Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/FastXmlSerializer; HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeBoolean(I)Z +HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeBoolean(I)Z+]Ljava/lang/String;Ljava/lang/String;]Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeFloat(I)F HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeInt(I)I HSPLcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;->getAttributeLong(I)J @@ -22828,10 +22583,10 @@ HSPLcom/android/internal/util/XmlUtils;->readStringAttribute(Lorg/xmlpull/v1/Xml HSPLcom/android/internal/util/XmlUtils;->readThisMapXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;)Ljava/util/HashMap;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/HashMap;Ljava/util/HashMap;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/internal/util/XmlUtils;->readThisPrimitiveValueXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/internal/util/XmlUtils;->readThisSetXml(Lcom/android/modules/utils/TypedXmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/util/HashSet; -HSPLcom/android/internal/util/XmlUtils;->readThisValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; +HSPLcom/android/internal/util/XmlUtils;->readThisValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/lang/Object;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/internal/util/XmlUtils;->readValueXml(Lcom/android/modules/utils/TypedXmlPullParser;[Ljava/lang/String;)Ljava/lang/Object; -HSPLcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V -HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V+]Ljava/util/Map;Ljava/util/HashMap; +HSPLcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V+]Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/XmlBlock$Parser; +HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/io/OutputStream;)V HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;)V HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lcom/android/modules/utils/TypedXmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V @@ -22946,7 +22701,6 @@ HSPLcom/android/internal/widget/LockPatternUtils;->getKeyguardStoredPasswordQual HSPLcom/android/internal/widget/LockPatternUtils;->getLockSettings()Lcom/android/internal/widget/ILockSettings; HSPLcom/android/internal/widget/LockPatternUtils;->getPowerButtonInstantlyLocks(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->getString(Ljava/lang/String;I)Ljava/lang/String; -HSPLcom/android/internal/widget/LockPatternUtils;->getUserManager(I)Landroid/os/UserManager;+]Ljava/util/HashMap;Ljava/util/HashMap;]Landroid/content/Context;Landroid/app/ContextImpl; HSPLcom/android/internal/widget/LockPatternUtils;->hasSeparateChallenge(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isManagedProfile(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isOwnerInfoEnabled(I)Z @@ -22954,9 +22708,9 @@ HSPLcom/android/internal/widget/LockPatternUtils;->isSecure(I)Z HSPLcom/android/internal/widget/LockPatternUtils;->isSeparateProfileChallengeEnabled(I)Z HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeBoolean(Ljava/lang/String;Ljava/lang/String;)Z HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeFloat(Ljava/lang/String;Ljava/lang/String;)F -HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndex(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; -HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndexOrThrow(Ljava/lang/String;Ljava/lang/String;)I -HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeInt(Ljava/lang/String;Ljava/lang/String;)I +HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndex(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser;]Ljava/lang/String;Ljava/lang/String; +HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeIndexOrThrow(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; +HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeInt(Ljava/lang/String;Ljava/lang/String;)I+]Lcom/android/modules/utils/TypedXmlPullParser;Lcom/android/internal/util/XmlUtils$ForcedTypedXmlPullParser; HSPLcom/android/modules/utils/TypedXmlPullParser;->getAttributeLong(Ljava/lang/String;Ljava/lang/String;)J HSPLcom/android/net/module/util/LinkPropertiesUtils;->isIdenticalAddresses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)Z HSPLcom/android/net/module/util/LinkPropertiesUtils;->isIdenticalDnses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)Z @@ -22968,7 +22722,7 @@ HSPLcom/android/net/module/util/MacAddressUtils;->longAddrFromByteAddr([B)J HSPLcom/android/net/module/util/NetUtils;->maskRawAddress([BI)V HSPLcom/android/net/module/util/NetworkCapabilitiesUtils;->()V HSPLcom/android/okhttp/Address;->(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 -HSPLcom/android/okhttp/Address;->equals(Ljava/lang/Object;)Z+]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;]Ljava/lang/Object;Lcom/android/okhttp/Dns$1;,Lcom/android/okhttp/internal/http/AuthenticatorAdapter; +HSPLcom/android/okhttp/Address;->equals(Ljava/lang/Object;)Z+]Lcom/android/okhttp/HttpUrl;Lcom/android/okhttp/HttpUrl;]Ljava/lang/Object;Lcom/android/okhttp/Dns$1;,Lsun/net/spi/DefaultProxySelector;,Lcom/android/okhttp/internal/http/AuthenticatorAdapter;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList; HSPLcom/android/okhttp/Address;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner; HSPLcom/android/okhttp/Address;->getConnectionSpecs()Ljava/util/List; HSPLcom/android/okhttp/Address;->getDns()Lcom/android/okhttp/Dns; @@ -23362,7 +23116,7 @@ HSPLcom/android/okhttp/internal/http/HttpEngine;->writingRequestHeaders()V HSPLcom/android/okhttp/internal/http/HttpMethod;->permitsRequestBody(Ljava/lang/String;)Z HSPLcom/android/okhttp/internal/http/HttpMethod;->requiresRequestBody(Ljava/lang/String;)Z HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/String;Ljava/lang/String;)I +HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/String;Ljava/lang/String;)I+]Ljava/util/Comparator;Ljava/lang/String$CaseInsensitiveComparator; HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Headers;)J HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Request;)J HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Response;)J @@ -23549,7 +23303,7 @@ HSPLcom/android/okhttp/okio/AsyncTimeout;->exit()Z HSPLcom/android/okhttp/okio/AsyncTimeout;->exit(Ljava/io/IOException;)Ljava/io/IOException; HSPLcom/android/okhttp/okio/AsyncTimeout;->exit(Z)V HSPLcom/android/okhttp/okio/AsyncTimeout;->remainingNanos(J)J -HSPLcom/android/okhttp/okio/AsyncTimeout;->scheduleTimeout(Lcom/android/okhttp/okio/AsyncTimeout;JZ)V +HSPLcom/android/okhttp/okio/AsyncTimeout;->scheduleTimeout(Lcom/android/okhttp/okio/AsyncTimeout;JZ)V+]Ljava/lang/Object;Ljava/lang/Class; HSPLcom/android/okhttp/okio/AsyncTimeout;->sink(Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/okio/Sink; HSPLcom/android/okhttp/okio/AsyncTimeout;->source(Lcom/android/okhttp/okio/Source;)Lcom/android/okhttp/okio/Source; HSPLcom/android/okhttp/okio/Buffer;->()V @@ -23606,9 +23360,9 @@ HSPLcom/android/okhttp/okio/InflaterSource;->refill()Z HSPLcom/android/okhttp/okio/InflaterSource;->releaseInflatedBytes()V HSPLcom/android/okhttp/okio/Okio$1;->(Lcom/android/okhttp/okio/Timeout;Ljava/io/OutputStream;)V HSPLcom/android/okhttp/okio/Okio$1;->flush()V -HSPLcom/android/okhttp/okio/Okio$1;->write(Lcom/android/okhttp/okio/Buffer;J)V +HSPLcom/android/okhttp/okio/Okio$1;->write(Lcom/android/okhttp/okio/Buffer;J)V+]Lcom/android/okhttp/okio/Segment;Lcom/android/okhttp/okio/Segment;]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3; HSPLcom/android/okhttp/okio/Okio$2;->(Lcom/android/okhttp/okio/Timeout;Ljava/io/InputStream;)V -HSPLcom/android/okhttp/okio/Okio$2;->read(Lcom/android/okhttp/okio/Buffer;J)J+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3; +HSPLcom/android/okhttp/okio/Okio$2;->read(Lcom/android/okhttp/okio/Buffer;J)J+]Lcom/android/okhttp/okio/Buffer;Lcom/android/okhttp/okio/Buffer;]Lcom/android/okhttp/okio/Timeout;Lcom/android/okhttp/okio/Okio$3;]Ljava/io/InputStream;Lcom/android/org/conscrypt/ConscryptEngineSocket$SSLInputStream; HSPLcom/android/okhttp/okio/Okio$3;->(Ljava/net/Socket;)V HSPLcom/android/okhttp/okio/Okio$3;->newTimeoutException(Ljava/io/IOException;)Ljava/io/IOException; HSPLcom/android/okhttp/okio/Okio$3;->timedOut()V @@ -23802,11 +23556,11 @@ HSPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactory;->getSHA1() HSPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL;->getSHA1()Lcom/android/org/bouncycastle/crypto/Digest; HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest$SHA1;->()V HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->(Ljava/lang/String;I)V -HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->doFinal([BI)I +HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->doFinal([BI)I+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate; HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->getByteLength()I HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->getDigestSize()I HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->reset()V -HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->update([BII)V +HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->update([BII)V+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate; HSPLcom/android/org/bouncycastle/crypto/engines/AESEngine;->()V HSPLcom/android/org/bouncycastle/crypto/engines/AESEngine;->generateWorkingKey([BZ)[[I HSPLcom/android/org/bouncycastle/crypto/engines/AESEngine;->getAlgorithmName()Ljava/lang/String; @@ -23836,7 +23590,7 @@ HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->doFinal([BI)I+]Lcom/android/ HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->getByteLength(Lcom/android/org/bouncycastle/crypto/Digest;)I HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->getMacSize()I HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->init(Lcom/android/org/bouncycastle/crypto/CipherParameters;)V -HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->update([BII)V +HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->update([BII)V+]Lcom/android/org/bouncycastle/crypto/Digest;Lcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest$SHA1; HSPLcom/android/org/bouncycastle/crypto/macs/HMac;->xorPad([BIB)V HSPLcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;->(Lcom/android/org/bouncycastle/crypto/BlockCipher;)V HSPLcom/android/org/bouncycastle/crypto/modes/CBCBlockCipher;->getBlockSize()I @@ -24002,7 +23756,7 @@ HSPLdalvik/system/BaseDexClassLoader;->(Ljava/lang/String;Ljava/lang/Strin HSPLdalvik/system/BaseDexClassLoader;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;)V HSPLdalvik/system/BaseDexClassLoader;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;Z)V HSPLdalvik/system/BaseDexClassLoader;->addNativePath(Ljava/util/Collection;)V -HSPLdalvik/system/BaseDexClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class; +HSPLdalvik/system/BaseDexClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ldalvik/system/DexPathList;Ldalvik/system/DexPathList;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/lang/ClassLoader;Ldalvik/system/PathClassLoader;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLdalvik/system/BaseDexClassLoader;->findLibrary(Ljava/lang/String;)Ljava/lang/String; HSPLdalvik/system/BaseDexClassLoader;->findResource(Ljava/lang/String;)Ljava/net/URL; HSPLdalvik/system/BaseDexClassLoader;->findResources(Ljava/lang/String;)Ljava/util/Enumeration; @@ -24021,7 +23775,7 @@ HSPLdalvik/system/BlockGuard$3;->initialValue()Ldalvik/system/BlockGuard$Policy; HSPLdalvik/system/BlockGuard$3;->initialValue()Ljava/lang/Object; HSPLdalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy;+]Ljava/lang/ThreadLocal;Ldalvik/system/BlockGuard$3; HSPLdalvik/system/BlockGuard;->getVmPolicy()Ldalvik/system/BlockGuard$VmPolicy; -HSPLdalvik/system/BlockGuard;->setThreadPolicy(Ldalvik/system/BlockGuard$Policy;)V +HSPLdalvik/system/BlockGuard;->setThreadPolicy(Ldalvik/system/BlockGuard$Policy;)V+]Ljava/lang/ThreadLocal;Ldalvik/system/BlockGuard$3; HSPLdalvik/system/BlockGuard;->setVmPolicy(Ldalvik/system/BlockGuard$VmPolicy;)V HSPLdalvik/system/CloseGuard;->()V HSPLdalvik/system/CloseGuard;->close()V @@ -24031,7 +23785,7 @@ HSPLdalvik/system/CloseGuard;->open(Ljava/lang/String;)V+]Ldalvik/system/CloseGu HSPLdalvik/system/CloseGuard;->openWithCallSite(Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLdalvik/system/CloseGuard;->setEnabled(Z)V HSPLdalvik/system/CloseGuard;->setReporter(Ldalvik/system/CloseGuard$Reporter;)V -HSPLdalvik/system/CloseGuard;->warnIfOpen()V +HSPLdalvik/system/CloseGuard;->warnIfOpen()V+]Ldalvik/system/CloseGuard$Reporter;Landroid/os/StrictMode$AndroidCloseGuardReporter;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLdalvik/system/DelegateLastClassLoader;->(Ljava/lang/String;Ljava/lang/ClassLoader;)V HSPLdalvik/system/DelegateLastClassLoader;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)V HSPLdalvik/system/DelegateLastClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class; @@ -24101,7 +23855,7 @@ HSPLdalvik/system/VMRuntime;->setTargetSdkVersion(I)V HSPLdalvik/system/ZipPathValidator$Callback;->onZipEntryAccess(Ljava/lang/String;)V HSPLdalvik/system/ZipPathValidator;->clearCallback()V HSPLdalvik/system/ZipPathValidator;->getInstance()Ldalvik/system/ZipPathValidator$Callback; -HSPLdalvik/system/ZipPathValidator;->isClear()Z+]Ljava/lang/Object;Ldalvik/system/ZipPathValidator$1; +HSPLdalvik/system/ZipPathValidator;->isClear()Z+]Ljava/lang/Object;Lcom/android/internal/os/SafeZipPathValidatorCallback;,Ldalvik/system/ZipPathValidator$1; HSPLdalvik/system/ZipPathValidator;->setCallback(Ldalvik/system/ZipPathValidator$Callback;)V HSPLdalvik/system/ZygoteHooks;->cleanLocaleCaches()V HSPLdalvik/system/ZygoteHooks;->gcAndFinalize()V @@ -24127,22 +23881,22 @@ HSPLjava/io/BufferedInputStream;->(Ljava/io/InputStream;)V HSPLjava/io/BufferedInputStream;->(Ljava/io/InputStream;I)V HSPLjava/io/BufferedInputStream;->available()I HSPLjava/io/BufferedInputStream;->close()V -HSPLjava/io/BufferedInputStream;->fill()V+]Ljava/io/InputStream;Ljava/io/FileInputStream; +HSPLjava/io/BufferedInputStream;->fill()V+]Ljava/io/InputStream;missing_types HSPLjava/io/BufferedInputStream;->getBufIfOpen()[B HSPLjava/io/BufferedInputStream;->getInIfOpen()Ljava/io/InputStream; HSPLjava/io/BufferedInputStream;->mark(I)V HSPLjava/io/BufferedInputStream;->markSupported()Z HSPLjava/io/BufferedInputStream;->read()I HSPLjava/io/BufferedInputStream;->read([BII)I+]Ljava/io/InputStream;missing_types -HSPLjava/io/BufferedInputStream;->read1([BII)I +HSPLjava/io/BufferedInputStream;->read1([BII)I+]Ljava/io/InputStream;Ljava/io/FileInputStream; HSPLjava/io/BufferedInputStream;->reset()V HSPLjava/io/BufferedInputStream;->skip(J)J HSPLjava/io/BufferedOutputStream;->(Ljava/io/OutputStream;)V HSPLjava/io/BufferedOutputStream;->(Ljava/io/OutputStream;I)V HSPLjava/io/BufferedOutputStream;->flush()V -HSPLjava/io/BufferedOutputStream;->flushBuffer()V +HSPLjava/io/BufferedOutputStream;->flushBuffer()V+]Ljava/io/OutputStream;Ljava/io/FileOutputStream; HSPLjava/io/BufferedOutputStream;->write(I)V -HSPLjava/io/BufferedOutputStream;->write([BII)V+]Ljava/io/OutputStream;Ljava/io/FileOutputStream; +HSPLjava/io/BufferedOutputStream;->write([BII)V HSPLjava/io/BufferedReader;->(Ljava/io/Reader;)V HSPLjava/io/BufferedReader;->(Ljava/io/Reader;I)V HSPLjava/io/BufferedReader;->close()V @@ -24163,7 +23917,7 @@ HSPLjava/io/BufferedWriter;->min(II)I HSPLjava/io/BufferedWriter;->newLine()V HSPLjava/io/BufferedWriter;->write(I)V HSPLjava/io/BufferedWriter;->write(Ljava/lang/String;II)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter; -HSPLjava/io/BufferedWriter;->write([CII)V +HSPLjava/io/BufferedWriter;->write([CII)V+]Ljava/io/Writer;Ljava/io/FileWriter;]Ljava/io/BufferedWriter;Ljava/io/BufferedWriter; HSPLjava/io/ByteArrayInputStream;->([B)V HSPLjava/io/ByteArrayInputStream;->([BII)V HSPLjava/io/ByteArrayInputStream;->available()I @@ -24199,15 +23953,15 @@ HSPLjava/io/DataInputStream;->(Ljava/io/InputStream;)V HSPLjava/io/DataInputStream;->read([B)I HSPLjava/io/DataInputStream;->read([BII)I HSPLjava/io/DataInputStream;->readBoolean()Z -HSPLjava/io/DataInputStream;->readByte()B +HSPLjava/io/DataInputStream;->readByte()B+]Ljava/io/InputStream;Ljava/io/ByteArrayInputStream;,Ljava/io/BufferedInputStream; HSPLjava/io/DataInputStream;->readFully([B)V -HSPLjava/io/DataInputStream;->readFully([BII)V+]Ljava/io/InputStream;Ljava/io/BufferedInputStream; -HSPLjava/io/DataInputStream;->readInt()I +HSPLjava/io/DataInputStream;->readFully([BII)V+]Ljava/io/InputStream;Ljava/io/BufferedInputStream;,Ljava/io/ByteArrayInputStream;,Landroid/content/res/AssetFileDescriptor$AutoCloseInputStream; +HSPLjava/io/DataInputStream;->readInt()I+]Ljava/io/DataInputStream;Ljava/io/DataInputStream; HSPLjava/io/DataInputStream;->readLong()J -HSPLjava/io/DataInputStream;->readShort()S +HSPLjava/io/DataInputStream;->readShort()S+]Ljava/io/DataInputStream;Ljava/io/DataInputStream; HSPLjava/io/DataInputStream;->readUTF()Ljava/lang/String; -HSPLjava/io/DataInputStream;->readUTF(Ljava/io/DataInput;)Ljava/lang/String; -HSPLjava/io/DataInputStream;->readUnsignedByte()I +HSPLjava/io/DataInputStream;->readUTF(Ljava/io/DataInput;)Ljava/lang/String;+]Ljava/io/DataInput;Ljava/io/DataInputStream; +HSPLjava/io/DataInputStream;->readUnsignedByte()I+]Ljava/io/InputStream;Ljava/io/ByteArrayInputStream;,Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1; HSPLjava/io/DataInputStream;->readUnsignedShort()I HSPLjava/io/DataInputStream;->skipBytes(I)I HSPLjava/io/DataOutputStream;->(Ljava/io/OutputStream;)V @@ -24216,18 +23970,18 @@ HSPLjava/io/DataOutputStream;->incCount(I)V HSPLjava/io/DataOutputStream;->write(I)V HSPLjava/io/DataOutputStream;->write([BII)V HSPLjava/io/DataOutputStream;->writeBoolean(Z)V -HSPLjava/io/DataOutputStream;->writeByte(I)V +HSPLjava/io/DataOutputStream;->writeByte(I)V+]Ljava/io/OutputStream;Ljava/io/BufferedOutputStream; HSPLjava/io/DataOutputStream;->writeInt(I)V HSPLjava/io/DataOutputStream;->writeLong(J)V HSPLjava/io/DataOutputStream;->writeShort(I)V HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V -HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I +HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/DataOutput;Ljava/io/DataOutputStream; HSPLjava/io/EOFException;->()V HSPLjava/io/EOFException;->(Ljava/lang/String;)V -HSPLjava/io/ExpiringCache;->clear()V +HSPLjava/io/ExpiringCache;->clear()V+]Ljava/util/Map;Ljava/io/ExpiringCache$1; HSPLjava/io/File$TempDirectory;->generateFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File; -HSPLjava/io/File;->(Ljava/io/File;Ljava/lang/String;)V -HSPLjava/io/File;->(Ljava/lang/String;)V +HSPLjava/io/File;->(Ljava/io/File;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; +HSPLjava/io/File;->(Ljava/lang/String;)V+]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; HSPLjava/io/File;->(Ljava/lang/String;I)V HSPLjava/io/File;->(Ljava/lang/String;Ljava/io/File;)V+]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; HSPLjava/io/File;->(Ljava/lang/String;Ljava/lang/String;)V @@ -24238,16 +23992,16 @@ HSPLjava/io/File;->compareTo(Ljava/io/File;)I HSPLjava/io/File;->compareTo(Ljava/lang/Object;)I HSPLjava/io/File;->createNewFile()Z HSPLjava/io/File;->createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File; -HSPLjava/io/File;->delete()Z +HSPLjava/io/File;->delete()Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; HSPLjava/io/File;->equals(Ljava/lang/Object;)Z -HSPLjava/io/File;->exists()Z +HSPLjava/io/File;->exists()Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; HSPLjava/io/File;->getAbsoluteFile()Ljava/io/File;+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; -HSPLjava/io/File;->getAbsolutePath()Ljava/lang/String; +HSPLjava/io/File;->getAbsolutePath()Ljava/lang/String;+]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; HSPLjava/io/File;->getCanonicalFile()Ljava/io/File; HSPLjava/io/File;->getCanonicalPath()Ljava/lang/String; HSPLjava/io/File;->getFreeSpace()J -HSPLjava/io/File;->getName()Ljava/lang/String; -HSPLjava/io/File;->getParent()Ljava/lang/String; +HSPLjava/io/File;->getName()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/io/File;->getParent()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/io/File;->getParentFile()Ljava/io/File; HSPLjava/io/File;->getPath()Ljava/lang/String; HSPLjava/io/File;->getPrefixLength()I @@ -24255,19 +24009,19 @@ HSPLjava/io/File;->getTotalSpace()J HSPLjava/io/File;->getUsableSpace()J HSPLjava/io/File;->hashCode()I HSPLjava/io/File;->isAbsolute()Z -HSPLjava/io/File;->isDirectory()Z +HSPLjava/io/File;->isDirectory()Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; HSPLjava/io/File;->isFile()Z -HSPLjava/io/File;->isInvalid()Z +HSPLjava/io/File;->isInvalid()Z+]Ljava/lang/String;Ljava/lang/String; HSPLjava/io/File;->lastModified()J HSPLjava/io/File;->length()J -HSPLjava/io/File;->list()[Ljava/lang/String; +HSPLjava/io/File;->list()[Ljava/lang/String;+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; HSPLjava/io/File;->list(Ljava/io/FilenameFilter;)[Ljava/lang/String; HSPLjava/io/File;->listFiles()[Ljava/io/File; HSPLjava/io/File;->listFiles(Ljava/io/FileFilter;)[Ljava/io/File; HSPLjava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File; HSPLjava/io/File;->mkdir()Z HSPLjava/io/File;->mkdirs()Z -HSPLjava/io/File;->renameTo(Ljava/io/File;)Z +HSPLjava/io/File;->renameTo(Ljava/io/File;)Z+]Ljava/io/File;Ljava/io/File;]Ljava/io/FileSystem;Ljava/io/UnixFileSystem; HSPLjava/io/File;->setExecutable(Z)Z HSPLjava/io/File;->setExecutable(ZZ)Z HSPLjava/io/File;->setLastModified(J)Z @@ -24289,27 +24043,27 @@ HSPLjava/io/FileDescriptor;->release$()Ljava/io/FileDescriptor; HSPLjava/io/FileDescriptor;->setInt$(I)V HSPLjava/io/FileDescriptor;->setOwnerId$(J)V HSPLjava/io/FileDescriptor;->valid()Z -HSPLjava/io/FileInputStream;->(Ljava/io/File;)V +HSPLjava/io/FileInputStream;->(Ljava/io/File;)V+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLjava/io/FileInputStream;->(Ljava/io/FileDescriptor;)V HSPLjava/io/FileInputStream;->(Ljava/io/FileDescriptor;Z)V HSPLjava/io/FileInputStream;->(Ljava/lang/String;)V HSPLjava/io/FileInputStream;->available()I -HSPLjava/io/FileInputStream;->close()V +HSPLjava/io/FileInputStream;->close()V+]Ljava/nio/channels/FileChannel;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLjava/io/FileInputStream;->finalize()V HSPLjava/io/FileInputStream;->getChannel()Ljava/nio/channels/FileChannel; HSPLjava/io/FileInputStream;->getFD()Ljava/io/FileDescriptor; HSPLjava/io/FileInputStream;->read()I -HSPLjava/io/FileInputStream;->read([B)I+]Ljava/io/FileInputStream;Ljava/io/FileInputStream; +HSPLjava/io/FileInputStream;->read([B)I+]Ljava/io/FileInputStream;Ljava/io/FileInputStream;,Landroid/os/ParcelFileDescriptor$AutoCloseInputStream; HSPLjava/io/FileInputStream;->read([BII)I+]Llibcore/io/IoTracker;Llibcore/io/IoTracker; -HSPLjava/io/FileInputStream;->skip(J)J +HSPLjava/io/FileInputStream;->skip(J)J+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1; HSPLjava/io/FileNotFoundException;->(Ljava/lang/String;)V HSPLjava/io/FileOutputStream;->(Ljava/io/File;)V -HSPLjava/io/FileOutputStream;->(Ljava/io/File;Z)V +HSPLjava/io/FileOutputStream;->(Ljava/io/File;Z)V+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLjava/io/FileOutputStream;->(Ljava/io/FileDescriptor;)V HSPLjava/io/FileOutputStream;->(Ljava/io/FileDescriptor;Z)V HSPLjava/io/FileOutputStream;->(Ljava/lang/String;)V HSPLjava/io/FileOutputStream;->(Ljava/lang/String;Z)V -HSPLjava/io/FileOutputStream;->close()V +HSPLjava/io/FileOutputStream;->close()V+]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLjava/io/FileOutputStream;->finalize()V HSPLjava/io/FileOutputStream;->getChannel()Ljava/nio/channels/FileChannel; HSPLjava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor; @@ -24321,15 +24075,15 @@ HSPLjava/io/FileReader;->(Ljava/lang/String;)V HSPLjava/io/FileWriter;->(Ljava/io/File;)V HSPLjava/io/FileWriter;->(Ljava/io/File;Z)V HSPLjava/io/FilterInputStream;->(Ljava/io/InputStream;)V -HSPLjava/io/FilterInputStream;->available()I+]Ljava/io/InputStream;Ljava/io/FileInputStream; +HSPLjava/io/FilterInputStream;->available()I+]Ljava/io/InputStream;Ljava/io/FileInputStream;,Ljava/util/zip/ZipFile$ZipFileInflaterInputStream; HSPLjava/io/FilterInputStream;->close()V HSPLjava/io/FilterInputStream;->mark(I)V HSPLjava/io/FilterInputStream;->markSupported()Z -HSPLjava/io/FilterInputStream;->read()I+]Ljava/io/InputStream;missing_types -HSPLjava/io/FilterInputStream;->read([B)I+]Ljava/io/FilterInputStream;Ljava/util/zip/InflaterInputStream;,Ljava/util/zip/ZipInputStream; -HSPLjava/io/FilterInputStream;->read([BII)I+]Ljava/io/InputStream;Ljava/io/BufferedInputStream;,Ljava/io/FileInputStream;,Ljava/io/ByteArrayInputStream;,Ljava/io/PushbackInputStream; +HSPLjava/io/FilterInputStream;->read()I+]Ljava/io/InputStream;megamorphic_types +HSPLjava/io/FilterInputStream;->read([B)I+]Ljava/io/FilterInputStream;Ljava/util/zip/ZipInputStream;,Ljava/io/PushbackInputStream; +HSPLjava/io/FilterInputStream;->read([BII)I+]Ljava/io/InputStream;missing_types HSPLjava/io/FilterInputStream;->reset()V -HSPLjava/io/FilterInputStream;->skip(J)J +HSPLjava/io/FilterInputStream;->skip(J)J+]Ljava/io/InputStream;Ljava/io/BufferedInputStream; HSPLjava/io/FilterOutputStream;->(Ljava/io/OutputStream;)V HSPLjava/io/FilterOutputStream;->close()V HSPLjava/io/FilterOutputStream;->flush()V @@ -24344,7 +24098,7 @@ HSPLjava/io/InputStream;->()V HSPLjava/io/InputStream;->available()I HSPLjava/io/InputStream;->close()V HSPLjava/io/InputStream;->markSupported()Z -HSPLjava/io/InputStream;->read([B)I+]Ljava/io/InputStream;missing_types +HSPLjava/io/InputStream;->read([B)I+]Ljava/io/InputStream;Lsun/security/util/DerInputBuffer; HSPLjava/io/InputStream;->read([BII)I HSPLjava/io/InputStreamReader;->(Ljava/io/InputStream;)V HSPLjava/io/InputStreamReader;->(Ljava/io/InputStream;Ljava/lang/String;)V @@ -24352,12 +24106,12 @@ HSPLjava/io/InputStreamReader;->(Ljava/io/InputStream;Ljava/nio/charset/Ch HSPLjava/io/InputStreamReader;->(Ljava/io/InputStream;Ljava/nio/charset/CharsetDecoder;)V HSPLjava/io/InputStreamReader;->close()V HSPLjava/io/InputStreamReader;->read()I -HSPLjava/io/InputStreamReader;->read([CII)I +HSPLjava/io/InputStreamReader;->read([CII)I+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder; HSPLjava/io/InputStreamReader;->ready()Z HSPLjava/io/InterruptedIOException;->()V HSPLjava/io/InterruptedIOException;->(Ljava/lang/String;)V HSPLjava/io/ObjectInputStream$BlockDataInputStream;->(Ljava/io/ObjectInputStream;Ljava/io/InputStream;)V -HSPLjava/io/ObjectInputStream$BlockDataInputStream;->close()V +HSPLjava/io/ObjectInputStream$BlockDataInputStream;->close()V+]Ljava/io/ObjectInputStream$PeekInputStream;Ljava/io/ObjectInputStream$PeekInputStream; HSPLjava/io/ObjectInputStream$BlockDataInputStream;->currentBlockRemaining()I HSPLjava/io/ObjectInputStream$BlockDataInputStream;->getBlockDataMode()Z HSPLjava/io/ObjectInputStream$BlockDataInputStream;->peek()I+]Ljava/io/ObjectInputStream$PeekInputStream;Ljava/io/ObjectInputStream$PeekInputStream; @@ -24411,13 +24165,13 @@ HSPLjava/io/ObjectInputStream$PeekInputStream;->readFully([BII)V+]Ljava/io/Objec HSPLjava/io/ObjectInputStream$ValidationList;->()V HSPLjava/io/ObjectInputStream$ValidationList;->clear()V HSPLjava/io/ObjectInputStream$ValidationList;->doCallbacks()V -HSPLjava/io/ObjectInputStream;->(Ljava/io/InputStream;)V+]Ljava/io/ObjectInputStream;Ljava/io/ObjectInputStream;]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream; +HSPLjava/io/ObjectInputStream;->(Ljava/io/InputStream;)V+]Ljava/io/ObjectInputStream;Ljava/io/ObjectInputStream;,Landroid/os/Parcel$2;]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream; HSPLjava/io/ObjectInputStream;->checkResolve(Ljava/lang/Object;)Ljava/lang/Object; -HSPLjava/io/ObjectInputStream;->clear()V -HSPLjava/io/ObjectInputStream;->close()V +HSPLjava/io/ObjectInputStream;->clear()V+]Ljava/io/ObjectInputStream$ValidationList;Ljava/io/ObjectInputStream$ValidationList;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable; +HSPLjava/io/ObjectInputStream;->close()V+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream; HSPLjava/io/ObjectInputStream;->defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/io/ObjectInputStream;->defaultReadObject()V+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;]Ljava/io/SerialCallbackContext;Ljava/io/SerialCallbackContext; -HSPLjava/io/ObjectInputStream;->isCustomSubclass()Z+]Ljava/lang/Class;Ljava/lang/Class; +HSPLjava/io/ObjectInputStream;->isCustomSubclass()Z+]Ljava/lang/Object;Landroid/os/Parcel$2;]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/io/ObjectInputStream;->latestUserDefinedLoader()Ljava/lang/ClassLoader; HSPLjava/io/ObjectInputStream;->readArray(Z)Ljava/lang/Object;+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable;]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/io/ObjectInputStream;->readBoolean()Z @@ -24430,7 +24184,7 @@ HSPLjava/io/ObjectInputStream;->readFloat()F HSPLjava/io/ObjectInputStream;->readHandle(Z)Ljava/lang/Object;+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable; HSPLjava/io/ObjectInputStream;->readInt()I HSPLjava/io/ObjectInputStream;->readLong()J+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream; -HSPLjava/io/ObjectInputStream;->readNonProxyDesc(Z)Ljava/io/ObjectStreamClass;+]Ljava/io/ObjectInputStream;Ljava/io/ObjectInputStream;]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable; +HSPLjava/io/ObjectInputStream;->readNonProxyDesc(Z)Ljava/io/ObjectStreamClass;+]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;,Ljava/io/ObjectInputStream;]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable; HSPLjava/io/ObjectInputStream;->readNull()Ljava/lang/Object;+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream; HSPLjava/io/ObjectInputStream;->readObject()Ljava/lang/Object;+]Ljava/io/ObjectInputStream$ValidationList;Ljava/io/ObjectInputStream$ValidationList;]Ljava/io/ObjectInputStream$HandleTable;Ljava/io/ObjectInputStream$HandleTable; HSPLjava/io/ObjectInputStream;->readObject0(Z)Ljava/lang/Object;+]Ljava/io/ObjectInputStream$BlockDataInputStream;Ljava/io/ObjectInputStream$BlockDataInputStream; @@ -24454,7 +24208,7 @@ HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->warnIfClosed()V HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->write([BIIZ)V HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBlockHeader(I)V HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeByte(I)V -HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBytes(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBytes(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/ObjectOutputStream$BlockDataOutputStream;Ljava/io/ObjectOutputStream$BlockDataOutputStream; HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeFloat(F)V HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeInt(I)V HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeLong(J)V @@ -24537,11 +24291,11 @@ HSPLjava/io/ObjectStreamClass$EntryFuture;->set(Ljava/lang/Object;)Z HSPLjava/io/ObjectStreamClass$ExceptionInfo;->(Ljava/lang/String;Ljava/lang/String;)V HSPLjava/io/ObjectStreamClass$FieldReflector;->([Ljava/io/ObjectStreamField;)V HSPLjava/io/ObjectStreamClass$FieldReflector;->getFields()[Ljava/io/ObjectStreamField; -HSPLjava/io/ObjectStreamClass$FieldReflector;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V +HSPLjava/io/ObjectStreamClass$FieldReflector;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe; HSPLjava/io/ObjectStreamClass$FieldReflector;->getPrimFieldValues(Ljava/lang/Object;[B)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe; HSPLjava/io/ObjectStreamClass$FieldReflector;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe;]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/io/ObjectStreamClass$FieldReflector;->setPrimFieldValues(Ljava/lang/Object;[B)V+]Lsun/misc/Unsafe;Lsun/misc/Unsafe; -HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField; +HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField; HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->equals(Ljava/lang/Object;)Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/ObjectStreamClass$FieldReflectorKey;Ljava/io/ObjectStreamClass$FieldReflectorKey; HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->hashCode()I HSPLjava/io/ObjectStreamClass$MemberSignature;->(Ljava/lang/reflect/Constructor;)V @@ -24578,7 +24332,7 @@ HSPLjava/io/ObjectStreamClass;->computeDefaultSUID(Ljava/lang/Class;)J HSPLjava/io/ObjectStreamClass;->computeFieldOffsets()V+]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField; HSPLjava/io/ObjectStreamClass;->forClass()Ljava/lang/Class; HSPLjava/io/ObjectStreamClass;->getClassDataLayout()[Ljava/io/ObjectStreamClass$ClassDataSlot; -HSPLjava/io/ObjectStreamClass;->getClassDataLayout0()[Ljava/io/ObjectStreamClass$ClassDataSlot;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/lang/Class;Ljava/lang/Class; +HSPLjava/io/ObjectStreamClass;->getClassDataLayout0()[Ljava/io/ObjectStreamClass$ClassDataSlot;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLjava/io/ObjectStreamClass;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String; HSPLjava/io/ObjectStreamClass;->getDeclaredSUID(Ljava/lang/Class;)Ljava/lang/Long; HSPLjava/io/ObjectStreamClass;->getDeclaredSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField; @@ -24621,11 +24375,11 @@ HSPLjava/io/ObjectStreamClass;->matchFields([Ljava/io/ObjectStreamField;Ljava/io HSPLjava/io/ObjectStreamClass;->newInstance()Ljava/lang/Object;+]Ljava/lang/reflect/Constructor;Ljava/lang/reflect/Constructor; HSPLjava/io/ObjectStreamClass;->packageEquals(Ljava/lang/Class;Ljava/lang/Class;)Z HSPLjava/io/ObjectStreamClass;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue; -HSPLjava/io/ObjectStreamClass;->readNonProxy(Ljava/io/ObjectInputStream;)V+]Ljava/io/ObjectInputStream;Ljava/io/ObjectInputStream; +HSPLjava/io/ObjectStreamClass;->readNonProxy(Ljava/io/ObjectInputStream;)V+]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;,Ljava/io/ObjectInputStream; HSPLjava/io/ObjectStreamClass;->requireInitialized()V HSPLjava/io/ObjectStreamClass;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V+]Ljava/io/ObjectStreamClass$FieldReflector;Ljava/io/ObjectStreamClass$FieldReflector; HSPLjava/io/ObjectStreamClass;->setPrimFieldValues(Ljava/lang/Object;[B)V+]Ljava/io/ObjectStreamClass$FieldReflector;Ljava/io/ObjectStreamClass$FieldReflector; -HSPLjava/io/ObjectStreamClass;->writeNonProxy(Ljava/io/ObjectOutputStream;)V +HSPLjava/io/ObjectStreamClass;->writeNonProxy(Ljava/io/ObjectOutputStream;)V+]Ljava/io/ObjectOutputStream;Ljava/io/ObjectOutputStream;]Ljava/io/ObjectStreamClass;Ljava/io/ObjectStreamClass;]Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamField; HSPLjava/io/ObjectStreamField;->(Ljava/lang/String;Ljava/lang/Class;)V HSPLjava/io/ObjectStreamField;->(Ljava/lang/String;Ljava/lang/Class;Z)V HSPLjava/io/ObjectStreamField;->(Ljava/lang/String;Ljava/lang/String;Z)V+]Ljava/lang/String;Ljava/lang/String; @@ -24645,7 +24399,7 @@ HSPLjava/io/ObjectStreamField;->setOffset(I)V HSPLjava/io/OutputStream;->()V HSPLjava/io/OutputStream;->close()V HSPLjava/io/OutputStream;->flush()V -HSPLjava/io/OutputStream;->write([B)V +HSPLjava/io/OutputStream;->write([B)V+]Ljava/io/OutputStream;missing_types HSPLjava/io/OutputStreamWriter;->(Ljava/io/OutputStream;)V HSPLjava/io/OutputStreamWriter;->(Ljava/io/OutputStream;Ljava/lang/String;)V HSPLjava/io/OutputStreamWriter;->(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V @@ -24665,28 +24419,28 @@ HSPLjava/io/PrintWriter;->(Ljava/io/OutputStream;)V HSPLjava/io/PrintWriter;->(Ljava/io/OutputStream;Z)V HSPLjava/io/PrintWriter;->(Ljava/io/Writer;)V HSPLjava/io/PrintWriter;->(Ljava/io/Writer;Z)V -HSPLjava/io/PrintWriter;->append(C)Ljava/io/PrintWriter; -HSPLjava/io/PrintWriter;->append(Ljava/lang/CharSequence;)Ljava/io/PrintWriter; +HSPLjava/io/PrintWriter;->append(C)Ljava/io/PrintWriter;+]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter; +HSPLjava/io/PrintWriter;->append(Ljava/lang/CharSequence;)Ljava/io/PrintWriter;+]Ljava/io/PrintWriter;Lcom/android/internal/util/FastPrintWriter; HSPLjava/io/PrintWriter;->append(Ljava/lang/CharSequence;)Ljava/lang/Appendable; HSPLjava/io/PrintWriter;->close()V HSPLjava/io/PrintWriter;->ensureOpen()V -HSPLjava/io/PrintWriter;->flush()V -HSPLjava/io/PrintWriter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter; +HSPLjava/io/PrintWriter;->flush()V+]Ljava/io/Writer;Landroid/util/Log$ImmediateLogWriter; +HSPLjava/io/PrintWriter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;+]Ljava/util/Formatter;Ljava/util/Formatter; HSPLjava/io/PrintWriter;->newLine()V+]Ljava/io/Writer;missing_types HSPLjava/io/PrintWriter;->print(C)V HSPLjava/io/PrintWriter;->print(I)V HSPLjava/io/PrintWriter;->print(J)V -HSPLjava/io/PrintWriter;->print(Ljava/lang/String;)V +HSPLjava/io/PrintWriter;->print(Ljava/lang/String;)V+]Ljava/io/PrintWriter;Lcom/android/internal/util/LineBreakBufferedWriter;,Ljava/io/PrintWriter; HSPLjava/io/PrintWriter;->print(Z)V HSPLjava/io/PrintWriter;->printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter; HSPLjava/io/PrintWriter;->println()V HSPLjava/io/PrintWriter;->println(I)V -HSPLjava/io/PrintWriter;->println(Ljava/lang/Object;)V -HSPLjava/io/PrintWriter;->println(Ljava/lang/String;)V +HSPLjava/io/PrintWriter;->println(Ljava/lang/Object;)V+]Ljava/io/PrintWriter;Lcom/android/internal/util/LineBreakBufferedWriter;,Lcom/android/internal/util/FastPrintWriter; +HSPLjava/io/PrintWriter;->println(Ljava/lang/String;)V+]Ljava/io/PrintWriter;Ljava/io/PrintWriter;,Lcom/android/internal/util/LineBreakBufferedWriter; HSPLjava/io/PrintWriter;->write(I)V -HSPLjava/io/PrintWriter;->write(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/PrintWriter;Ljava/io/PrintWriter; +HSPLjava/io/PrintWriter;->write(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/PrintWriter;Lcom/android/internal/util/LineBreakBufferedWriter;,Ljava/io/PrintWriter; HSPLjava/io/PrintWriter;->write(Ljava/lang/String;II)V -HSPLjava/io/PrintWriter;->write([CII)V +HSPLjava/io/PrintWriter;->write([CII)V+]Ljava/io/Writer;Landroid/util/Log$ImmediateLogWriter; HSPLjava/io/PushbackInputStream;->(Ljava/io/InputStream;I)V HSPLjava/io/PushbackInputStream;->close()V HSPLjava/io/PushbackInputStream;->ensureOpen()V @@ -24698,7 +24452,7 @@ HSPLjava/io/PushbackReader;->(Ljava/io/Reader;I)V HSPLjava/io/PushbackReader;->ensureOpen()V HSPLjava/io/PushbackReader;->read()I HSPLjava/io/PushbackReader;->unread(I)V -HSPLjava/io/RandomAccessFile;->(Ljava/io/File;Ljava/lang/String;)V +HSPLjava/io/RandomAccessFile;->(Ljava/io/File;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;Ljava/io/File;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; HSPLjava/io/RandomAccessFile;->(Ljava/lang/String;Ljava/lang/String;)V HSPLjava/io/RandomAccessFile;->close()V HSPLjava/io/RandomAccessFile;->finalize()V @@ -24742,7 +24496,7 @@ HSPLjava/io/StringReader;->(Ljava/lang/String;)V HSPLjava/io/StringReader;->close()V HSPLjava/io/StringReader;->ensureOpen()V HSPLjava/io/StringReader;->read()I -HSPLjava/io/StringReader;->read([CII)I+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/io/StringReader;->read([CII)I HSPLjava/io/StringWriter;->()V HSPLjava/io/StringWriter;->(I)V HSPLjava/io/StringWriter;->append(C)Ljava/io/StringWriter; @@ -24758,24 +24512,24 @@ HSPLjava/io/StringWriter;->write(Ljava/lang/String;)V HSPLjava/io/StringWriter;->write(Ljava/lang/String;II)V HSPLjava/io/StringWriter;->write([CII)V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLjava/io/UnixFileSystem;->canonicalize(Ljava/lang/String;)Ljava/lang/String; -HSPLjava/io/UnixFileSystem;->checkAccess(Ljava/io/File;I)Z +HSPLjava/io/UnixFileSystem;->checkAccess(Ljava/io/File;I)Z+]Ljava/io/File;Ljava/io/File;]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; HSPLjava/io/UnixFileSystem;->compare(Ljava/io/File;Ljava/io/File;)I HSPLjava/io/UnixFileSystem;->createDirectory(Ljava/io/File;)Z HSPLjava/io/UnixFileSystem;->createFileExclusively(Ljava/lang/String;)Z -HSPLjava/io/UnixFileSystem;->delete(Ljava/io/File;)Z -HSPLjava/io/UnixFileSystem;->getBooleanAttributes(Ljava/io/File;)I +HSPLjava/io/UnixFileSystem;->delete(Ljava/io/File;)Z+]Ljava/io/ExpiringCache;Ljava/io/ExpiringCache;]Ljava/io/File;Ljava/io/File;]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; +HSPLjava/io/UnixFileSystem;->getBooleanAttributes(Ljava/io/File;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLjava/io/UnixFileSystem;->getDefaultParent()Ljava/lang/String; HSPLjava/io/UnixFileSystem;->getLastModifiedTime(Ljava/io/File;)J -HSPLjava/io/UnixFileSystem;->getLength(Ljava/io/File;)J +HSPLjava/io/UnixFileSystem;->getLength(Ljava/io/File;)J+]Ljava/io/File;Ljava/io/File;]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; HSPLjava/io/UnixFileSystem;->getSpace(Ljava/io/File;I)J HSPLjava/io/UnixFileSystem;->hashCode(Ljava/io/File;)I -HSPLjava/io/UnixFileSystem;->isAbsolute(Ljava/io/File;)Z -HSPLjava/io/UnixFileSystem;->list(Ljava/io/File;)[Ljava/lang/String;+]Ljava/io/File;Ljava/io/File; +HSPLjava/io/UnixFileSystem;->isAbsolute(Ljava/io/File;)Z+]Ljava/io/File;Ljava/io/File; +HSPLjava/io/UnixFileSystem;->list(Ljava/io/File;)[Ljava/lang/String;+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;,Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLjava/io/UnixFileSystem;->normalize(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; -HSPLjava/io/UnixFileSystem;->prefixLength(Ljava/lang/String;)I -HSPLjava/io/UnixFileSystem;->rename(Ljava/io/File;Ljava/io/File;)Z -HSPLjava/io/UnixFileSystem;->resolve(Ljava/io/File;)Ljava/lang/String; -HSPLjava/io/UnixFileSystem;->resolve(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->prefixLength(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/io/UnixFileSystem;->rename(Ljava/io/File;Ljava/io/File;)Z+]Ljava/io/ExpiringCache;Ljava/io/ExpiringCache;]Ljava/io/File;Ljava/io/File;]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; +HSPLjava/io/UnixFileSystem;->resolve(Ljava/io/File;)Ljava/lang/String;+]Ljava/io/File;Ljava/io/File;]Ljava/io/UnixFileSystem;Ljava/io/UnixFileSystem; +HSPLjava/io/UnixFileSystem;->resolve(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String; HSPLjava/io/UnixFileSystem;->setLastModifiedTime(Ljava/io/File;J)Z HSPLjava/io/UnixFileSystem;->setPermission(Ljava/io/File;IZZ)Z HSPLjava/io/Writer;->()V @@ -24788,22 +24542,22 @@ HSPLjava/lang/AbstractStringBuilder;->append(C)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->append(D)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->append(F)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->append(I)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; -HSPLjava/lang/AbstractStringBuilder;->append(J)Ljava/lang/AbstractStringBuilder; +HSPLjava/lang/AbstractStringBuilder;->append(J)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder; HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; -HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/CharSequence;Ljava/nio/HeapCharBuffer;]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; -HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/nio/HeapCharBuffer; +HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/CharSequence;Ljava/nio/HeapCharBuffer;,Landroid/icu/impl/FormattedStringBuilder;]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; +HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/nio/HeapCharBuffer;,Landroid/icu/impl/FormattedStringBuilder; HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/StringBuffer;)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->append(Z)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->append([CII)Ljava/lang/AbstractStringBuilder; -HSPLjava/lang/AbstractStringBuilder;->appendChars(Ljava/lang/CharSequence;II)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/nio/HeapCharBuffer;]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; +HSPLjava/lang/AbstractStringBuilder;->appendChars(Ljava/lang/CharSequence;II)V+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/nio/HeapCharBuffer;,Landroid/icu/impl/FormattedStringBuilder;]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; HSPLjava/lang/AbstractStringBuilder;->appendChars([CII)V+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; HSPLjava/lang/AbstractStringBuilder;->appendCodePoint(I)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->appendNull()Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->charAt(I)C+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; HSPLjava/lang/AbstractStringBuilder;->checkRange(III)V HSPLjava/lang/AbstractStringBuilder;->checkRangeSIOOBE(III)V -HSPLjava/lang/AbstractStringBuilder;->codePointAt(I)I +HSPLjava/lang/AbstractStringBuilder;->codePointAt(I)I+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuffer; HSPLjava/lang/AbstractStringBuilder;->delete(II)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->deleteCharAt(I)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->ensureCapacity(I)V @@ -24813,7 +24567,6 @@ HSPLjava/lang/AbstractStringBuilder;->getChars(II[CI)V HSPLjava/lang/AbstractStringBuilder;->getCoder()B HSPLjava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;)I HSPLjava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;I)I -HSPLjava/lang/AbstractStringBuilder;->inflate()V+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder;,Ljava/lang/StringBuffer; HSPLjava/lang/AbstractStringBuilder;->insert(IC)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/AbstractStringBuilder;Ljava/lang/StringBuilder; HSPLjava/lang/AbstractStringBuilder;->insert(II)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/AbstractStringBuilder;->insert(ILjava/lang/String;)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/String;Ljava/lang/String; @@ -24836,7 +24589,7 @@ HSPLjava/lang/Boolean;->booleanValue()Z HSPLjava/lang/Boolean;->compare(ZZ)I HSPLjava/lang/Boolean;->compareTo(Ljava/lang/Boolean;)I HSPLjava/lang/Boolean;->compareTo(Ljava/lang/Object;)I -HSPLjava/lang/Boolean;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/Boolean;->equals(Ljava/lang/Object;)Z+]Ljava/lang/Boolean;Ljava/lang/Boolean; HSPLjava/lang/Boolean;->getBoolean(Ljava/lang/String;)Z HSPLjava/lang/Boolean;->hashCode()I HSPLjava/lang/Boolean;->hashCode(Z)I @@ -24872,13 +24625,10 @@ HSPLjava/lang/Character$UnicodeBlock;->of(I)Ljava/lang/Character$UnicodeBlock; HSPLjava/lang/Character;->(C)V HSPLjava/lang/Character;->charCount(I)I HSPLjava/lang/Character;->charValue()C -HSPLjava/lang/Character;->codePointAt(Ljava/lang/CharSequence;I)I+]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;,Ljava/lang/String; +HSPLjava/lang/Character;->codePointAt(Ljava/lang/CharSequence;I)I+]Ljava/lang/CharSequence;megamorphic_types HSPLjava/lang/Character;->codePointAtImpl([CII)I HSPLjava/lang/Character;->codePointBefore(Ljava/lang/CharSequence;I)I HSPLjava/lang/Character;->codePointCount(Ljava/lang/CharSequence;II)I+]Ljava/lang/CharSequence;Ljava/lang/String; -HSPLjava/lang/Character;->compare(CC)I -HSPLjava/lang/Character;->compareTo(Ljava/lang/Character;)I -HSPLjava/lang/Character;->compareTo(Ljava/lang/Object;)I+]Ljava/lang/Character;Ljava/lang/Character; HSPLjava/lang/Character;->digit(CI)I HSPLjava/lang/Character;->digit(II)I HSPLjava/lang/Character;->equals(Ljava/lang/Object;)Z @@ -24936,7 +24686,7 @@ HSPLjava/lang/Class;->findInterfaceMethod(Ljava/lang/String;[Ljava/lang/Class;)L HSPLjava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; HSPLjava/lang/Class;->forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class; HSPLjava/lang/Class;->getAccessFlags()I -HSPLjava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; +HSPLjava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->getCanonicalName()Ljava/lang/String; HSPLjava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->getComponentType()Ljava/lang/Class; @@ -24950,15 +24700,15 @@ HSPLjava/lang/Class;->getDeclaredMethods()[Ljava/lang/reflect/Method;+]Ljava/lan HSPLjava/lang/Class;->getEnclosingConstructor()Ljava/lang/reflect/Constructor; HSPLjava/lang/Class;->getEnclosingMethod()Ljava/lang/reflect/Method; HSPLjava/lang/Class;->getEnumConstants()[Ljava/lang/Object; -HSPLjava/lang/Class;->getEnumConstantsShared()[Ljava/lang/Object; +HSPLjava/lang/Class;->getEnumConstantsShared()[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field; HSPLjava/lang/Class;->getFields()[Ljava/lang/reflect/Field; HSPLjava/lang/Class;->getGenericInterfaces()[Ljava/lang/reflect/Type; -HSPLjava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;+]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser;]Ljava/lang/Class;Ljava/lang/Class; +HSPLjava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type; HSPLjava/lang/Class;->getInterfaces()[Ljava/lang/Class; HSPLjava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; HSPLjava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;Z)Ljava/lang/reflect/Method; -HSPLjava/lang/Class;->getMethods()[Ljava/lang/reflect/Method; +HSPLjava/lang/Class;->getMethods()[Ljava/lang/reflect/Method;+]Ljava/util/List;Ljava/util/ArrayList; HSPLjava/lang/Class;->getModifiers()I+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->getName()Ljava/lang/String; HSPLjava/lang/Class;->getPackage()Ljava/lang/Package; @@ -24966,18 +24716,18 @@ HSPLjava/lang/Class;->getPackageName()Ljava/lang/String; HSPLjava/lang/Class;->getProtectionDomain()Ljava/security/ProtectionDomain; HSPLjava/lang/Class;->getPublicFieldsRecursive(Ljava/util/List;)V HSPLjava/lang/Class;->getPublicMethodRecursive(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; -HSPLjava/lang/Class;->getPublicMethodsInternal(Ljava/util/List;)V +HSPLjava/lang/Class;->getPublicMethodsInternal(Ljava/util/List;)V+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream; -HSPLjava/lang/Class;->getSignatureAttribute()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLjava/lang/Class;->getSimpleName()Ljava/lang/String; -HSPLjava/lang/Class;->getSuperclass()Ljava/lang/Class; +HSPLjava/lang/Class;->getSignatureAttribute()Ljava/lang/String; +HSPLjava/lang/Class;->getSimpleName()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Class;Ljava/lang/Class; +HSPLjava/lang/Class;->getSuperclass()Ljava/lang/Class;+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->getTypeName()Ljava/lang/String; HSPLjava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable; HSPLjava/lang/Class;->isAnnotation()Z HSPLjava/lang/Class;->isAnnotationPresent(Ljava/lang/Class;)Z HSPLjava/lang/Class;->isArray()Z+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->isAssignableFrom(Ljava/lang/Class;)Z+]Ljava/lang/Class;Ljava/lang/Class; -HSPLjava/lang/Class;->isEnum()Z +HSPLjava/lang/Class;->isEnum()Z+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->isInstance(Ljava/lang/Object;)Z+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->isInterface()Z HSPLjava/lang/Class;->isLocalClass()Z+]Ljava/lang/Class;Ljava/lang/Class; @@ -24985,7 +24735,6 @@ HSPLjava/lang/Class;->isLocalOrAnonymousClass()Z HSPLjava/lang/Class;->isMemberClass()Z HSPLjava/lang/Class;->isPrimitive()Z HSPLjava/lang/Class;->isProxy()Z -HSPLjava/lang/Class;->isRecord()Z+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String; HSPLjava/lang/Class;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/ClassCastException;->(Ljava/lang/String;)V @@ -25014,7 +24763,7 @@ HSPLjava/lang/Daemons$Daemon;->startPostZygoteFork()V HSPLjava/lang/Daemons$Daemon;->stop()V HSPLjava/lang/Daemons$FinalizerDaemon;->-$$Nest$fgetprogressCounter(Ljava/lang/Daemons$FinalizerDaemon;)Ljava/util/concurrent/atomic/AtomicInteger; HSPLjava/lang/Daemons$FinalizerDaemon;->-$$Nest$sfgetINSTANCE()Ljava/lang/Daemons$FinalizerDaemon; -HSPLjava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V+]Ljava/lang/Object;missing_types]Ljava/lang/ref/FinalizerReference;Ljava/lang/ref/FinalizerReference; +HSPLjava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V+]Ljava/lang/Object;megamorphic_types]Ljava/lang/ref/FinalizerReference;Ljava/lang/ref/FinalizerReference; HSPLjava/lang/Daemons$FinalizerDaemon;->processReference(Ljava/lang/Object;)V+]Ljava/lang/ref/FinalizerReference;Ljava/lang/ref/FinalizerReference; HSPLjava/lang/Daemons$FinalizerDaemon;->runInternal()V HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->-$$Nest$mmonitoringNeeded(Ljava/lang/Daemons$FinalizerWatchdogDaemon;I)V @@ -25064,7 +24813,7 @@ HSPLjava/lang/Enum;->compareTo(Ljava/lang/Enum;)I HSPLjava/lang/Enum;->compareTo(Ljava/lang/Object;)I HSPLjava/lang/Enum;->enumValues(Ljava/lang/Class;)[Ljava/lang/Object; HSPLjava/lang/Enum;->equals(Ljava/lang/Object;)Z -HSPLjava/lang/Enum;->getDeclaringClass()Ljava/lang/Class; +HSPLjava/lang/Enum;->getDeclaringClass()Ljava/lang/Class;+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;missing_types HSPLjava/lang/Enum;->getSharedConstants(Ljava/lang/Class;)[Ljava/lang/Enum;+]Llibcore/util/BasicLruCache;Ljava/lang/Enum$1; HSPLjava/lang/Enum;->hashCode()I HSPLjava/lang/Enum;->name()Ljava/lang/String; @@ -25114,7 +24863,7 @@ HSPLjava/lang/Integer;->bitCount(I)I HSPLjava/lang/Integer;->byteValue()B HSPLjava/lang/Integer;->compare(II)I HSPLjava/lang/Integer;->compareTo(Ljava/lang/Integer;)I -HSPLjava/lang/Integer;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/Integer;->compareTo(Ljava/lang/Object;)I+]Ljava/lang/Integer;Ljava/lang/Integer; HSPLjava/lang/Integer;->decode(Ljava/lang/String;)Ljava/lang/Integer; HSPLjava/lang/Integer;->divideUnsigned(II)I HSPLjava/lang/Integer;->doubleValue()D @@ -25157,13 +24906,13 @@ HSPLjava/lang/Integer;->valueOf(I)Ljava/lang/Integer; HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer; HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;I)Ljava/lang/Integer; HSPLjava/lang/InterruptedException;->()V -HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;missing_types]Ljava/util/Iterator;missing_types]Ljava/lang/Iterable;missing_types +HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V+]Ljava/lang/Iterable;missing_types]Ljava/util/function/Consumer;missing_types]Ljava/util/Iterator;missing_types HSPLjava/lang/LinkageError;->(Ljava/lang/String;)V HSPLjava/lang/Long;->(J)V HSPLjava/lang/Long;->bitCount(J)I HSPLjava/lang/Long;->compare(JJ)I HSPLjava/lang/Long;->compareTo(Ljava/lang/Long;)I -HSPLjava/lang/Long;->compareTo(Ljava/lang/Object;)I +HSPLjava/lang/Long;->compareTo(Ljava/lang/Object;)I+]Ljava/lang/Long;Ljava/lang/Long; HSPLjava/lang/Long;->compareUnsigned(JJ)I HSPLjava/lang/Long;->decode(Ljava/lang/String;)Ljava/lang/Long; HSPLjava/lang/Long;->divideUnsigned(JJ)J @@ -25259,7 +25008,7 @@ HSPLjava/lang/Object;->finalize()V HSPLjava/lang/Object;->getClass()Ljava/lang/Class; HSPLjava/lang/Object;->hashCode()I HSPLjava/lang/Object;->identityHashCode(Ljava/lang/Object;)I -HSPLjava/lang/Object;->toString()Ljava/lang/String; +HSPLjava/lang/Object;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Landroid/os/BinderProxy;]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/Object;->wait()V HSPLjava/lang/Object;->wait(J)V+]Ljava/lang/Object;missing_types HSPLjava/lang/Package;->(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 @@ -25307,7 +25056,7 @@ HSPLjava/lang/Short;->valueOf(Ljava/lang/String;)Ljava/lang/Short; HSPLjava/lang/Short;->valueOf(Ljava/lang/String;I)Ljava/lang/Short; HSPLjava/lang/Short;->valueOf(S)Ljava/lang/Short; HSPLjava/lang/StackTraceElement;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V -HSPLjava/lang/StackTraceElement;->equals(Ljava/lang/Object;)Z +HSPLjava/lang/StackTraceElement;->equals(Ljava/lang/Object;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/StackTraceElement;->getClassName()Ljava/lang/String; HSPLjava/lang/StackTraceElement;->getFileName()Ljava/lang/String; HSPLjava/lang/StackTraceElement;->getLineNumber()I @@ -25333,10 +25082,10 @@ HSPLjava/lang/String;->endsWith(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/la HSPLjava/lang/String;->equals(Ljava/lang/Object;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->equalsIgnoreCase(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/util/Formatter;Ljava/util/Formatter; -HSPLjava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; -HSPLjava/lang/String;->getBytes()[B +HSPLjava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;+]Ljava/util/Formatter;Ljava/util/Formatter; +HSPLjava/lang/String;->getBytes()[B+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->getBytes(Ljava/lang/String;)[B -HSPLjava/lang/String;->getBytes(Ljava/nio/charset/Charset;)[B +HSPLjava/lang/String;->getBytes(Ljava/nio/charset/Charset;)[B+]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/lang/String;->getBytes([BIB)V+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->getChars(II[CI)V+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->getChars([CI)V @@ -25346,13 +25095,13 @@ HSPLjava/lang/String;->indexOf(II)I+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->indexOf(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->indexOf(Ljava/lang/String;I)I HSPLjava/lang/String;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I+]Ljava/lang/String;Ljava/lang/String; -HSPLjava/lang/String;->indexOf([BBILjava/lang/String;I)I +HSPLjava/lang/String;->indexOf([BBILjava/lang/String;I)I+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->isEmpty()Z HSPLjava/lang/String;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String; HSPLjava/lang/String;->join(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/String; HSPLjava/lang/String;->lastIndexOf(I)I+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->lastIndexOf(II)I+]Ljava/lang/String;Ljava/lang/String; -HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;)I +HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;I)I HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->lastIndexOf([BBILjava/lang/String;I)I @@ -25372,7 +25121,7 @@ HSPLjava/lang/String;->startsWith(Ljava/lang/String;I)Z+]Ljava/lang/String;Ljava HSPLjava/lang/String;->subSequence(II)Ljava/lang/CharSequence;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->substring(I)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->substring(II)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; -HSPLjava/lang/String;->toLowerCase()Ljava/lang/String; +HSPLjava/lang/String;->toLowerCase()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/String;->toLowerCase(Ljava/util/Locale;)Ljava/lang/String; HSPLjava/lang/String;->toString()Ljava/lang/String; HSPLjava/lang/String;->toUpperCase()Ljava/lang/String; @@ -25388,11 +25137,10 @@ HSPLjava/lang/String;->valueOf(Z)Ljava/lang/String; HSPLjava/lang/String;->valueOf([C)Ljava/lang/String; HSPLjava/lang/StringBuffer;->()V HSPLjava/lang/StringBuffer;->(I)V -HSPLjava/lang/StringBuffer;->(Ljava/lang/String;)V +HSPLjava/lang/StringBuffer;->(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLjava/lang/StringBuffer;->append(C)Ljava/lang/StringBuffer; HSPLjava/lang/StringBuffer;->append(I)Ljava/lang/StringBuffer; HSPLjava/lang/StringBuffer;->append(J)Ljava/lang/StringBuffer; -HSPLjava/lang/StringBuffer;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder; HSPLjava/lang/StringBuffer;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/StringBuffer; HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;)Ljava/lang/Appendable; HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;)Ljava/lang/StringBuffer; @@ -25413,8 +25161,8 @@ HSPLjava/lang/StringBuffer;->setLength(I)V HSPLjava/lang/StringBuffer;->toString()Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLjava/lang/StringBuilder;->()V HSPLjava/lang/StringBuilder;->(I)V -HSPLjava/lang/StringBuilder;->(Ljava/lang/CharSequence;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/String; -HSPLjava/lang/StringBuilder;->(Ljava/lang/String;)V +HSPLjava/lang/StringBuilder;->(Ljava/lang/CharSequence;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;,Ljava/lang/String; +HSPLjava/lang/StringBuilder;->(Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/StringBuilder;->append(C)Ljava/lang/AbstractStringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->append(C)Ljava/lang/Appendable;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLjava/lang/StringBuilder;->append(C)Ljava/lang/StringBuilder; @@ -25460,7 +25208,7 @@ HSPLjava/lang/StringFactory;->newStringFromBytes([B)Ljava/lang/String; HSPLjava/lang/StringFactory;->newStringFromBytes([BI)Ljava/lang/String; HSPLjava/lang/StringFactory;->newStringFromBytes([BII)Ljava/lang/String; HSPLjava/lang/StringFactory;->newStringFromBytes([BIILjava/lang/String;)Ljava/lang/String; -HSPLjava/lang/StringFactory;->newStringFromBytes([BIILjava/nio/charset/Charset;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/lang/StringFactory;->newStringFromBytes([BIILjava/nio/charset/Charset;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU; HSPLjava/lang/StringFactory;->newStringFromBytes([BLjava/lang/String;)Ljava/lang/String; HSPLjava/lang/StringFactory;->newStringFromBytes([BLjava/nio/charset/Charset;)Ljava/lang/String; HSPLjava/lang/StringFactory;->newStringFromChars([C)Ljava/lang/String; @@ -25479,9 +25227,7 @@ HSPLjava/lang/StringUTF16;->getChars([BII[CI)V HSPLjava/lang/StringUTF16;->inflate([BI[BII)V HSPLjava/lang/StringUTF16;->length([B)I HSPLjava/lang/StringUTF16;->newBytesFor(I)[B -HSPLjava/lang/StringUTF16;->newString([BII)Ljava/lang/String; HSPLjava/lang/StringUTF16;->putChar([BII)V -HSPLjava/lang/StringUTF16;->putCharSB([BII)V HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->remove(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/lang/System;->arraycopy([BI[BII)V @@ -25491,11 +25237,11 @@ HSPLjava/lang/System;->arraycopy([FI[FII)V HSPLjava/lang/System;->arraycopy([II[III)V HSPLjava/lang/System;->arraycopy([JI[JII)V HSPLjava/lang/System;->arraycopy([ZI[ZII)V -HSPLjava/lang/System;->checkKey(Ljava/lang/String;)V +HSPLjava/lang/System;->checkKey(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; HSPLjava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String; HSPLjava/lang/System;->gc()V HSPLjava/lang/System;->getProperties()Ljava/util/Properties; -HSPLjava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Properties;Ljava/lang/System$PropertiesWithNonOverrideableDefaults; HSPLjava/lang/System;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLjava/lang/System;->getSecurityManager()Ljava/lang/SecurityManager; HSPLjava/lang/System;->getenv(Ljava/lang/String;)Ljava/lang/String; @@ -25505,7 +25251,7 @@ HSPLjava/lang/System;->load(Ljava/lang/String;)V HSPLjava/lang/System;->loadLibrary(Ljava/lang/String;)V HSPLjava/lang/System;->logE(Ljava/lang/String;)V HSPLjava/lang/System;->logW(Ljava/lang/String;)V -HSPLjava/lang/System;->runFinalization()V +HSPLjava/lang/System;->runFinalization()V+]Ljava/lang/Runtime;Ljava/lang/Runtime; HSPLjava/lang/System;->setErr(Ljava/io/PrintStream;)V HSPLjava/lang/System;->setOut(Ljava/io/PrintStream;)V HSPLjava/lang/System;->setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; @@ -25580,13 +25326,13 @@ HSPLjava/lang/ThreadLocal$ThreadLocalMap;->(Ljava/lang/ThreadLocal$ThreadL HSPLjava/lang/ThreadLocal$ThreadLocalMap;->(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V HSPLjava/lang/ThreadLocal$ThreadLocalMap;->cleanSomeSlots(II)Z+]Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; HSPLjava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntries()V -HSPLjava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntry(I)I +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntry(I)I+]Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;+]Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntryAfterMiss(Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;+]Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; HSPLjava/lang/ThreadLocal$ThreadLocalMap;->nextIndex(II)I HSPLjava/lang/ThreadLocal$ThreadLocalMap;->prevIndex(II)I HSPLjava/lang/ThreadLocal$ThreadLocalMap;->rehash()V -HSPLjava/lang/ThreadLocal$ThreadLocalMap;->remove(Ljava/lang/ThreadLocal;)V +HSPLjava/lang/ThreadLocal$ThreadLocalMap;->remove(Ljava/lang/ThreadLocal;)V+]Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; HSPLjava/lang/ThreadLocal$ThreadLocalMap;->replaceStaleEntry(Ljava/lang/ThreadLocal;Ljava/lang/Object;I)V HSPLjava/lang/ThreadLocal$ThreadLocalMap;->resize()V HSPLjava/lang/ThreadLocal$ThreadLocalMap;->set(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V+]Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; @@ -25610,12 +25356,12 @@ HSPLjava/lang/Throwable$WrappedPrintStream;->lock()Ljava/lang/Object; HSPLjava/lang/Throwable$WrappedPrintStream;->println(Ljava/lang/Object;)V HSPLjava/lang/Throwable$WrappedPrintWriter;->(Ljava/io/PrintWriter;)V HSPLjava/lang/Throwable$WrappedPrintWriter;->lock()Ljava/lang/Object; -HSPLjava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V -HSPLjava/lang/Throwable;->()V +HSPLjava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V+]Ljava/io/PrintWriter;Lcom/android/internal/util/LineBreakBufferedWriter;,Lcom/android/internal/util/FastPrintWriter; +HSPLjava/lang/Throwable;->()V+]Ljava/lang/Throwable;missing_types HSPLjava/lang/Throwable;->(Ljava/lang/String;)V+]Ljava/lang/Throwable;megamorphic_types -HSPLjava/lang/Throwable;->(Ljava/lang/String;Ljava/lang/Throwable;)V +HSPLjava/lang/Throwable;->(Ljava/lang/String;Ljava/lang/Throwable;)V+]Ljava/lang/Throwable;missing_types HSPLjava/lang/Throwable;->(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V -HSPLjava/lang/Throwable;->(Ljava/lang/Throwable;)V +HSPLjava/lang/Throwable;->(Ljava/lang/Throwable;)V+]Ljava/lang/Throwable;missing_types HSPLjava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V HSPLjava/lang/Throwable;->fillInStackTrace()Ljava/lang/Throwable; HSPLjava/lang/Throwable;->getCause()Ljava/lang/Throwable; @@ -25625,12 +25371,12 @@ HSPLjava/lang/Throwable;->getOurStackTrace()[Ljava/lang/StackTraceElement; HSPLjava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement; HSPLjava/lang/Throwable;->getSuppressed()[Ljava/lang/Throwable; HSPLjava/lang/Throwable;->initCause(Ljava/lang/Throwable;)Ljava/lang/Throwable; -HSPLjava/lang/Throwable;->printEnclosedStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V +HSPLjava/lang/Throwable;->printEnclosedStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Throwable$PrintStreamOrWriter;Ljava/lang/Throwable$WrappedPrintWriter;]Ljava/lang/StackTraceElement;Ljava/lang/StackTraceElement;]Ljava/util/Set;Ljava/util/Collections$SetFromMap;]Ljava/lang/Throwable;missing_types HSPLjava/lang/Throwable;->printStackTrace()V HSPLjava/lang/Throwable;->printStackTrace(Ljava/io/PrintStream;)V HSPLjava/lang/Throwable;->printStackTrace(Ljava/io/PrintWriter;)V HSPLjava/lang/Throwable;->printStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Throwable$PrintStreamOrWriter;Ljava/lang/Throwable$WrappedPrintWriter;]Ljava/lang/Throwable;missing_types]Ljava/util/Set;Ljava/util/Collections$SetFromMap; -HSPLjava/lang/Throwable;->readObject(Ljava/io/ObjectInputStream;)V+][Ljava/lang/StackTraceElement;[Ljava/lang/StackTraceElement; +HSPLjava/lang/Throwable;->readObject(Ljava/io/ObjectInputStream;)V+][Ljava/lang/StackTraceElement;[Ljava/lang/StackTraceElement;]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2; HSPLjava/lang/Throwable;->setStackTrace([Ljava/lang/StackTraceElement;)V HSPLjava/lang/Throwable;->toString()Ljava/lang/String; HSPLjava/lang/Throwable;->writeObject(Ljava/io/ObjectOutputStream;)V @@ -25658,7 +25404,7 @@ HSPLjava/lang/UnsatisfiedLinkError;->(Ljava/lang/String;)V HSPLjava/lang/UnsupportedOperationException;->()V HSPLjava/lang/UnsupportedOperationException;->(Ljava/lang/String;)V HSPLjava/lang/VMClassLoader;->getResource(Ljava/lang/String;)Ljava/net/URL; -HSPLjava/lang/VMClassLoader;->getResources(Ljava/lang/String;)Ljava/util/List; +HSPLjava/lang/VMClassLoader;->getResources(Ljava/lang/String;)Ljava/util/List;+]Llibcore/io/ClassPathURLStreamHandler;Llibcore/io/ClassPathURLStreamHandler; HSPLjava/lang/invoke/FieldVarHandle;->(Ljava/lang/reflect/Field;Ljava/lang/Class;)V HSPLjava/lang/invoke/FieldVarHandle;->create(Ljava/lang/reflect/Field;)Ljava/lang/invoke/FieldVarHandle; HSPLjava/lang/invoke/MethodHandle;->(JILjava/lang/invoke/MethodType;)V @@ -25720,7 +25466,7 @@ HSPLjava/lang/ref/FinalizerReference$Sentinel;->finalize()V HSPLjava/lang/ref/FinalizerReference;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V HSPLjava/lang/ref/FinalizerReference;->add(Ljava/lang/Object;)V HSPLjava/lang/ref/FinalizerReference;->clear()V -HSPLjava/lang/ref/FinalizerReference;->enqueueSentinelReference(Ljava/lang/ref/FinalizerReference$Sentinel;)Z +HSPLjava/lang/ref/FinalizerReference;->enqueueSentinelReference(Ljava/lang/ref/FinalizerReference$Sentinel;)Z+]Ljava/lang/ref/FinalizerReference;Ljava/lang/ref/FinalizerReference; HSPLjava/lang/ref/FinalizerReference;->finalizeAllEnqueued(J)V HSPLjava/lang/ref/FinalizerReference;->get()Ljava/lang/Object; HSPLjava/lang/ref/FinalizerReference;->remove(Ljava/lang/ref/FinalizerReference;)V @@ -25728,7 +25474,7 @@ HSPLjava/lang/ref/PhantomReference;->(Ljava/lang/Object;Ljava/lang/ref/Ref HSPLjava/lang/ref/Reference$SinkHolder;->-$$Nest$sfgetfinalize_count()I HSPLjava/lang/ref/Reference;->(Ljava/lang/Object;)V HSPLjava/lang/ref/Reference;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V -HSPLjava/lang/ref/Reference;->clear()V +HSPLjava/lang/ref/Reference;->clear()V+]Ljava/lang/ref/Reference;Ljava/lang/ref/WeakReference;,Ljdk/internal/ref/CleanerImpl$PhantomCleanableRef; HSPLjava/lang/ref/Reference;->get()Ljava/lang/Object; HSPLjava/lang/ref/Reference;->reachabilityFence(Ljava/lang/Object;)V HSPLjava/lang/ref/Reference;->refersTo(Ljava/lang/Object;)Z @@ -25746,7 +25492,7 @@ HSPLjava/lang/ref/SoftReference;->get()Ljava/lang/Object; HSPLjava/lang/ref/WeakReference;->(Ljava/lang/Object;)V HSPLjava/lang/ref/WeakReference;->(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V HSPLjava/lang/reflect/AccessibleObject;->()V -HSPLjava/lang/reflect/AccessibleObject;->getAnnotations()[Ljava/lang/annotation/Annotation; +HSPLjava/lang/reflect/AccessibleObject;->getAnnotations()[Ljava/lang/annotation/Annotation;+]Ljava/lang/reflect/AccessibleObject;Ljava/lang/reflect/Field;,Ljava/lang/reflect/Method; HSPLjava/lang/reflect/AccessibleObject;->isAccessible()Z HSPLjava/lang/reflect/AccessibleObject;->setAccessible(Z)V HSPLjava/lang/reflect/AccessibleObject;->setAccessible0(Ljava/lang/reflect/AccessibleObject;Z)V @@ -25789,23 +25535,23 @@ HSPLjava/lang/reflect/Executable;->isSynthetic()Z HSPLjava/lang/reflect/Executable;->isVarArgs()Z HSPLjava/lang/reflect/Executable;->printModifiersIfNonzero(Ljava/lang/StringBuilder;IZ)V HSPLjava/lang/reflect/Executable;->separateWithCommas([Ljava/lang/Class;Ljava/lang/StringBuilder;)V -HSPLjava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String; +HSPLjava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/reflect/Executable;Ljava/lang/reflect/Method; HSPLjava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; HSPLjava/lang/reflect/Field;->getDeclaringClass()Ljava/lang/Class; -HSPLjava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type; +HSPLjava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type;+]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field;]Ljava/lang/Class;Ljava/lang/Class;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser; HSPLjava/lang/reflect/Field;->getModifiers()I -HSPLjava/lang/reflect/Field;->getName()Ljava/lang/String; +HSPLjava/lang/reflect/Field;->getName()Ljava/lang/String;+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/reflect/Field;->getOffset()I HSPLjava/lang/reflect/Field;->getSignatureAttribute()Ljava/lang/String; HSPLjava/lang/reflect/Field;->getType()Ljava/lang/Class; HSPLjava/lang/reflect/Field;->hashCode()I HSPLjava/lang/reflect/Field;->isAnnotationPresent(Ljava/lang/Class;)Z HSPLjava/lang/reflect/Field;->isEnumConstant()Z -HSPLjava/lang/reflect/Field;->isSynthetic()Z +HSPLjava/lang/reflect/Field;->isSynthetic()Z+]Ljava/lang/reflect/Field;Ljava/lang/reflect/Field; HSPLjava/lang/reflect/InvocationTargetException;->(Ljava/lang/Throwable;)V HSPLjava/lang/reflect/InvocationTargetException;->getCause()Ljava/lang/Throwable; -HSPLjava/lang/reflect/Method$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -HSPLjava/lang/reflect/Method$1;->compare(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I +HSPLjava/lang/reflect/Method$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/lang/reflect/Method$1;Ljava/lang/reflect/Method$1; +HSPLjava/lang/reflect/Method$1;->compare(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/lang/reflect/Method;->equalNameAndParameters(Ljava/lang/reflect/Method;)Z HSPLjava/lang/reflect/Method;->equals(Ljava/lang/Object;)Z HSPLjava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; @@ -25823,8 +25569,8 @@ HSPLjava/lang/reflect/Method;->isBridge()Z HSPLjava/lang/reflect/Method;->isDefault()Z HSPLjava/lang/reflect/Method;->isSynthetic()Z HSPLjava/lang/reflect/Method;->isVarArgs()Z -HSPLjava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V -HSPLjava/lang/reflect/Method;->toString()Ljava/lang/String; +HSPLjava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;]Ljava/lang/Class;Ljava/lang/Class; +HSPLjava/lang/reflect/Method;->toString()Ljava/lang/String;+]Ljava/lang/reflect/Method;Ljava/lang/reflect/Method; HSPLjava/lang/reflect/Modifier;->isAbstract(I)Z HSPLjava/lang/reflect/Modifier;->isFinal(I)Z HSPLjava/lang/reflect/Modifier;->isInterface(I)Z @@ -25871,7 +25617,7 @@ HSPLjava/lang/reflect/WeakCache$Factory;->get()Ljava/lang/Object; HSPLjava/lang/reflect/WeakCache;->-$$Nest$fgetreverseMap(Ljava/lang/reflect/WeakCache;)Ljava/util/concurrent/ConcurrentMap; HSPLjava/lang/reflect/WeakCache;->-$$Nest$fgetvalueFactory(Ljava/lang/reflect/WeakCache;)Ljava/util/function/BiFunction; HSPLjava/lang/reflect/WeakCache;->expungeStaleEntries()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue; -HSPLjava/lang/reflect/WeakCache;->get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/function/BiFunction;Ljava/lang/reflect/Proxy$KeyFactory;]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/function/Supplier;Ljava/lang/reflect/WeakCache$Factory;,Ljava/lang/reflect/WeakCache$CacheValue; +HSPLjava/lang/reflect/WeakCache;->get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/function/BiFunction;Ljava/lang/reflect/Proxy$KeyFactory;]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;]Ljava/util/function/Supplier;Ljava/lang/reflect/WeakCache$CacheValue; HSPLjava/math/BigDecimal;->(I)V HSPLjava/math/BigDecimal;->(J)V HSPLjava/math/BigDecimal;->(Ljava/lang/String;)V @@ -25951,7 +25697,7 @@ HSPLjava/math/BigInteger;->implMultiplyToLen([II[II[I)[I HSPLjava/math/BigInteger;->intValue()I HSPLjava/math/BigInteger;->longValue()J HSPLjava/math/BigInteger;->mod(Ljava/math/BigInteger;)Ljava/math/BigInteger; -HSPLjava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger; +HSPLjava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;+]Ljava/math/BigInteger;Ljava/math/BigInteger; HSPLjava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger; HSPLjava/math/BigInteger;->multiply(Ljava/math/BigInteger;Z)Ljava/math/BigInteger; HSPLjava/math/BigInteger;->multiplyByInt([III)Ljava/math/BigInteger; @@ -25994,10 +25740,10 @@ HSPLjava/math/MutableBigInteger;->copyAndShift([III[III)V HSPLjava/math/MutableBigInteger;->divWord(JI)J HSPLjava/math/MutableBigInteger;->divide(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger; HSPLjava/math/MutableBigInteger;->divide(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;Z)Ljava/math/MutableBigInteger; -HSPLjava/math/MutableBigInteger;->divideKnuth(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger; -HSPLjava/math/MutableBigInteger;->divideKnuth(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;Z)Ljava/math/MutableBigInteger;+]Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger; +HSPLjava/math/MutableBigInteger;->divideKnuth(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;)Ljava/math/MutableBigInteger;+]Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger; +HSPLjava/math/MutableBigInteger;->divideKnuth(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;Z)Ljava/math/MutableBigInteger;+]Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;,Ljava/math/SignedMutableBigInteger; HSPLjava/math/MutableBigInteger;->divideMagnitude(Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger;Z)Ljava/math/MutableBigInteger;+]Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger; -HSPLjava/math/MutableBigInteger;->divideOneWord(ILjava/math/MutableBigInteger;)I+]Ljava/math/MutableBigInteger;Ljava/math/MutableBigInteger; +HSPLjava/math/MutableBigInteger;->divideOneWord(ILjava/math/MutableBigInteger;)I HSPLjava/math/MutableBigInteger;->getLowestSetBit()I HSPLjava/math/MutableBigInteger;->getMagnitudeArray()[I HSPLjava/math/MutableBigInteger;->mulsub([I[IIII)I @@ -26024,17 +25770,17 @@ HSPLjava/net/AbstractPlainSocketImpl;->close()V HSPLjava/net/AbstractPlainSocketImpl;->connect(Ljava/net/SocketAddress;I)V HSPLjava/net/AbstractPlainSocketImpl;->connectToAddress(Ljava/net/InetAddress;II)V HSPLjava/net/AbstractPlainSocketImpl;->create(Z)V -HSPLjava/net/AbstractPlainSocketImpl;->doConnect(Ljava/net/InetAddress;II)V +HSPLjava/net/AbstractPlainSocketImpl;->doConnect(Ljava/net/InetAddress;II)V+]Ljava/net/Socket;Ljava/net/Socket;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1; HSPLjava/net/AbstractPlainSocketImpl;->finalize()V HSPLjava/net/AbstractPlainSocketImpl;->getInputStream()Ljava/io/InputStream; -HSPLjava/net/AbstractPlainSocketImpl;->getOption(I)Ljava/lang/Object; +HSPLjava/net/AbstractPlainSocketImpl;->getOption(I)Ljava/lang/Object;+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl; HSPLjava/net/AbstractPlainSocketImpl;->getOutputStream()Ljava/io/OutputStream; HSPLjava/net/AbstractPlainSocketImpl;->getTimeout()I -HSPLjava/net/AbstractPlainSocketImpl;->isClosedOrPending()Z +HSPLjava/net/AbstractPlainSocketImpl;->isClosedOrPending()Z+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor; HSPLjava/net/AbstractPlainSocketImpl;->isConnectionReset()Z HSPLjava/net/AbstractPlainSocketImpl;->isConnectionResetPending()Z HSPLjava/net/AbstractPlainSocketImpl;->listen(I)V -HSPLjava/net/AbstractPlainSocketImpl;->releaseFD()V+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl; +HSPLjava/net/AbstractPlainSocketImpl;->releaseFD()V HSPLjava/net/AbstractPlainSocketImpl;->setOption(ILjava/lang/Object;)V HSPLjava/net/AbstractPlainSocketImpl;->socketClose()V HSPLjava/net/AbstractPlainSocketImpl;->socketPreClose()V @@ -26087,7 +25833,7 @@ HSPLjava/net/DatagramSocket;->createImpl()V HSPLjava/net/DatagramSocket;->getImpl()Ljava/net/DatagramSocketImpl; HSPLjava/net/DatagramSocket;->isBound()Z HSPLjava/net/DatagramSocket;->isClosed()Z -HSPLjava/net/DatagramSocket;->receive(Ljava/net/DatagramPacket;)V +HSPLjava/net/DatagramSocket;->receive(Ljava/net/DatagramPacket;)V+]Ljava/net/DatagramSocket;Ljava/net/MulticastSocket;]Ljava/net/DatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl; HSPLjava/net/DatagramSocket;->send(Ljava/net/DatagramPacket;)V HSPLjava/net/DatagramSocket;->setReuseAddress(Z)V HSPLjava/net/DatagramSocket;->setSoTimeout(I)V @@ -26180,7 +25926,7 @@ HSPLjava/net/Inet6Address;->isLoopbackAddress()Z HSPLjava/net/Inet6Address;->isMulticastAddress()Z HSPLjava/net/Inet6AddressImpl;->clearAddressCache()V HSPLjava/net/Inet6AddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress; -HSPLjava/net/Inet6AddressImpl;->lookupHostByName(Ljava/lang/String;I)[Ljava/net/InetAddress; +HSPLjava/net/Inet6AddressImpl;->lookupHostByName(Ljava/lang/String;I)[Ljava/net/InetAddress;+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/net/AddressCache;Ljava/net/AddressCache;]Ljava/net/InetAddress;Ljava/net/Inet6Address;,Ljava/net/Inet4Address;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1; HSPLjava/net/InetAddress$InetAddressHolder;->()V HSPLjava/net/InetAddress$InetAddressHolder;->getAddress()I HSPLjava/net/InetAddress$InetAddressHolder;->getHostName()Ljava/lang/String; @@ -26232,7 +25978,7 @@ HSPLjava/net/NetworkInterface$1checkedAddresses;->hasMoreElements()Z HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/lang/Object; HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/net/InetAddress; HSPLjava/net/NetworkInterface;->(Ljava/lang/String;I[Ljava/net/InetAddress;)V -HSPLjava/net/NetworkInterface;->getAll()[Ljava/net/NetworkInterface;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/net/NetworkInterface;Ljava/net/NetworkInterface;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; +HSPLjava/net/NetworkInterface;->getAll()[Ljava/net/NetworkInterface;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/net/NetworkInterface;Ljava/net/NetworkInterface;]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/util/Collection;Ljava/util/HashMap$Values;]Ljava/util/List;Ljava/util/ArrayList;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/ArrayList$Itr;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; HSPLjava/net/NetworkInterface;->getByName(Ljava/lang/String;)Ljava/net/NetworkInterface; HSPLjava/net/NetworkInterface;->getFlags()I HSPLjava/net/NetworkInterface;->getHardwareAddress()[B @@ -26250,7 +25996,7 @@ HSPLjava/net/PlainDatagramSocketImpl;->()V HSPLjava/net/PlainDatagramSocketImpl;->bind0(ILjava/net/InetAddress;)V HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketClose()V HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketCreate()V -HSPLjava/net/PlainDatagramSocketImpl;->doRecv(Ljava/net/DatagramPacket;I)V +HSPLjava/net/PlainDatagramSocketImpl;->doRecv(Ljava/net/DatagramPacket;I)V+]Ljava/net/DatagramPacket;Ljava/net/DatagramPacket;]Ljava/net/PlainDatagramSocketImpl;Ljava/net/PlainDatagramSocketImpl; HSPLjava/net/PlainDatagramSocketImpl;->receive0(Ljava/net/DatagramPacket;)V HSPLjava/net/PlainDatagramSocketImpl;->send(Ljava/net/DatagramPacket;)V HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption(ILjava/lang/Object;)V @@ -26259,7 +26005,7 @@ HSPLjava/net/PlainSocketImpl;->()V HSPLjava/net/PlainSocketImpl;->getMarkerFD()Ljava/io/FileDescriptor; HSPLjava/net/PlainSocketImpl;->socketAccept(Ljava/net/SocketImpl;)V HSPLjava/net/PlainSocketImpl;->socketBind(Ljava/net/InetAddress;I)V -HSPLjava/net/PlainSocketImpl;->socketClose0(Z)V +HSPLjava/net/PlainSocketImpl;->socketClose0(Z)V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor; HSPLjava/net/PlainSocketImpl;->socketConnect(Ljava/net/InetAddress;II)V HSPLjava/net/PlainSocketImpl;->socketCreate(Z)V HSPLjava/net/PlainSocketImpl;->socketGetOption(I)Ljava/lang/Object; @@ -26295,7 +26041,7 @@ HSPLjava/net/Socket$2;->run()Ljava/lang/Object; HSPLjava/net/Socket$3;->(Ljava/net/Socket;)V HSPLjava/net/Socket$3;->run()Ljava/io/OutputStream; HSPLjava/net/Socket$3;->run()Ljava/lang/Object; -HSPLjava/net/Socket;->()V +HSPLjava/net/Socket;->()V+]Ljava/net/Socket;missing_types HSPLjava/net/Socket;->(Ljava/net/InetAddress;I)V HSPLjava/net/Socket;->(Ljava/net/SocketImpl;)V HSPLjava/net/Socket;->([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V @@ -26306,7 +26052,7 @@ HSPLjava/net/Socket;->connect(Ljava/net/SocketAddress;)V HSPLjava/net/Socket;->connect(Ljava/net/SocketAddress;I)V HSPLjava/net/Socket;->createImpl(Z)V HSPLjava/net/Socket;->getFileDescriptor$()Ljava/io/FileDescriptor; -HSPLjava/net/Socket;->getImpl()Ljava/net/SocketImpl; +HSPLjava/net/Socket;->getImpl()Ljava/net/SocketImpl;+]Ljava/net/Socket;Ljava/net/Socket; HSPLjava/net/Socket;->getInetAddress()Ljava/net/InetAddress; HSPLjava/net/Socket;->getInputStream()Ljava/io/InputStream; HSPLjava/net/Socket;->getLocalAddress()Ljava/net/InetAddress; @@ -26316,7 +26062,7 @@ HSPLjava/net/Socket;->getOutputStream()Ljava/io/OutputStream; HSPLjava/net/Socket;->getPort()I HSPLjava/net/Socket;->getRemoteSocketAddress()Ljava/net/SocketAddress; HSPLjava/net/Socket;->getReuseAddress()Z -HSPLjava/net/Socket;->getSoTimeout()I +HSPLjava/net/Socket;->getSoTimeout()I+]Ljava/net/SocketImpl;Ljava/net/SocksSocketImpl;]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/net/Socket;Ljava/net/Socket; HSPLjava/net/Socket;->isBound()Z HSPLjava/net/Socket;->isClosed()Z HSPLjava/net/Socket;->isConnected()Z @@ -26342,8 +26088,8 @@ HSPLjava/net/SocketImpl;->setServerSocket(Ljava/net/ServerSocket;)V HSPLjava/net/SocketImpl;->setSocket(Ljava/net/Socket;)V HSPLjava/net/SocketInputStream;->(Ljava/net/AbstractPlainSocketImpl;)V HSPLjava/net/SocketInputStream;->finalize()V -HSPLjava/net/SocketInputStream;->read([BII)I+]Ljava/net/SocketInputStream;Ljava/net/SocketInputStream;]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl; -HSPLjava/net/SocketInputStream;->read([BIII)I+]Ljava/net/AbstractPlainSocketImpl;Ljava/net/SocksSocketImpl; +HSPLjava/net/SocketInputStream;->read([BII)I +HSPLjava/net/SocketInputStream;->read([BIII)I HSPLjava/net/SocketInputStream;->socketRead(Ljava/io/FileDescriptor;[BIII)I HSPLjava/net/SocketOutputStream;->(Ljava/net/AbstractPlainSocketImpl;)V HSPLjava/net/SocketOutputStream;->finalize()V @@ -26362,7 +26108,7 @@ HSPLjava/net/URI$Parser;->at(IIC)Z HSPLjava/net/URI$Parser;->charAt(I)C+]Ljava/lang/String;Ljava/lang/String; HSPLjava/net/URI$Parser;->checkChar(IJJLjava/lang/String;)V HSPLjava/net/URI$Parser;->checkChars(IIJJLjava/lang/String;)V -HSPLjava/net/URI$Parser;->parse(Z)V +HSPLjava/net/URI$Parser;->parse(Z)V+]Ljava/lang/String;Ljava/lang/String; HSPLjava/net/URI$Parser;->parseAuthority(II)I HSPLjava/net/URI$Parser;->parseHierarchical(II)I HSPLjava/net/URI$Parser;->parseHostname(II)I @@ -26370,7 +26116,7 @@ HSPLjava/net/URI$Parser;->parseIPv4Address(II)I HSPLjava/net/URI$Parser;->parseServer(II)I HSPLjava/net/URI$Parser;->scan(IIC)I HSPLjava/net/URI$Parser;->scan(IIJJ)I -HSPLjava/net/URI$Parser;->scan(IILjava/lang/String;Ljava/lang/String;)I +HSPLjava/net/URI$Parser;->scan(IILjava/lang/String;Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String; HSPLjava/net/URI$Parser;->scanByte(II)I HSPLjava/net/URI$Parser;->scanEscape(IIC)I HSPLjava/net/URI$Parser;->scanIPv4Address(IIZ)I @@ -26432,7 +26178,7 @@ HSPLjava/net/URL;->(Ljava/lang/String;)V HSPLjava/net/URL;->(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)V HSPLjava/net/URL;->(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V HSPLjava/net/URL;->(Ljava/net/URL;Ljava/lang/String;)V -HSPLjava/net/URL;->(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V+]Ljava/net/URLStreamHandler;Lsun/net/www/protocol/file/Handler;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLjava/net/URL;->(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V+]Ljava/net/URLStreamHandler;Lcom/android/okhttp/HttpsHandler;,Lsun/net/www/protocol/file/Handler;]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLjava/net/URL;->createBuiltinHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler; HSPLjava/net/URL;->getAuthority()Ljava/lang/String; HSPLjava/net/URL;->getFile()Ljava/lang/String; @@ -26444,7 +26190,7 @@ HSPLjava/net/URL;->getQuery()Ljava/lang/String; HSPLjava/net/URL;->getRef()Ljava/lang/String; HSPLjava/net/URL;->getURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler; HSPLjava/net/URL;->getUserInfo()Ljava/lang/String; -HSPLjava/net/URL;->isValidProtocol(Ljava/lang/String;)Z +HSPLjava/net/URL;->isValidProtocol(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLjava/net/URL;->openConnection()Ljava/net/URLConnection; HSPLjava/net/URL;->openStream()Ljava/io/InputStream; HSPLjava/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 @@ -26466,14 +26212,14 @@ HSPLjava/net/URLConnection;->setDoOutput(Z)V HSPLjava/net/URLConnection;->setReadTimeout(I)V HSPLjava/net/URLConnection;->setUseCaches(Z)V HSPLjava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -HSPLjava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String; +HSPLjava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLjava/net/URLDecoder;->isValidHexChar(C)Z HSPLjava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLjava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/nio/charset/Charset;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/util/BitSet;Ljava/util/BitSet;]Ljava/io/CharArrayWriter;Ljava/io/CharArrayWriter; HSPLjava/net/URLStreamHandler;->()V -HSPLjava/net/URLStreamHandler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/net/URLStreamHandler;Lsun/net/www/protocol/file/Handler;]Ljava/lang/String;Ljava/lang/String;]Ljava/net/URL;Ljava/net/URL; +HSPLjava/net/URLStreamHandler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V+]Ljava/net/URLStreamHandler;Lcom/android/okhttp/HttpsHandler;,Lsun/net/www/protocol/file/Handler;]Ljava/lang/String;Ljava/lang/String;]Ljava/net/URL;Ljava/net/URL;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLjava/net/URLStreamHandler;->setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -HSPLjava/net/URLStreamHandler;->toExternalForm(Ljava/net/URL;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Ljava/net/URL;Ljava/net/URL; +HSPLjava/net/URLStreamHandler;->toExternalForm(Ljava/net/URL;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/net/URL;Ljava/net/URL; HSPLjava/net/UnknownHostException;->(Ljava/lang/String;)V HSPLjava/nio/Bits;->byteOrder()Ljava/nio/ByteOrder; HSPLjava/nio/Bits;->char0(C)B @@ -26481,13 +26227,13 @@ HSPLjava/nio/Bits;->char1(C)B HSPLjava/nio/Bits;->getFloat(Ljava/nio/ByteBuffer;IZ)F HSPLjava/nio/Bits;->getFloatL(Ljava/nio/ByteBuffer;I)F HSPLjava/nio/Bits;->getInt(Ljava/nio/ByteBuffer;IZ)I -HSPLjava/nio/Bits;->getIntB(Ljava/nio/ByteBuffer;I)I +HSPLjava/nio/Bits;->getIntB(Ljava/nio/ByteBuffer;I)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/Bits;->getIntL(Ljava/nio/ByteBuffer;I)I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/Bits;->getLong(Ljava/nio/ByteBuffer;IZ)J -HSPLjava/nio/Bits;->getLongB(Ljava/nio/ByteBuffer;I)J -HSPLjava/nio/Bits;->getLongL(Ljava/nio/ByteBuffer;I)J +HSPLjava/nio/Bits;->getLongB(Ljava/nio/ByteBuffer;I)J+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLjava/nio/Bits;->getLongL(Ljava/nio/ByteBuffer;I)J+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/Bits;->getShort(Ljava/nio/ByteBuffer;IZ)S -HSPLjava/nio/Bits;->getShortB(Ljava/nio/ByteBuffer;I)S+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLjava/nio/Bits;->getShortB(Ljava/nio/ByteBuffer;I)S HSPLjava/nio/Bits;->getShortL(Ljava/nio/ByteBuffer;I)S+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/Bits;->int0(I)B HSPLjava/nio/Bits;->int1(I)B @@ -26515,7 +26261,7 @@ HSPLjava/nio/Bits;->putIntB(Ljava/nio/ByteBuffer;II)V+]Ljava/nio/ByteBuffer;Ljav HSPLjava/nio/Bits;->putIntL(Ljava/nio/ByteBuffer;II)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/Bits;->putLong(Ljava/nio/ByteBuffer;IJZ)V HSPLjava/nio/Bits;->putLongB(Ljava/nio/ByteBuffer;IJ)V -HSPLjava/nio/Bits;->putLongL(Ljava/nio/ByteBuffer;IJ)V +HSPLjava/nio/Bits;->putLongL(Ljava/nio/ByteBuffer;IJ)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/Bits;->putShort(Ljava/nio/ByteBuffer;ISZ)V HSPLjava/nio/Bits;->putShortB(Ljava/nio/ByteBuffer;IS)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/Bits;->putShortL(Ljava/nio/ByteBuffer;IS)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; @@ -26558,7 +26304,7 @@ HSPLjava/nio/ByteBuffer;->compareTo(Ljava/nio/ByteBuffer;)I+]Ljava/nio/ByteBuffe HSPLjava/nio/ByteBuffer;->equals(BB)Z HSPLjava/nio/ByteBuffer;->equals(Ljava/lang/Object;)Z+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer; HSPLjava/nio/ByteBuffer;->flip()Ljava/nio/Buffer; -HSPLjava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer; +HSPLjava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer; HSPLjava/nio/ByteBuffer;->hasArray()Z HSPLjava/nio/ByteBuffer;->hashCode()I+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer; HSPLjava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer; @@ -26574,7 +26320,7 @@ HSPLjava/nio/ByteBuffer;->wrap([B)Ljava/nio/ByteBuffer; HSPLjava/nio/ByteBuffer;->wrap([BII)Ljava/nio/ByteBuffer; HSPLjava/nio/ByteBufferAsCharBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V HSPLjava/nio/ByteBufferAsCharBuffer;->duplicate()Ljava/nio/CharBuffer; -HSPLjava/nio/ByteBufferAsCharBuffer;->get(I)C +HSPLjava/nio/ByteBufferAsCharBuffer;->get(I)C+]Ljava/nio/ByteBuffer;Ljava/nio/DirectByteBuffer;]Ljava/nio/ByteBufferAsCharBuffer;Ljava/nio/ByteBufferAsCharBuffer; HSPLjava/nio/ByteBufferAsCharBuffer;->get([CII)Ljava/nio/CharBuffer; HSPLjava/nio/ByteBufferAsCharBuffer;->isDirect()Z HSPLjava/nio/ByteBufferAsCharBuffer;->ix(I)I @@ -26585,8 +26331,7 @@ HSPLjava/nio/ByteBufferAsFloatBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/ni HSPLjava/nio/ByteBufferAsFloatBuffer;->ix(I)I HSPLjava/nio/ByteBufferAsFloatBuffer;->put(IF)Ljava/nio/FloatBuffer; HSPLjava/nio/ByteBufferAsFloatBuffer;->put([FII)Ljava/nio/FloatBuffer; -HSPLjava/nio/ByteBufferAsIntBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V -HSPLjava/nio/ByteBufferAsIntBuffer;->get(I)I+]Ljava/nio/ByteBufferAsIntBuffer;Ljava/nio/ByteBufferAsIntBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;,Ljava/nio/DirectByteBuffer; +HSPLjava/nio/ByteBufferAsIntBuffer;->(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/ByteBufferAsIntBuffer;->get([III)Ljava/nio/IntBuffer; HSPLjava/nio/ByteBufferAsIntBuffer;->ix(I)I HSPLjava/nio/ByteBufferAsIntBuffer;->put(I)Ljava/nio/IntBuffer; @@ -26605,13 +26350,13 @@ HSPLjava/nio/CharBuffer;->(IIII[CI)V HSPLjava/nio/CharBuffer;->allocate(I)Ljava/nio/CharBuffer; HSPLjava/nio/CharBuffer;->array()[C HSPLjava/nio/CharBuffer;->arrayOffset()I -HSPLjava/nio/CharBuffer;->charAt(I)C +HSPLjava/nio/CharBuffer;->charAt(I)C+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;,Ljava/nio/ByteBufferAsCharBuffer; HSPLjava/nio/CharBuffer;->clear()Ljava/nio/Buffer; HSPLjava/nio/CharBuffer;->flip()Ljava/nio/Buffer; HSPLjava/nio/CharBuffer;->get([C)Ljava/nio/CharBuffer; HSPLjava/nio/CharBuffer;->get([CII)Ljava/nio/CharBuffer; HSPLjava/nio/CharBuffer;->hasArray()Z -HSPLjava/nio/CharBuffer;->length()I +HSPLjava/nio/CharBuffer;->length()I+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; HSPLjava/nio/CharBuffer;->limit(I)Ljava/nio/Buffer; HSPLjava/nio/CharBuffer;->position(I)Ljava/nio/Buffer; HSPLjava/nio/CharBuffer;->toString()Ljava/lang/String; @@ -26694,12 +26439,12 @@ HSPLjava/nio/HeapByteBuffer;->compact()Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByte HSPLjava/nio/HeapByteBuffer;->duplicate()Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->get()B+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->get(I)B+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; -HSPLjava/nio/HeapByteBuffer;->get([BII)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->get([BII)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->getFloat()F HSPLjava/nio/HeapByteBuffer;->getFloat(I)F+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->getInt()I+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->getInt(I)I+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; -HSPLjava/nio/HeapByteBuffer;->getLong()J +HSPLjava/nio/HeapByteBuffer;->getLong()J+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->getLong(I)J HSPLjava/nio/HeapByteBuffer;->getShort()S+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->getShort(I)S+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; @@ -26708,14 +26453,14 @@ HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[SII)V+]Ljava/nio/HeapByteBuffer;Lja HSPLjava/nio/HeapByteBuffer;->isDirect()Z HSPLjava/nio/HeapByteBuffer;->isReadOnly()Z HSPLjava/nio/HeapByteBuffer;->ix(I)I -HSPLjava/nio/HeapByteBuffer;->put(B)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->put(B)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->put(IB)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->put([BII)Ljava/nio/ByteBuffer; HSPLjava/nio/HeapByteBuffer;->putChar(C)Ljava/nio/ByteBuffer; HSPLjava/nio/HeapByteBuffer;->putFloat(F)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->putInt(II)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; -HSPLjava/nio/HeapByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer; +HSPLjava/nio/HeapByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->putLong(J)Ljava/nio/ByteBuffer; HSPLjava/nio/HeapByteBuffer;->putShort(IS)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; HSPLjava/nio/HeapByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;+]Ljava/nio/HeapByteBuffer;Ljava/nio/HeapByteBuffer; @@ -26727,7 +26472,7 @@ HSPLjava/nio/HeapCharBuffer;->([CIIIIIZ)V HSPLjava/nio/HeapCharBuffer;->([CIIZ)V HSPLjava/nio/HeapCharBuffer;->get(I)C HSPLjava/nio/HeapCharBuffer;->ix(I)I -HSPLjava/nio/HeapCharBuffer;->put(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer; +HSPLjava/nio/HeapCharBuffer;->put(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;+]Ljava/nio/HeapCharBuffer;Ljava/nio/HeapCharBuffer; HSPLjava/nio/HeapCharBuffer;->put([CII)Ljava/nio/CharBuffer; HSPLjava/nio/HeapCharBuffer;->slice()Ljava/nio/CharBuffer; HSPLjava/nio/HeapCharBuffer;->toString(II)Ljava/lang/String; @@ -26795,7 +26540,7 @@ HSPLjava/nio/channels/spi/AbstractInterruptibleChannel$1;->(Ljava/nio/chan HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->()V HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->begin()V+]Ljava/lang/Thread;Ljava/lang/Thread; HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->blockedOn(Lsun/nio/ch/Interruptible;)V+]Ljava/lang/Thread;Ljava/lang/Thread; -HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->close()V +HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->close()V+]Ljava/nio/channels/spi/AbstractInterruptibleChannel;Lsun/nio/ch/FileChannelImpl; HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->end(Z)V HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->isOpen()Z HSPLjava/nio/channels/spi/AbstractSelectableChannel;->(Ljava/nio/channels/spi/SelectorProvider;)V @@ -26839,27 +26584,27 @@ HSPLjava/nio/charset/Charset;->equals(Ljava/lang/Object;)Z HSPLjava/nio/charset/Charset;->forName(Ljava/lang/String;)Ljava/nio/charset/Charset; HSPLjava/nio/charset/Charset;->forNameUEE(Ljava/lang/String;)Ljava/nio/charset/Charset; HSPLjava/nio/charset/Charset;->isSupported(Ljava/lang/String;)Z -HSPLjava/nio/charset/Charset;->lookup(Ljava/lang/String;)Ljava/nio/charset/Charset; +HSPLjava/nio/charset/Charset;->lookup(Ljava/lang/String;)Ljava/nio/charset/Charset;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Map$Entry;Ljava/util/AbstractMap$SimpleImmutableEntry; HSPLjava/nio/charset/Charset;->lookup2(Ljava/lang/String;)Ljava/nio/charset/Charset; HSPLjava/nio/charset/Charset;->name()Ljava/lang/String; HSPLjava/nio/charset/CharsetDecoder;->(Ljava/nio/charset/Charset;FF)V HSPLjava/nio/charset/CharsetDecoder;->(Ljava/nio/charset/Charset;FFLjava/lang/String;)V HSPLjava/nio/charset/CharsetDecoder;->averageCharsPerByte()F HSPLjava/nio/charset/CharsetDecoder;->charset()Ljava/nio/charset/Charset; -HSPLjava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; -HSPLjava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; -HSPLjava/nio/charset/CharsetDecoder;->flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; +HSPLjava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; +HSPLjava/nio/charset/CharsetDecoder;->flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLjava/nio/charset/CharsetDecoder;->implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult; HSPLjava/nio/charset/CharsetDecoder;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V HSPLjava/nio/charset/CharsetDecoder;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V HSPLjava/nio/charset/CharsetDecoder;->implReset()V HSPLjava/nio/charset/CharsetDecoder;->malformedInputAction()Ljava/nio/charset/CodingErrorAction; HSPLjava/nio/charset/CharsetDecoder;->maxCharsPerByte()F -HSPLjava/nio/charset/CharsetDecoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder; -HSPLjava/nio/charset/CharsetDecoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder; -HSPLjava/nio/charset/CharsetDecoder;->replaceWith(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/nio/charset/CharsetDecoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; +HSPLjava/nio/charset/CharsetDecoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; +HSPLjava/nio/charset/CharsetDecoder;->replaceWith(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;+]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLjava/nio/charset/CharsetDecoder;->replacement()Ljava/lang/String; -HSPLjava/nio/charset/CharsetDecoder;->reset()Ljava/nio/charset/CharsetDecoder; +HSPLjava/nio/charset/CharsetDecoder;->reset()Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLjava/nio/charset/CharsetDecoder;->unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction; HSPLjava/nio/charset/CharsetEncoder;->(Ljava/nio/charset/Charset;FF)V HSPLjava/nio/charset/CharsetEncoder;->(Ljava/nio/charset/Charset;FF[B)V @@ -26869,8 +26614,8 @@ HSPLjava/nio/charset/CharsetEncoder;->canEncode(Ljava/lang/CharSequence;)Z HSPLjava/nio/charset/CharsetEncoder;->canEncode(Ljava/nio/CharBuffer;)Z HSPLjava/nio/charset/CharsetEncoder;->charset()Ljava/nio/charset/Charset; HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer; -HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; -HSPLjava/nio/charset/CharsetEncoder;->flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; +HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;+]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer; +HSPLjava/nio/charset/CharsetEncoder;->flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;+]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; HSPLjava/nio/charset/CharsetEncoder;->implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult; HSPLjava/nio/charset/CharsetEncoder;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V HSPLjava/nio/charset/CharsetEncoder;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V @@ -26881,7 +26626,7 @@ HSPLjava/nio/charset/CharsetEncoder;->onMalformedInput(Ljava/nio/charset/CodingE HSPLjava/nio/charset/CharsetEncoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder; HSPLjava/nio/charset/CharsetEncoder;->replaceWith([B)Ljava/nio/charset/CharsetEncoder; HSPLjava/nio/charset/CharsetEncoder;->replacement()[B -HSPLjava/nio/charset/CharsetEncoder;->reset()Ljava/nio/charset/CharsetEncoder; +HSPLjava/nio/charset/CharsetEncoder;->reset()Ljava/nio/charset/CharsetEncoder;+]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU; HSPLjava/nio/charset/CharsetEncoder;->unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction; HSPLjava/nio/charset/CoderResult;->isError()Z HSPLjava/nio/charset/CoderResult;->isOverflow()Z @@ -26927,12 +26672,12 @@ HSPLjava/security/DigestInputStream;->(Ljava/io/InputStream;Ljava/security HSPLjava/security/DigestInputStream;->read([BII)I+]Ljava/io/InputStream;Ljava/io/FileInputStream;]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate; HSPLjava/security/DigestInputStream;->setMessageDigest(Ljava/security/MessageDigest;)V HSPLjava/security/GeneralSecurityException;->(Ljava/lang/String;)V -HSPLjava/security/KeyFactory;->(Ljava/lang/String;)V +HSPLjava/security/KeyFactory;->(Ljava/lang/String;)V+]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList; HSPLjava/security/KeyFactory;->(Ljava/security/KeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V HSPLjava/security/KeyFactory;->generatePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey; HSPLjava/security/KeyFactory;->generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey; HSPLjava/security/KeyFactory;->getInstance(Ljava/lang/String;)Ljava/security/KeyFactory; -HSPLjava/security/KeyFactory;->nextSpi(Ljava/security/KeyFactorySpi;)Ljava/security/KeyFactorySpi; +HSPLjava/security/KeyFactory;->nextSpi(Ljava/security/KeyFactorySpi;)Ljava/security/KeyFactorySpi;+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1; HSPLjava/security/KeyFactorySpi;->()V HSPLjava/security/KeyPair;->(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V HSPLjava/security/KeyPair;->getPrivate()Ljava/security/PrivateKey; @@ -26965,12 +26710,12 @@ HSPLjava/security/KeyStoreSpi;->engineLoad(Ljava/security/KeyStore$LoadStorePara HSPLjava/security/MessageDigest$Delegate;->(Ljava/security/MessageDigestSpi;Ljava/lang/String;)V HSPLjava/security/MessageDigest$Delegate;->clone()Ljava/lang/Object; HSPLjava/security/MessageDigest$Delegate;->engineDigest()[B -HSPLjava/security/MessageDigest$Delegate;->engineDigest([BII)I +HSPLjava/security/MessageDigest$Delegate;->engineDigest([BII)I+]Ljava/security/MessageDigestSpi;Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK$SHA1; HSPLjava/security/MessageDigest$Delegate;->engineGetDigestLength()I HSPLjava/security/MessageDigest$Delegate;->engineReset()V HSPLjava/security/MessageDigest$Delegate;->engineUpdate(B)V HSPLjava/security/MessageDigest$Delegate;->engineUpdate(Ljava/nio/ByteBuffer;)V -HSPLjava/security/MessageDigest$Delegate;->engineUpdate([BII)V +HSPLjava/security/MessageDigest$Delegate;->engineUpdate([BII)V+]Ljava/security/MessageDigestSpi;missing_types HSPLjava/security/MessageDigest;->(Ljava/lang/String;)V HSPLjava/security/MessageDigest;->digest()[B HSPLjava/security/MessageDigest;->digest([B)[B @@ -26986,7 +26731,7 @@ HSPLjava/security/MessageDigest;->update(Ljava/nio/ByteBuffer;)V HSPLjava/security/MessageDigest;->update([B)V HSPLjava/security/MessageDigest;->update([BII)V+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate; HSPLjava/security/MessageDigestSpi;->()V -HSPLjava/security/MessageDigestSpi;->engineDigest([BII)I +HSPLjava/security/MessageDigestSpi;->engineDigest([BII)I+]Ljava/security/MessageDigestSpi;Lcom/android/org/conscrypt/OpenSSLMessageDigestJDK$SHA1; HSPLjava/security/MessageDigestSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V HSPLjava/security/NoSuchAlgorithmException;->(Ljava/lang/String;)V HSPLjava/security/Provider$EngineDescription;->getConstructorParameterClass()Ljava/lang/Class; @@ -27017,7 +26762,7 @@ HSPLjava/security/Provider$ServiceKey;->(Ljava/lang/String;Ljava/lang/Stri HSPLjava/security/Provider$ServiceKey;->equals(Ljava/lang/Object;)Z HSPLjava/security/Provider$ServiceKey;->hashCode()I HSPLjava/security/Provider$ServiceKey;->matches(Ljava/lang/String;Ljava/lang/String;)Z -HSPLjava/security/Provider$UString;->(Ljava/lang/String;)V +HSPLjava/security/Provider$UString;->(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; HSPLjava/security/Provider$UString;->equals(Ljava/lang/Object;)Z HSPLjava/security/Provider$UString;->hashCode()I HSPLjava/security/Provider;->-$$Nest$sfgetknownEngines()Ljava/util/Map; @@ -27028,7 +26773,7 @@ HSPLjava/security/Provider;->checkLegacy(Ljava/lang/Object;)Z HSPLjava/security/Provider;->ensureLegacyParsed()V HSPLjava/security/Provider;->getEngineName(Ljava/lang/String;)Ljava/lang/String; HSPLjava/security/Provider;->getName()Ljava/lang/String; -HSPLjava/security/Provider;->getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service; +HSPLjava/security/Provider;->getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;+]Ljava/security/Provider$ServiceKey;Ljava/security/Provider$ServiceKey;]Ljava/util/Map;Ljava/util/LinkedHashMap; HSPLjava/security/Provider;->getServices()Ljava/util/Set; HSPLjava/security/Provider;->getTypeAndAlgorithm(Ljava/lang/String;)[Ljava/lang/String; HSPLjava/security/Provider;->implPut(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; @@ -27062,7 +26807,7 @@ HSPLjava/security/Security;->invalidateSMCache(Ljava/lang/String;)V HSPLjava/security/Security;->setProperty(Ljava/lang/String;Ljava/lang/String;)V HSPLjava/security/Signature$Delegate;->(Ljava/lang/String;)V HSPLjava/security/Signature$Delegate;->chooseFirstProvider()V -HSPLjava/security/Signature$Delegate;->chooseProvider(ILjava/security/Key;Ljava/security/SecureRandom;)V +HSPLjava/security/Signature$Delegate;->chooseProvider(ILjava/security/Key;Ljava/security/SecureRandom;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1; HSPLjava/security/Signature$Delegate;->engineInitSign(Ljava/security/PrivateKey;)V HSPLjava/security/Signature$Delegate;->engineInitVerify(Ljava/security/PublicKey;)V HSPLjava/security/Signature$Delegate;->engineSign()[B @@ -27140,7 +26885,7 @@ HSPLjava/security/cert/TrustAnchor;->getNameConstraints()[B HSPLjava/security/cert/TrustAnchor;->getTrustedCert()Ljava/security/cert/X509Certificate; HSPLjava/security/cert/TrustAnchor;->setNameConstraints([B)V HSPLjava/security/cert/X509CertSelector;->()V -HSPLjava/security/cert/X509CertSelector;->match(Ljava/security/cert/Certificate;)Z +HSPLjava/security/cert/X509CertSelector;->match(Ljava/security/cert/Certificate;)Z+]Ljava/security/cert/X509Certificate;Lcom/android/org/conscrypt/OpenSSLX509Certificate;]Ljavax/security/auth/x500/X500Principal;Ljavax/security/auth/x500/X500Principal; HSPLjava/security/cert/X509CertSelector;->matchAuthorityKeyID(Ljava/security/cert/X509Certificate;)Z HSPLjava/security/cert/X509CertSelector;->matchBasicConstraints(Ljava/security/cert/X509Certificate;)Z HSPLjava/security/cert/X509CertSelector;->matchExtendedKeyUsage(Ljava/security/cert/X509Certificate;)Z @@ -27226,7 +26971,7 @@ HSPLjava/text/DecimalFormat;->(Ljava/lang/String;Ljava/text/DecimalFormatS HSPLjava/text/DecimalFormat;->clone()Ljava/lang/Object; HSPLjava/text/DecimalFormat;->equals(Ljava/lang/Object;)Z HSPLjava/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -HSPLjava/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Ljava/text/FieldPosition;Ljava/text/DontCareFieldPosition;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLjava/text/DecimalFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; HSPLjava/text/DecimalFormat;->getDecimalFormatSymbols()Ljava/text/DecimalFormatSymbols; HSPLjava/text/DecimalFormat;->getIcuFieldPosition(Ljava/text/FieldPosition;)Ljava/text/FieldPosition; @@ -27245,26 +26990,26 @@ HSPLjava/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;) HSPLjava/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V HSPLjava/text/DecimalFormat;->setGroupingUsed(Z)V HSPLjava/text/DecimalFormat;->setMaximumFractionDigits(I)V -HSPLjava/text/DecimalFormat;->setMaximumIntegerDigits(I)V +HSPLjava/text/DecimalFormat;->setMaximumIntegerDigits(I)V+]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLjava/text/DecimalFormat;->setMinimumFractionDigits(I)V -HSPLjava/text/DecimalFormat;->setMinimumIntegerDigits(I)V +HSPLjava/text/DecimalFormat;->setMinimumIntegerDigits(I)V+]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLjava/text/DecimalFormat;->setParseIntegerOnly(Z)V HSPLjava/text/DecimalFormat;->toPattern()Ljava/lang/String; -HSPLjava/text/DecimalFormat;->updateFieldsFromIcu()V +HSPLjava/text/DecimalFormat;->updateFieldsFromIcu()V+]Landroid/icu/text/DecimalFormat;Landroid/icu/text/DecimalFormat; HSPLjava/text/DecimalFormatSymbols;->(Ljava/util/Locale;)V HSPLjava/text/DecimalFormatSymbols;->clone()Ljava/lang/Object; HSPLjava/text/DecimalFormatSymbols;->findNonFormatChar(Ljava/lang/String;C)C -HSPLjava/text/DecimalFormatSymbols;->fromIcuInstance(Landroid/icu/text/DecimalFormatSymbols;)Ljava/text/DecimalFormatSymbols; +HSPLjava/text/DecimalFormatSymbols;->fromIcuInstance(Landroid/icu/text/DecimalFormatSymbols;)Ljava/text/DecimalFormatSymbols;+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols;]Landroid/icu/util/Currency;Landroid/icu/util/Currency; HSPLjava/text/DecimalFormatSymbols;->getCurrency()Ljava/util/Currency; HSPLjava/text/DecimalFormatSymbols;->getDecimalSeparator()C HSPLjava/text/DecimalFormatSymbols;->getGroupingSeparator()C -HSPLjava/text/DecimalFormatSymbols;->getIcuDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols; +HSPLjava/text/DecimalFormatSymbols;->getIcuDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Ljava/util/Currency;Ljava/util/Currency;]Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/DecimalFormatSymbols; HSPLjava/text/DecimalFormatSymbols;->getInfinity()Ljava/lang/String; HSPLjava/text/DecimalFormatSymbols;->getInstance(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols; HSPLjava/text/DecimalFormatSymbols;->getNaN()Ljava/lang/String; HSPLjava/text/DecimalFormatSymbols;->getZeroDigit()C HSPLjava/text/DecimalFormatSymbols;->initialize(Ljava/util/Locale;)V+]Ljava/lang/String;Ljava/lang/String;]Llibcore/icu/DecimalFormatData;Llibcore/icu/DecimalFormatData; -HSPLjava/text/DecimalFormatSymbols;->initializeCurrency(Ljava/util/Locale;)V +HSPLjava/text/DecimalFormatSymbols;->initializeCurrency(Ljava/util/Locale;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Currency;Ljava/util/Currency;]Ljava/util/Locale;Ljava/util/Locale; HSPLjava/text/DecimalFormatSymbols;->maybeStripMarkers(Ljava/lang/String;C)C+]Ljava/lang/String;Ljava/lang/String; HSPLjava/text/DecimalFormatSymbols;->setCurrency(Ljava/util/Currency;)V HSPLjava/text/DecimalFormatSymbols;->setCurrencySymbol(Ljava/lang/String;)V @@ -27273,7 +27018,7 @@ HSPLjava/text/DecimalFormatSymbols;->setDigit(C)V HSPLjava/text/DecimalFormatSymbols;->setExponentSeparator(Ljava/lang/String;)V HSPLjava/text/DecimalFormatSymbols;->setGroupingSeparator(C)V HSPLjava/text/DecimalFormatSymbols;->setInfinity(Ljava/lang/String;)V -HSPLjava/text/DecimalFormatSymbols;->setInternationalCurrencySymbol(Ljava/lang/String;)V +HSPLjava/text/DecimalFormatSymbols;->setInternationalCurrencySymbol(Ljava/lang/String;)V+]Ljava/util/Currency;Ljava/util/Currency; HSPLjava/text/DecimalFormatSymbols;->setMinusSign(C)V HSPLjava/text/DecimalFormatSymbols;->setMonetaryDecimalSeparator(C)V HSPLjava/text/DecimalFormatSymbols;->setMonetaryGroupingSeparator(C)V @@ -27297,7 +27042,7 @@ HSPLjava/text/FieldPosition;->setBeginIndex(I)V HSPLjava/text/FieldPosition;->setEndIndex(I)V HSPLjava/text/Format;->()V HSPLjava/text/Format;->clone()Ljava/lang/Object; -HSPLjava/text/Format;->format(Ljava/lang/Object;)Ljava/lang/String; +HSPLjava/text/Format;->format(Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/Format;Ljava/text/SimpleDateFormat; HSPLjava/text/IcuIteratorWrapper;->(Landroid/icu/text/BreakIterator;)V HSPLjava/text/IcuIteratorWrapper;->checkOffset(ILjava/text/CharacterIterator;)V HSPLjava/text/IcuIteratorWrapper;->following(I)I @@ -27311,11 +27056,11 @@ HSPLjava/text/MessageFormat;->applyPattern(Ljava/lang/String;)V HSPLjava/text/MessageFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; HSPLjava/text/MessageFormat;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; HSPLjava/text/MessageFormat;->makeFormat(II[Ljava/lang/StringBuilder;)V -HSPLjava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; +HSPLjava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/FieldPosition;Ljava/text/FieldPosition;]Ljava/text/MessageFormat$Field;Ljava/text/MessageFormat$Field; HSPLjava/text/Normalizer$Form$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; HSPLjava/text/Normalizer$Form$$ExternalSyntheticLambda2;->get()Ljava/lang/Object; HSPLjava/text/Normalizer$Form$$ExternalSyntheticLambda3;->get()Ljava/lang/Object; -HSPLjava/text/Normalizer;->normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String; +HSPLjava/text/Normalizer;->normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;+]Ljava/util/function/Supplier;Ljava/text/Normalizer$Form$$ExternalSyntheticLambda2;]Landroid/icu/text/Normalizer2;Landroid/icu/impl/Norm2AllModes$DecomposeNormalizer2; HSPLjava/text/NumberFormat;->()V HSPLjava/text/NumberFormat;->clone()Ljava/lang/Object; HSPLjava/text/NumberFormat;->format(D)Ljava/lang/String; @@ -27347,10 +27092,10 @@ HSPLjava/text/SimpleDateFormat;->()V HSPLjava/text/SimpleDateFormat;->(IILjava/util/Locale;)V HSPLjava/text/SimpleDateFormat;->(Ljava/lang/String;)V HSPLjava/text/SimpleDateFormat;->(Ljava/lang/String;Ljava/util/Locale;)V -HSPLjava/text/SimpleDateFormat;->checkNegativeNumberExpression()V +HSPLjava/text/SimpleDateFormat;->checkNegativeNumberExpression()V+]Ljava/lang/String;Ljava/lang/String;]Ljava/text/NumberFormat;Ljava/text/DecimalFormat;]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat; HSPLjava/text/SimpleDateFormat;->compile(Ljava/lang/String;)[C+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String; HSPLjava/text/SimpleDateFormat;->encode(IILjava/lang/StringBuilder;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLjava/text/SimpleDateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; +HSPLjava/text/SimpleDateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;+]Ljava/text/FieldPosition;Ljava/text/FieldPosition; HSPLjava/text/SimpleDateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/Format$FieldDelegate;)Ljava/lang/StringBuffer;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/Calendar;Ljava/util/GregorianCalendar; HSPLjava/text/SimpleDateFormat;->formatMonth(IIILjava/lang/StringBuffer;ZZII)Ljava/lang/String; HSPLjava/text/SimpleDateFormat;->formatWeekday(IIZZ)Ljava/lang/String; @@ -27368,12 +27113,12 @@ HSPLjava/text/SimpleDateFormat;->parseInternal(Ljava/lang/String;Ljava/text/Pars HSPLjava/text/SimpleDateFormat;->parseMonth(Ljava/lang/String;IIIILjava/text/ParsePosition;ZZLjava/text/CalendarBuilder;)I HSPLjava/text/SimpleDateFormat;->parseWeekday(Ljava/lang/String;IIZZLjava/text/CalendarBuilder;)I HSPLjava/text/SimpleDateFormat;->shouldObeyCount(II)Z -HSPLjava/text/SimpleDateFormat;->subFormat(IILjava/text/Format$FieldDelegate;Ljava/lang/StringBuffer;Z)V+]Ljava/text/Format$FieldDelegate;Ljava/text/FieldPosition$Delegate;,Ljava/text/DontCareFieldPosition$1;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/Calendar;Ljava/util/GregorianCalendar; +HSPLjava/text/SimpleDateFormat;->subFormat(IILjava/text/Format$FieldDelegate;Ljava/lang/StringBuffer;Z)V+]Ljava/text/Format$FieldDelegate;Ljava/text/FieldPosition$Delegate;,Ljava/text/DontCareFieldPosition$1;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/Calendar;Ljava/util/GregorianCalendar;]Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols; HSPLjava/text/SimpleDateFormat;->subParse(Ljava/lang/String;IIIZ[ZLjava/text/ParsePosition;ZLjava/text/CalendarBuilder;)I+]Ljava/lang/String;Ljava/lang/String;]Ljava/text/ParsePosition;Ljava/text/ParsePosition;]Ljava/text/CalendarBuilder;Ljava/text/CalendarBuilder;]Ljava/lang/Number;Ljava/lang/Long;]Ljava/text/NumberFormat;Ljava/text/DecimalFormat; HSPLjava/text/SimpleDateFormat;->subParseNumericZone(Ljava/lang/String;IIIZLjava/text/CalendarBuilder;)I HSPLjava/text/SimpleDateFormat;->toPattern()Ljava/lang/String; HSPLjava/text/SimpleDateFormat;->useDateFormatSymbols()Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/Object;Ljava/util/GregorianCalendar;]Ljava/lang/Class;Ljava/lang/Class; -HSPLjava/text/SimpleDateFormat;->zeroPaddingNumber(IIILjava/lang/StringBuffer;)V+]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat;]Ljava/text/NumberFormat;Ljava/text/DecimalFormat; +HSPLjava/text/SimpleDateFormat;->zeroPaddingNumber(IIILjava/lang/StringBuffer;)V+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/text/NumberFormat;Ljava/text/DecimalFormat;]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols;]Ljava/text/DecimalFormat;Ljava/text/DecimalFormat; HSPLjava/text/StringCharacterIterator;->(Ljava/lang/String;)V HSPLjava/text/StringCharacterIterator;->(Ljava/lang/String;I)V HSPLjava/text/StringCharacterIterator;->(Ljava/lang/String;III)V @@ -27731,17 +27476,17 @@ HSPLjava/time/zone/ZoneRulesProvider;->getAvailableZoneIds()Ljava/util/Set; HSPLjava/time/zone/ZoneRulesProvider;->getProvider(Ljava/lang/String;)Ljava/time/zone/ZoneRulesProvider; HSPLjava/time/zone/ZoneRulesProvider;->getRules(Ljava/lang/String;Z)Ljava/time/zone/ZoneRules; HSPLjava/util/AbstractCollection;->()V -HSPLjava/util/AbstractCollection;->addAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;missing_types]Ljava/util/Collection;missing_types]Ljava/util/Iterator;missing_types +HSPLjava/util/AbstractCollection;->addAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;missing_types]Ljava/util/Collection;megamorphic_types]Ljava/util/Iterator;megamorphic_types HSPLjava/util/AbstractCollection;->clear()V HSPLjava/util/AbstractCollection;->contains(Ljava/lang/Object;)Z+]Ljava/lang/Object;missing_types]Ljava/util/Iterator;Ljava/util/AbstractList$Itr; HSPLjava/util/AbstractCollection;->containsAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;missing_types]Ljava/util/Collection;missing_types]Ljava/util/Iterator;missing_types HSPLjava/util/AbstractCollection;->isEmpty()Z+]Ljava/util/AbstractCollection;missing_types HSPLjava/util/AbstractCollection;->remove(Ljava/lang/Object;)Z HSPLjava/util/AbstractCollection;->removeAll(Ljava/util/Collection;)Z -HSPLjava/util/AbstractCollection;->retainAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;Ljava/util/LinkedHashSet;]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator; +HSPLjava/util/AbstractCollection;->retainAll(Ljava/util/Collection;)Z+]Ljava/util/AbstractCollection;Ljava/util/LinkedHashSet;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedKeyIterator;]Ljava/util/Collection;missing_types HSPLjava/util/AbstractCollection;->toArray()[Ljava/lang/Object;+]Ljava/util/AbstractCollection;megamorphic_types]Ljava/util/Iterator;megamorphic_types HSPLjava/util/AbstractCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; -HSPLjava/util/AbstractCollection;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/AbstractCollection;Ljava/util/ArrayList;,Ljava/util/PriorityQueue;]Ljava/util/Iterator;Ljava/util/PriorityQueue$Itr;,Ljava/util/ArrayList$Itr; +HSPLjava/util/AbstractCollection;->toString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/AbstractCollection;Ljava/util/ArrayList;,Ljava/util/PriorityQueue;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/PriorityQueue$Itr; HSPLjava/util/AbstractList$Itr;->(Ljava/util/AbstractList;)V HSPLjava/util/AbstractList$Itr;->(Ljava/util/AbstractList;Ljava/util/AbstractList$Itr-IA;)V HSPLjava/util/AbstractList$Itr;->checkForComodification()V @@ -27750,7 +27495,7 @@ HSPLjava/util/AbstractList$Itr;->next()Ljava/lang/Object;+]Ljava/util/AbstractLi HSPLjava/util/AbstractList$ListItr;->(Ljava/util/AbstractList;I)V HSPLjava/util/AbstractList$ListItr;->hasPrevious()Z HSPLjava/util/AbstractList$ListItr;->nextIndex()I -HSPLjava/util/AbstractList$ListItr;->previous()Ljava/lang/Object; +HSPLjava/util/AbstractList$ListItr;->previous()Ljava/lang/Object;+]Ljava/util/AbstractList$ListItr;Ljava/util/AbstractList$ListItr; HSPLjava/util/AbstractList$ListItr;->previousIndex()I HSPLjava/util/AbstractList$RandomAccessSpliterator;->(Ljava/util/List;)V HSPLjava/util/AbstractList$RandomAccessSpliterator;->characteristics()I @@ -27797,23 +27542,22 @@ HSPLjava/util/AbstractMap$SimpleImmutableEntry;->(Ljava/util/Map$Entry;)V+ HSPLjava/util/AbstractMap$SimpleImmutableEntry;->equals(Ljava/lang/Object;)Z HSPLjava/util/AbstractMap$SimpleImmutableEntry;->getKey()Ljava/lang/Object; HSPLjava/util/AbstractMap$SimpleImmutableEntry;->getValue()Ljava/lang/Object; -HSPLjava/util/AbstractMap$SimpleImmutableEntry;->hashCode()I +HSPLjava/util/AbstractMap$SimpleImmutableEntry;->hashCode()I+]Ljava/lang/Object;missing_types HSPLjava/util/AbstractMap;->()V HSPLjava/util/AbstractMap;->clear()V HSPLjava/util/AbstractMap;->clone()Ljava/lang/Object; HSPLjava/util/AbstractMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z -HSPLjava/util/AbstractMap;->equals(Ljava/lang/Object;)Z +HSPLjava/util/AbstractMap;->equals(Ljava/lang/Object;)Z+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;,Ljava/util/LinkedHashMap$LinkedHashMapEntry;]Ljava/util/AbstractMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/LinkedHashMap$LinkedEntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;,Ljava/util/LinkedHashMap$LinkedEntrySet;]Ljava/lang/Object;Ljava/lang/Integer; HSPLjava/util/AbstractMap;->get(Ljava/lang/Object;)Ljava/lang/Object; -HSPLjava/util/AbstractMap;->hashCode()I+]Ljava/util/Map$Entry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;]Ljava/util/AbstractMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/LinkedHashMap$LinkedEntryIterator;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedEntrySet;,Ljava/util/HashMap$EntrySet; -HSPLjava/util/AbstractMap;->isEmpty()Z -HSPLjava/util/AbstractMap;->putAll(Ljava/util/Map;)V -HSPLjava/util/AbstractMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/AbstractMap;->hashCode()I+]Ljava/util/Map$Entry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;,Ljava/util/HashMap$Node;]Ljava/util/AbstractMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/LinkedHashMap$LinkedEntryIterator;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedEntrySet;,Ljava/util/HashMap$EntrySet; +HSPLjava/util/AbstractMap;->isEmpty()Z+]Ljava/util/AbstractMap;missing_types +HSPLjava/util/AbstractMap;->putAll(Ljava/util/Map;)V+]Ljava/util/Map$Entry;Ljava/util/AbstractMap$SimpleImmutableEntry;]Ljava/util/AbstractMap;Ljava/util/EnumMap;]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types HSPLjava/util/AbstractMap;->size()I -HSPLjava/util/AbstractMap;->toString()Ljava/lang/String; +HSPLjava/util/AbstractMap;->toString()Ljava/lang/String;+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/AbstractMap;Ljava/util/HashMap;,Ljava/util/IdentityHashMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;,Ljava/util/IdentityHashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet;,Ljava/util/IdentityHashMap$EntrySet; HSPLjava/util/AbstractMap;->values()Ljava/util/Collection; HSPLjava/util/AbstractQueue;->()V HSPLjava/util/AbstractQueue;->add(Ljava/lang/Object;)Z -HSPLjava/util/AbstractQueue;->addAll(Ljava/util/Collection;)Z +HSPLjava/util/AbstractQueue;->addAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;]Ljava/util/AbstractQueue;Ljava/util/PriorityQueue; HSPLjava/util/AbstractQueue;->clear()V HSPLjava/util/AbstractQueue;->remove()Ljava/lang/Object; HSPLjava/util/AbstractSequentialList;->()V @@ -27862,13 +27606,13 @@ HSPLjava/util/ArrayDeque;->peekLast()Ljava/lang/Object; HSPLjava/util/ArrayDeque;->poll()Ljava/lang/Object;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; HSPLjava/util/ArrayDeque;->pollFirst()Ljava/lang/Object; HSPLjava/util/ArrayDeque;->pollLast()Ljava/lang/Object; -HSPLjava/util/ArrayDeque;->pop()Ljava/lang/Object; +HSPLjava/util/ArrayDeque;->pop()Ljava/lang/Object;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; HSPLjava/util/ArrayDeque;->push(Ljava/lang/Object;)V+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; HSPLjava/util/ArrayDeque;->remove()Ljava/lang/Object;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; HSPLjava/util/ArrayDeque;->remove(Ljava/lang/Object;)Z HSPLjava/util/ArrayDeque;->removeFirst()Ljava/lang/Object;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; -HSPLjava/util/ArrayDeque;->removeFirstOccurrence(Ljava/lang/Object;)Z -HSPLjava/util/ArrayDeque;->removeLast()Ljava/lang/Object;+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; +HSPLjava/util/ArrayDeque;->removeFirstOccurrence(Ljava/lang/Object;)Z+]Ljava/util/ArrayDeque;Ljava/util/ArrayDeque; +HSPLjava/util/ArrayDeque;->removeLast()Ljava/lang/Object; HSPLjava/util/ArrayDeque;->size()I HSPLjava/util/ArrayDeque;->sub(III)I HSPLjava/util/ArrayDeque;->toArray()[Ljava/lang/Object; @@ -27899,25 +27643,24 @@ HSPLjava/util/ArrayList$SubList;->-$$Nest$fgetroot(Ljava/util/ArrayList$SubList; HSPLjava/util/ArrayList$SubList;->-$$Nest$fgetsize(Ljava/util/ArrayList$SubList;)I HSPLjava/util/ArrayList$SubList;->(Ljava/util/ArrayList;II)V HSPLjava/util/ArrayList$SubList;->checkForComodification()V -HSPLjava/util/ArrayList$SubList;->get(I)Ljava/lang/Object; +HSPLjava/util/ArrayList$SubList;->get(I)Ljava/lang/Object;+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLjava/util/ArrayList$SubList;->iterator()Ljava/util/Iterator; HSPLjava/util/ArrayList$SubList;->listIterator(I)Ljava/util/ListIterator; HSPLjava/util/ArrayList$SubList;->rangeCheckForAdd(I)V -HSPLjava/util/ArrayList$SubList;->removeRange(II)V +HSPLjava/util/ArrayList$SubList;->removeRange(II)V+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLjava/util/ArrayList$SubList;->size()I HSPLjava/util/ArrayList$SubList;->subList(II)Ljava/util/List; HSPLjava/util/ArrayList$SubList;->toArray()[Ljava/lang/Object; HSPLjava/util/ArrayList$SubList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; -HSPLjava/util/ArrayList$SubList;->updateSizeAndModCount(I)V HSPLjava/util/ArrayList;->-$$Nest$fgetsize(Ljava/util/ArrayList;)I HSPLjava/util/ArrayList;->()V HSPLjava/util/ArrayList;->(I)V -HSPLjava/util/ArrayList;->(Ljava/util/Collection;)V+]Ljava/lang/Object;missing_types]Ljava/util/Collection;missing_types +HSPLjava/util/ArrayList;->(Ljava/util/Collection;)V+]Ljava/util/Collection;missing_types]Ljava/lang/Object;missing_types HSPLjava/util/ArrayList;->add(ILjava/lang/Object;)V HSPLjava/util/ArrayList;->add(Ljava/lang/Object;)Z HSPLjava/util/ArrayList;->add(Ljava/lang/Object;[Ljava/lang/Object;I)V HSPLjava/util/ArrayList;->addAll(ILjava/util/Collection;)Z -HSPLjava/util/ArrayList;->addAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;megamorphic_types +HSPLjava/util/ArrayList;->addAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;missing_types HSPLjava/util/ArrayList;->batchRemove(Ljava/util/Collection;ZII)Z HSPLjava/util/ArrayList;->checkForComodification(I)V HSPLjava/util/ArrayList;->clear()V @@ -27934,7 +27677,7 @@ HSPLjava/util/ArrayList;->forEach(Ljava/util/function/Consumer;)V+]Ljava/util/fu HSPLjava/util/ArrayList;->get(I)Ljava/lang/Object;+]Ljava/util/ArrayList;missing_types HSPLjava/util/ArrayList;->grow()[Ljava/lang/Object; HSPLjava/util/ArrayList;->grow(I)[Ljava/lang/Object; -HSPLjava/util/ArrayList;->hashCode()I +HSPLjava/util/ArrayList;->hashCode()I+]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLjava/util/ArrayList;->hashCodeRange(II)I HSPLjava/util/ArrayList;->indexOf(Ljava/lang/Object;)I+]Ljava/util/ArrayList;missing_types HSPLjava/util/ArrayList;->indexOfRange(Ljava/lang/Object;II)I+]Ljava/lang/Object;missing_types @@ -27966,10 +27709,10 @@ HSPLjava/util/Arrays$ArrayItr;->([Ljava/lang/Object;)V HSPLjava/util/Arrays$ArrayItr;->hasNext()Z HSPLjava/util/Arrays$ArrayItr;->next()Ljava/lang/Object; HSPLjava/util/Arrays$ArrayList;->([Ljava/lang/Object;)V -HSPLjava/util/Arrays$ArrayList;->contains(Ljava/lang/Object;)Z +HSPLjava/util/Arrays$ArrayList;->contains(Ljava/lang/Object;)Z+]Ljava/util/Arrays$ArrayList;Ljava/util/Arrays$ArrayList; HSPLjava/util/Arrays$ArrayList;->forEach(Ljava/util/function/Consumer;)V HSPLjava/util/Arrays$ArrayList;->get(I)Ljava/lang/Object; -HSPLjava/util/Arrays$ArrayList;->indexOf(Ljava/lang/Object;)I +HSPLjava/util/Arrays$ArrayList;->indexOf(Ljava/lang/Object;)I+]Ljava/lang/Object;missing_types HSPLjava/util/Arrays$ArrayList;->iterator()Ljava/util/Iterator; HSPLjava/util/Arrays$ArrayList;->set(ILjava/lang/Object;)Ljava/lang/Object; HSPLjava/util/Arrays$ArrayList;->size()I @@ -27996,7 +27739,7 @@ HSPLjava/util/Arrays;->copyOf([DI)[D HSPLjava/util/Arrays;->copyOf([FI)[F HSPLjava/util/Arrays;->copyOf([II)[I HSPLjava/util/Arrays;->copyOf([JI)[J -HSPLjava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;+]Ljava/lang/Object;missing_types +HSPLjava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;+]Ljava/lang/Object;megamorphic_types HSPLjava/util/Arrays;->copyOf([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/util/Arrays;->copyOf([ZI)[Z HSPLjava/util/Arrays;->copyOfRange([BII)[B @@ -28006,10 +27749,10 @@ HSPLjava/util/Arrays;->copyOfRange([JII)[J HSPLjava/util/Arrays;->copyOfRange([Ljava/lang/Object;II)[Ljava/lang/Object; HSPLjava/util/Arrays;->copyOfRange([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object; HSPLjava/util/Arrays;->deepEquals([Ljava/lang/Object;[Ljava/lang/Object;)Z -HSPLjava/util/Arrays;->deepEquals0(Ljava/lang/Object;Ljava/lang/Object;)Z +HSPLjava/util/Arrays;->deepEquals0(Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljava/lang/Object;Landroid/view/RoundedCorner; HSPLjava/util/Arrays;->deepHashCode([Ljava/lang/Object;)I+]Ljava/lang/Object;missing_types]Ljava/lang/Class;Ljava/lang/Class; -HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;)Ljava/lang/String; -HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/StackTraceElement;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/Set;Ljava/util/HashSet; +HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;,Ljava/lang/StackTraceElement;]Ljava/lang/Class;Ljava/lang/Class;]Ljava/util/Set;Ljava/util/HashSet; HSPLjava/util/Arrays;->equals([B[B)Z HSPLjava/util/Arrays;->equals([F[F)Z HSPLjava/util/Arrays;->equals([I[I)Z @@ -28059,7 +27802,6 @@ HSPLjava/util/Base64$Decoder;->decode(Ljava/lang/String;)[B HSPLjava/util/Base64$Decoder;->decode([B)[B HSPLjava/util/Base64$Decoder;->decode0([BII[B)I HSPLjava/util/Base64$Decoder;->decodeBlock([BII[BIZZ)I -HSPLjava/util/Base64$Decoder;->decodedOutLength([BII)I HSPLjava/util/Base64;->getDecoder()Ljava/util/Base64$Decoder; HSPLjava/util/Base64;->getEncoder()Ljava/util/Base64$Encoder; HSPLjava/util/Base64;->getMimeDecoder()Ljava/util/Base64$Decoder; @@ -28072,7 +27814,7 @@ HSPLjava/util/BitSet;->checkInvariants()V HSPLjava/util/BitSet;->checkRange(II)V HSPLjava/util/BitSet;->clear()V HSPLjava/util/BitSet;->clear(I)V -HSPLjava/util/BitSet;->clone()Ljava/lang/Object; +HSPLjava/util/BitSet;->clone()Ljava/lang/Object;+][J[J HSPLjava/util/BitSet;->ensureCapacity(I)V HSPLjava/util/BitSet;->equals(Ljava/lang/Object;)Z HSPLjava/util/BitSet;->expandTo(I)V @@ -28103,7 +27845,7 @@ HSPLjava/util/Calendar;->clear()V HSPLjava/util/Calendar;->clone()Ljava/lang/Object; HSPLjava/util/Calendar;->compareTo(J)I HSPLjava/util/Calendar;->compareTo(Ljava/util/Calendar;)I -HSPLjava/util/Calendar;->complete()V +HSPLjava/util/Calendar;->complete()V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar; HSPLjava/util/Calendar;->createCalendar(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar; HSPLjava/util/Calendar;->defaultTimeZone(Ljava/util/Locale;)Ljava/util/TimeZone; HSPLjava/util/Calendar;->get(I)I+]Ljava/util/Calendar;Ljava/util/GregorianCalendar; @@ -28128,19 +27870,19 @@ HSPLjava/util/Calendar;->isLenient()Z HSPLjava/util/Calendar;->isPartiallyNormalized()Z HSPLjava/util/Calendar;->isSet(I)Z HSPLjava/util/Calendar;->selectFields()I -HSPLjava/util/Calendar;->set(II)V +HSPLjava/util/Calendar;->set(II)V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar; HSPLjava/util/Calendar;->set(III)V HSPLjava/util/Calendar;->set(IIIIII)V HSPLjava/util/Calendar;->setFieldsComputed(I)V HSPLjava/util/Calendar;->setFieldsNormalized(I)V HSPLjava/util/Calendar;->setLenient(Z)V -HSPLjava/util/Calendar;->setTime(Ljava/util/Date;)V +HSPLjava/util/Calendar;->setTime(Ljava/util/Date;)V+]Ljava/util/Date;Ljava/util/Date;]Ljava/util/Calendar;Ljava/util/GregorianCalendar; HSPLjava/util/Calendar;->setTimeInMillis(J)V+]Ljava/util/Calendar;Ljava/util/GregorianCalendar; HSPLjava/util/Calendar;->setTimeZone(Ljava/util/TimeZone;)V HSPLjava/util/Calendar;->setWeekCountData(Ljava/util/Locale;)V HSPLjava/util/Calendar;->setZoneShared(Z)V HSPLjava/util/Calendar;->updateTime()V -HSPLjava/util/Collection;->removeIf(Ljava/util/function/Predicate;)Z+]Ljava/util/Collection;Ljava/util/LinkedList;,Ljava/util/HashSet;,Ljava/util/HashMap$EntrySet;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;,Ljava/util/HashMap$EntryIterator;,Ljava/util/LinkedList$ListItr; +HSPLjava/util/Collection;->removeIf(Ljava/util/function/Predicate;)Z+]Ljava/util/Collection;Landroid/util/MapCollections$EntrySet;,Landroid/util/MapCollections$ValuesCollection;,Ljava/util/HashSet;,Ljava/util/LinkedList;,Ljava/util/HashMap$EntrySet;]Ljava/util/Iterator;Landroid/util/MapCollections$MapIterator;,Landroid/util/MapCollections$ArrayIterator;,Ljava/util/HashMap$KeyIterator;,Ljava/util/LinkedList$ListItr;,Ljava/util/HashMap$EntryIterator; HSPLjava/util/Collection;->spliterator()Ljava/util/Spliterator; HSPLjava/util/Collection;->stream()Ljava/util/stream/Stream;+]Ljava/util/Collection;megamorphic_types HSPLjava/util/Collections$1;->(Ljava/lang/Object;)V @@ -28184,17 +27926,17 @@ HSPLjava/util/Collections$EmptySet;->toArray()[Ljava/lang/Object; HSPLjava/util/Collections$EmptySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; HSPLjava/util/Collections$ReverseComparator2;->(Ljava/util/Comparator;)V HSPLjava/util/Collections$ReverseComparator2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -HSPLjava/util/Collections$ReverseComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I -HSPLjava/util/Collections$ReverseComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I +HSPLjava/util/Collections$ReverseComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I+]Ljava/lang/Comparable;missing_types +HSPLjava/util/Collections$ReverseComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I+]Ljava/util/Collections$ReverseComparator;Ljava/util/Collections$ReverseComparator; HSPLjava/util/Collections$SetFromMap;->(Ljava/util/Map;)V -HSPLjava/util/Collections$SetFromMap;->add(Ljava/lang/Object;)Z +HSPLjava/util/Collections$SetFromMap;->add(Ljava/lang/Object;)Z+]Ljava/util/Map;missing_types HSPLjava/util/Collections$SetFromMap;->clear()V HSPLjava/util/Collections$SetFromMap;->contains(Ljava/lang/Object;)Z HSPLjava/util/Collections$SetFromMap;->forEach(Ljava/util/function/Consumer;)V HSPLjava/util/Collections$SetFromMap;->isEmpty()Z HSPLjava/util/Collections$SetFromMap;->iterator()Ljava/util/Iterator; -HSPLjava/util/Collections$SetFromMap;->remove(Ljava/lang/Object;)Z -HSPLjava/util/Collections$SetFromMap;->size()I +HSPLjava/util/Collections$SetFromMap;->remove(Ljava/lang/Object;)Z+]Ljava/util/Map;missing_types +HSPLjava/util/Collections$SetFromMap;->size()I+]Ljava/util/Map;Ljava/util/IdentityHashMap; HSPLjava/util/Collections$SetFromMap;->toArray()[Ljava/lang/Object; HSPLjava/util/Collections$SetFromMap;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; HSPLjava/util/Collections$SingletonList;->(Ljava/lang/Object;)V @@ -28223,9 +27965,9 @@ HSPLjava/util/Collections$SynchronizedCollection;->clear()V HSPLjava/util/Collections$SynchronizedCollection;->contains(Ljava/lang/Object;)Z HSPLjava/util/Collections$SynchronizedCollection;->forEach(Ljava/util/function/Consumer;)V HSPLjava/util/Collections$SynchronizedCollection;->isEmpty()Z -HSPLjava/util/Collections$SynchronizedCollection;->iterator()Ljava/util/Iterator; +HSPLjava/util/Collections$SynchronizedCollection;->iterator()Ljava/util/Iterator;+]Ljava/util/Collection;Ljava/util/EnumMap$EntrySet;,Ljava/util/ArrayList; HSPLjava/util/Collections$SynchronizedCollection;->remove(Ljava/lang/Object;)Z -HSPLjava/util/Collections$SynchronizedCollection;->size()I +HSPLjava/util/Collections$SynchronizedCollection;->size()I+]Ljava/util/Collection;Ljava/util/EnumMap$EntrySet; HSPLjava/util/Collections$SynchronizedCollection;->toArray()[Ljava/lang/Object; HSPLjava/util/Collections$SynchronizedCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object; HSPLjava/util/Collections$SynchronizedCollection;->toString()Ljava/lang/String; @@ -28235,13 +27977,13 @@ HSPLjava/util/Collections$SynchronizedMap;->(Ljava/util/Map;)V HSPLjava/util/Collections$SynchronizedMap;->clear()V HSPLjava/util/Collections$SynchronizedMap;->containsKey(Ljava/lang/Object;)Z HSPLjava/util/Collections$SynchronizedMap;->entrySet()Ljava/util/Set; -HSPLjava/util/Collections$SynchronizedMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$SynchronizedMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Ljava/util/TreeMap; HSPLjava/util/Collections$SynchronizedMap;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/Collections$SynchronizedMap;->isEmpty()Z HSPLjava/util/Collections$SynchronizedMap;->keySet()Ljava/util/Set; -HSPLjava/util/Collections$SynchronizedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$SynchronizedMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Ljava/util/WeakHashMap; HSPLjava/util/Collections$SynchronizedMap;->putAll(Ljava/util/Map;)V -HSPLjava/util/Collections$SynchronizedMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Collections$SynchronizedMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Ljava/util/WeakHashMap; HSPLjava/util/Collections$SynchronizedMap;->size()I HSPLjava/util/Collections$SynchronizedMap;->values()Ljava/util/Collection; HSPLjava/util/Collections$SynchronizedRandomAccessList;->(Ljava/util/List;)V @@ -28249,13 +27991,13 @@ HSPLjava/util/Collections$SynchronizedSet;->(Ljava/util/Set;)V HSPLjava/util/Collections$SynchronizedSet;->(Ljava/util/Set;Ljava/lang/Object;)V HSPLjava/util/Collections$SynchronizedSet;->equals(Ljava/lang/Object;)Z HSPLjava/util/Collections$UnmodifiableCollection$1;->(Ljava/util/Collections$UnmodifiableCollection;)V+]Ljava/util/Collection;missing_types -HSPLjava/util/Collections$UnmodifiableCollection$1;->hasNext()Z+]Ljava/util/Iterator;megamorphic_types +HSPLjava/util/Collections$UnmodifiableCollection$1;->hasNext()Z+]Ljava/util/Iterator;missing_types HSPLjava/util/Collections$UnmodifiableCollection$1;->next()Ljava/lang/Object;+]Ljava/util/Iterator;megamorphic_types HSPLjava/util/Collections$UnmodifiableCollection;->(Ljava/util/Collection;)V -HSPLjava/util/Collections$UnmodifiableCollection;->contains(Ljava/lang/Object;)Z+]Ljava/util/Collection;Ljava/util/HashSet;,Ljava/util/RegularEnumSet;,Ljava/util/LinkedHashSet;,Ljava/util/ArrayList; -HSPLjava/util/Collections$UnmodifiableCollection;->containsAll(Ljava/util/Collection;)Z +HSPLjava/util/Collections$UnmodifiableCollection;->contains(Ljava/lang/Object;)Z+]Ljava/util/Collection;megamorphic_types +HSPLjava/util/Collections$UnmodifiableCollection;->containsAll(Ljava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/HashSet; HSPLjava/util/Collections$UnmodifiableCollection;->forEach(Ljava/util/function/Consumer;)V -HSPLjava/util/Collections$UnmodifiableCollection;->isEmpty()Z +HSPLjava/util/Collections$UnmodifiableCollection;->isEmpty()Z+]Ljava/util/Collection;megamorphic_types HSPLjava/util/Collections$UnmodifiableCollection;->iterator()Ljava/util/Iterator; HSPLjava/util/Collections$UnmodifiableCollection;->size()I+]Ljava/util/Collection;missing_types HSPLjava/util/Collections$UnmodifiableCollection;->stream()Ljava/util/stream/Stream; @@ -28287,7 +28029,7 @@ HSPLjava/util/Collections$UnmodifiableMap;->containsKey(Ljava/lang/Object;)Z HSPLjava/util/Collections$UnmodifiableMap;->entrySet()Ljava/util/Set;+]Ljava/util/Map;missing_types HSPLjava/util/Collections$UnmodifiableMap;->equals(Ljava/lang/Object;)Z HSPLjava/util/Collections$UnmodifiableMap;->forEach(Ljava/util/function/BiConsumer;)V -HSPLjava/util/Collections$UnmodifiableMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;,Ljava/util/TreeMap;,Ljava/util/EnumMap; +HSPLjava/util/Collections$UnmodifiableMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;missing_types HSPLjava/util/Collections$UnmodifiableMap;->hashCode()I HSPLjava/util/Collections$UnmodifiableMap;->isEmpty()Z HSPLjava/util/Collections$UnmodifiableMap;->keySet()Ljava/util/Set;+]Ljava/util/Map;missing_types @@ -28300,7 +28042,7 @@ HSPLjava/util/Collections$UnmodifiableSet;->(Ljava/util/Set;)V HSPLjava/util/Collections$UnmodifiableSet;->equals(Ljava/lang/Object;)Z HSPLjava/util/Collections$UnmodifiableSortedMap;->(Ljava/util/SortedMap;)V HSPLjava/util/Collections$UnmodifiableSortedSet;->(Ljava/util/SortedSet;)V -HSPLjava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z +HSPLjava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z+]Ljava/util/Collection;Ljava/util/ArrayList; HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;)I HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I HSPLjava/util/Collections;->disjoint(Ljava/util/Collection;Ljava/util/Collection;)Z @@ -28313,7 +28055,7 @@ HSPLjava/util/Collections;->emptySet()Ljava/util/Set; HSPLjava/util/Collections;->enumeration(Ljava/util/Collection;)Ljava/util/Enumeration; HSPLjava/util/Collections;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;)I+]Ljava/util/List;Ljava/util/ArrayList; -HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I+]Ljava/util/List;missing_types +HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I+]Ljava/util/List;missing_types]Ljava/util/Comparator;Ljava/lang/String$CaseInsensitiveComparator; HSPLjava/util/Collections;->list(Ljava/util/Enumeration;)Ljava/util/ArrayList; HSPLjava/util/Collections;->max(Ljava/util/Collection;)Ljava/lang/Object; HSPLjava/util/Collections;->max(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object; @@ -28333,7 +28075,7 @@ HSPLjava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List; HSPLjava/util/Collections;->singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; HSPLjava/util/Collections;->sort(Ljava/util/List;)V HSPLjava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V+]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime;]Ljava/util/List;Ljava/util/ArrayList; -HSPLjava/util/Collections;->swap(Ljava/util/List;II)V +HSPLjava/util/Collections;->swap(Ljava/util/List;II)V+]Ljava/util/List;Ljava/util/ArrayList; HSPLjava/util/Collections;->synchronizedCollection(Ljava/util/Collection;)Ljava/util/Collection; HSPLjava/util/Collections;->synchronizedCollection(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection; HSPLjava/util/Collections;->synchronizedList(Ljava/util/List;)Ljava/util/List; @@ -28355,7 +28097,7 @@ HSPLjava/util/ComparableTimSort;->gallopRight(Ljava/lang/Comparable;[Ljava/lang/ HSPLjava/util/ComparableTimSort;->mergeAt(I)V HSPLjava/util/ComparableTimSort;->mergeCollapse()V HSPLjava/util/ComparableTimSort;->mergeForceCollapse()V -HSPLjava/util/ComparableTimSort;->mergeHi(IIII)V +HSPLjava/util/ComparableTimSort;->mergeHi(IIII)V+]Ljava/lang/Comparable;Ljava/lang/String; HSPLjava/util/ComparableTimSort;->mergeLo(IIII)V HSPLjava/util/ComparableTimSort;->minRunLength(I)I HSPLjava/util/ComparableTimSort;->pushRun(II)V @@ -28384,9 +28126,9 @@ HSPLjava/util/Comparators$NullComparator;->(ZLjava/util/Comparator;)V HSPLjava/util/Comparators$NullComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLjava/util/Currency;->(Landroid/icu/util/Currency;)V HSPLjava/util/Currency;->getCurrencyCode()Ljava/lang/String; -HSPLjava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency; +HSPLjava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency;+]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap; HSPLjava/util/Currency;->getInstance(Ljava/util/Locale;)Ljava/util/Currency; -HSPLjava/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String; +HSPLjava/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String;+]Landroid/icu/util/Currency;Landroid/icu/util/Currency; HSPLjava/util/Date;->()V HSPLjava/util/Date;->(J)V HSPLjava/util/Date;->after(Ljava/util/Date;)Z @@ -28430,32 +28172,32 @@ HSPLjava/util/EnumMap$EntryIterator$Entry;->getKey()Ljava/lang/Object; HSPLjava/util/EnumMap$EntryIterator$Entry;->getValue()Ljava/lang/Object; HSPLjava/util/EnumMap$EntryIterator;->(Ljava/util/EnumMap;)V HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/lang/Object; -HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/util/Map$Entry; +HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/util/Map$Entry;+]Ljava/util/EnumMap$EntryIterator;Ljava/util/EnumMap$EntryIterator; HSPLjava/util/EnumMap$EntrySet;->(Ljava/util/EnumMap;)V HSPLjava/util/EnumMap$EntrySet;->iterator()Ljava/util/Iterator; HSPLjava/util/EnumMap$EntrySet;->size()I HSPLjava/util/EnumMap$EnumMapIterator;->(Ljava/util/EnumMap;)V HSPLjava/util/EnumMap$EnumMapIterator;->hasNext()Z HSPLjava/util/EnumMap$KeyIterator;->(Ljava/util/EnumMap;)V -HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Enum; -HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Enum;+]Ljava/util/EnumMap$KeyIterator;Ljava/util/EnumMap$KeyIterator; +HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Object;+]Ljava/util/EnumMap$KeyIterator;Ljava/util/EnumMap$KeyIterator; HSPLjava/util/EnumMap$KeySet;->(Ljava/util/EnumMap;)V HSPLjava/util/EnumMap$KeySet;->iterator()Ljava/util/Iterator; HSPLjava/util/EnumMap$KeySet;->size()I HSPLjava/util/EnumMap$ValueIterator;->(Ljava/util/EnumMap;)V -HSPLjava/util/EnumMap$ValueIterator;->next()Ljava/lang/Object; +HSPLjava/util/EnumMap$ValueIterator;->next()Ljava/lang/Object;+]Ljava/util/EnumMap$ValueIterator;Ljava/util/EnumMap$ValueIterator; HSPLjava/util/EnumMap$Values;->(Ljava/util/EnumMap;)V HSPLjava/util/EnumMap$Values;->iterator()Ljava/util/Iterator; HSPLjava/util/EnumMap$Values;->size()I HSPLjava/util/EnumMap;->-$$Nest$fgetsize(Ljava/util/EnumMap;)I HSPLjava/util/EnumMap;->(Ljava/lang/Class;)V -HSPLjava/util/EnumMap;->(Ljava/util/Map;)V +HSPLjava/util/EnumMap;->(Ljava/util/Map;)V+]Ljava/util/EnumMap;Ljava/util/EnumMap;]Ljava/util/Map;Ljava/util/Collections$SingletonMap;]Ljava/util/Iterator;Ljava/util/Collections$1;]Ljava/util/Set;Ljava/util/Collections$SingletonSet; HSPLjava/util/EnumMap;->clear()V HSPLjava/util/EnumMap;->containsKey(Ljava/lang/Object;)Z HSPLjava/util/EnumMap;->entrySet()Ljava/util/Set; -HSPLjava/util/EnumMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/EnumMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Enum;missing_types HSPLjava/util/EnumMap;->getKeyUniverse(Ljava/lang/Class;)[Ljava/lang/Enum; -HSPLjava/util/EnumMap;->isValidKey(Ljava/lang/Object;)Z +HSPLjava/util/EnumMap;->isValidKey(Ljava/lang/Object;)Z+]Ljava/lang/Object;missing_types HSPLjava/util/EnumMap;->keySet()Ljava/util/Set; HSPLjava/util/EnumMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/EnumMap;->put(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object; @@ -28472,7 +28214,7 @@ HSPLjava/util/EnumSet;->clone()Ljava/util/EnumSet; HSPLjava/util/EnumSet;->complementOf(Ljava/util/EnumSet;)Ljava/util/EnumSet; HSPLjava/util/EnumSet;->copyOf(Ljava/util/Collection;)Ljava/util/EnumSet; HSPLjava/util/EnumSet;->copyOf(Ljava/util/EnumSet;)Ljava/util/EnumSet; -HSPLjava/util/EnumSet;->getUniverse(Ljava/lang/Class;)[Ljava/lang/Enum; +HSPLjava/util/EnumSet;->getUniverse(Ljava/lang/Class;)[Ljava/lang/Enum;+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet; HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;)Ljava/util/EnumSet; HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet; @@ -28498,7 +28240,7 @@ HSPLjava/util/Formatter$Flags;->parse(C)Ljava/util/Formatter$Flags; HSPLjava/util/Formatter$Flags;->parse(Ljava/lang/String;II)Ljava/util/Formatter$Flags;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags; HSPLjava/util/Formatter$Flags;->valueOf()I HSPLjava/util/Formatter$FormatSpecifier;->(Ljava/util/Formatter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; -HSPLjava/util/Formatter$FormatSpecifier;->addZeros(Ljava/lang/StringBuilder;I)V +HSPLjava/util/Formatter$FormatSpecifier;->addZeros(Ljava/lang/StringBuilder;I)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLjava/util/Formatter$FormatSpecifier;->adjustWidth(ILjava/util/Formatter$Flags;Z)I HSPLjava/util/Formatter$FormatSpecifier;->checkBadFlags([Ljava/util/Formatter$Flags;)V+]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags; HSPLjava/util/Formatter$FormatSpecifier;->checkCharacter()V @@ -28508,18 +28250,18 @@ HSPLjava/util/Formatter$FormatSpecifier;->checkGeneral()V+]Ljava/util/Formatter$ HSPLjava/util/Formatter$FormatSpecifier;->checkInteger()V HSPLjava/util/Formatter$FormatSpecifier;->checkNumeric()V+]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags; HSPLjava/util/Formatter$FormatSpecifier;->checkText()V -HSPLjava/util/Formatter$FormatSpecifier;->getZero(Ljava/util/Locale;)C +HSPLjava/util/Formatter$FormatSpecifier;->getZero(Ljava/util/Locale;)C+]Ljava/util/Formatter;Ljava/util/Formatter;]Ljava/util/Locale;Ljava/util/Locale; HSPLjava/util/Formatter$FormatSpecifier;->index()I -HSPLjava/util/Formatter$FormatSpecifier;->leadingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; +HSPLjava/util/Formatter$FormatSpecifier;->leadingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags; HSPLjava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;JLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder; -HSPLjava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;ILjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;,Ljava/lang/String;]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols; +HSPLjava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;ILjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/util/Locale;Ljava/util/Locale;]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;]Ljava/text/DecimalFormatSymbols;Ljava/text/DecimalFormatSymbols; HSPLjava/util/Formatter$FormatSpecifier;->print(BLjava/util/Locale;)V HSPLjava/util/Formatter$FormatSpecifier;->print(DLjava/util/Locale;)V HSPLjava/util/Formatter$FormatSpecifier;->print(FLjava/util/Locale;)V HSPLjava/util/Formatter$FormatSpecifier;->print(ILjava/util/Locale;)V HSPLjava/util/Formatter$FormatSpecifier;->print(JLjava/util/Locale;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags; HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/Object;Ljava/util/Locale;)V -HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/String;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/String;Ljava/util/Locale;)V+]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags; HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;DLjava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljdk/internal/math/FormattedFloatingDecimal;Ljdk/internal/math/FormattedFloatingDecimal; HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/util/Calendar;CLjava/util/Locale;)Ljava/lang/Appendable; HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigInteger;Ljava/util/Locale;)V @@ -28527,9 +28269,9 @@ HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/util/Calendar;CLjava/util/ HSPLjava/util/Formatter$FormatSpecifier;->printBoolean(Ljava/lang/Object;Ljava/util/Locale;)V HSPLjava/util/Formatter$FormatSpecifier;->printCharacter(Ljava/lang/Object;Ljava/util/Locale;)V HSPLjava/util/Formatter$FormatSpecifier;->printDateTime(Ljava/lang/Object;Ljava/util/Locale;)V -HSPLjava/util/Formatter$FormatSpecifier;->printFloat(Ljava/lang/Object;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->printFloat(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/lang/Double;Ljava/lang/Double;]Ljava/lang/Float;Ljava/lang/Float; HSPLjava/util/Formatter$FormatSpecifier;->printInteger(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/lang/Long;Ljava/lang/Long;]Ljava/lang/Byte;Ljava/lang/Byte; -HSPLjava/util/Formatter$FormatSpecifier;->printString(Ljava/lang/Object;Ljava/util/Locale;)V +HSPLjava/util/Formatter$FormatSpecifier;->printString(Ljava/lang/Object;Ljava/util/Locale;)V+]Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;]Ljava/lang/Object;missing_types HSPLjava/util/Formatter$FormatSpecifier;->trailingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; HSPLjava/util/Formatter$FormatSpecifier;->trailingZeros(Ljava/lang/StringBuilder;I)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLjava/util/Formatter$FormatSpecifierParser;->(Ljava/util/Formatter;Ljava/lang/String;I)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String; @@ -28560,18 +28302,18 @@ HSPLjava/util/GregorianCalendar;->()V HSPLjava/util/GregorianCalendar;->(IIIIII)V HSPLjava/util/GregorianCalendar;->(IIIIIII)V HSPLjava/util/GregorianCalendar;->(Ljava/util/TimeZone;)V -HSPLjava/util/GregorianCalendar;->(Ljava/util/TimeZone;Ljava/util/Locale;)V +HSPLjava/util/GregorianCalendar;->(Ljava/util/TimeZone;Ljava/util/Locale;)V+]Lsun/util/calendar/Gregorian;Lsun/util/calendar/Gregorian;]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar; HSPLjava/util/GregorianCalendar;->add(II)V HSPLjava/util/GregorianCalendar;->adjustDstOffsetForInvalidWallClock(JLjava/util/TimeZone;I)I HSPLjava/util/GregorianCalendar;->adjustForZoneAndDaylightSavingsTime(IJLjava/util/TimeZone;)J HSPLjava/util/GregorianCalendar;->clone()Ljava/lang/Object; HSPLjava/util/GregorianCalendar;->computeFields()V+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar; -HSPLjava/util/GregorianCalendar;->computeFields(II)I+]Lsun/util/calendar/Gregorian;Lsun/util/calendar/Gregorian;]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;]Llibcore/util/ZoneInfo;Llibcore/util/ZoneInfo;]Ljava/util/TimeZone;Ljava/util/SimpleTimeZone; +HSPLjava/util/GregorianCalendar;->computeFields(II)I+]Lsun/util/calendar/Gregorian;Lsun/util/calendar/Gregorian;]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;]Ljava/util/TimeZone;Ljava/util/SimpleTimeZone;]Lsun/util/calendar/BaseCalendar$Date;Lsun/util/calendar/Gregorian$Date;]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian;]Llibcore/util/ZoneInfo;Llibcore/util/ZoneInfo; HSPLjava/util/GregorianCalendar;->computeTime()V+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar; HSPLjava/util/GregorianCalendar;->getActualMaximum(I)I HSPLjava/util/GregorianCalendar;->getCalendarDate(J)Lsun/util/calendar/BaseCalendar$Date; HSPLjava/util/GregorianCalendar;->getCurrentFixedDate()J -HSPLjava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J +HSPLjava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar;]Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/Gregorian; HSPLjava/util/GregorianCalendar;->getGregorianCutoverDate()Lsun/util/calendar/BaseCalendar$Date; HSPLjava/util/GregorianCalendar;->getJulianCalendarSystem()Lsun/util/calendar/BaseCalendar; HSPLjava/util/GregorianCalendar;->getLeastMaximum(I)I @@ -28580,7 +28322,7 @@ HSPLjava/util/GregorianCalendar;->getMinimum(I)I HSPLjava/util/GregorianCalendar;->getNormalizedCalendar()Ljava/util/GregorianCalendar; HSPLjava/util/GregorianCalendar;->getTimeZone()Ljava/util/TimeZone; HSPLjava/util/GregorianCalendar;->getWeekNumber(JJ)I+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar; -HSPLjava/util/GregorianCalendar;->internalGetEra()I +HSPLjava/util/GregorianCalendar;->internalGetEra()I+]Ljava/util/GregorianCalendar;Ljava/util/GregorianCalendar; HSPLjava/util/GregorianCalendar;->isCutoverYear(I)Z HSPLjava/util/GregorianCalendar;->isLeapYear(I)Z HSPLjava/util/GregorianCalendar;->monthLength(I)I @@ -28626,15 +28368,15 @@ HSPLjava/util/HashMap$Node;->hashCode()I HSPLjava/util/HashMap$Node;->setValue(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/HashMap$TreeNode;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V HSPLjava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; -HSPLjava/util/HashMap$TreeNode;->find(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode; +HSPLjava/util/HashMap$TreeNode;->find(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode;+]Ljava/lang/Object;Ljava/lang/Integer;,Ljava/lang/Long; HSPLjava/util/HashMap$TreeNode;->getTreeNode(ILjava/lang/Object;)Ljava/util/HashMap$TreeNode;+]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap$TreeNode;->moveRootToFront([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V -HSPLjava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode; +HSPLjava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode;+]Ljava/util/HashMap;missing_types HSPLjava/util/HashMap$TreeNode;->rotateLeft(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap$TreeNode;->rotateRight(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap$TreeNode;->split(Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V HSPLjava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V -HSPLjava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node; +HSPLjava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node;+]Ljava/util/HashMap;missing_types HSPLjava/util/HashMap$ValueIterator;->(Ljava/util/HashMap;)V HSPLjava/util/HashMap$ValueIterator;->next()Ljava/lang/Object;+]Ljava/util/HashMap$ValueIterator;Ljava/util/HashMap$ValueIterator; HSPLjava/util/HashMap$ValueSpliterator;->(Ljava/util/HashMap;IIII)V @@ -28658,7 +28400,7 @@ HSPLjava/util/HashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V HSPLjava/util/HashMap;->capacity()I HSPLjava/util/HashMap;->clear()V HSPLjava/util/HashMap;->clone()Ljava/lang/Object; -HSPLjava/util/HashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; +HSPLjava/util/HashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap;]Ljava/util/function/Function;missing_types]Ljava/lang/Object;Ljava/lang/Long; HSPLjava/util/HashMap;->containsKey(Ljava/lang/Object;)Z+]Ljava/util/HashMap;missing_types HSPLjava/util/HashMap;->containsValue(Ljava/lang/Object;)Z HSPLjava/util/HashMap;->entrySet()Ljava/util/Set; @@ -28676,21 +28418,21 @@ HSPLjava/util/HashMap;->merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/fun HSPLjava/util/HashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; HSPLjava/util/HashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap;->prepareArray([Ljava/lang/Object;)[Ljava/lang/Object; -HSPLjava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;missing_types -HSPLjava/util/HashMap;->putAll(Ljava/util/Map;)V -HSPLjava/util/HashMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -HSPLjava/util/HashMap;->putMapEntries(Ljava/util/Map;Z)V+]Ljava/util/HashMap;missing_types]Ljava/util/Map$Entry;megamorphic_types]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types -HSPLjava/util/HashMap;->putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;+]Ljava/util/HashMap;missing_types]Ljava/lang/Object;megamorphic_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode; +HSPLjava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;megamorphic_types +HSPLjava/util/HashMap;->putAll(Ljava/util/Map;)V+]Ljava/util/HashMap;missing_types +HSPLjava/util/HashMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap; +HSPLjava/util/HashMap;->putMapEntries(Ljava/util/Map;Z)V+]Ljava/util/Map$Entry;megamorphic_types]Ljava/util/HashMap;missing_types]Ljava/util/Map;missing_types]Ljava/util/Iterator;missing_types]Ljava/util/Set;missing_types +HSPLjava/util/HashMap;->putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object;+]Ljava/util/HashMap;megamorphic_types]Ljava/lang/Object;megamorphic_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap;->readObject(Ljava/io/ObjectInputStream;)V HSPLjava/util/HashMap;->reinitialize()V -HSPLjava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap; HSPLjava/util/HashMap;->removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node;+]Ljava/util/HashMap;missing_types]Ljava/lang/Object;missing_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; HSPLjava/util/HashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap;->resize()[Ljava/util/HashMap$Node;+]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap;->size()I HSPLjava/util/HashMap;->tableSizeFor(I)I -HSPLjava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V +HSPLjava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V+]Ljava/util/HashMap;missing_types]Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode; HSPLjava/util/HashMap;->values()Ljava/util/Collection; HSPLjava/util/HashMap;->valuesToArray([Ljava/lang/Object;)[Ljava/lang/Object; HSPLjava/util/HashMap;->writeObject(Ljava/io/ObjectOutputStream;)V @@ -28703,11 +28445,11 @@ HSPLjava/util/HashSet;->add(Ljava/lang/Object;)Z+]Ljava/util/HashMap;Ljava/util/ HSPLjava/util/HashSet;->clear()V HSPLjava/util/HashSet;->clone()Ljava/lang/Object; HSPLjava/util/HashSet;->contains(Ljava/lang/Object;)Z+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap; -HSPLjava/util/HashSet;->isEmpty()Z +HSPLjava/util/HashSet;->isEmpty()Z+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap; HSPLjava/util/HashSet;->iterator()Ljava/util/Iterator;+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap;]Ljava/util/Set;Ljava/util/HashMap$KeySet;,Ljava/util/LinkedHashMap$LinkedKeySet; HSPLjava/util/HashSet;->readObject(Ljava/io/ObjectInputStream;)V -HSPLjava/util/HashSet;->remove(Ljava/lang/Object;)Z -HSPLjava/util/HashSet;->size()I +HSPLjava/util/HashSet;->remove(Ljava/lang/Object;)Z+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap; +HSPLjava/util/HashSet;->size()I+]Ljava/util/HashMap;Ljava/util/HashMap;,Ljava/util/LinkedHashMap; HSPLjava/util/HashSet;->spliterator()Ljava/util/Spliterator; HSPLjava/util/HashSet;->writeObject(Ljava/io/ObjectOutputStream;)V HSPLjava/util/Hashtable$EntrySet;->(Ljava/util/Hashtable;)V @@ -28737,7 +28479,7 @@ HSPLjava/util/Hashtable;->clear()V HSPLjava/util/Hashtable;->clone()Ljava/lang/Object; HSPLjava/util/Hashtable;->containsKey(Ljava/lang/Object;)Z HSPLjava/util/Hashtable;->entrySet()Ljava/util/Set; -HSPLjava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Object;Ljava/lang/String; HSPLjava/util/Hashtable;->getEnumeration(I)Ljava/util/Enumeration; HSPLjava/util/Hashtable;->getIterator(I)Ljava/util/Iterator; HSPLjava/util/Hashtable;->isEmpty()Z @@ -28757,7 +28499,6 @@ HSPLjava/util/IdentityHashMap$EntryIterator;->(Ljava/util/IdentityHashMap; HSPLjava/util/IdentityHashMap$EntryIterator;->next()Ljava/lang/Object; HSPLjava/util/IdentityHashMap$EntryIterator;->next()Ljava/util/Map$Entry; HSPLjava/util/IdentityHashMap$EntrySet;->(Ljava/util/IdentityHashMap;)V -HSPLjava/util/IdentityHashMap$EntrySet;->(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$EntrySet-IA;)V HSPLjava/util/IdentityHashMap$EntrySet;->iterator()Ljava/util/Iterator; HSPLjava/util/IdentityHashMap$EntrySet;->size()I HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->(Ljava/util/IdentityHashMap;)V @@ -28816,10 +28557,9 @@ HSPLjava/util/ImmutableCollections$MapN;->probe(Ljava/lang/Object;)I+]Ljava/lang HSPLjava/util/ImmutableCollections$SetN;->([Ljava/lang/Object;)V HSPLjava/util/ImmutableCollections$SetN;->contains(Ljava/lang/Object;)Z HSPLjava/util/ImmutableCollections$SetN;->probe(Ljava/lang/Object;)I -HSPLjava/util/ImmutableCollections;->-$$Nest$sfgetEMPTY()Ljava/lang/Object; HSPLjava/util/ImmutableCollections;->()V HSPLjava/util/ImmutableCollections;->listCopy(Ljava/util/Collection;)Ljava/util/List; -HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types +HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/function/Consumer;megamorphic_types]Ljava/util/Iterator;Landroid/util/MapCollections$ArrayIterator; HSPLjava/util/JumboEnumSet$EnumSetIterator;->(Ljava/util/JumboEnumSet;)V HSPLjava/util/JumboEnumSet$EnumSetIterator;->hasNext()Z HSPLjava/util/JumboEnumSet$EnumSetIterator;->next()Ljava/lang/Enum; @@ -28843,10 +28583,10 @@ HSPLjava/util/LinkedHashMap$LinkedEntrySet;->size()I HSPLjava/util/LinkedHashMap$LinkedHashIterator;->(Ljava/util/LinkedHashMap;)V HSPLjava/util/LinkedHashMap$LinkedHashIterator;->hasNext()Z HSPLjava/util/LinkedHashMap$LinkedHashIterator;->nextNode()Ljava/util/LinkedHashMap$LinkedHashMapEntry; -HSPLjava/util/LinkedHashMap$LinkedHashIterator;->remove()V +HSPLjava/util/LinkedHashMap$LinkedHashIterator;->remove()V+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap; HSPLjava/util/LinkedHashMap$LinkedHashMapEntry;->(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V HSPLjava/util/LinkedHashMap$LinkedKeyIterator;->(Ljava/util/LinkedHashMap;)V -HSPLjava/util/LinkedHashMap$LinkedKeyIterator;->next()Ljava/lang/Object; +HSPLjava/util/LinkedHashMap$LinkedKeyIterator;->next()Ljava/lang/Object;+]Ljava/util/LinkedHashMap$LinkedHashMapEntry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;]Ljava/util/LinkedHashMap$LinkedKeyIterator;Ljava/util/LinkedHashMap$LinkedKeyIterator; HSPLjava/util/LinkedHashMap$LinkedKeySet;->(Ljava/util/LinkedHashMap;)V HSPLjava/util/LinkedHashMap$LinkedKeySet;->contains(Ljava/lang/Object;)Z HSPLjava/util/LinkedHashMap$LinkedKeySet;->iterator()Ljava/util/Iterator; @@ -28879,14 +28619,14 @@ HSPLjava/util/LinkedHashMap;->transferLinks(Ljava/util/LinkedHashMap$LinkedHashM HSPLjava/util/LinkedHashMap;->values()Ljava/util/Collection; HSPLjava/util/LinkedHashSet;->()V HSPLjava/util/LinkedHashSet;->(I)V -HSPLjava/util/LinkedHashSet;->(Ljava/util/Collection;)V+]Ljava/util/Collection;Ljava/util/ArrayList;]Ljava/util/LinkedHashSet;Ljava/util/LinkedHashSet; -HSPLjava/util/LinkedList$ListItr;->(Ljava/util/LinkedList;I)V -HSPLjava/util/LinkedList$ListItr;->add(Ljava/lang/Object;)V +HSPLjava/util/LinkedHashSet;->(Ljava/util/Collection;)V +HSPLjava/util/LinkedList$ListItr;->(Ljava/util/LinkedList;I)V+]Ljava/util/LinkedList;Ljava/util/LinkedList; +HSPLjava/util/LinkedList$ListItr;->add(Ljava/lang/Object;)V+]Ljava/util/LinkedList;Ljava/util/LinkedList;]Ljava/util/LinkedList$ListItr;Ljava/util/LinkedList$ListItr; HSPLjava/util/LinkedList$ListItr;->checkForComodification()V HSPLjava/util/LinkedList$ListItr;->hasNext()Z HSPLjava/util/LinkedList$ListItr;->hasPrevious()Z -HSPLjava/util/LinkedList$ListItr;->next()Ljava/lang/Object; -HSPLjava/util/LinkedList$ListItr;->previous()Ljava/lang/Object; +HSPLjava/util/LinkedList$ListItr;->next()Ljava/lang/Object;+]Ljava/util/LinkedList$ListItr;Ljava/util/LinkedList$ListItr; +HSPLjava/util/LinkedList$ListItr;->previous()Ljava/lang/Object;+]Ljava/util/LinkedList$ListItr;Ljava/util/LinkedList$ListItr; HSPLjava/util/LinkedList$ListItr;->remove()V HSPLjava/util/LinkedList$ListItr;->set(Ljava/lang/Object;)V HSPLjava/util/LinkedList$Node;->(Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V @@ -28894,7 +28634,7 @@ HSPLjava/util/LinkedList;->()V HSPLjava/util/LinkedList;->(Ljava/util/Collection;)V HSPLjava/util/LinkedList;->add(ILjava/lang/Object;)V HSPLjava/util/LinkedList;->add(Ljava/lang/Object;)Z -HSPLjava/util/LinkedList;->addAll(ILjava/util/Collection;)Z +HSPLjava/util/LinkedList;->addAll(ILjava/util/Collection;)Z+]Ljava/util/Collection;Ljava/util/LinkedList;]Ljava/util/LinkedList;Ljava/util/LinkedList; HSPLjava/util/LinkedList;->addAll(Ljava/util/Collection;)Z HSPLjava/util/LinkedList;->addFirst(Ljava/lang/Object;)V HSPLjava/util/LinkedList;->addLast(Ljava/lang/Object;)V @@ -28964,13 +28704,13 @@ HSPLjava/util/Locale;->(Lsun/util/locale/BaseLocale;Lsun/util/locale/Local HSPLjava/util/Locale;->(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale-IA;)V HSPLjava/util/Locale;->cleanCache()V HSPLjava/util/Locale;->clone()Ljava/lang/Object; -HSPLjava/util/Locale;->convertOldISOCodes(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/Locale;->convertOldISOCodes(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/util/Locale;->equals(Ljava/lang/Object;)Z+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale; HSPLjava/util/Locale;->forLanguageTag(Ljava/lang/String;)Ljava/util/Locale;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale; HSPLjava/util/Locale;->getAvailableLocales()[Ljava/util/Locale; HSPLjava/util/Locale;->getBaseLocale()Lsun/util/locale/BaseLocale; -HSPLjava/util/Locale;->getCompatibilityExtensions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions; -HSPLjava/util/Locale;->getCountry()Ljava/lang/String; +HSPLjava/util/Locale;->getCompatibilityExtensions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions;+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/util/Locale;->getCountry()Ljava/lang/String;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale; HSPLjava/util/Locale;->getDefault()Ljava/util/Locale; HSPLjava/util/Locale;->getDefault(Ljava/util/Locale$Category;)Ljava/util/Locale;+]Ljava/util/Locale$Category;Ljava/util/Locale$Category; HSPLjava/util/Locale;->getDisplayCountry(Ljava/util/Locale;)Ljava/lang/String; @@ -28984,24 +28724,24 @@ HSPLjava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lan HSPLjava/util/Locale;->getInstance(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;+]Ljava/util/Locale$Cache;Ljava/util/Locale$Cache; HSPLjava/util/Locale;->getLanguage()Ljava/lang/String;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale; HSPLjava/util/Locale;->getScript()Ljava/lang/String; -HSPLjava/util/Locale;->getUnicodeLocaleType(Ljava/lang/String;)Ljava/lang/String; -HSPLjava/util/Locale;->getVariant()Ljava/lang/String; +HSPLjava/util/Locale;->getUnicodeLocaleType(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Locale;Ljava/util/Locale; +HSPLjava/util/Locale;->getVariant()Ljava/lang/String;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale; HSPLjava/util/Locale;->hasExtensions()Z HSPLjava/util/Locale;->hashCode()I+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale; -HSPLjava/util/Locale;->isUnicodeExtensionKey(Ljava/lang/String;)Z +HSPLjava/util/Locale;->isUnicodeExtensionKey(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLjava/util/Locale;->isValidBcp47Alpha(Ljava/lang/String;II)Z HSPLjava/util/Locale;->normalizeAndValidateLanguage(Ljava/lang/String;Z)Ljava/lang/String; HSPLjava/util/Locale;->normalizeAndValidateRegion(Ljava/lang/String;Z)Ljava/lang/String; -HSPLjava/util/Locale;->readObject(Ljava/io/ObjectInputStream;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/ObjectInputStream$GetField;Ljava/io/ObjectInputStream$GetFieldImpl; +HSPLjava/util/Locale;->readObject(Ljava/io/ObjectInputStream;)V+]Ljava/lang/String;Ljava/lang/String;]Ljava/io/ObjectInputStream;Landroid/os/Parcel$2;]Ljava/io/ObjectInputStream$GetField;Ljava/io/ObjectInputStream$GetFieldImpl; HSPLjava/util/Locale;->readResolve()Ljava/lang/Object;+]Lsun/util/locale/BaseLocale;Lsun/util/locale/BaseLocale; HSPLjava/util/Locale;->setDefault(Ljava/util/Locale$Category;Ljava/util/Locale;)V HSPLjava/util/Locale;->setDefault(Ljava/util/Locale;)V -HSPLjava/util/Locale;->toLanguageTag()Ljava/lang/String; +HSPLjava/util/Locale;->toLanguageTag()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/util/locale/LanguageTag;Lsun/util/locale/LanguageTag;]Ljava/util/List;Ljava/util/Collections$EmptyList;]Ljava/util/Iterator;Ljava/util/Collections$EmptyIterator; HSPLjava/util/Locale;->toString()Ljava/lang/String; HSPLjava/util/Locale;->writeObject(Ljava/io/ObjectOutputStream;)V -HSPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/function/Function;missing_types +HSPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;+]Ljava/util/function/Function;missing_types]Ljava/util/Map;Landroid/util/ArrayMap; HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V -HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Landroid/util/ArrayMap; HSPLjava/util/Map;->of(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map; HSPLjava/util/MissingResourceException;->(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLjava/util/NoSuchElementException;->()V @@ -29078,7 +28818,7 @@ HSPLjava/util/Properties$LineReader;->(Ljava/util/Properties;Ljava/io/Read HSPLjava/util/Properties$LineReader;->readLine()I HSPLjava/util/Properties;->()V HSPLjava/util/Properties;->(Ljava/util/Properties;)V -HSPLjava/util/Properties;->getProperty(Ljava/lang/String;)Ljava/lang/String; +HSPLjava/util/Properties;->getProperty(Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/Properties;Ljava/util/Properties; HSPLjava/util/Properties;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLjava/util/Properties;->load(Ljava/io/InputStream;)V HSPLjava/util/Properties;->load(Ljava/io/Reader;)V @@ -29091,16 +28831,16 @@ HSPLjava/util/Properties;->store0(Ljava/io/BufferedWriter;Ljava/lang/String;Z)V HSPLjava/util/Properties;->writeComments(Ljava/io/BufferedWriter;Ljava/lang/String;)V HSPLjava/util/PropertyResourceBundle;->(Ljava/io/Reader;)V HSPLjava/util/Random;->()V -HSPLjava/util/Random;->(J)V +HSPLjava/util/Random;->(J)V+]Ljava/util/Random;missing_types]Ljava/lang/Object;missing_types HSPLjava/util/Random;->initialScramble(J)J -HSPLjava/util/Random;->next(I)I +HSPLjava/util/Random;->next(I)I+]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong; HSPLjava/util/Random;->nextBoolean()Z HSPLjava/util/Random;->nextBytes([B)V HSPLjava/util/Random;->nextDouble()D HSPLjava/util/Random;->nextFloat()F HSPLjava/util/Random;->nextGaussian()D HSPLjava/util/Random;->nextInt()I -HSPLjava/util/Random;->nextInt(I)I +HSPLjava/util/Random;->nextInt(I)I+]Ljava/util/Random;Ljava/util/Random; HSPLjava/util/Random;->nextLong()J HSPLjava/util/Random;->readObject(Ljava/io/ObjectInputStream;)V HSPLjava/util/Random;->resetSeed(J)V @@ -29218,7 +28958,7 @@ HSPLjava/util/Spliterators$IntArraySpliterator;->tryAdvance(Ljava/util/function/ HSPLjava/util/Spliterators$IteratorSpliterator;->(Ljava/util/Collection;I)V HSPLjava/util/Spliterators$IteratorSpliterator;->characteristics()I HSPLjava/util/Spliterators$IteratorSpliterator;->estimateSize()J -HSPLjava/util/Spliterators$IteratorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V +HSPLjava/util/Spliterators$IteratorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V+]Ljava/util/Iterator;Ljava/util/ArrayDeque$DeqIterator; HSPLjava/util/Spliterators$IteratorSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z HSPLjava/util/Spliterators;->checkFromToBounds(III)V HSPLjava/util/Spliterators;->emptyIntSpliterator()Ljava/util/Spliterator$OfInt; @@ -29233,21 +28973,21 @@ HSPLjava/util/Stack;->peek()Ljava/lang/Object; HSPLjava/util/Stack;->pop()Ljava/lang/Object; HSPLjava/util/Stack;->push(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/StringJoiner;->(Ljava/lang/CharSequence;)V -HSPLjava/util/StringJoiner;->(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V -HSPLjava/util/StringJoiner;->add(Ljava/lang/CharSequence;)Ljava/util/StringJoiner; +HSPLjava/util/StringJoiner;->(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V+]Ljava/lang/CharSequence;Ljava/lang/String; +HSPLjava/util/StringJoiner;->add(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/util/StringJoiner;->compactElts()V HSPLjava/util/StringJoiner;->getChars(Ljava/lang/String;[CI)I -HSPLjava/util/StringJoiner;->toString()Ljava/lang/String; +HSPLjava/util/StringJoiner;->toString()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/util/StringTokenizer;->(Ljava/lang/String;)V HSPLjava/util/StringTokenizer;->(Ljava/lang/String;Ljava/lang/String;)V -HSPLjava/util/StringTokenizer;->(Ljava/lang/String;Ljava/lang/String;Z)V +HSPLjava/util/StringTokenizer;->(Ljava/lang/String;Ljava/lang/String;Z)V+]Ljava/lang/String;Ljava/lang/String; HSPLjava/util/StringTokenizer;->countTokens()I HSPLjava/util/StringTokenizer;->hasMoreElements()Z HSPLjava/util/StringTokenizer;->hasMoreTokens()Z -HSPLjava/util/StringTokenizer;->nextToken()Ljava/lang/String; -HSPLjava/util/StringTokenizer;->scanToken(I)I -HSPLjava/util/StringTokenizer;->setMaxDelimCodePoint()V -HSPLjava/util/StringTokenizer;->skipDelimiters(I)I +HSPLjava/util/StringTokenizer;->nextToken()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/util/StringTokenizer;->scanToken(I)I+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/util/StringTokenizer;->setMaxDelimCodePoint()V+]Ljava/lang/String;Ljava/lang/String; +HSPLjava/util/StringTokenizer;->skipDelimiters(I)I+]Ljava/lang/String;Ljava/lang/String; HSPLjava/util/TaskQueue;->()V HSPLjava/util/TaskQueue;->add(Ljava/util/TimerTask;)V HSPLjava/util/TaskQueue;->clear()V @@ -29257,16 +28997,16 @@ HSPLjava/util/TaskQueue;->getMin()Ljava/util/TimerTask; HSPLjava/util/TaskQueue;->isEmpty()Z HSPLjava/util/TaskQueue;->removeMin()V HSPLjava/util/TaskQueue;->rescheduleMin(J)V -HSPLjava/util/TimSort;->([Ljava/lang/Object;Ljava/util/Comparator;[Ljava/lang/Object;II)V +HSPLjava/util/TimSort;->([Ljava/lang/Object;Ljava/util/Comparator;[Ljava/lang/Object;II)V+]Ljava/lang/Class;Ljava/lang/Class;]Ljava/lang/Object;[Ljava/lang/Object; HSPLjava/util/TimSort;->binarySort([Ljava/lang/Object;IIILjava/util/Comparator;)V+]Ljava/util/Comparator;missing_types -HSPLjava/util/TimSort;->countRunAndMakeAscending([Ljava/lang/Object;IILjava/util/Comparator;)I +HSPLjava/util/TimSort;->countRunAndMakeAscending([Ljava/lang/Object;IILjava/util/Comparator;)I+]Ljava/util/Comparator;missing_types HSPLjava/util/TimSort;->ensureCapacity(I)[Ljava/lang/Object; HSPLjava/util/TimSort;->gallopLeft(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I HSPLjava/util/TimSort;->gallopRight(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I HSPLjava/util/TimSort;->mergeAt(I)V HSPLjava/util/TimSort;->mergeCollapse()V HSPLjava/util/TimSort;->mergeForceCollapse()V -HSPLjava/util/TimSort;->mergeHi(IIII)V +HSPLjava/util/TimSort;->mergeHi(IIII)V+]Ljava/util/Comparator;Ljava/lang/reflect/Method$1; HSPLjava/util/TimSort;->mergeLo(IIII)V HSPLjava/util/TimSort;->minRunLength(I)I HSPLjava/util/TimSort;->pushRun(II)V @@ -29318,7 +29058,7 @@ HSPLjava/util/TreeMap$KeyIterator;->(Ljava/util/TreeMap;Ljava/util/TreeMap HSPLjava/util/TreeMap$KeyIterator;->next()Ljava/lang/Object;+]Ljava/util/TreeMap$KeyIterator;Ljava/util/TreeMap$KeyIterator; HSPLjava/util/TreeMap$KeySet;->(Ljava/util/NavigableMap;)V HSPLjava/util/TreeMap$KeySet;->isEmpty()Z -HSPLjava/util/TreeMap$KeySet;->iterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap$KeySet;->iterator()Ljava/util/Iterator;+]Ljava/util/TreeMap;Ljava/util/TreeMap; HSPLjava/util/TreeMap$KeySet;->size()I HSPLjava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V HSPLjava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->next()Ljava/lang/Object; @@ -29358,7 +29098,7 @@ HSPLjava/util/TreeMap$TreeMapEntry;->getKey()Ljava/lang/Object; HSPLjava/util/TreeMap$TreeMapEntry;->getValue()Ljava/lang/Object; HSPLjava/util/TreeMap$TreeMapEntry;->setValue(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/TreeMap$ValueIterator;->(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V -HSPLjava/util/TreeMap$ValueIterator;->next()Ljava/lang/Object; +HSPLjava/util/TreeMap$ValueIterator;->next()Ljava/lang/Object;+]Ljava/util/TreeMap$ValueIterator;Ljava/util/TreeMap$ValueIterator; HSPLjava/util/TreeMap$Values;->(Ljava/util/TreeMap;)V HSPLjava/util/TreeMap$Values;->iterator()Ljava/util/Iterator; HSPLjava/util/TreeMap$Values;->size()I @@ -29377,7 +29117,7 @@ HSPLjava/util/TreeMap;->colorOf(Ljava/util/TreeMap$TreeMapEntry;)Z HSPLjava/util/TreeMap;->comparator()Ljava/util/Comparator; HSPLjava/util/TreeMap;->compare(Ljava/lang/Object;Ljava/lang/Object;)I HSPLjava/util/TreeMap;->computeRedLevel(I)I -HSPLjava/util/TreeMap;->containsKey(Ljava/lang/Object;)Z +HSPLjava/util/TreeMap;->containsKey(Ljava/lang/Object;)Z+]Ljava/util/TreeMap;Ljava/util/TreeMap; HSPLjava/util/TreeMap;->deleteEntry(Ljava/util/TreeMap$TreeMapEntry;)V HSPLjava/util/TreeMap;->descendingKeySet()Ljava/util/NavigableSet; HSPLjava/util/TreeMap;->descendingMap()Ljava/util/NavigableMap; @@ -29388,9 +29128,9 @@ HSPLjava/util/TreeMap;->fixAfterDeletion(Ljava/util/TreeMap$TreeMapEntry;)V HSPLjava/util/TreeMap;->fixAfterInsertion(Ljava/util/TreeMap$TreeMapEntry;)V HSPLjava/util/TreeMap;->floorEntry(Ljava/lang/Object;)Ljava/util/Map$Entry; HSPLjava/util/TreeMap;->floorKey(Ljava/lang/Object;)Ljava/lang/Object; -HSPLjava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/TreeMap;Ljava/util/TreeMap; HSPLjava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -HSPLjava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/TreeMap;Ljava/util/TreeMap;]Ljava/lang/Comparable;missing_types +HSPLjava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/lang/Comparable;missing_types]Ljava/util/TreeMap;Ljava/util/TreeMap; HSPLjava/util/TreeMap;->getEntryUsingComparator(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;+]Ljava/util/Comparator;missing_types HSPLjava/util/TreeMap;->getFirstEntry()Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->getFloorEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; @@ -29399,9 +29139,9 @@ HSPLjava/util/TreeMap;->getLastEntry()Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->getLowerEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap; HSPLjava/util/TreeMap;->key(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object; -HSPLjava/util/TreeMap;->keyIterator()Ljava/util/Iterator; +HSPLjava/util/TreeMap;->keyIterator()Ljava/util/Iterator;+]Ljava/util/TreeMap;Ljava/util/TreeMap; HSPLjava/util/TreeMap;->keyOrNull(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object; -HSPLjava/util/TreeMap;->keySet()Ljava/util/Set; +HSPLjava/util/TreeMap;->keySet()Ljava/util/Set;+]Ljava/util/TreeMap;Ljava/util/TreeMap; HSPLjava/util/TreeMap;->lastKey()Ljava/lang/Object; HSPLjava/util/TreeMap;->leftOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->lowerEntry(Ljava/lang/Object;)Ljava/util/Map$Entry; @@ -29409,9 +29149,9 @@ HSPLjava/util/TreeMap;->navigableKeySet()Ljava/util/NavigableSet; HSPLjava/util/TreeMap;->parentOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->pollFirstEntry()Ljava/util/Map$Entry; HSPLjava/util/TreeMap;->predecessor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; -HSPLjava/util/TreeMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Comparator;missing_types]Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;]Ljava/util/TreeMap;missing_types]Ljava/lang/Comparable;missing_types +HSPLjava/util/TreeMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/TreeMap;missing_types]Ljava/lang/Comparable;missing_types]Ljava/util/Comparator;missing_types]Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->putAll(Ljava/util/Map;)V -HSPLjava/util/TreeMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/TreeMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/TreeMap;Ljava/util/TreeMap; HSPLjava/util/TreeMap;->rightOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; HSPLjava/util/TreeMap;->rotateLeft(Ljava/util/TreeMap$TreeMapEntry;)V HSPLjava/util/TreeMap;->rotateRight(Ljava/util/TreeMap$TreeMapEntry;)V @@ -29436,10 +29176,10 @@ HSPLjava/util/TreeSet;->contains(Ljava/lang/Object;)Z+]Ljava/util/NavigableMap;L HSPLjava/util/TreeSet;->descendingSet()Ljava/util/NavigableSet; HSPLjava/util/TreeSet;->first()Ljava/lang/Object; HSPLjava/util/TreeSet;->floor(Ljava/lang/Object;)Ljava/lang/Object; -HSPLjava/util/TreeSet;->isEmpty()Z +HSPLjava/util/TreeSet;->isEmpty()Z+]Ljava/util/NavigableMap;Ljava/util/TreeMap; HSPLjava/util/TreeSet;->iterator()Ljava/util/Iterator; HSPLjava/util/TreeSet;->last()Ljava/lang/Object; -HSPLjava/util/TreeSet;->remove(Ljava/lang/Object;)Z +HSPLjava/util/TreeSet;->remove(Ljava/lang/Object;)Z+]Ljava/util/NavigableMap;Ljava/util/TreeMap; HSPLjava/util/TreeSet;->size()I HSPLjava/util/TreeSet;->subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet; HSPLjava/util/TreeSet;->tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet; @@ -29471,7 +29211,7 @@ HSPLjava/util/Vector;->addElement(Ljava/lang/Object;)V HSPLjava/util/Vector;->clear()V HSPLjava/util/Vector;->contains(Ljava/lang/Object;)Z HSPLjava/util/Vector;->copyInto([Ljava/lang/Object;)V -HSPLjava/util/Vector;->elementAt(I)Ljava/lang/Object; +HSPLjava/util/Vector;->elementAt(I)Ljava/lang/Object;+]Ljava/util/Vector;Ljava/util/Stack;,Ljava/util/Vector; HSPLjava/util/Vector;->elementData(I)Ljava/lang/Object; HSPLjava/util/Vector;->elements()Ljava/util/Enumeration; HSPLjava/util/Vector;->get(I)Ljava/lang/Object;+]Ljava/util/Vector;Ljava/util/Stack; @@ -29518,15 +29258,15 @@ HSPLjava/util/WeakHashMap;->expungeStaleEntries()V+]Ljava/lang/ref/ReferenceQueu HSPLjava/util/WeakHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; HSPLjava/util/WeakHashMap;->getEntry(Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry; HSPLjava/util/WeakHashMap;->getTable()[Ljava/util/WeakHashMap$Entry; -HSPLjava/util/WeakHashMap;->hash(Ljava/lang/Object;)I+]Ljava/lang/Object;Ljava/lang/Class; +HSPLjava/util/WeakHashMap;->hash(Ljava/lang/Object;)I+]Ljava/lang/Object;missing_types HSPLjava/util/WeakHashMap;->indexFor(II)I HSPLjava/util/WeakHashMap;->isEmpty()Z HSPLjava/util/WeakHashMap;->keySet()Ljava/util/Set; HSPLjava/util/WeakHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/WeakHashMap;->matchesKey(Ljava/util/WeakHashMap$Entry;Ljava/lang/Object;)Z+]Ljava/util/WeakHashMap$Entry;Ljava/util/WeakHashMap$Entry; HSPLjava/util/WeakHashMap;->newTable(I)[Ljava/util/WeakHashMap$Entry; -HSPLjava/util/WeakHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -HSPLjava/util/WeakHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/WeakHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; +HSPLjava/util/WeakHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/WeakHashMap;Ljava/util/WeakHashMap; HSPLjava/util/WeakHashMap;->resize(I)V HSPLjava/util/WeakHashMap;->size()I HSPLjava/util/WeakHashMap;->transfer([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V @@ -29623,7 +29363,7 @@ HSPLjava/util/concurrent/ConcurrentHashMap;->(I)V HSPLjava/util/concurrent/ConcurrentHashMap;->(IFI)V HSPLjava/util/concurrent/ConcurrentHashMap;->(Ljava/util/Map;)V HSPLjava/util/concurrent/ConcurrentHashMap;->addCount(JI)V+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe;]Ljava/util/concurrent/ConcurrentHashMap;Ljava/util/concurrent/ConcurrentHashMap; -HSPLjava/util/concurrent/ConcurrentHashMap;->casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z +HSPLjava/util/concurrent/ConcurrentHashMap;->casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/ConcurrentHashMap;->clear()V HSPLjava/util/concurrent/ConcurrentHashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z @@ -29644,7 +29384,7 @@ HSPLjava/util/concurrent/ConcurrentHashMap;->putVal(Ljava/lang/Object;Ljava/lang HSPLjava/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z HSPLjava/util/concurrent/ConcurrentHashMap;->replace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z -HSPLjava/util/concurrent/ConcurrentHashMap;->replaceNode(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentHashMap;->replaceNode(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/lang/Object;Lsun/nio/ch/FileKey;,Landroid/icu/impl/locale/BaseLocale$Key; HSPLjava/util/concurrent/ConcurrentHashMap;->resizeStamp(I)I HSPLjava/util/concurrent/ConcurrentHashMap;->setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V HSPLjava/util/concurrent/ConcurrentHashMap;->size()I @@ -29652,7 +29392,7 @@ HSPLjava/util/concurrent/ConcurrentHashMap;->spread(I)I HSPLjava/util/concurrent/ConcurrentHashMap;->sumCount()J HSPLjava/util/concurrent/ConcurrentHashMap;->tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/ConcurrentHashMap;->tableSizeFor(I)I -HSPLjava/util/concurrent/ConcurrentHashMap;->transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V +HSPLjava/util/concurrent/ConcurrentHashMap;->transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/ConcurrentHashMap;->treeifyBin([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V HSPLjava/util/concurrent/ConcurrentHashMap;->tryPresize(I)V HSPLjava/util/concurrent/ConcurrentHashMap;->values()Ljava/util/Collection; @@ -29678,19 +29418,19 @@ HSPLjava/util/concurrent/ConcurrentLinkedDeque;->updateHead()V HSPLjava/util/concurrent/ConcurrentLinkedDeque;->updateTail()V HSPLjava/util/concurrent/ConcurrentLinkedQueue$$ExternalSyntheticLambda0;->()V HSPLjava/util/concurrent/ConcurrentLinkedQueue$$ExternalSyntheticLambda0;->test(Ljava/lang/Object;)Z -HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->(Ljava/util/concurrent/ConcurrentLinkedQueue;)V +HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->(Ljava/util/concurrent/ConcurrentLinkedQueue;)V+]Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue; HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->hasNext()Z -HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->next()Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->next()Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue; HSPLjava/util/concurrent/ConcurrentLinkedQueue$Node;->()V HSPLjava/util/concurrent/ConcurrentLinkedQueue$Node;->(Ljava/lang/Object;)V HSPLjava/util/concurrent/ConcurrentLinkedQueue$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z HSPLjava/util/concurrent/ConcurrentLinkedQueue;->()V -HSPLjava/util/concurrent/ConcurrentLinkedQueue;->add(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->add(Ljava/lang/Object;)Z+]Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue; HSPLjava/util/concurrent/ConcurrentLinkedQueue;->bulkRemove(Ljava/util/function/Predicate;)Z HSPLjava/util/concurrent/ConcurrentLinkedQueue;->clear()V HSPLjava/util/concurrent/ConcurrentLinkedQueue;->contains(Ljava/lang/Object;)Z -HSPLjava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -HSPLjava/util/concurrent/ConcurrentLinkedQueue;->isEmpty()Z +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/ConcurrentLinkedQueue$Node;+]Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue; +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->isEmpty()Z+]Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue; HSPLjava/util/concurrent/ConcurrentLinkedQueue;->iterator()Ljava/util/Iterator; HSPLjava/util/concurrent/ConcurrentLinkedQueue;->lambda$clear$2(Ljava/lang/Object;)Z HSPLjava/util/concurrent/ConcurrentLinkedQueue;->offer(Ljava/lang/Object;)Z @@ -29700,7 +29440,7 @@ HSPLjava/util/concurrent/ConcurrentLinkedQueue;->remove(Ljava/lang/Object;)Z HSPLjava/util/concurrent/ConcurrentLinkedQueue;->size()I HSPLjava/util/concurrent/ConcurrentLinkedQueue;->succ(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node; HSPLjava/util/concurrent/ConcurrentLinkedQueue;->toArray()[Ljava/lang/Object; -HSPLjava/util/concurrent/ConcurrentLinkedQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object; +HSPLjava/util/concurrent/ConcurrentLinkedQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentLinkedQueue;Ljava/util/concurrent/ConcurrentLinkedQueue; HSPLjava/util/concurrent/ConcurrentLinkedQueue;->updateHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)V HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;->(Ljava/util/concurrent/ConcurrentSkipListMap;)V @@ -29726,8 +29466,8 @@ HSPLjava/util/concurrent/CopyOnWriteArrayList$$ExternalSyntheticLambda2;-> HSPLjava/util/concurrent/CopyOnWriteArrayList$$ExternalSyntheticLambda2;->test(Ljava/lang/Object;)Z HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->([Ljava/lang/Object;I)V HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->hasNext()Z -HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->next()Ljava/lang/Object; -HSPLjava/util/concurrent/CopyOnWriteArrayList;->()V +HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->next()Ljava/lang/Object;+]Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator; +HSPLjava/util/concurrent/CopyOnWriteArrayList;->()V+]Ljava/util/concurrent/CopyOnWriteArrayList;Ljava/util/concurrent/CopyOnWriteArrayList; HSPLjava/util/concurrent/CopyOnWriteArrayList;->(Ljava/util/Collection;)V HSPLjava/util/concurrent/CopyOnWriteArrayList;->([Ljava/lang/Object;)V HSPLjava/util/concurrent/CopyOnWriteArrayList;->add(ILjava/lang/Object;)V @@ -29770,9 +29510,9 @@ HSPLjava/util/concurrent/CopyOnWriteArraySet;->size()I HSPLjava/util/concurrent/CountDownLatch$Sync;->(I)V HSPLjava/util/concurrent/CountDownLatch$Sync;->getCount()I HSPLjava/util/concurrent/CountDownLatch$Sync;->tryAcquireShared(I)I -HSPLjava/util/concurrent/CountDownLatch$Sync;->tryReleaseShared(I)Z +HSPLjava/util/concurrent/CountDownLatch$Sync;->tryReleaseShared(I)Z+]Ljava/util/concurrent/CountDownLatch$Sync;Ljava/util/concurrent/CountDownLatch$Sync; HSPLjava/util/concurrent/CountDownLatch;->(I)V -HSPLjava/util/concurrent/CountDownLatch;->await()V +HSPLjava/util/concurrent/CountDownLatch;->await()V+]Ljava/util/concurrent/CountDownLatch$Sync;Ljava/util/concurrent/CountDownLatch$Sync; HSPLjava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z HSPLjava/util/concurrent/CountDownLatch;->countDown()V HSPLjava/util/concurrent/CountDownLatch;->getCount()J @@ -29798,7 +29538,7 @@ HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;->scheduleW HSPLjava/util/concurrent/Executors$FinalizableDelegatedExecutorService;->(Ljava/util/concurrent/ExecutorService;)V HSPLjava/util/concurrent/Executors$FinalizableDelegatedExecutorService;->finalize()V HSPLjava/util/concurrent/Executors$RunnableAdapter;->(Ljava/lang/Runnable;Ljava/lang/Object;)V -HSPLjava/util/concurrent/Executors$RunnableAdapter;->call()Ljava/lang/Object;+]Ljava/lang/Runnable;missing_types +HSPLjava/util/concurrent/Executors$RunnableAdapter;->call()Ljava/lang/Object; HSPLjava/util/concurrent/Executors;->callable(Ljava/lang/Runnable;)Ljava/util/concurrent/Callable; HSPLjava/util/concurrent/Executors;->callable(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Callable; HSPLjava/util/concurrent/Executors;->defaultThreadFactory()Ljava/util/concurrent/ThreadFactory; @@ -29823,7 +29563,7 @@ HSPLjava/util/concurrent/FutureTask;->(Ljava/util/concurrent/Callable;)V HSPLjava/util/concurrent/FutureTask;->awaitDone(ZJ)I HSPLjava/util/concurrent/FutureTask;->cancel(Z)Z HSPLjava/util/concurrent/FutureTask;->done()V -HSPLjava/util/concurrent/FutureTask;->finishCompletion()V+]Ljava/util/concurrent/FutureTask;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;,Ljava/util/concurrent/FutureTask; +HSPLjava/util/concurrent/FutureTask;->finishCompletion()V+]Ljava/util/concurrent/FutureTask;missing_types HSPLjava/util/concurrent/FutureTask;->get()Ljava/lang/Object; HSPLjava/util/concurrent/FutureTask;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; HSPLjava/util/concurrent/FutureTask;->handlePossibleCancellationInterrupt(I)V @@ -29831,7 +29571,7 @@ HSPLjava/util/concurrent/FutureTask;->isCancelled()Z HSPLjava/util/concurrent/FutureTask;->isDone()Z HSPLjava/util/concurrent/FutureTask;->removeWaiter(Ljava/util/concurrent/FutureTask$WaitNode;)V HSPLjava/util/concurrent/FutureTask;->report(I)Ljava/lang/Object; -HSPLjava/util/concurrent/FutureTask;->run()V+]Ljava/util/concurrent/Callable;Ljava/util/concurrent/Executors$RunnableAdapter;]Ljava/util/concurrent/FutureTask;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;,Ljava/util/concurrent/FutureTask; +HSPLjava/util/concurrent/FutureTask;->run()V+]Ljava/util/concurrent/Callable;missing_types]Ljava/util/concurrent/FutureTask;missing_types HSPLjava/util/concurrent/FutureTask;->runAndReset()Z HSPLjava/util/concurrent/FutureTask;->set(Ljava/lang/Object;)V HSPLjava/util/concurrent/FutureTask;->setException(Ljava/lang/Throwable;)V @@ -29866,13 +29606,13 @@ HSPLjava/util/concurrent/LinkedBlockingQueue;->drainTo(Ljava/util/Collection;I)I HSPLjava/util/concurrent/LinkedBlockingQueue;->enqueue(Ljava/util/concurrent/LinkedBlockingQueue$Node;)V HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyLock()V HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyUnlock()V -HSPLjava/util/concurrent/LinkedBlockingQueue;->offer(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/LinkedBlockingQueue;->offer(Ljava/lang/Object;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; HSPLjava/util/concurrent/LinkedBlockingQueue;->poll()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; -HSPLjava/util/concurrent/LinkedBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; -HSPLjava/util/concurrent/LinkedBlockingQueue;->put(Ljava/lang/Object;)V -HSPLjava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V +HSPLjava/util/concurrent/LinkedBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit; +HSPLjava/util/concurrent/LinkedBlockingQueue;->put(Ljava/lang/Object;)V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; +HSPLjava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject; HSPLjava/util/concurrent/LinkedBlockingQueue;->signalNotFull()V -HSPLjava/util/concurrent/LinkedBlockingQueue;->size()I +HSPLjava/util/concurrent/LinkedBlockingQueue;->size()I+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; HSPLjava/util/concurrent/LinkedBlockingQueue;->take()Ljava/lang/Object;+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; HSPLjava/util/concurrent/PriorityBlockingQueue;->()V HSPLjava/util/concurrent/PriorityBlockingQueue;->(ILjava/util/Comparator;)V @@ -29910,7 +29650,7 @@ HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->iterator HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/concurrent/locks/Condition;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject; HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/RunnableScheduledFuture; -HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->remove(Ljava/lang/Object;)Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->remove(Ljava/lang/Object;)Z+]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock; HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->setIndex(Ljava/util/concurrent/RunnableScheduledFuture;I)V HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftDown(ILjava/util/concurrent/RunnableScheduledFuture;)V+]Ljava/util/concurrent/RunnableScheduledFuture;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask; HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftUp(ILjava/util/concurrent/RunnableScheduledFuture;)V+]Ljava/util/concurrent/RunnableScheduledFuture;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask; @@ -29921,7 +29661,7 @@ HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->toArray( HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/lang/Runnable;Ljava/lang/Object;JJ)V HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/lang/Runnable;Ljava/lang/Object;JJJ)V HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/util/concurrent/Callable;JJ)V -HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->cancel(Z)Z +HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->cancel(Z)Z+]Ljava/util/concurrent/ScheduledThreadPoolExecutor;missing_types HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/lang/Object;)I+]Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask; HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/util/concurrent/Delayed;)I HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->getDelay(Ljava/util/concurrent/TimeUnit;)J+]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit; @@ -29954,10 +29694,10 @@ HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/c HSPLjava/util/concurrent/Semaphore$FairSync;->(I)V HSPLjava/util/concurrent/Semaphore$FairSync;->tryAcquireShared(I)I HSPLjava/util/concurrent/Semaphore$NonfairSync;->(I)V -HSPLjava/util/concurrent/Semaphore$NonfairSync;->tryAcquireShared(I)I +HSPLjava/util/concurrent/Semaphore$NonfairSync;->tryAcquireShared(I)I+]Ljava/util/concurrent/Semaphore$NonfairSync;Ljava/util/concurrent/Semaphore$NonfairSync; HSPLjava/util/concurrent/Semaphore$Sync;->(I)V HSPLjava/util/concurrent/Semaphore$Sync;->getPermits()I -HSPLjava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I +HSPLjava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I+]Ljava/util/concurrent/Semaphore$Sync;Ljava/util/concurrent/Semaphore$NonfairSync; HSPLjava/util/concurrent/Semaphore$Sync;->tryReleaseShared(I)Z HSPLjava/util/concurrent/Semaphore;->(I)V HSPLjava/util/concurrent/Semaphore;->(IZ)V @@ -29974,20 +29714,20 @@ HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->block()Z HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->forgetWaiter()V HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isCancelled()Z -HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isReleasable()Z +HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isReleasable()Z+]Ljava/lang/Thread;Ljava/lang/Thread; HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryMatch(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->()V HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->casHead(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->clean(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)V HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->isFulfilling(I)Z HSPLjava/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; -HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;+]Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;]Ljava/lang/Thread;Ljava/lang/Thread;]Ljava/util/concurrent/SynchronousQueue$TransferStack;Ljava/util/concurrent/SynchronousQueue$TransferStack; +HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;+]Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;]Ljava/lang/Thread;missing_types]Ljava/util/concurrent/SynchronousQueue$TransferStack;Ljava/util/concurrent/SynchronousQueue$TransferStack; HSPLjava/util/concurrent/SynchronousQueue$Transferer;->()V HSPLjava/util/concurrent/SynchronousQueue;->()V HSPLjava/util/concurrent/SynchronousQueue;->(Z)V HSPLjava/util/concurrent/SynchronousQueue;->isEmpty()Z -HSPLjava/util/concurrent/SynchronousQueue;->offer(Ljava/lang/Object;)Z -HSPLjava/util/concurrent/SynchronousQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object; +HSPLjava/util/concurrent/SynchronousQueue;->offer(Ljava/lang/Object;)Z+]Ljava/util/concurrent/SynchronousQueue$Transferer;Ljava/util/concurrent/SynchronousQueue$TransferStack; +HSPLjava/util/concurrent/SynchronousQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;+]Ljava/util/concurrent/SynchronousQueue$Transferer;Ljava/util/concurrent/SynchronousQueue$TransferStack;]Ljava/util/concurrent/TimeUnit;Ljava/util/concurrent/TimeUnit; HSPLjava/util/concurrent/SynchronousQueue;->size()I HSPLjava/util/concurrent/SynchronousQueue;->take()Ljava/lang/Object; HSPLjava/util/concurrent/ThreadLocalRandom;->()V @@ -29998,7 +29738,6 @@ HSPLjava/util/concurrent/ThreadLocalRandom;->localInit()V HSPLjava/util/concurrent/ThreadLocalRandom;->mix32(J)I HSPLjava/util/concurrent/ThreadLocalRandom;->mix64(J)J HSPLjava/util/concurrent/ThreadLocalRandom;->nextInt()I -HSPLjava/util/concurrent/ThreadLocalRandom;->nextInt(I)I+]Ljava/util/concurrent/ThreadLocalRandom;Ljava/util/concurrent/ThreadLocalRandom; HSPLjava/util/concurrent/ThreadLocalRandom;->nextSecondarySeed()I HSPLjava/util/concurrent/ThreadLocalRandom;->nextSeed()J HSPLjava/util/concurrent/ThreadLocalRandom;->setSeed(J)V @@ -30017,7 +29756,7 @@ HSPLjava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/Ti HSPLjava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/RejectedExecutionHandler;)V HSPLjava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V HSPLjava/util/concurrent/ThreadPoolExecutor;->(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V -HSPLjava/util/concurrent/ThreadPoolExecutor;->addWorker(Ljava/lang/Runnable;Z)Z +HSPLjava/util/concurrent/ThreadPoolExecutor;->addWorker(Ljava/lang/Runnable;Z)Z+]Ljava/lang/Thread;missing_types]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; HSPLjava/util/concurrent/ThreadPoolExecutor;->advanceRunState(I)V HSPLjava/util/concurrent/ThreadPoolExecutor;->afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V HSPLjava/util/concurrent/ThreadPoolExecutor;->allowCoreThreadTimeOut(Z)V @@ -30030,13 +29769,13 @@ HSPLjava/util/concurrent/ThreadPoolExecutor;->ctlOf(II)I HSPLjava/util/concurrent/ThreadPoolExecutor;->decrementWorkerCount()V HSPLjava/util/concurrent/ThreadPoolExecutor;->drainQueue()Ljava/util/List; HSPLjava/util/concurrent/ThreadPoolExecutor;->ensurePrestart()V+]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; -HSPLjava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V +HSPLjava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/SynchronousQueue;,Ljava/util/concurrent/LinkedBlockingQueue;,Ljava/util/concurrent/PriorityBlockingQueue;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; HSPLjava/util/concurrent/ThreadPoolExecutor;->finalize()V HSPLjava/util/concurrent/ThreadPoolExecutor;->getCorePoolSize()I HSPLjava/util/concurrent/ThreadPoolExecutor;->getMaximumPoolSize()I HSPLjava/util/concurrent/ThreadPoolExecutor;->getQueue()Ljava/util/concurrent/BlockingQueue; HSPLjava/util/concurrent/ThreadPoolExecutor;->getRejectedExecutionHandler()Ljava/util/concurrent/RejectedExecutionHandler; -HSPLjava/util/concurrent/ThreadPoolExecutor;->getTask()Ljava/lang/Runnable;+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;,Ljava/util/concurrent/LinkedBlockingQueue;,Ljava/util/concurrent/SynchronousQueue;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; +HSPLjava/util/concurrent/ThreadPoolExecutor;->getTask()Ljava/lang/Runnable;+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;,Ljava/util/concurrent/SynchronousQueue;,Ljava/util/concurrent/LinkedBlockingQueue;,Ljava/util/concurrent/PriorityBlockingQueue;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; HSPLjava/util/concurrent/ThreadPoolExecutor;->getThreadFactory()Ljava/util/concurrent/ThreadFactory; HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers()V HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers(Z)V @@ -30047,13 +29786,13 @@ HSPLjava/util/concurrent/ThreadPoolExecutor;->isTerminated()Z HSPLjava/util/concurrent/ThreadPoolExecutor;->onShutdown()V HSPLjava/util/concurrent/ThreadPoolExecutor;->prestartAllCoreThreads()I HSPLjava/util/concurrent/ThreadPoolExecutor;->prestartCoreThread()Z -HSPLjava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V -HSPLjava/util/concurrent/ThreadPoolExecutor;->purge()V+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;]Ljava/util/concurrent/ThreadPoolExecutor;Ljava/util/concurrent/ScheduledThreadPoolExecutor;]Ljava/util/Iterator;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;]Ljava/util/concurrent/Future;Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask; +HSPLjava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/SynchronousQueue;,Ljava/util/concurrent/LinkedBlockingQueue;]Ljava/util/concurrent/locks/ReentrantLock;Ljava/util/concurrent/locks/ReentrantLock;]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger; +HSPLjava/util/concurrent/ThreadPoolExecutor;->purge()V+]Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;]Ljava/util/concurrent/ThreadPoolExecutor;Ljava/util/concurrent/ScheduledThreadPoolExecutor;]Ljava/util/Iterator;Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr; HSPLjava/util/concurrent/ThreadPoolExecutor;->remove(Ljava/lang/Runnable;)Z HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateAtLeast(II)Z HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateLessThan(II)Z HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateOf(I)I -HSPLjava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+]Ljava/util/concurrent/ThreadPoolExecutor;missing_types]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/lang/Runnable;missing_types]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker; +HSPLjava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V+]Ljava/util/concurrent/ThreadPoolExecutor;missing_types]Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;]Ljava/util/concurrent/ThreadPoolExecutor$Worker;Ljava/util/concurrent/ThreadPoolExecutor$Worker;]Ljava/lang/Runnable;missing_types HSPLjava/util/concurrent/ThreadPoolExecutor;->setCorePoolSize(I)V HSPLjava/util/concurrent/ThreadPoolExecutor;->setKeepAliveTime(JLjava/util/concurrent/TimeUnit;)V HSPLjava/util/concurrent/ThreadPoolExecutor;->setMaximumPoolSize(I)V @@ -30102,8 +29841,8 @@ HSPLjava/util/concurrent/atomic/AtomicInteger;->lazySet(I)V HSPLjava/util/concurrent/atomic/AtomicInteger;->set(I)V HSPLjava/util/concurrent/atomic/AtomicInteger;->weakCompareAndSetVolatile(II)Z HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V -HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V -HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->compareAndSet(Ljava/lang/Object;II)Z +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V+]Ljava/lang/Class;Ljava/lang/Class; +HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->compareAndSet(Ljava/lang/Object;II)Z+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->decrementAndGet(Ljava/lang/Object;)I HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->getAndAdd(Ljava/lang/Object;I)I HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->incrementAndGet(Ljava/lang/Object;)I @@ -30125,10 +29864,9 @@ HSPLjava/util/concurrent/atomic/AtomicLong;->set(J)V HSPLjava/util/concurrent/atomic/AtomicLong;->toString()Ljava/lang/String; HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->accessCheck(Ljava/lang/Object;)V+]Ljava/lang/Class;Ljava/lang/Class; -HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->addAndGet(Ljava/lang/Object;J)J +HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->addAndGet(Ljava/lang/Object;J)J+]Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater; HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->compareAndSet(Ljava/lang/Object;JJ)Z+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->getAndAdd(Ljava/lang/Object;J)J+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; -HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->getAndIncrement(Ljava/lang/Object;)J+]Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater; HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->incrementAndGet(Ljava/lang/Object;)J HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater;->()V HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicLongFieldUpdater; @@ -30154,7 +29892,7 @@ HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->setRelease(ILjava/lang/Ob HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V+]Ljava/lang/Class;Ljava/lang/Class; HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; -HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->getAndSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->lazySet(Ljava/lang/Object;Ljava/lang/Object;)V+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->valueCheck(Ljava/lang/Object;)V+]Ljava/lang/Class;Ljava/lang/Class; @@ -30174,7 +29912,7 @@ HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->getExclusiveOwnerTh HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->setExclusiveOwnerThread(Ljava/lang/Thread;)V HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;->()V HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;->block()Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode; -HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;->isReleasable()Z+]Ljava/lang/Thread;Ljava/lang/Thread; +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;->isReleasable()Z+]Ljava/lang/Thread;missing_types HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)V HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->await()V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync; HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->awaitNanos(J)J+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync; @@ -30184,7 +29922,7 @@ HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->enab HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->hasWaiters()Z HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->isOwnedBy(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)Z HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signal()V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync; -HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signalAll()V +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signalAll()V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync; HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->unlinkCancelledWaiters(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;)V HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ExclusiveNode;->()V HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->()V @@ -30195,8 +29933,8 @@ HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->setStatusRelaxe HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$SharedNode;->()V HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->-$$Nest$sfgetU()Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->()V -HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquire(I)V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;,Ljava/util/concurrent/ThreadPoolExecutor$Worker; -HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;IZZZJ)I+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ExclusiveNode;,Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;,Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$SharedNode;]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/CountDownLatch$Sync;,Ljava/util/concurrent/locks/ReentrantLock$NonfairSync; +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquire(I)V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;,Ljava/util/concurrent/ThreadPoolExecutor$Worker;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;IZZZJ)I+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ExclusiveNode;,Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;,Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$SharedNode;]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/CountDownLatch$Sync;,Ljava/util/concurrent/Semaphore$FairSync;,Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;,Ljava/util/concurrent/Semaphore$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;]Ljava/lang/Thread;Ljava/lang/Thread; HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireInterruptibly(I)V HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireShared(I)V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireSharedInterruptibly(I)V @@ -30212,8 +29950,8 @@ HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->hasQueuedThreads()Z HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->hasWaiters(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->isEnqueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->owns(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;)Z -HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->release(I)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;,Ljava/util/concurrent/ThreadPoolExecutor$Worker;,Ljava/util/concurrent/locks/ReentrantLock$FairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync; -HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->releaseShared(I)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/CountDownLatch$Sync; +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->release(I)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;megamorphic_types +HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->releaseShared(I)Z+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/CountDownLatch$Sync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync; HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->setState(I)V HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->signalNext(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V+]Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ExclusiveNode;,Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionNode;,Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$SharedNode; HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->signalNextIfShared(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V @@ -30223,12 +29961,12 @@ HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->tryInitializeHead()V HSPLjava/util/concurrent/locks/LockSupport;->park()V HSPLjava/util/concurrent/locks/LockSupport;->park(Ljava/lang/Object;)V HSPLjava/util/concurrent/locks/LockSupport;->parkNanos(J)V -HSPLjava/util/concurrent/locks/LockSupport;->parkNanos(Ljava/lang/Object;J)V +HSPLjava/util/concurrent/locks/LockSupport;->parkNanos(Ljava/lang/Object;J)V+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/locks/LockSupport;->setBlocker(Ljava/lang/Thread;Ljava/lang/Object;)V+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/locks/LockSupport;->setCurrentBlocker(Ljava/lang/Object;)V+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/locks/LockSupport;->unpark(Ljava/lang/Thread;)V+]Ljdk/internal/misc/Unsafe;Ljdk/internal/misc/Unsafe; HSPLjava/util/concurrent/locks/ReentrantLock$FairSync;->()V -HSPLjava/util/concurrent/locks/ReentrantLock$FairSync;->initialTryLock()Z +HSPLjava/util/concurrent/locks/ReentrantLock$FairSync;->initialTryLock()Z+]Ljava/util/concurrent/locks/ReentrantLock$FairSync;Ljava/util/concurrent/locks/ReentrantLock$FairSync; HSPLjava/util/concurrent/locks/ReentrantLock$FairSync;->tryAcquire(I)Z HSPLjava/util/concurrent/locks/ReentrantLock$NonfairSync;->()V HSPLjava/util/concurrent/locks/ReentrantLock$NonfairSync;->initialTryLock()Z+]Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;Ljava/util/concurrent/locks/ReentrantLock$NonfairSync; @@ -30258,7 +29996,7 @@ HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->readerShould HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->writerShouldBlock()Z HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->lock()V+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; -HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->unlock()V+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->unlock()V+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync; HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->()V HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;->()V HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;->initialValue()Ljava/lang/Object; @@ -30268,20 +30006,18 @@ HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->exclusiveCount(I)I HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->fullTryAcquireShared(Ljava/lang/Thread;)I HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getReadHoldCount()I HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getReadLockCount()I -HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getWriteHoldCount()I+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->isHeldExclusively()Z HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->sharedCount(I)I HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquire(I)Z -HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquireShared(I)I+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquireShared(I)I+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync; HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryRelease(I)Z -HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReleaseShared(I)Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; +HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReleaseShared(I)Z+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;,Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync; HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->lock()V HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->unlock()V HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->()V HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->(Z)V HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->getReadHoldCount()I -HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->getWriteHoldCount()I+]Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync; HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock;+]Ljava/util/concurrent/locks/ReentrantReadWriteLock;Ljava/util/concurrent/locks/ReentrantReadWriteLock; HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock; HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock; @@ -30307,16 +30043,14 @@ HSPLjava/util/jar/Attributes;->entrySet()Ljava/util/Set; HSPLjava/util/jar/Attributes;->get(Ljava/lang/Object;)Ljava/lang/Object; HSPLjava/util/jar/Attributes;->getValue(Ljava/util/jar/Attributes$Name;)Ljava/lang/String; HSPLjava/util/jar/Attributes;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/Map;Ljava/util/LinkedHashMap; -HSPLjava/util/jar/Attributes;->putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Ljava/util/jar/Attributes;Ljava/util/jar/Attributes; +HSPLjava/util/jar/Attributes;->putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; HSPLjava/util/jar/Attributes;->read(Ljava/util/jar/Manifest$FastInputStream;[B)V HSPLjava/util/jar/Attributes;->read(Ljava/util/jar/Manifest$FastInputStream;[BLjava/lang/String;I)I+]Ljava/util/jar/Attributes;Ljava/util/jar/Attributes;]Ljava/util/jar/Manifest$FastInputStream;Ljava/util/jar/Manifest$FastInputStream; HSPLjava/util/jar/Attributes;->size()I+]Ljava/util/Map;Ljava/util/LinkedHashMap; HSPLjava/util/jar/JarEntry;->(Ljava/util/zip/ZipEntry;)V HSPLjava/util/jar/JarFile$JarFileEntry;->(Ljava/util/jar/JarFile;Ljava/util/zip/ZipEntry;)V HSPLjava/util/jar/JarFile;->(Ljava/io/File;ZI)V -HSPLjava/util/jar/JarFile;->(Ljava/io/File;ZZI)V HSPLjava/util/jar/JarFile;->(Ljava/lang/String;)V -HSPLjava/util/jar/JarFile;->(Ljava/lang/String;ZZ)V HSPLjava/util/jar/JarFile;->getBytes(Ljava/util/zip/ZipEntry;)[B HSPLjava/util/jar/JarFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; HSPLjava/util/jar/JarFile;->getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream; @@ -30332,7 +30066,6 @@ HSPLjava/util/jar/JarVerifier$VerifierStream;->available()I HSPLjava/util/jar/JarVerifier$VerifierStream;->close()V HSPLjava/util/jar/JarVerifier$VerifierStream;->read()I HSPLjava/util/jar/JarVerifier$VerifierStream;->read([BII)I -HSPLjava/util/jar/JarVerifier;->(Ljava/lang/String;[B)V HSPLjava/util/jar/JarVerifier;->beginEntry(Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V HSPLjava/util/jar/JarVerifier;->doneWithMeta()V HSPLjava/util/jar/JarVerifier;->mapSignersToCertArray([Ljava/security/CodeSigner;)[Ljava/security/cert/Certificate; @@ -30353,7 +30086,6 @@ HSPLjava/util/jar/Manifest;->getEntries()Ljava/util/Map; HSPLjava/util/jar/Manifest;->getMainAttributes()Ljava/util/jar/Attributes; HSPLjava/util/jar/Manifest;->parseName([BI)Ljava/lang/String; HSPLjava/util/jar/Manifest;->read(Ljava/io/InputStream;)V -HSPLjava/util/jar/Manifest;->read(Ljava/io/InputStream;Ljava/lang/String;)V+]Ljava/util/jar/Attributes;Ljava/util/jar/Attributes;]Ljava/util/jar/Manifest;Ljava/util/jar/Manifest;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/jar/Manifest$FastInputStream;Ljava/util/jar/Manifest$FastInputStream; HSPLjava/util/jar/Manifest;->toLower(I)I HSPLjava/util/logging/ConsoleHandler;->close()V HSPLjava/util/logging/ErrorManager;->()V @@ -30373,7 +30105,7 @@ HSPLjava/util/logging/FileHandler;->generate(Ljava/lang/String;II)Ljava/io/File; HSPLjava/util/logging/FileHandler;->isParentWritable(Ljava/nio/file/Path;)Z HSPLjava/util/logging/FileHandler;->open(Ljava/io/File;Z)V HSPLjava/util/logging/FileHandler;->openFiles()V -HSPLjava/util/logging/FileHandler;->publish(Ljava/util/logging/LogRecord;)V +HSPLjava/util/logging/FileHandler;->publish(Ljava/util/logging/LogRecord;)V+]Ljava/util/logging/FileHandler;Ljava/util/logging/FileHandler; HSPLjava/util/logging/FileHandler;->rotate()V HSPLjava/util/logging/Formatter;->()V HSPLjava/util/logging/Formatter;->getHead(Ljava/util/logging/Handler;)Ljava/lang/String; @@ -30384,7 +30116,7 @@ HSPLjava/util/logging/Handler;->getEncoding()Ljava/lang/String; HSPLjava/util/logging/Handler;->getFilter()Ljava/util/logging/Filter; HSPLjava/util/logging/Handler;->getFormatter()Ljava/util/logging/Formatter; HSPLjava/util/logging/Handler;->getLevel()Ljava/util/logging/Level; -HSPLjava/util/logging/Handler;->isLoggable(Ljava/util/logging/LogRecord;)Z +HSPLjava/util/logging/Handler;->isLoggable(Ljava/util/logging/LogRecord;)Z+]Ljava/util/logging/Handler;Ljava/util/logging/FileHandler;]Ljava/util/logging/Level;Ljava/util/logging/Level;]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord; HSPLjava/util/logging/Handler;->setEncoding(Ljava/lang/String;)V HSPLjava/util/logging/Handler;->setErrorManager(Ljava/util/logging/ErrorManager;)V HSPLjava/util/logging/Handler;->setFilter(Ljava/util/logging/Filter;)V @@ -30451,7 +30183,7 @@ HSPLjava/util/logging/LogManager;->loadLoggerHandlers(Ljava/util/logging/Logger; HSPLjava/util/logging/LogManager;->parseClassNames(Ljava/lang/String;)[Ljava/lang/String; HSPLjava/util/logging/LogManager;->reset()V HSPLjava/util/logging/LogManager;->resetLogger(Ljava/util/logging/Logger;)V -HSPLjava/util/logging/LogRecord;->(Ljava/util/logging/Level;Ljava/lang/String;)V +HSPLjava/util/logging/LogRecord;->(Ljava/util/logging/Level;Ljava/lang/String;)V+]Ljava/lang/Object;Ljava/util/logging/Level;]Ljava/util/concurrent/atomic/AtomicLong;Ljava/util/concurrent/atomic/AtomicLong; HSPLjava/util/logging/LogRecord;->defaultThreadID()I HSPLjava/util/logging/LogRecord;->getLevel()Ljava/util/logging/Level; HSPLjava/util/logging/LogRecord;->getLoggerName()Ljava/lang/String; @@ -30472,12 +30204,12 @@ HSPLjava/util/logging/Logger;->accessCheckedHandlers()[Ljava/util/logging/Handle HSPLjava/util/logging/Logger;->addHandler(Ljava/util/logging/Handler;)V HSPLjava/util/logging/Logger;->checkPermission()V HSPLjava/util/logging/Logger;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger; -HSPLjava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;)V +HSPLjava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;)V+]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord;]Ljava/util/logging/Logger;Ljava/util/logging/Logger; HSPLjava/util/logging/Logger;->doSetParent(Ljava/util/logging/Logger;)V HSPLjava/util/logging/Logger;->findResourceBundle(Ljava/lang/String;Z)Ljava/util/ResourceBundle; HSPLjava/util/logging/Logger;->findSystemResourceBundle(Ljava/util/Locale;)Ljava/util/ResourceBundle; HSPLjava/util/logging/Logger;->getCallersClassLoader()Ljava/lang/ClassLoader; -HSPLjava/util/logging/Logger;->getEffectiveLoggerBundle()Ljava/util/logging/Logger$LoggerBundle; +HSPLjava/util/logging/Logger;->getEffectiveLoggerBundle()Ljava/util/logging/Logger$LoggerBundle;+]Ljava/util/logging/Logger$LoggerBundle;Ljava/util/logging/Logger$LoggerBundle;]Ljava/util/logging/Logger;Ljava/util/logging/LogManager$RootLogger;,Ljava/util/logging/Logger; HSPLjava/util/logging/Logger;->getHandlers()[Ljava/util/logging/Handler; HSPLjava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger; HSPLjava/util/logging/Logger;->getName()Ljava/lang/String; @@ -30489,7 +30221,7 @@ HSPLjava/util/logging/Logger;->getUseParentHandlers()Z HSPLjava/util/logging/Logger;->info(Ljava/lang/String;)V HSPLjava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z+]Ljava/util/logging/Level;Ljava/util/logging/Level; HSPLjava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V -HSPLjava/util/logging/Logger;->log(Ljava/util/logging/LogRecord;)V +HSPLjava/util/logging/Logger;->log(Ljava/util/logging/LogRecord;)V+]Ljava/util/logging/Handler;Ljava/util/logging/FileHandler;]Ljava/util/logging/LogRecord;Ljava/util/logging/LogRecord;]Ljava/util/logging/Logger;Ljava/util/logging/Logger; HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V @@ -30512,14 +30244,14 @@ HSPLjava/util/logging/StreamHandler;->configure()V HSPLjava/util/logging/StreamHandler;->flush()V HSPLjava/util/logging/StreamHandler;->flushAndClose()V HSPLjava/util/logging/StreamHandler;->isLoggable(Ljava/util/logging/LogRecord;)Z -HSPLjava/util/logging/StreamHandler;->publish(Ljava/util/logging/LogRecord;)V +HSPLjava/util/logging/StreamHandler;->publish(Ljava/util/logging/LogRecord;)V+]Ljava/io/Writer;Ljava/io/OutputStreamWriter;]Ljava/util/logging/StreamHandler;Ljava/util/logging/FileHandler; HSPLjava/util/logging/StreamHandler;->setEncoding(Ljava/lang/String;)V HSPLjava/util/logging/StreamHandler;->setOutputStream(Ljava/io/OutputStream;)V HSPLjava/util/logging/XMLFormatter;->()V HSPLjava/util/regex/Matcher;->(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V+]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher; HSPLjava/util/regex/Matcher;->appendEvaluated(Ljava/lang/StringBuilder;Ljava/lang/String;)V HSPLjava/util/regex/Matcher;->appendExpandedReplacement(Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/lang/String;Ljava/lang/String; -HSPLjava/util/regex/Matcher;->appendReplacement(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher; +HSPLjava/util/regex/Matcher;->appendReplacement(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher; HSPLjava/util/regex/Matcher;->appendReplacement(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/util/regex/Matcher;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher; HSPLjava/util/regex/Matcher;->appendReplacementInternal(Ljava/lang/StringBuilder;Ljava/lang/String;)V HSPLjava/util/regex/Matcher;->appendTail(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; @@ -30527,7 +30259,7 @@ HSPLjava/util/regex/Matcher;->appendTail(Ljava/lang/StringBuilder;)Ljava/lang/St HSPLjava/util/regex/Matcher;->end()I HSPLjava/util/regex/Matcher;->end(I)I HSPLjava/util/regex/Matcher;->ensureMatch()V -HSPLjava/util/regex/Matcher;->find()Z +HSPLjava/util/regex/Matcher;->find()Z+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative; HSPLjava/util/regex/Matcher;->find(I)Z+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher; HSPLjava/util/regex/Matcher;->getSubSequence(II)Ljava/lang/CharSequence;+]Ljava/lang/String;Ljava/lang/String; HSPLjava/util/regex/Matcher;->getTextLength()I+]Ljava/lang/String;Ljava/lang/String; @@ -30542,8 +30274,8 @@ HSPLjava/util/regex/Matcher;->region(II)Ljava/util/regex/Matcher; HSPLjava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String; HSPLjava/util/regex/Matcher;->replaceFirst(Ljava/lang/String;)Ljava/lang/String; HSPLjava/util/regex/Matcher;->reset()Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;Ljava/lang/String; -HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;,Ljava/nio/HeapCharBuffer; -HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;II)Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;Ljava/lang/StringBuilder;,Ljava/lang/String;,Ljava/nio/HeapCharBuffer; +HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;,Landroid/text/SpannableStringBuilder;,Ljava/nio/HeapCharBuffer;,Landroid/text/SpannableString; +HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;II)Ljava/util/regex/Matcher;+]Ljava/lang/CharSequence;Ljava/lang/String;,Ljava/lang/StringBuilder;,Ljava/nio/HeapCharBuffer;,Landroid/text/SpannableStringBuilder;,Landroid/text/SpannableString; HSPLjava/util/regex/Matcher;->resetForInput()V+]Lcom/android/icu/util/regex/MatcherNative;Lcom/android/icu/util/regex/MatcherNative; HSPLjava/util/regex/Matcher;->start()I HSPLjava/util/regex/Matcher;->start(I)I @@ -30558,9 +30290,9 @@ HSPLjava/util/regex/Pattern;->fastSplit(Ljava/lang/String;Ljava/lang/String;I)[L HSPLjava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher; HSPLjava/util/regex/Pattern;->matches(Ljava/lang/String;Ljava/lang/CharSequence;)Z HSPLjava/util/regex/Pattern;->pattern()Ljava/lang/String; -HSPLjava/util/regex/Pattern;->quote(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLjava/util/regex/Pattern;->quote(Ljava/lang/String;)Ljava/lang/String; HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;)[Ljava/lang/String; -HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;I)[Ljava/lang/String; +HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;I)[Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/List;Ljava/util/ArrayList$SubList;]Ljava/lang/CharSequence;Ljava/lang/String;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Ljava/util/regex/Matcher;Ljava/util/regex/Matcher;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLjava/util/regex/Pattern;->toString()Ljava/lang/String; HSPLjava/util/stream/AbstractPipeline;->(Ljava/util/Spliterator;IZ)V HSPLjava/util/stream/AbstractPipeline;->(Ljava/util/stream/AbstractPipeline;I)V+]Ljava/util/stream/AbstractPipeline;Ljava/util/stream/IntPipeline$4;,Ljava/util/stream/ReferencePipeline$4; @@ -30630,11 +30362,11 @@ HSPLjava/util/stream/Collectors;->toMap(Ljava/util/function/Function;Ljava/util/ HSPLjava/util/stream/Collectors;->toMap(Ljava/util/function/Function;Ljava/util/function/Function;Ljava/util/function/BinaryOperator;Ljava/util/function/Supplier;)Ljava/util/stream/Collector; HSPLjava/util/stream/Collectors;->toSet()Ljava/util/stream/Collector; HSPLjava/util/stream/DistinctOps$1$2;->(Ljava/util/stream/DistinctOps$1;Ljava/util/stream/Sink;)V -HSPLjava/util/stream/DistinctOps$1$2;->accept(Ljava/lang/Object;)V -HSPLjava/util/stream/DistinctOps$1$2;->begin(J)V -HSPLjava/util/stream/DistinctOps$1$2;->end()V +HSPLjava/util/stream/DistinctOps$1$2;->accept(Ljava/lang/Object;)V+]Ljava/util/stream/Sink;Ljava/util/stream/ReferencePipeline$5$1;]Ljava/util/Set;Ljava/util/HashSet; +HSPLjava/util/stream/DistinctOps$1$2;->begin(J)V+]Ljava/util/stream/Sink;Ljava/util/stream/ReferencePipeline$5$1; +HSPLjava/util/stream/DistinctOps$1$2;->end()V+]Ljava/util/stream/Sink;Ljava/util/stream/ReferencePipeline$5$1; HSPLjava/util/stream/DistinctOps$1;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -HSPLjava/util/stream/DistinctOps$1;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; +HSPLjava/util/stream/DistinctOps$1;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;+]Ljava/util/stream/StreamOpFlag;Ljava/util/stream/StreamOpFlag; HSPLjava/util/stream/DistinctOps;->makeRef(Ljava/util/stream/AbstractPipeline;)Ljava/util/stream/ReferencePipeline; HSPLjava/util/stream/DoublePipeline$StatelessOp;->()V HSPLjava/util/stream/DoublePipeline$StatelessOp;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V @@ -30695,8 +30427,8 @@ HSPLjava/util/stream/LongPipeline$$ExternalSyntheticLambda7;->()V HSPLjava/util/stream/LongPipeline$StatelessOp;->(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V HSPLjava/util/stream/LongPipeline$StatelessOp;->opIsStateful()Z HSPLjava/util/stream/LongPipeline;->(Ljava/util/stream/AbstractPipeline;I)V -HSPLjava/util/stream/LongPipeline;->reduce(JLjava/util/function/LongBinaryOperator;)J -HSPLjava/util/stream/LongPipeline;->sum()J +HSPLjava/util/stream/LongPipeline;->reduce(JLjava/util/function/LongBinaryOperator;)J+]Ljava/lang/Long;Ljava/lang/Long;]Ljava/util/stream/LongPipeline;Ljava/util/stream/ReferencePipeline$5; +HSPLjava/util/stream/LongPipeline;->sum()J+]Ljava/util/stream/LongPipeline;Ljava/util/stream/ReferencePipeline$5; HSPLjava/util/stream/MatchOps$$ExternalSyntheticLambda0;->(Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/IntPredicate;)V HSPLjava/util/stream/MatchOps$$ExternalSyntheticLambda0;->get()Ljava/lang/Object; HSPLjava/util/stream/MatchOps$$ExternalSyntheticLambda1;->get()Ljava/lang/Object; @@ -30777,10 +30509,10 @@ HSPLjava/util/stream/ReduceOps$5ReducingSink;->get()Ljava/lang/Integer; HSPLjava/util/stream/ReduceOps$5ReducingSink;->get()Ljava/lang/Object; HSPLjava/util/stream/ReduceOps$8;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink; HSPLjava/util/stream/ReduceOps$8ReducingSink;->(JLjava/util/function/LongBinaryOperator;)V -HSPLjava/util/stream/ReduceOps$8ReducingSink;->accept(J)V +HSPLjava/util/stream/ReduceOps$8ReducingSink;->accept(J)V+]Ljava/util/function/LongBinaryOperator;Ljava/util/stream/LongPipeline$$ExternalSyntheticLambda7; HSPLjava/util/stream/ReduceOps$8ReducingSink;->begin(J)V HSPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Long; -HSPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Object; +HSPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Object;+]Ljava/util/stream/ReduceOps$8ReducingSink;Ljava/util/stream/ReduceOps$8ReducingSink; HSPLjava/util/stream/ReduceOps$Box;->()V HSPLjava/util/stream/ReduceOps$Box;->get()Ljava/lang/Object; HSPLjava/util/stream/ReduceOps$ReduceOp;->(Ljava/util/stream/StreamShape;)V @@ -30800,11 +30532,11 @@ HSPLjava/util/stream/ReferencePipeline$3$1;->accept(Ljava/lang/Object;)V HSPLjava/util/stream/ReferencePipeline$3;->(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Function;)V HSPLjava/util/stream/ReferencePipeline$3;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; HSPLjava/util/stream/ReferencePipeline$4$1;->(Ljava/util/stream/ReferencePipeline$4;Ljava/util/stream/Sink;)V -HSPLjava/util/stream/ReferencePipeline$4$1;->accept(Ljava/lang/Object;)V+]Ljava/util/stream/Sink;Ljava/util/stream/Nodes$IntFixedNodeBuilder; +HSPLjava/util/stream/ReferencePipeline$4$1;->accept(Ljava/lang/Object;)V+]Ljava/util/function/ToIntFunction;Landroid/media/AudioPort$$ExternalSyntheticLambda0;]Ljava/util/stream/Sink;Ljava/util/stream/Nodes$IntFixedNodeBuilder; HSPLjava/util/stream/ReferencePipeline$4;->(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToIntFunction;)V HSPLjava/util/stream/ReferencePipeline$4;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; HSPLjava/util/stream/ReferencePipeline$5$1;->(Ljava/util/stream/ReferencePipeline$5;Ljava/util/stream/Sink;)V -HSPLjava/util/stream/ReferencePipeline$5$1;->accept(Ljava/lang/Object;)V +HSPLjava/util/stream/ReferencePipeline$5$1;->accept(Ljava/lang/Object;)V+]Ljava/util/stream/Sink;Ljava/util/stream/ReduceOps$8ReducingSink; HSPLjava/util/stream/ReferencePipeline$5;->(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToLongFunction;)V HSPLjava/util/stream/ReferencePipeline$5;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; HSPLjava/util/stream/ReferencePipeline$6$1;->(Ljava/util/stream/ReferencePipeline$6;Ljava/util/stream/Sink;)V @@ -30827,7 +30559,7 @@ HSPLjava/util/stream/ReferencePipeline;->(Ljava/util/stream/AbstractPipeli HSPLjava/util/stream/ReferencePipeline;->allMatch(Ljava/util/function/Predicate;)Z HSPLjava/util/stream/ReferencePipeline;->anyMatch(Ljava/util/function/Predicate;)Z HSPLjava/util/stream/ReferencePipeline;->collect(Ljava/util/stream/Collector;)Ljava/lang/Object;+]Ljava/util/stream/Collector;Ljava/util/stream/Collectors$CollectorImpl;]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/IntPipeline$4;]Ljava/util/Set;Ljava/util/Collections$UnmodifiableSet; -HSPLjava/util/stream/ReferencePipeline;->count()J +HSPLjava/util/stream/ReferencePipeline;->count()J+]Ljava/util/stream/ReferencePipeline;Ljava/util/stream/DistinctOps$1;]Ljava/util/stream/LongStream;Ljava/util/stream/ReferencePipeline$5; HSPLjava/util/stream/ReferencePipeline;->distinct()Ljava/util/stream/Stream; HSPLjava/util/stream/ReferencePipeline;->filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; HSPLjava/util/stream/ReferencePipeline;->findAny()Ljava/util/Optional; @@ -30920,6 +30652,7 @@ HSPLjava/util/zip/Deflater;->deflate([BII)I HSPLjava/util/zip/Deflater;->deflate([BIII)I HSPLjava/util/zip/Deflater;->end()V HSPLjava/util/zip/Deflater;->ensureOpen()V +HSPLjava/util/zip/Deflater;->finalize()V HSPLjava/util/zip/Deflater;->finish()V HSPLjava/util/zip/Deflater;->finished()Z HSPLjava/util/zip/Deflater;->getBytesRead()J @@ -30960,7 +30693,9 @@ HSPLjava/util/zip/GZIPOutputStream;->writeTrailer([BI)V HSPLjava/util/zip/Inflater;->()V HSPLjava/util/zip/Inflater;->(Z)V HSPLjava/util/zip/Inflater;->end()V +HSPLjava/util/zip/Inflater;->ended()Z HSPLjava/util/zip/Inflater;->ensureOpen()V+]Ljava/util/zip/ZStreamRef;Ljava/util/zip/ZStreamRef; +HSPLjava/util/zip/Inflater;->finalize()V HSPLjava/util/zip/Inflater;->finished()Z HSPLjava/util/zip/Inflater;->getBytesRead()J HSPLjava/util/zip/Inflater;->getBytesWritten()J @@ -30976,19 +30711,19 @@ HSPLjava/util/zip/InflaterInputStream;->(Ljava/io/InputStream;Ljava/util/z HSPLjava/util/zip/InflaterInputStream;->available()I HSPLjava/util/zip/InflaterInputStream;->close()V HSPLjava/util/zip/InflaterInputStream;->ensureOpen()V -HSPLjava/util/zip/InflaterInputStream;->fill()V+]Ljava/io/InputStream;Ljava/io/PushbackInputStream;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater; +HSPLjava/util/zip/InflaterInputStream;->fill()V+]Ljava/io/InputStream;Ljava/io/PushbackInputStream;,Ljava/io/ByteArrayInputStream;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater; HSPLjava/util/zip/InflaterInputStream;->read()I -HSPLjava/util/zip/InflaterInputStream;->read([BII)I+]Ljava/util/zip/InflaterInputStream;Ljava/util/zip/ZipInputStream;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater; +HSPLjava/util/zip/InflaterInputStream;->read([BII)I+]Ljava/util/zip/InflaterInputStream;Ljava/util/zip/ZipInputStream;,Ljava/util/zip/GZIPInputStream;]Ljava/util/zip/Inflater;Ljava/util/zip/Inflater; HSPLjava/util/zip/ZStreamRef;->(J)V HSPLjava/util/zip/ZStreamRef;->address()J HSPLjava/util/zip/ZStreamRef;->clear()V HSPLjava/util/zip/ZipCoder;->(Ljava/nio/charset/Charset;)V -HSPLjava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder; +HSPLjava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder;+]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLjava/util/zip/ZipCoder;->encoder()Ljava/nio/charset/CharsetEncoder; HSPLjava/util/zip/ZipCoder;->get(Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder; -HSPLjava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B+]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; +HSPLjava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B+]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; HSPLjava/util/zip/ZipCoder;->isUTF8()Z -HSPLjava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; +HSPLjava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String;+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLjava/util/zip/ZipEntry;->()V HSPLjava/util/zip/ZipEntry;->(Ljava/lang/String;)V HSPLjava/util/zip/ZipEntry;->(Ljava/util/zip/ZipEntry;)V @@ -30998,16 +30733,21 @@ HSPLjava/util/zip/ZipEntry;->getMethod()I HSPLjava/util/zip/ZipEntry;->getName()Ljava/lang/String; HSPLjava/util/zip/ZipEntry;->getSize()J HSPLjava/util/zip/ZipEntry;->isDirectory()Z +HSPLjava/util/zip/ZipFile$ZipEntryIterator;->(Ljava/util/zip/ZipFile;)V HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasMoreElements()Z HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasNext()Z HSPLjava/util/zip/ZipFile$ZipEntryIterator;->next()Ljava/util/zip/ZipEntry; HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/lang/Object; HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->(Ljava/util/zip/ZipFile;Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/Inflater;I)V HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->available()I HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->close()V HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->fill()V +HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->finalize()V +HSPLjava/util/zip/ZipFile$ZipFileInputStream;->(Ljava/util/zip/ZipFile;J)V HSPLjava/util/zip/ZipFile$ZipFileInputStream;->available()I HSPLjava/util/zip/ZipFile$ZipFileInputStream;->close()V +HSPLjava/util/zip/ZipFile$ZipFileInputStream;->finalize()V HSPLjava/util/zip/ZipFile$ZipFileInputStream;->read()I HSPLjava/util/zip/ZipFile$ZipFileInputStream;->read([BII)I+]Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/ZipFile$ZipFileInputStream; HSPLjava/util/zip/ZipFile$ZipFileInputStream;->size()J @@ -31016,14 +30756,18 @@ HSPLjava/util/zip/ZipFile;->(Ljava/io/File;)V HSPLjava/util/zip/ZipFile;->(Ljava/io/File;I)V HSPLjava/util/zip/ZipFile;->(Ljava/io/File;ILjava/nio/charset/Charset;)V HSPLjava/util/zip/ZipFile;->(Ljava/io/File;ILjava/nio/charset/Charset;Z)V+]Ljava/io/File;Ljava/io/File;]Ldalvik/system/CloseGuard;Ldalvik/system/CloseGuard; -HSPLjava/util/zip/ZipFile;->(Ljava/io/File;IZ)V HSPLjava/util/zip/ZipFile;->(Ljava/lang/String;)V HSPLjava/util/zip/ZipFile;->close()V HSPLjava/util/zip/ZipFile;->ensureOpen()V HSPLjava/util/zip/ZipFile;->ensureOpenOrZipException()V HSPLjava/util/zip/ZipFile;->entries()Ljava/util/Enumeration; -HSPLjava/util/zip/ZipFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry; +HSPLjava/util/zip/ZipFile;->finalize()V +HSPLjava/util/zip/ZipFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;+]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder; +HSPLjava/util/zip/ZipFile;->getInflater()Ljava/util/zip/Inflater; HSPLjava/util/zip/ZipFile;->getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream; +HSPLjava/util/zip/ZipFile;->getZipEntry(Ljava/lang/String;J)Ljava/util/zip/ZipEntry;+]Ljava/util/zip/ZipEntry;Ljava/util/zip/ZipEntry;]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder; +HSPLjava/util/zip/ZipFile;->onZipEntryAccess([BI)V+]Ldalvik/system/ZipPathValidator$Callback;Lcom/android/internal/os/SafeZipPathValidatorCallback;]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder; +HSPLjava/util/zip/ZipFile;->releaseInflater(Ljava/util/zip/Inflater;)V HSPLjava/util/zip/ZipInputStream;->(Ljava/io/InputStream;)V HSPLjava/util/zip/ZipInputStream;->(Ljava/io/InputStream;Ljava/nio/charset/Charset;)V HSPLjava/util/zip/ZipInputStream;->close()V @@ -31034,7 +30778,7 @@ HSPLjava/util/zip/ZipInputStream;->getNextEntry()Ljava/util/zip/ZipEntry; HSPLjava/util/zip/ZipInputStream;->read([BII)I+]Ljava/util/zip/CRC32;Ljava/util/zip/CRC32;]Ljava/io/InputStream;Ljava/io/PushbackInputStream; HSPLjava/util/zip/ZipInputStream;->readEnd(Ljava/util/zip/ZipEntry;)V HSPLjava/util/zip/ZipInputStream;->readFully([BII)V -HSPLjava/util/zip/ZipInputStream;->readLOC()Ljava/util/zip/ZipEntry;+]Ljava/util/zip/ZipEntry;Ljava/util/zip/ZipEntry;]Ljava/util/zip/ZipInputStream;Ljava/util/zip/ZipInputStream;]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder; +HSPLjava/util/zip/ZipInputStream;->readLOC()Ljava/util/zip/ZipEntry;+]Ldalvik/system/ZipPathValidator$Callback;Lcom/android/internal/os/SafeZipPathValidatorCallback;]Ljava/util/zip/ZipEntry;Ljava/util/zip/ZipEntry;]Ljava/util/zip/ZipInputStream;Ljava/util/zip/ZipInputStream;]Ljava/util/zip/ZipCoder;Ljava/util/zip/ZipCoder; HSPLjava/util/zip/ZipUtils;->get16([BI)I HSPLjava/util/zip/ZipUtils;->get32([BI)J HSPLjava/util/zip/ZipUtils;->unixTimeToFileTime(J)Ljava/nio/file/attribute/FileTime; @@ -31042,12 +30786,12 @@ HSPLjavax/crypto/Cipher$CipherSpiAndProvider;->(Ljavax/crypto/CipherSpi;Lj HSPLjavax/crypto/Cipher$InitParams;->(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/SecureRandom;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;)V HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->(Ljavax/crypto/Cipher;Ljava/security/Provider;Ljavax/crypto/CipherSpi;)V HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->setCipherSpiImplAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V -HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/Cipher$InitParams;Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider; +HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/Cipher$InitParams;Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider;+]Ljavax/crypto/Cipher$SpiAndProviderUpdater;Ljavax/crypto/Cipher$SpiAndProviderUpdater; HSPLjavax/crypto/Cipher$Transform;->(Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;)V HSPLjavax/crypto/Cipher;->(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;[Ljava/lang/String;)V HSPLjavax/crypto/Cipher;->checkCipherState()V HSPLjavax/crypto/Cipher;->checkOpmode(I)V -HSPLjavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V +HSPLjavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V+]Ljavax/crypto/Cipher$SpiAndProviderUpdater;Ljavax/crypto/Cipher$SpiAndProviderUpdater; HSPLjavax/crypto/Cipher;->createCipher(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher; HSPLjavax/crypto/Cipher;->doFinal()[B HSPLjavax/crypto/Cipher;->doFinal(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I @@ -31065,7 +30809,7 @@ HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/SecureRandom;) HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V HSPLjavax/crypto/Cipher;->matchAttribute(Ljava/security/Provider$Service;Ljava/lang/String;Ljava/lang/String;)Z -HSPLjavax/crypto/Cipher;->tokenizeTransformation(Ljava/lang/String;)[Ljava/lang/String; +HSPLjavax/crypto/Cipher;->tokenizeTransformation(Ljava/lang/String;)[Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/StringTokenizer;Ljava/util/StringTokenizer; HSPLjavax/crypto/Cipher;->tryCombinations(Ljavax/crypto/Cipher$InitParams;Ljava/security/Provider;[Ljava/lang/String;)Ljavax/crypto/Cipher$CipherSpiAndProvider;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/security/Provider;missing_types]Ljava/util/ArrayList;Ljava/util/ArrayList;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr; HSPLjavax/crypto/Cipher;->tryTransformWithProvider(Ljavax/crypto/Cipher$InitParams;[Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;Ljava/security/Provider$Service;)Ljavax/crypto/Cipher$CipherSpiAndProvider;+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljavax/crypto/Cipher$InitType;Ljavax/crypto/Cipher$InitType;]Ljavax/crypto/CipherSpi;missing_types HSPLjavax/crypto/Cipher;->unwrap([BLjava/lang/String;I)Ljava/security/Key; @@ -31098,7 +30842,7 @@ HSPLjavax/crypto/Mac;->(Ljavax/crypto/MacSpi;Ljava/security/Provider;Ljava HSPLjavax/crypto/Mac;->chooseFirstProvider()V HSPLjavax/crypto/Mac;->chooseProvider(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1; HSPLjavax/crypto/Mac;->doFinal()[B+]Ljavax/crypto/Mac;Ljavax/crypto/Mac; -HSPLjavax/crypto/Mac;->doFinal([B)[B +HSPLjavax/crypto/Mac;->doFinal([B)[B+]Ljavax/crypto/Mac;Ljavax/crypto/Mac; HSPLjavax/crypto/Mac;->doFinal([BI)V HSPLjavax/crypto/Mac;->getAlgorithm()Ljava/lang/String; HSPLjavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;+]Ljava/security/Provider$Service;Ljava/security/Provider$Service;]Ljava/util/List;Lsun/security/jca/ProviderList$ServiceList;]Ljava/util/Iterator;Lsun/security/jca/ProviderList$ServiceList$1; @@ -31196,7 +30940,7 @@ HSPLjavax/net/ssl/SSLParameters;->setApplicationProtocols([Ljava/lang/String;)V HSPLjavax/net/ssl/SSLParameters;->setCipherSuites([Ljava/lang/String;)V HSPLjavax/net/ssl/SSLParameters;->setEndpointIdentificationAlgorithm(Ljava/lang/String;)V HSPLjavax/net/ssl/SSLParameters;->setProtocols([Ljava/lang/String;)V -HSPLjavax/net/ssl/SSLParameters;->setServerNames(Ljava/util/List;)V +HSPLjavax/net/ssl/SSLParameters;->setServerNames(Ljava/util/List;)V+]Ljavax/net/ssl/SNIServerName;Ljavax/net/ssl/SNIHostName;]Ljava/util/List;Ljava/util/Collections$SingletonList;]Ljava/util/Map;Ljava/util/LinkedHashMap;]Ljava/util/Iterator;Ljava/util/Collections$1; HSPLjavax/net/ssl/SSLParameters;->setUseCipherSuitesOrder(Z)V HSPLjavax/net/ssl/SSLServerSocketFactory;->()V HSPLjavax/net/ssl/SSLServerSocketFactory;->getDefault()Ljavax/net/ServerSocketFactory; @@ -31226,7 +30970,7 @@ HSPLjavax/security/auth/x500/X500Principal;->(Ljava/lang/String;)V HSPLjavax/security/auth/x500/X500Principal;->(Ljava/lang/String;Ljava/util/Map;)V HSPLjavax/security/auth/x500/X500Principal;->(Lsun/security/x509/X500Name;)V HSPLjavax/security/auth/x500/X500Principal;->([B)V -HSPLjavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z +HSPLjavax/security/auth/x500/X500Principal;->equals(Ljava/lang/Object;)Z+]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name; HSPLjavax/security/auth/x500/X500Principal;->getEncoded()[B HSPLjavax/security/auth/x500/X500Principal;->getName()Ljava/lang/String; HSPLjavax/security/auth/x500/X500Principal;->getName(Ljava/lang/String;)Ljava/lang/String; @@ -31249,7 +30993,7 @@ HSPLjdk/internal/math/FDBigInteger;->addAndCmp(Ljdk/internal/math/FDBigInteger;L HSPLjdk/internal/math/FDBigInteger;->big5pow(I)Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FDBigInteger;->checkZeroTail([II)I HSPLjdk/internal/math/FDBigInteger;->cmp(Ljdk/internal/math/FDBigInteger;)I -HSPLjdk/internal/math/FDBigInteger;->cmpPow52(II)I +HSPLjdk/internal/math/FDBigInteger;->cmpPow52(II)I+]Ljdk/internal/math/FDBigInteger;Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FDBigInteger;->getNormalizationBias()I HSPLjdk/internal/math/FDBigInteger;->leftInplaceSub(Ljdk/internal/math/FDBigInteger;)Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FDBigInteger;->leftShift(I)Ljdk/internal/math/FDBigInteger; @@ -31266,18 +31010,18 @@ HSPLjdk/internal/math/FDBigInteger;->quoRemIteration(Ljdk/internal/math/FDBigInt HSPLjdk/internal/math/FDBigInteger;->rightInplaceSub(Ljdk/internal/math/FDBigInteger;)Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FDBigInteger;->size()I HSPLjdk/internal/math/FDBigInteger;->trimLeadingZeros()V -HSPLjdk/internal/math/FDBigInteger;->valueOfMulPow52(JII)Ljdk/internal/math/FDBigInteger; +HSPLjdk/internal/math/FDBigInteger;->valueOfMulPow52(JII)Ljdk/internal/math/FDBigInteger;+]Ljdk/internal/math/FDBigInteger;Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FDBigInteger;->valueOfPow2(I)Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FDBigInteger;->valueOfPow52(II)Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FloatingDecimal$1;->initialValue()Ljava/lang/Object; HSPLjdk/internal/math/FloatingDecimal$1;->initialValue()Ljdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer; HSPLjdk/internal/math/FloatingDecimal$ASCIIToBinaryBuffer;->(ZI[CI)V -HSPLjdk/internal/math/FloatingDecimal$ASCIIToBinaryBuffer;->doubleValue()D +HSPLjdk/internal/math/FloatingDecimal$ASCIIToBinaryBuffer;->doubleValue()D+]Ljdk/internal/math/FDBigInteger;Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FloatingDecimal$ASCIIToBinaryBuffer;->floatValue()F HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->-$$Nest$mdtoa(Ljdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;IJIZ)V HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->-$$Nest$msetSign(Ljdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;Z)V HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->()V -HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->appendTo(Ljava/lang/Appendable;)V +HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->appendTo(Ljava/lang/Appendable;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->developLongDigits(IJI)V HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->dtoa(IJIZ)V+]Ljdk/internal/math/FDBigInteger;Ljdk/internal/math/FDBigInteger; HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->estimateDecExp(JI)I @@ -31291,7 +31035,7 @@ HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->setSign(Z)V HSPLjdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;->toJavaFormatString()Ljava/lang/String; HSPLjdk/internal/math/FloatingDecimal$PreparedASCIIToBinaryBuffer;->doubleValue()D HSPLjdk/internal/math/FloatingDecimal$PreparedASCIIToBinaryBuffer;->floatValue()F -HSPLjdk/internal/math/FloatingDecimal;->appendTo(FLjava/lang/Appendable;)V +HSPLjdk/internal/math/FloatingDecimal;->appendTo(FLjava/lang/Appendable;)V+]Ljdk/internal/math/FloatingDecimal$BinaryToASCIIConverter;Ljdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer; HSPLjdk/internal/math/FloatingDecimal;->getBinaryToASCIIBuffer()Ljdk/internal/math/FloatingDecimal$BinaryToASCIIBuffer;+]Ljava/lang/ThreadLocal;Ljdk/internal/math/FloatingDecimal$1; HSPLjdk/internal/math/FloatingDecimal;->getBinaryToASCIIConverter(D)Ljdk/internal/math/FloatingDecimal$BinaryToASCIIConverter; HSPLjdk/internal/math/FloatingDecimal;->getBinaryToASCIIConverter(DZ)Ljdk/internal/math/FloatingDecimal$BinaryToASCIIConverter; @@ -31312,7 +31056,7 @@ HSPLjdk/internal/math/FormattedFloatingDecimal;->(ILjdk/internal/math/Form HSPLjdk/internal/math/FormattedFloatingDecimal;->applyPrecision(I[CII)I HSPLjdk/internal/math/FormattedFloatingDecimal;->create(ZI)[C HSPLjdk/internal/math/FormattedFloatingDecimal;->fillDecimal(I[CIIZ)V -HSPLjdk/internal/math/FormattedFloatingDecimal;->getBuffer()[C +HSPLjdk/internal/math/FormattedFloatingDecimal;->getBuffer()[C+]Ljava/lang/ThreadLocal;Ljdk/internal/math/FormattedFloatingDecimal$1; HSPLjdk/internal/math/FormattedFloatingDecimal;->getExponent()[C HSPLjdk/internal/math/FormattedFloatingDecimal;->getExponentRounded()I HSPLjdk/internal/math/FormattedFloatingDecimal;->getMantissa()[C @@ -31404,7 +31148,7 @@ HSPLlibcore/icu/ICU;->setDefaultLocale(Ljava/lang/String;)V HSPLlibcore/icu/ICU;->transformIcuDateTimePattern(Ljava/lang/String;)Ljava/lang/String; HSPLlibcore/icu/ICU;->transformIcuDateTimePattern_forJavaText(Ljava/lang/String;)Ljava/lang/String; HSPLlibcore/icu/LocaleData;->get(Ljava/util/Locale;)Llibcore/icu/LocaleData; -HSPLlibcore/icu/LocaleData;->getCompatibleLocaleForBug159514442(Ljava/util/Locale;)Ljava/util/Locale;+]Ljava/util/Locale;Ljava/util/Locale; +HSPLlibcore/icu/LocaleData;->getCompatibleLocaleForBug159514442(Ljava/util/Locale;)Ljava/util/Locale;+]Ljava/util/Locale;Ljava/util/Locale;]Ldalvik/system/VMRuntime;Ldalvik/system/VMRuntime; HSPLlibcore/icu/LocaleData;->initLocaleData(Ljava/util/Locale;)Llibcore/icu/LocaleData; HSPLlibcore/icu/LocaleData;->initializeCalendarData(Ljava/util/Locale;)V HSPLlibcore/icu/LocaleData;->initializeDateFormatData(Ljava/util/Locale;)V @@ -31416,13 +31160,13 @@ HSPLlibcore/internal/StringPool;->()V HSPLlibcore/internal/StringPool;->contentEquals(Ljava/lang/String;[CII)Z+]Ljava/lang/String;Ljava/lang/String; HSPLlibcore/internal/StringPool;->get([CII)Ljava/lang/String; HSPLlibcore/io/BlockGuardOs;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor; -HSPLlibcore/io/BlockGuardOs;->access(Ljava/lang/String;I)Z +HSPLlibcore/io/BlockGuardOs;->access(Ljava/lang/String;I)Z+]Ldalvik/system/BlockGuard$VmPolicy;Landroid/os/StrictMode$5;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLlibcore/io/BlockGuardOs;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress; -HSPLlibcore/io/BlockGuardOs;->chmod(Ljava/lang/String;I)V -HSPLlibcore/io/BlockGuardOs;->close(Ljava/io/FileDescriptor;)V +HSPLlibcore/io/BlockGuardOs;->chmod(Ljava/lang/String;I)V+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; +HSPLlibcore/io/BlockGuardOs;->close(Ljava/io/FileDescriptor;)V+]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor; HSPLlibcore/io/BlockGuardOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V HSPLlibcore/io/BlockGuardOs;->fdatasync(Ljava/io/FileDescriptor;)V -HSPLlibcore/io/BlockGuardOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat; +HSPLlibcore/io/BlockGuardOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLlibcore/io/BlockGuardOs;->ftruncate(Ljava/io/FileDescriptor;J)V HSPLlibcore/io/BlockGuardOs;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B HSPLlibcore/io/BlockGuardOs;->isInetDomain(I)Z @@ -31435,48 +31179,47 @@ HSPLlibcore/io/BlockGuardOs;->isUnixSocket(Ljava/io/FileDescriptor;)Z HSPLlibcore/io/BlockGuardOs;->lseek(Ljava/io/FileDescriptor;JI)J HSPLlibcore/io/BlockGuardOs;->lstat(Ljava/lang/String;)Landroid/system/StructStat; HSPLlibcore/io/BlockGuardOs;->mkdir(Ljava/lang/String;I)V -HSPLlibcore/io/BlockGuardOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor; -HSPLlibcore/io/BlockGuardOs;->poll([Landroid/system/StructPollfd;I)I +HSPLlibcore/io/BlockGuardOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; +HSPLlibcore/io/BlockGuardOs;->poll([Landroid/system/StructPollfd;I)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1; HSPLlibcore/io/BlockGuardOs;->posix_fallocate(Ljava/io/FileDescriptor;JJ)V HSPLlibcore/io/BlockGuardOs;->pread(Ljava/io/FileDescriptor;[BIIJ)I -HSPLlibcore/io/BlockGuardOs;->read(Ljava/io/FileDescriptor;[BII)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1; +HSPLlibcore/io/BlockGuardOs;->read(Ljava/io/FileDescriptor;[BII)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLlibcore/io/BlockGuardOs;->readlink(Ljava/lang/String;)Ljava/lang/String; HSPLlibcore/io/BlockGuardOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I -HSPLlibcore/io/BlockGuardOs;->remove(Ljava/lang/String;)V -HSPLlibcore/io/BlockGuardOs;->rename(Ljava/lang/String;Ljava/lang/String;)V +HSPLlibcore/io/BlockGuardOs;->remove(Ljava/lang/String;)V+]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; +HSPLlibcore/io/BlockGuardOs;->rename(Ljava/lang/String;Ljava/lang/String;)V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy;]Ldalvik/system/BlockGuard$VmPolicy;Ldalvik/system/BlockGuard$2; HSPLlibcore/io/BlockGuardOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I HSPLlibcore/io/BlockGuardOs;->socket(III)Ljava/io/FileDescriptor; HSPLlibcore/io/BlockGuardOs;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V HSPLlibcore/io/BlockGuardOs;->stat(Ljava/lang/String;)Landroid/system/StructStat; HSPLlibcore/io/BlockGuardOs;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs; HSPLlibcore/io/BlockGuardOs;->tagSocket(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor; -HSPLlibcore/io/BlockGuardOs;->write(Ljava/io/FileDescriptor;[BII)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1; +HSPLlibcore/io/BlockGuardOs;->write(Ljava/io/FileDescriptor;[BII)I+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;->(Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;Ljava/io/InputStream;)V HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;->close()V HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->(Llibcore/io/ClassPathURLStreamHandler;Ljava/net/URL;)V HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->connect()V HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->getInputStream()Ljava/io/InputStream; HSPLlibcore/io/ClassPathURLStreamHandler;->(Ljava/lang/String;)V -HSPLlibcore/io/ClassPathURLStreamHandler;->(Ljava/lang/String;Z)V -HSPLlibcore/io/ClassPathURLStreamHandler;->getEntryUrlOrNull(Ljava/lang/String;)Ljava/net/URL; +HSPLlibcore/io/ClassPathURLStreamHandler;->getEntryUrlOrNull(Ljava/lang/String;)Ljava/net/URL;+]Ljava/util/jar/JarFile;Ljava/util/jar/JarFile; HSPLlibcore/io/ClassPathURLStreamHandler;->isEntryStored(Ljava/lang/String;)Z HSPLlibcore/io/ClassPathURLStreamHandler;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection; HSPLlibcore/io/ForwardingOs;->(Llibcore/io/Os;)V HSPLlibcore/io/ForwardingOs;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor; -HSPLlibcore/io/ForwardingOs;->access(Ljava/lang/String;I)Z +HSPLlibcore/io/ForwardingOs;->access(Ljava/lang/String;I)Z+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->android_fdsan_exchange_owner_tag(Ljava/io/FileDescriptor;JJ)V HSPLlibcore/io/ForwardingOs;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress; HSPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V HSPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V HSPLlibcore/io/ForwardingOs;->capget(Landroid/system/StructCapUserHeader;)[Landroid/system/StructCapUserData; -HSPLlibcore/io/ForwardingOs;->chmod(Ljava/lang/String;I)V -HSPLlibcore/io/ForwardingOs;->close(Ljava/io/FileDescriptor;)V +HSPLlibcore/io/ForwardingOs;->chmod(Ljava/lang/String;I)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; +HSPLlibcore/io/ForwardingOs;->close(Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V HSPLlibcore/io/ForwardingOs;->dup2(Ljava/io/FileDescriptor;I)Ljava/io/FileDescriptor; HSPLlibcore/io/ForwardingOs;->fcntlInt(Ljava/io/FileDescriptor;II)I HSPLlibcore/io/ForwardingOs;->fcntlVoid(Ljava/io/FileDescriptor;I)I HSPLlibcore/io/ForwardingOs;->fdatasync(Ljava/io/FileDescriptor;)V -HSPLlibcore/io/ForwardingOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat; +HSPLlibcore/io/ForwardingOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->ftruncate(Ljava/io/FileDescriptor;J)V HSPLlibcore/io/ForwardingOs;->gai_strerror(I)Ljava/lang/String; HSPLlibcore/io/ForwardingOs;->getenv(Ljava/lang/String;)Ljava/lang/String; @@ -31484,11 +31227,11 @@ HSPLlibcore/io/ForwardingOs;->getifaddrs()[Landroid/system/StructIfaddrs; HSPLlibcore/io/ForwardingOs;->getnameinfo(Ljava/net/InetAddress;I)Ljava/lang/String; HSPLlibcore/io/ForwardingOs;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress; HSPLlibcore/io/ForwardingOs;->getpgid(I)I -HSPLlibcore/io/ForwardingOs;->getpid()I +HSPLlibcore/io/ForwardingOs;->getpid()I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->getsockname(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress; HSPLlibcore/io/ForwardingOs;->getsockoptInt(Ljava/io/FileDescriptor;II)I HSPLlibcore/io/ForwardingOs;->getsockoptLinger(Ljava/io/FileDescriptor;II)Landroid/system/StructLinger; -HSPLlibcore/io/ForwardingOs;->gettid()I +HSPLlibcore/io/ForwardingOs;->gettid()I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->getuid()I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B HSPLlibcore/io/ForwardingOs;->if_nametoindex(Ljava/lang/String;)I @@ -31498,15 +31241,15 @@ HSPLlibcore/io/ForwardingOs;->lseek(Ljava/io/FileDescriptor;JI)J HSPLlibcore/io/ForwardingOs;->lstat(Ljava/lang/String;)Landroid/system/StructStat; HSPLlibcore/io/ForwardingOs;->mkdir(Ljava/lang/String;I)V HSPLlibcore/io/ForwardingOs;->mmap(JJIILjava/io/FileDescriptor;J)J -HSPLlibcore/io/ForwardingOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor; +HSPLlibcore/io/ForwardingOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->pipe2(I)[Ljava/io/FileDescriptor; -HSPLlibcore/io/ForwardingOs;->poll([Landroid/system/StructPollfd;I)I +HSPLlibcore/io/ForwardingOs;->poll([Landroid/system/StructPollfd;I)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->posix_fallocate(Ljava/io/FileDescriptor;JJ)V HSPLlibcore/io/ForwardingOs;->pread(Ljava/io/FileDescriptor;[BIIJ)I HSPLlibcore/io/ForwardingOs;->read(Ljava/io/FileDescriptor;[BII)I+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->readlink(Ljava/lang/String;)Ljava/lang/String; HSPLlibcore/io/ForwardingOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I -HSPLlibcore/io/ForwardingOs;->remove(Ljava/lang/String;)V +HSPLlibcore/io/ForwardingOs;->remove(Ljava/lang/String;)V+]Llibcore/io/Os;Llibcore/io/BlockGuardOs;,Llibcore/io/Linux; HSPLlibcore/io/ForwardingOs;->rename(Ljava/lang/String;Ljava/lang/String;)V HSPLlibcore/io/ForwardingOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I HSPLlibcore/io/ForwardingOs;->setenv(Ljava/lang/String;Ljava/lang/String;Z)V @@ -31526,7 +31269,7 @@ HSPLlibcore/io/ForwardingOs;->write(Ljava/io/FileDescriptor;[BII)I+]Llibcore/io/ HSPLlibcore/io/IoBridge;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V HSPLlibcore/io/IoBridge;->booleanFromInt(I)Z HSPLlibcore/io/IoBridge;->booleanToInt(Z)I -HSPLlibcore/io/IoBridge;->closeAndSignalBlockedThreads(Ljava/io/FileDescriptor;)V +HSPLlibcore/io/IoBridge;->closeAndSignalBlockedThreads(Ljava/io/FileDescriptor;)V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor; HSPLlibcore/io/IoBridge;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V HSPLlibcore/io/IoBridge;->connectErrno(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V HSPLlibcore/io/IoBridge;->createMessageForException(Ljava/io/FileDescriptor;Ljava/net/InetAddress;IILjava/lang/Exception;)Ljava/lang/String; @@ -31534,19 +31277,19 @@ HSPLlibcore/io/IoBridge;->getLocalInetSocketAddress(Ljava/io/FileDescriptor;)Lja HSPLlibcore/io/IoBridge;->getSocketOption(Ljava/io/FileDescriptor;I)Ljava/lang/Object; HSPLlibcore/io/IoBridge;->getSocketOptionErrno(Ljava/io/FileDescriptor;I)Ljava/lang/Object; HSPLlibcore/io/IoBridge;->isConnected(Ljava/io/FileDescriptor;Ljava/net/InetAddress;III)Z -HSPLlibcore/io/IoBridge;->open(Ljava/lang/String;I)Ljava/io/FileDescriptor; +HSPLlibcore/io/IoBridge;->open(Ljava/lang/String;I)Ljava/io/FileDescriptor;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Landroid/system/ErrnoException;Landroid/system/ErrnoException;]Ljava/io/FileNotFoundException;Ljava/io/FileNotFoundException; HSPLlibcore/io/IoBridge;->poll(Ljava/io/FileDescriptor;II)V HSPLlibcore/io/IoBridge;->postRecvfrom(ZLjava/net/DatagramPacket;Ljava/net/InetSocketAddress;I)I -HSPLlibcore/io/IoBridge;->read(Ljava/io/FileDescriptor;[BII)I +HSPLlibcore/io/IoBridge;->read(Ljava/io/FileDescriptor;[BII)I+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; HSPLlibcore/io/IoBridge;->recvfrom(ZLjava/io/FileDescriptor;[BIIILjava/net/DatagramPacket;Z)I HSPLlibcore/io/IoBridge;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I HSPLlibcore/io/IoBridge;->setSocketOption(Ljava/io/FileDescriptor;ILjava/lang/Object;)V HSPLlibcore/io/IoBridge;->setSocketOptionErrno(Ljava/io/FileDescriptor;ILjava/lang/Object;)V HSPLlibcore/io/IoBridge;->socket(III)Ljava/io/FileDescriptor; -HSPLlibcore/io/IoBridge;->write(Ljava/io/FileDescriptor;[BII)V +HSPLlibcore/io/IoBridge;->write(Ljava/io/FileDescriptor;[BII)V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs; HSPLlibcore/io/IoTracker;->()V HSPLlibcore/io/IoTracker;->reset()V -HSPLlibcore/io/IoTracker;->trackIo(I)V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1; +HSPLlibcore/io/IoTracker;->trackIo(I)V+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLlibcore/io/IoTracker;->trackIo(ILlibcore/io/IoTracker$Mode;)V+]Llibcore/io/IoTracker;Llibcore/io/IoTracker; HSPLlibcore/io/IoUtils;->acquireRawFd(Ljava/io/FileDescriptor;)I HSPLlibcore/io/IoUtils;->canOpenReadOnly(Ljava/lang/String;)Z @@ -31556,7 +31299,7 @@ HSPLlibcore/io/IoUtils;->closeQuietly(Ljava/lang/AutoCloseable;)V HSPLlibcore/io/IoUtils;->generateFdOwnerId(Ljava/lang/Object;)J HSPLlibcore/io/IoUtils;->isParcelFileDescriptor(Ljava/lang/Object;)Z HSPLlibcore/io/IoUtils;->setBlocking(Ljava/io/FileDescriptor;Z)V -HSPLlibcore/io/IoUtils;->setFdOwner(Ljava/io/FileDescriptor;Ljava/lang/Object;)V +HSPLlibcore/io/IoUtils;->setFdOwner(Ljava/io/FileDescriptor;Ljava/lang/Object;)V+]Llibcore/io/Os;Landroid/app/ActivityThread$AndroidOs;]Ljava/io/FileDescriptor;Ljava/io/FileDescriptor; HSPLlibcore/io/Libcore;->compareAndSetOs(Llibcore/io/Os;Llibcore/io/Os;)Z HSPLlibcore/io/Libcore;->getOs()Llibcore/io/Os; HSPLlibcore/io/Linux;->pread(Ljava/io/FileDescriptor;[BIIJ)I @@ -31593,11 +31336,11 @@ HSPLlibcore/net/http/HttpURLConnectionFactory;->createInstance()Llibcore/net/htt HSPLlibcore/net/http/HttpURLConnectionFactory;->openConnection(Ljava/net/URL;Ljavax/net/SocketFactory;Ljava/net/Proxy;)Ljava/net/URLConnection; HSPLlibcore/net/http/HttpURLConnectionFactory;->setDns(Llibcore/net/http/Dns;)V HSPLlibcore/net/http/HttpURLConnectionFactory;->setNewConnectionPool(IJLjava/util/concurrent/TimeUnit;)V -HSPLlibcore/reflect/AnnotationFactory;->(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)V +HSPLlibcore/reflect/AnnotationFactory;->(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)V+]Ljava/lang/String;Ljava/lang/String;]Llibcore/reflect/AnnotationMember;Llibcore/reflect/AnnotationMember; HSPLlibcore/reflect/AnnotationFactory;->createAnnotation(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)Ljava/lang/annotation/Annotation;+]Ljava/lang/Class;Ljava/lang/Class; HSPLlibcore/reflect/AnnotationFactory;->getElementsDescription(Ljava/lang/Class;)[Llibcore/reflect/AnnotationMember;+]Ljava/util/Map;Ljava/util/WeakHashMap; HSPLlibcore/reflect/AnnotationFactory;->invoke(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; -HSPLlibcore/reflect/AnnotationMember;->(Ljava/lang/String;Ljava/lang/Object;)V +HSPLlibcore/reflect/AnnotationMember;->(Ljava/lang/String;Ljava/lang/Object;)V+]Ljava/lang/Object;megamorphic_types]Ljava/lang/Class;Ljava/lang/Class; HSPLlibcore/reflect/AnnotationMember;->(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Method;)V HSPLlibcore/reflect/AnnotationMember;->copyValue()Ljava/lang/Object; HSPLlibcore/reflect/AnnotationMember;->setDefinition(Llibcore/reflect/AnnotationMember;)Llibcore/reflect/AnnotationMember; @@ -31606,37 +31349,37 @@ HSPLlibcore/reflect/GenericArrayTypeImpl;->getGenericComponentType()Ljava/lang/r HSPLlibcore/reflect/GenericSignatureParser;->(Ljava/lang/ClassLoader;)V HSPLlibcore/reflect/GenericSignatureParser;->expect(C)V HSPLlibcore/reflect/GenericSignatureParser;->isStopSymbol(C)Z -HSPLlibcore/reflect/GenericSignatureParser;->parseClassSignature()V+]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser; +HSPLlibcore/reflect/GenericSignatureParser;->parseClassSignature()V HSPLlibcore/reflect/GenericSignatureParser;->parseClassTypeSignature()Ljava/lang/reflect/Type;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser; HSPLlibcore/reflect/GenericSignatureParser;->parseFieldTypeSignature()Ljava/lang/reflect/Type; HSPLlibcore/reflect/GenericSignatureParser;->parseForClass(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V HSPLlibcore/reflect/GenericSignatureParser;->parseForConstructor(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;[Ljava/lang/Class;)V -HSPLlibcore/reflect/GenericSignatureParser;->parseForField(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V +HSPLlibcore/reflect/GenericSignatureParser;->parseForField(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V+]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser; HSPLlibcore/reflect/GenericSignatureParser;->parseForMethod(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;[Ljava/lang/Class;)V HSPLlibcore/reflect/GenericSignatureParser;->parseFormalTypeParameter()Llibcore/reflect/TypeVariableImpl; HSPLlibcore/reflect/GenericSignatureParser;->parseMethodTypeSignature([Ljava/lang/Class;)V HSPLlibcore/reflect/GenericSignatureParser;->parseOptFormalTypeParameters()V -HSPLlibcore/reflect/GenericSignatureParser;->parseOptTypeArguments()Llibcore/reflect/ListOfTypes;+]Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser; +HSPLlibcore/reflect/GenericSignatureParser;->parseOptTypeArguments()Llibcore/reflect/ListOfTypes; HSPLlibcore/reflect/GenericSignatureParser;->parseReturnType()Ljava/lang/reflect/Type; -HSPLlibcore/reflect/GenericSignatureParser;->parseTypeArgument()Ljava/lang/reflect/Type;+]Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser; +HSPLlibcore/reflect/GenericSignatureParser;->parseTypeArgument()Ljava/lang/reflect/Type; HSPLlibcore/reflect/GenericSignatureParser;->parseTypeSignature()Ljava/lang/reflect/Type; HSPLlibcore/reflect/GenericSignatureParser;->parseTypeVariableSignature()Llibcore/reflect/TypeVariableImpl; HSPLlibcore/reflect/GenericSignatureParser;->scanIdentifier()V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser; HSPLlibcore/reflect/GenericSignatureParser;->scanSymbol()V -HSPLlibcore/reflect/GenericSignatureParser;->setInput(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Llibcore/reflect/GenericSignatureParser;Llibcore/reflect/GenericSignatureParser; +HSPLlibcore/reflect/GenericSignatureParser;->setInput(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V HSPLlibcore/reflect/ListOfTypes;->(I)V HSPLlibcore/reflect/ListOfTypes;->([Ljava/lang/reflect/Type;)V HSPLlibcore/reflect/ListOfTypes;->add(Ljava/lang/reflect/Type;)V HSPLlibcore/reflect/ListOfTypes;->getResolvedTypes()[Ljava/lang/reflect/Type; HSPLlibcore/reflect/ListOfTypes;->length()I -HSPLlibcore/reflect/ListOfTypes;->resolveTypes(Ljava/util/List;)[Ljava/lang/reflect/Type;+]Ljava/util/List;Ljava/util/ArrayList;]Llibcore/reflect/ParameterizedTypeImpl;Llibcore/reflect/ParameterizedTypeImpl; +HSPLlibcore/reflect/ListOfTypes;->resolveTypes(Ljava/util/List;)[Ljava/lang/reflect/Type; HSPLlibcore/reflect/ListOfVariables;->()V HSPLlibcore/reflect/ListOfVariables;->add(Ljava/lang/reflect/TypeVariable;)V -HSPLlibcore/reflect/ListOfVariables;->getArray()[Ljava/lang/reflect/TypeVariable;+]Ljava/util/ArrayList;Ljava/util/ArrayList; +HSPLlibcore/reflect/ListOfVariables;->getArray()[Ljava/lang/reflect/TypeVariable; HSPLlibcore/reflect/ParameterizedTypeImpl;->(Llibcore/reflect/ParameterizedTypeImpl;Ljava/lang/String;Llibcore/reflect/ListOfTypes;Ljava/lang/ClassLoader;)V HSPLlibcore/reflect/ParameterizedTypeImpl;->equals(Ljava/lang/Object;)Z -HSPLlibcore/reflect/ParameterizedTypeImpl;->getActualTypeArguments()[Ljava/lang/reflect/Type;+]Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;][Ljava/lang/reflect/Type;[Ljava/lang/reflect/Type; -HSPLlibcore/reflect/ParameterizedTypeImpl;->getOwnerType()Ljava/lang/reflect/Type;+]Llibcore/reflect/ParameterizedTypeImpl;Llibcore/reflect/ParameterizedTypeImpl;]Ljava/lang/Class;Ljava/lang/Class; +HSPLlibcore/reflect/ParameterizedTypeImpl;->getActualTypeArguments()[Ljava/lang/reflect/Type; +HSPLlibcore/reflect/ParameterizedTypeImpl;->getOwnerType()Ljava/lang/reflect/Type; HSPLlibcore/reflect/ParameterizedTypeImpl;->getRawType()Ljava/lang/Class; HSPLlibcore/reflect/ParameterizedTypeImpl;->getRawType()Ljava/lang/reflect/Type; HSPLlibcore/reflect/ParameterizedTypeImpl;->getResolvedType()Ljava/lang/reflect/Type; @@ -31658,10 +31401,10 @@ HSPLlibcore/util/ArrayUtils;->throwsIfOutOfBounds(III)V HSPLlibcore/util/BasicLruCache;->create(Ljava/lang/Object;)Ljava/lang/Object; HSPLlibcore/util/BasicLruCache;->entryEvicted(Ljava/lang/Object;Ljava/lang/Object;)V HSPLlibcore/util/BasicLruCache;->evictAll()V -HSPLlibcore/util/BasicLruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap; +HSPLlibcore/util/BasicLruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Llibcore/util/BasicLruCache;Llibcore/util/BasicLruCache;,Ljava/lang/Enum$1;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap; HSPLlibcore/util/BasicLruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; HSPLlibcore/util/BasicLruCache;->trimToSize(I)V -HSPLlibcore/util/CollectionUtils;->removeDuplicates(Ljava/util/List;Ljava/util/Comparator;)V +HSPLlibcore/util/CollectionUtils;->removeDuplicates(Ljava/util/List;Ljava/util/Comparator;)V+]Ljava/util/Comparator;Ljava/lang/reflect/Method$1;]Ljava/util/List;Ljava/util/ArrayList$SubList;,Ljava/util/ArrayList; HSPLlibcore/util/FP16;->ceil(S)S HSPLlibcore/util/FP16;->compare(SS)I HSPLlibcore/util/FP16;->floor(S)S @@ -31697,7 +31440,7 @@ HSPLlibcore/util/ZoneInfo;->clone()Ljava/lang/Object; HSPLlibcore/util/ZoneInfo;->createZoneInfo(Lcom/android/i18n/timezone/ZoneInfoData;)Llibcore/util/ZoneInfo; HSPLlibcore/util/ZoneInfo;->createZoneInfo(Lcom/android/i18n/timezone/ZoneInfoData;J)Llibcore/util/ZoneInfo; HSPLlibcore/util/ZoneInfo;->getDSTSavings()I -HSPLlibcore/util/ZoneInfo;->getOffset(J)I +HSPLlibcore/util/ZoneInfo;->getOffset(J)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; HSPLlibcore/util/ZoneInfo;->getOffsetsByUtcTime(J[I)I+]Lcom/android/i18n/timezone/ZoneInfoData;Lcom/android/i18n/timezone/ZoneInfoData; HSPLlibcore/util/ZoneInfo;->getRawOffset()I HSPLlibcore/util/ZoneInfo;->hasSameRules(Ljava/util/TimeZone;)Z @@ -31872,7 +31615,7 @@ HSPLorg/json/JSONArray;->(Ljava/lang/String;)V HSPLorg/json/JSONArray;->(Ljava/util/Collection;)V HSPLorg/json/JSONArray;->(Lorg/json/JSONTokener;)V HSPLorg/json/JSONArray;->get(I)Ljava/lang/Object; -HSPLorg/json/JSONArray;->getInt(I)I +HSPLorg/json/JSONArray;->getInt(I)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Lorg/json/JSONArray;Lorg/json/JSONArray; HSPLorg/json/JSONArray;->getJSONArray(I)Lorg/json/JSONArray; HSPLorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject; HSPLorg/json/JSONArray;->getString(I)Ljava/lang/String; @@ -31883,9 +31626,9 @@ HSPLorg/json/JSONArray;->optString(I)Ljava/lang/String; HSPLorg/json/JSONArray;->optString(ILjava/lang/String;)Ljava/lang/String; HSPLorg/json/JSONArray;->put(I)Lorg/json/JSONArray; HSPLorg/json/JSONArray;->put(J)Lorg/json/JSONArray; -HSPLorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray; +HSPLorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;+]Ljava/util/List;Ljava/util/ArrayList; HSPLorg/json/JSONArray;->toString()Ljava/lang/String; -HSPLorg/json/JSONArray;->writeTo(Lorg/json/JSONStringer;)V+]Lorg/json/JSONStringer;Lorg/json/JSONStringer;]Ljava/util/List;Ljava/util/ArrayList; +HSPLorg/json/JSONArray;->writeTo(Lorg/json/JSONStringer;)V HSPLorg/json/JSONException;->(Ljava/lang/String;)V HSPLorg/json/JSONObject$1;->toString()Ljava/lang/String; HSPLorg/json/JSONObject;->()V @@ -31900,35 +31643,35 @@ HSPLorg/json/JSONObject;->getInt(Ljava/lang/String;)I HSPLorg/json/JSONObject;->getJSONArray(Ljava/lang/String;)Lorg/json/JSONArray; HSPLorg/json/JSONObject;->getJSONObject(Ljava/lang/String;)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->getLong(Ljava/lang/String;)J -HSPLorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String; +HSPLorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;+]Lorg/json/JSONObject;Lorg/json/JSONObject; HSPLorg/json/JSONObject;->has(Ljava/lang/String;)Z HSPLorg/json/JSONObject;->isNull(Ljava/lang/String;)Z HSPLorg/json/JSONObject;->keys()Ljava/util/Iterator; HSPLorg/json/JSONObject;->length()I -HSPLorg/json/JSONObject;->numberToString(Ljava/lang/Number;)Ljava/lang/String;+]Ljava/lang/Object;Ljava/lang/Integer;,Ljava/lang/Float;]Ljava/lang/Number;Ljava/lang/Integer;,Ljava/lang/Float; -HSPLorg/json/JSONObject;->opt(Ljava/lang/String;)Ljava/lang/Object; +HSPLorg/json/JSONObject;->numberToString(Ljava/lang/Number;)Ljava/lang/String;+]Ljava/lang/Number;Ljava/lang/Integer;,Ljava/lang/Float;]Ljava/lang/Object;Ljava/lang/Integer;,Ljava/lang/Float; +HSPLorg/json/JSONObject;->opt(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap; HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;)Z HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;Z)Z HSPLorg/json/JSONObject;->optDouble(Ljava/lang/String;D)D HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;)I -HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;I)I +HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;I)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Lorg/json/JSONObject;Lorg/json/JSONObject; HSPLorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray; HSPLorg/json/JSONObject;->optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->optLong(Ljava/lang/String;)J HSPLorg/json/JSONObject;->optLong(Ljava/lang/String;J)J HSPLorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String; -HSPLorg/json/JSONObject;->optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; +HSPLorg/json/JSONObject;->optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+]Lorg/json/JSONObject;Lorg/json/JSONObject; HSPLorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap; HSPLorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject; -HSPLorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/lang/Number;Ljava/lang/Integer;,Ljava/lang/Double;,Ljava/lang/Float;]Lorg/json/JSONObject;missing_types +HSPLorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Ljava/lang/Number;Ljava/lang/Integer;,Ljava/lang/Float;,Ljava/lang/Double;]Lorg/json/JSONObject;missing_types HSPLorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; HSPLorg/json/JSONObject;->remove(Ljava/lang/String;)Ljava/lang/Object; HSPLorg/json/JSONObject;->toString()Ljava/lang/String; HSPLorg/json/JSONObject;->toString(I)Ljava/lang/String; HSPLorg/json/JSONObject;->wrap(Ljava/lang/Object;)Ljava/lang/Object; -HSPLorg/json/JSONObject;->writeTo(Lorg/json/JSONStringer;)V+]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Lorg/json/JSONStringer;Lorg/json/JSONStringer; +HSPLorg/json/JSONObject;->writeTo(Lorg/json/JSONStringer;)V+]Ljava/util/Map$Entry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;]Ljava/util/LinkedHashMap;Ljava/util/LinkedHashMap;]Lorg/json/JSONStringer;Lorg/json/JSONStringer;]Ljava/util/Iterator;Ljava/util/LinkedHashMap$LinkedEntryIterator;]Ljava/util/Set;Ljava/util/LinkedHashMap$LinkedEntrySet; HSPLorg/json/JSONStringer;->()V HSPLorg/json/JSONStringer;->(I)V HSPLorg/json/JSONStringer;->array()Lorg/json/JSONStringer; @@ -31948,7 +31691,7 @@ HSPLorg/json/JSONStringer;->toString()Ljava/lang/String; HSPLorg/json/JSONStringer;->value(Ljava/lang/Object;)Lorg/json/JSONStringer;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Object;Ljava/lang/String;]Lorg/json/JSONObject;Lorg/json/JSONObject;]Ljava/util/List;Ljava/util/ArrayList;]Lorg/json/JSONArray;Lorg/json/JSONArray; HSPLorg/json/JSONTokener;->(Ljava/lang/String;)V HSPLorg/json/JSONTokener;->nextCleanInternal()I+]Ljava/lang/String;Ljava/lang/String; -HSPLorg/json/JSONTokener;->nextString(C)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; +HSPLorg/json/JSONTokener;->nextString(C)Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String; HSPLorg/json/JSONTokener;->nextToInternal(Ljava/lang/String;)Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String; HSPLorg/json/JSONTokener;->nextValue()Ljava/lang/Object;+]Lorg/json/JSONTokener;Lorg/json/JSONTokener; HSPLorg/json/JSONTokener;->readArray()Lorg/json/JSONArray;+]Lorg/json/JSONTokener;Lorg/json/JSONTokener;]Lorg/json/JSONArray;Lorg/json/JSONArray; @@ -31991,15 +31734,15 @@ HSPLsun/misc/ASCIICaseInsensitiveComparator;->lowerCaseHashCode(Ljava/lang/Strin HSPLsun/misc/ASCIICaseInsensitiveComparator;->toLower(I)I HSPLsun/misc/Cleaner;->(Ljava/lang/Object;Ljava/lang/Runnable;)V HSPLsun/misc/Cleaner;->add(Lsun/misc/Cleaner;)Lsun/misc/Cleaner; -HSPLsun/misc/Cleaner;->clean()V+]Ljava/lang/Runnable;Lsun/nio/ch/FileChannelImpl$Unmapper; +HSPLsun/misc/Cleaner;->clean()V+]Ljava/lang/Runnable;megamorphic_types HSPLsun/misc/Cleaner;->create(Ljava/lang/Object;Ljava/lang/Runnable;)Lsun/misc/Cleaner; HSPLsun/misc/Cleaner;->isCleanerQueue(Ljava/lang/ref/ReferenceQueue;)Z HSPLsun/misc/Cleaner;->remove(Lsun/misc/Cleaner;)Z HSPLsun/misc/CompoundEnumeration;->([Ljava/util/Enumeration;)V HSPLsun/misc/CompoundEnumeration;->hasMoreElements()Z -HSPLsun/misc/CompoundEnumeration;->next()Z +HSPLsun/misc/CompoundEnumeration;->next()Z+]Ljava/util/Enumeration;Lsun/misc/CompoundEnumeration;,Ljava/util/Collections$3; HSPLsun/misc/CompoundEnumeration;->nextElement()Ljava/lang/Object; -HSPLsun/misc/IOUtils;->readFully(Ljava/io/InputStream;IZ)[B +HSPLsun/misc/IOUtils;->readFully(Ljava/io/InputStream;IZ)[B+]Ljava/io/InputStream;Lsun/security/util/DerInputBuffer;,Ljava/io/ByteArrayInputStream; HSPLsun/misc/LRUCache;->(I)V HSPLsun/misc/LRUCache;->forName(Ljava/lang/Object;)Ljava/lang/Object; HSPLsun/misc/LRUCache;->moveToFront([Ljava/lang/Object;I)V @@ -32028,7 +31771,7 @@ HSPLsun/net/www/ParseUtil;->encodePath(Ljava/lang/String;Z)Ljava/lang/String; HSPLsun/net/www/protocol/file/Handler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V HSPLsun/net/www/protocol/jar/Handler;->()V HSPLsun/nio/ch/AbstractPollArrayWrapper;->()V -HSPLsun/nio/ch/AbstractPollArrayWrapper;->getReventOps(I)I +HSPLsun/nio/ch/AbstractPollArrayWrapper;->getReventOps(I)I+]Lsun/nio/ch/AllocatedNativeObject;Lsun/nio/ch/AllocatedNativeObject; HSPLsun/nio/ch/AbstractPollArrayWrapper;->putDescriptor(II)V HSPLsun/nio/ch/AbstractPollArrayWrapper;->putEventOps(II)V HSPLsun/nio/ch/AbstractPollArrayWrapper;->putReventOps(II)V @@ -32036,7 +31779,7 @@ HSPLsun/nio/ch/AbstractPollSelectorImpl;->(Ljava/nio/channels/spi/Selector HSPLsun/nio/ch/AbstractPollSelectorImpl;->implClose()V HSPLsun/nio/ch/AbstractPollSelectorImpl;->implRegister(Lsun/nio/ch/SelectionKeyImpl;)V HSPLsun/nio/ch/AbstractPollSelectorImpl;->putEventOps(Lsun/nio/ch/SelectionKeyImpl;I)V -HSPLsun/nio/ch/AbstractPollSelectorImpl;->updateSelectedKeys()I +HSPLsun/nio/ch/AbstractPollSelectorImpl;->updateSelectedKeys()I+]Lsun/nio/ch/PollArrayWrapper;Lsun/nio/ch/PollArrayWrapper;]Lsun/nio/ch/SelChImpl;Lsun/nio/ch/SocketChannelImpl;,Lsun/nio/ch/DatagramChannelImpl;]Lsun/nio/ch/SelectionKeyImpl;Lsun/nio/ch/SelectionKeyImpl;]Ljava/util/Set;Ljava/util/HashSet; HSPLsun/nio/ch/AllocatedNativeObject;->(IZ)V HSPLsun/nio/ch/AllocatedNativeObject;->free()V HSPLsun/nio/ch/ChannelInputStream;->(Ljava/nio/channels/ReadableByteChannel;)V @@ -32058,7 +31801,7 @@ HSPLsun/nio/ch/FileChannelImpl;->force(Z)V HSPLsun/nio/ch/FileChannelImpl;->implCloseChannel()V HSPLsun/nio/ch/FileChannelImpl;->isSharedFileLockTable()Z HSPLsun/nio/ch/FileChannelImpl;->lock(JJZ)Ljava/nio/channels/FileLock; -HSPLsun/nio/ch/FileChannelImpl;->map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer; +HSPLsun/nio/ch/FileChannelImpl;->map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;+]Lsun/nio/ch/NativeThreadSet;Lsun/nio/ch/NativeThreadSet;]Lsun/nio/ch/FileDispatcher;Lsun/nio/ch/FileDispatcherImpl;]Lsun/nio/ch/FileChannelImpl;Lsun/nio/ch/FileChannelImpl;]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1; HSPLsun/nio/ch/FileChannelImpl;->open(Ljava/io/FileDescriptor;Ljava/lang/String;ZZLjava/lang/Object;)Ljava/nio/channels/FileChannel; HSPLsun/nio/ch/FileChannelImpl;->open(Ljava/io/FileDescriptor;Ljava/lang/String;ZZZLjava/lang/Object;)Ljava/nio/channels/FileChannel; HSPLsun/nio/ch/FileChannelImpl;->position()J @@ -32077,7 +31820,7 @@ HSPLsun/nio/ch/FileDispatcherImpl;->force(Ljava/io/FileDescriptor;Z)I HSPLsun/nio/ch/FileDispatcherImpl;->lock(Ljava/io/FileDescriptor;ZJJZ)I HSPLsun/nio/ch/FileDispatcherImpl;->read(Ljava/io/FileDescriptor;JI)I HSPLsun/nio/ch/FileDispatcherImpl;->release(Ljava/io/FileDescriptor;JJ)V -HSPLsun/nio/ch/FileDispatcherImpl;->size(Ljava/io/FileDescriptor;)J +HSPLsun/nio/ch/FileDispatcherImpl;->size(Ljava/io/FileDescriptor;)J+]Ldalvik/system/BlockGuard$Policy;Ldalvik/system/BlockGuard$1;,Landroid/os/StrictMode$AndroidBlockGuardPolicy; HSPLsun/nio/ch/FileDispatcherImpl;->truncate(Ljava/io/FileDescriptor;J)I HSPLsun/nio/ch/FileDispatcherImpl;->write(Ljava/io/FileDescriptor;JI)I HSPLsun/nio/ch/FileKey;->()V @@ -32101,7 +31844,7 @@ HSPLsun/nio/ch/NativeDispatcher;->()V HSPLsun/nio/ch/NativeDispatcher;->needsPositionLock()Z HSPLsun/nio/ch/NativeObject;->(IZ)V HSPLsun/nio/ch/NativeObject;->address()J -HSPLsun/nio/ch/NativeObject;->getShort(I)S +HSPLsun/nio/ch/NativeObject;->getShort(I)S+]Lsun/misc/Unsafe;Lsun/misc/Unsafe; HSPLsun/nio/ch/NativeObject;->putInt(II)V HSPLsun/nio/ch/NativeObject;->putShort(IS)V HSPLsun/nio/ch/NativeThreadSet;->(I)V @@ -32201,13 +31944,13 @@ HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/l HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamDecoder; HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)Lsun/nio/cs/StreamDecoder; HSPLsun/nio/cs/StreamDecoder;->implClose()V -HSPLsun/nio/cs/StreamDecoder;->implRead([CII)I+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; +HSPLsun/nio/cs/StreamDecoder;->implRead([CII)I+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/CharsetDecoder;Lcom/android/icu/charset/CharsetDecoderICU; HSPLsun/nio/cs/StreamDecoder;->implReady()Z HSPLsun/nio/cs/StreamDecoder;->inReady()Z HSPLsun/nio/cs/StreamDecoder;->read()I HSPLsun/nio/cs/StreamDecoder;->read([CII)I+]Lsun/nio/cs/StreamDecoder;Lsun/nio/cs/StreamDecoder; HSPLsun/nio/cs/StreamDecoder;->read0()I -HSPLsun/nio/cs/StreamDecoder;->readBytes()I+]Ljava/io/InputStream;Ljava/io/BufferedInputStream;,Ljava/io/FileInputStream;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; +HSPLsun/nio/cs/StreamDecoder;->readBytes()I+]Ljava/io/InputStream;missing_types]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer; HSPLsun/nio/cs/StreamDecoder;->ready()Z HSPLsun/nio/cs/StreamEncoder;->(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V HSPLsun/nio/cs/StreamEncoder;->(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetEncoder;)V @@ -32220,11 +31963,11 @@ HSPLsun/nio/cs/StreamEncoder;->forOutputStreamWriter(Ljava/io/OutputStream;Ljava HSPLsun/nio/cs/StreamEncoder;->implClose()V HSPLsun/nio/cs/StreamEncoder;->implFlush()V HSPLsun/nio/cs/StreamEncoder;->implFlushBuffer()V -HSPLsun/nio/cs/StreamEncoder;->implWrite([CII)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; +HSPLsun/nio/cs/StreamEncoder;->implWrite([CII)V+]Ljava/nio/CharBuffer;Ljava/nio/HeapCharBuffer;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; HSPLsun/nio/cs/StreamEncoder;->write(I)V HSPLsun/nio/cs/StreamEncoder;->write(Ljava/lang/String;II)V HSPLsun/nio/cs/StreamEncoder;->write([CII)V -HSPLsun/nio/cs/StreamEncoder;->writeBytes()V +HSPLsun/nio/cs/StreamEncoder;->writeBytes()V+]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/io/OutputStream;Ljava/util/logging/FileHandler$MeteredStream;,Ljava/io/FileOutputStream; HSPLsun/nio/cs/ThreadLocalCoders$1;->create(Ljava/lang/Object;)Ljava/lang/Object; HSPLsun/nio/cs/ThreadLocalCoders$1;->hasName(Ljava/lang/Object;Ljava/lang/Object;)Z HSPLsun/nio/cs/ThreadLocalCoders$2;->create(Ljava/lang/Object;)Ljava/lang/Object; @@ -32315,7 +32058,7 @@ HSPLsun/nio/fs/UnixFileSystemProvider;->getFileAttributeView(Ljava/nio/file/Path HSPLsun/nio/fs/UnixFileSystemProvider;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel; HSPLsun/nio/fs/UnixFileSystemProvider;->newDirectoryStream(Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream; HSPLsun/nio/fs/UnixFileSystemProvider;->newFileChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel; -HSPLsun/nio/fs/UnixFileSystemProvider;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes; +HSPLsun/nio/fs/UnixFileSystemProvider;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;+]Ljava/nio/file/attribute/BasicFileAttributeView;Lsun/nio/fs/UnixFileAttributeViews$Basic;]Lsun/nio/fs/UnixFileSystemProvider;Lsun/nio/fs/LinuxFileSystemProvider; HSPLsun/nio/fs/UnixNativeDispatcher;->access(Lsun/nio/fs/UnixPath;I)V HSPLsun/nio/fs/UnixNativeDispatcher;->copyToNativeBuffer(Lsun/nio/fs/UnixPath;)Lsun/nio/fs/NativeBuffer;+]Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;]Lsun/nio/fs/NativeBuffer;Lsun/nio/fs/NativeBuffer; HSPLsun/nio/fs/UnixNativeDispatcher;->lstat(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixFileAttributes;)V @@ -32328,7 +32071,7 @@ HSPLsun/nio/fs/UnixPath;->asByteArray()[B HSPLsun/nio/fs/UnixPath;->checkNotNul(Ljava/lang/String;C)V HSPLsun/nio/fs/UnixPath;->checkRead()V HSPLsun/nio/fs/UnixPath;->checkWrite()V -HSPLsun/nio/fs/UnixPath;->encode(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)[B+]Ljava/lang/String;Ljava/lang/String;]Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Lsun/nio/fs/UnixFileSystem;Lsun/nio/fs/LinuxFileSystem;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult; +HSPLsun/nio/fs/UnixPath;->encode(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)[B+]Ljava/lang/ref/SoftReference;Ljava/lang/ref/SoftReference;]Ljava/lang/String;Ljava/lang/String;]Ljava/nio/ByteBuffer;Ljava/nio/HeapByteBuffer;]Ljava/lang/ThreadLocal;Ljava/lang/ThreadLocal;]Ljava/nio/charset/CharsetEncoder;Lcom/android/icu/charset/CharsetEncoderICU;]Lsun/nio/fs/UnixFileSystem;Lsun/nio/fs/LinuxFileSystem;]Ljava/nio/charset/CoderResult;Ljava/nio/charset/CoderResult;]Ljava/nio/charset/Charset;Lcom/android/icu/charset/CharsetICU; HSPLsun/nio/fs/UnixPath;->getByteArrayForSysCalls()[B HSPLsun/nio/fs/UnixPath;->getFileSystem()Ljava/nio/file/FileSystem; HSPLsun/nio/fs/UnixPath;->getFileSystem()Lsun/nio/fs/UnixFileSystem; @@ -32393,10 +32136,10 @@ HSPLsun/security/jca/ProviderList$ServiceList;->-$$Nest$mtryGet(Lsun/security/jc HSPLsun/security/jca/ProviderList$ServiceList;->(Lsun/security/jca/ProviderList;Ljava/lang/String;Ljava/lang/String;)V HSPLsun/security/jca/ProviderList$ServiceList;->addService(Ljava/security/Provider$Service;)V HSPLsun/security/jca/ProviderList$ServiceList;->iterator()Ljava/util/Iterator; -HSPLsun/security/jca/ProviderList$ServiceList;->tryGet(I)Ljava/security/Provider$Service; +HSPLsun/security/jca/ProviderList$ServiceList;->tryGet(I)Ljava/security/Provider$Service;+]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList; HSPLsun/security/jca/ProviderList;->-$$Nest$fgetconfigs(Lsun/security/jca/ProviderList;)[Lsun/security/jca/ProviderConfig; HSPLsun/security/jca/ProviderList;->([Lsun/security/jca/ProviderConfig;Z)V -HSPLsun/security/jca/ProviderList;->getIndex(Ljava/lang/String;)I +HSPLsun/security/jca/ProviderList;->getIndex(Ljava/lang/String;)I+]Ljava/lang/String;Ljava/lang/String;]Lsun/security/jca/ProviderList;Lsun/security/jca/ProviderList;]Ljava/security/Provider;missing_types HSPLsun/security/jca/ProviderList;->getJarList([Ljava/lang/String;)Lsun/security/jca/ProviderList; HSPLsun/security/jca/ProviderList;->getProvider(I)Ljava/security/Provider; HSPLsun/security/jca/ProviderList;->getProvider(Ljava/lang/String;)Ljava/security/Provider; @@ -32463,7 +32206,7 @@ HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->setSkiAndSerialNu HSPLsun/security/provider/certpath/AlgorithmChecker;->(Ljava/security/cert/TrustAnchor;)V HSPLsun/security/provider/certpath/AlgorithmChecker;->(Ljava/security/cert/TrustAnchor;Ljava/security/AlgorithmConstraints;)V HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/PublicKey;Lsun/security/x509/AlgorithmId;)V -HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/x509/X509CertImpl;Lsun/security/x509/X509CertImpl;]Lsun/security/x509/AlgorithmId;Lsun/security/x509/AlgorithmId;]Ljava/security/cert/Certificate;missing_types]Lsun/security/util/DisabledAlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Ljava/security/AlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Ljava/util/Set;Ljava/util/RegularEnumSet; HSPLsun/security/provider/certpath/AlgorithmChecker;->checkFingerprint(Ljava/security/cert/X509Certificate;)Z HSPLsun/security/provider/certpath/AlgorithmChecker;->init(Z)V HSPLsun/security/provider/certpath/BasicChecker;->(Ljava/security/cert/TrustAnchor;Ljava/util/Date;Ljava/lang/String;Z)V @@ -32471,7 +32214,7 @@ HSPLsun/security/provider/certpath/BasicChecker;->check(Ljava/security/cert/Cert HSPLsun/security/provider/certpath/BasicChecker;->getPublicKey()Ljava/security/PublicKey; HSPLsun/security/provider/certpath/BasicChecker;->init(Z)V HSPLsun/security/provider/certpath/BasicChecker;->updateState(Ljava/security/cert/X509Certificate;)V -HSPLsun/security/provider/certpath/BasicChecker;->verifyNameChaining(Ljava/security/cert/X509Certificate;)V +HSPLsun/security/provider/certpath/BasicChecker;->verifyNameChaining(Ljava/security/cert/X509Certificate;)V+]Ljava/security/cert/X509Certificate;missing_types]Ljavax/security/auth/x500/X500Principal;Ljavax/security/auth/x500/X500Principal;]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name; HSPLsun/security/provider/certpath/BasicChecker;->verifySignature(Ljava/security/cert/X509Certificate;)V HSPLsun/security/provider/certpath/BasicChecker;->verifyTimestamp(Ljava/security/cert/X509Certificate;)V HSPLsun/security/provider/certpath/CertId;->(Ljava/security/cert/X509Certificate;Lsun/security/x509/SerialNumber;)V @@ -32484,13 +32227,13 @@ HSPLsun/security/provider/certpath/CertId;->getIssuerNameHash()[B HSPLsun/security/provider/certpath/CertId;->getSerialNumber()Ljava/math/BigInteger; HSPLsun/security/provider/certpath/CertId;->hashCode()I HSPLsun/security/provider/certpath/ConstraintsChecker;->(I)V -HSPLsun/security/provider/certpath/ConstraintsChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLsun/security/provider/certpath/ConstraintsChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V+]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;]Ljava/util/Collection;Ljava/util/HashSet; HSPLsun/security/provider/certpath/ConstraintsChecker;->checkBasicConstraints(Ljava/security/cert/X509Certificate;)V HSPLsun/security/provider/certpath/ConstraintsChecker;->init(Z)V HSPLsun/security/provider/certpath/ConstraintsChecker;->mergeNameConstraints(Ljava/security/cert/X509Certificate;Lsun/security/x509/NameConstraintsExtension;)Lsun/security/x509/NameConstraintsExtension; HSPLsun/security/provider/certpath/ConstraintsChecker;->verifyNameConstraints(Ljava/security/cert/X509Certificate;)V HSPLsun/security/provider/certpath/KeyChecker;->(ILjava/security/cert/CertSelector;)V -HSPLsun/security/provider/certpath/KeyChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V +HSPLsun/security/provider/certpath/KeyChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V+]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;]Ljava/util/Collection;Ljava/util/HashSet; HSPLsun/security/provider/certpath/KeyChecker;->init(Z)V HSPLsun/security/provider/certpath/KeyChecker;->verifyCAKeyUsage(Ljava/security/cert/X509Certificate;)V HSPLsun/security/provider/certpath/OCSPResponse$SingleResponse;->(Lsun/security/util/DerValue;)V @@ -32521,9 +32264,9 @@ HSPLsun/security/provider/certpath/PKIX;->isDSAPublicKeyWithoutParams(Ljava/secu HSPLsun/security/provider/certpath/PKIXCertPathValidator;->()V HSPLsun/security/provider/certpath/PKIXCertPathValidator;->engineGetRevocationChecker()Ljava/security/cert/CertPathChecker; HSPLsun/security/provider/certpath/PKIXCertPathValidator;->engineValidate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult; -HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult; +HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;+]Lsun/security/provider/certpath/PKIX$ValidatorParams;Lsun/security/provider/certpath/PKIX$ValidatorParams;]Lsun/security/provider/certpath/BasicChecker;Lsun/security/provider/certpath/BasicChecker;]Ljava/util/List;Ljava/util/Collections$UnmodifiableRandomAccessList;,Ljava/util/ArrayList;]Lsun/security/provider/certpath/PolicyChecker;Lsun/security/provider/certpath/PolicyChecker;]Ljava/util/Iterator;Ljava/util/Collections$UnmodifiableCollection$1; HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult; -HSPLsun/security/provider/certpath/PKIXMasterCertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/util/List;Ljava/util/List;)V +HSPLsun/security/provider/certpath/PKIXMasterCertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/util/List;Ljava/util/List;)V+]Ljava/security/cert/X509Certificate;missing_types]Ljava/util/List;Ljava/util/ArrayList;]Ljava/security/cert/PKIXCertPathChecker;megamorphic_types]Ljava/util/Set;Ljava/util/HashSet; HSPLsun/security/provider/certpath/PolicyChecker;->(Ljava/util/Set;IZZZZLsun/security/provider/certpath/PolicyNodeImpl;)V HSPLsun/security/provider/certpath/PolicyChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V HSPLsun/security/provider/certpath/PolicyChecker;->checkPolicy(Ljava/security/cert/X509Certificate;)V @@ -32532,23 +32275,23 @@ HSPLsun/security/provider/certpath/PolicyChecker;->init(Z)V HSPLsun/security/provider/certpath/PolicyChecker;->mergeExplicitPolicy(ILsun/security/x509/X509CertImpl;Z)I HSPLsun/security/provider/certpath/PolicyChecker;->mergeInhibitAnyPolicy(ILsun/security/x509/X509CertImpl;)I HSPLsun/security/provider/certpath/PolicyChecker;->mergePolicyMapping(ILsun/security/x509/X509CertImpl;)I -HSPLsun/security/provider/certpath/PolicyChecker;->processParents(IZZLsun/security/provider/certpath/PolicyNodeImpl;Ljava/lang/String;Ljava/util/Set;Z)Z -HSPLsun/security/provider/certpath/PolicyChecker;->processPolicies(ILjava/util/Set;IIIZLsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/x509/X509CertImpl;Z)Lsun/security/provider/certpath/PolicyNodeImpl; +HSPLsun/security/provider/certpath/PolicyChecker;->processParents(IZZLsun/security/provider/certpath/PolicyNodeImpl;Ljava/lang/String;Ljava/util/Set;Z)Z+]Ljava/lang/String;Ljava/lang/String;]Lsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/provider/certpath/PolicyNodeImpl;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet; +HSPLsun/security/provider/certpath/PolicyChecker;->processPolicies(ILjava/util/Set;IIIZLsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/x509/X509CertImpl;Z)Lsun/security/provider/certpath/PolicyNodeImpl;+]Lsun/security/x509/CertificatePoliciesExtension;Lsun/security/x509/CertificatePoliciesExtension;]Ljava/lang/String;Ljava/lang/String;]Lsun/security/x509/CertificatePolicyId;Lsun/security/x509/CertificatePolicyId;]Lsun/security/x509/X509CertImpl;Lsun/security/x509/X509CertImpl;]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;]Lsun/security/x509/PolicyInformation;Lsun/security/x509/PolicyInformation;]Ljava/util/List;Ljava/util/ArrayList;]Lsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/provider/certpath/PolicyNodeImpl;]Ljava/util/Iterator;Ljava/util/ArrayList$Itr;,Ljava/util/Collections$UnmodifiableCollection$1;]Ljava/util/Set;Ljava/util/HashSet;,Ljava/util/Collections$EmptySet;,Ljava/util/LinkedHashSet; HSPLsun/security/provider/certpath/PolicyChecker;->processPolicyMappings(Lsun/security/x509/X509CertImpl;IILsun/security/provider/certpath/PolicyNodeImpl;ZLjava/util/Set;)Lsun/security/provider/certpath/PolicyNodeImpl; -HSPLsun/security/provider/certpath/PolicyNodeImpl;->(Lsun/security/provider/certpath/PolicyNodeImpl;Ljava/lang/String;Ljava/util/Set;ZLjava/util/Set;Z)V +HSPLsun/security/provider/certpath/PolicyNodeImpl;->(Lsun/security/provider/certpath/PolicyNodeImpl;Ljava/lang/String;Ljava/util/Set;ZLjava/util/Set;Z)V+]Lsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/provider/certpath/PolicyNodeImpl; HSPLsun/security/provider/certpath/PolicyNodeImpl;->(Lsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/provider/certpath/PolicyNodeImpl;)V -HSPLsun/security/provider/certpath/PolicyNodeImpl;->addChild(Lsun/security/provider/certpath/PolicyNodeImpl;)V +HSPLsun/security/provider/certpath/PolicyNodeImpl;->addChild(Lsun/security/provider/certpath/PolicyNodeImpl;)V+]Ljava/util/HashSet;Ljava/util/HashSet; HSPLsun/security/provider/certpath/PolicyNodeImpl;->copyTree()Lsun/security/provider/certpath/PolicyNodeImpl; -HSPLsun/security/provider/certpath/PolicyNodeImpl;->copyTree(Lsun/security/provider/certpath/PolicyNodeImpl;)Lsun/security/provider/certpath/PolicyNodeImpl; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->copyTree(Lsun/security/provider/certpath/PolicyNodeImpl;)Lsun/security/provider/certpath/PolicyNodeImpl;+]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator; HSPLsun/security/provider/certpath/PolicyNodeImpl;->getChildren()Ljava/util/Iterator; HSPLsun/security/provider/certpath/PolicyNodeImpl;->getDepth()I HSPLsun/security/provider/certpath/PolicyNodeImpl;->getExpectedPolicies()Ljava/util/Set; HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodes(I)Ljava/util/Set; HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodes(ILjava/util/Set;)V HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodesExpected(ILjava/lang/String;Z)Ljava/util/Set; -HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodesExpectedHelper(ILjava/lang/String;Z)Ljava/util/Set; +HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodesExpectedHelper(ILjava/lang/String;Z)Ljava/util/Set;+]Ljava/util/HashSet;Ljava/util/HashSet;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator; HSPLsun/security/provider/certpath/PolicyNodeImpl;->getValidPolicy()Ljava/lang/String; -HSPLsun/security/provider/certpath/PolicyNodeImpl;->prune(I)V +HSPLsun/security/provider/certpath/PolicyNodeImpl;->prune(I)V+]Ljava/util/HashSet;Ljava/util/HashSet;]Lsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/provider/certpath/PolicyNodeImpl;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator; HSPLsun/security/provider/certpath/PolicyNodeImpl;->setImmutable()V HSPLsun/security/provider/certpath/RevocationChecker$1;->()V HSPLsun/security/provider/certpath/RevocationChecker$1;->run()Ljava/lang/Object; @@ -32567,9 +32310,9 @@ HSPLsun/security/provider/certpath/RevocationChecker;->init(Ljava/security/cert/ HSPLsun/security/provider/certpath/RevocationChecker;->init(Z)V HSPLsun/security/provider/certpath/RevocationChecker;->toURI(Ljava/lang/String;)Ljava/net/URI; HSPLsun/security/provider/certpath/RevocationChecker;->updateState(Ljava/security/cert/X509Certificate;)V -HSPLsun/security/util/AbstractAlgorithmConstraints;->checkAlgorithm([Ljava/lang/String;Ljava/lang/String;Lsun/security/util/AlgorithmDecomposer;)Z -HSPLsun/security/util/AlgorithmDecomposer;->decompose(Ljava/lang/String;)Ljava/util/Set; -HSPLsun/security/util/AlgorithmDecomposer;->decomposeImpl(Ljava/lang/String;)Ljava/util/Set; +HSPLsun/security/util/AbstractAlgorithmConstraints;->checkAlgorithm([Ljava/lang/String;Ljava/lang/String;Lsun/security/util/AlgorithmDecomposer;)Z+]Ljava/lang/String;Ljava/lang/String;]Lsun/security/util/AlgorithmDecomposer;Lsun/security/util/AlgorithmDecomposer;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet; +HSPLsun/security/util/AlgorithmDecomposer;->decompose(Ljava/lang/String;)Ljava/util/Set;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/Set;Ljava/util/HashSet; +HSPLsun/security/util/AlgorithmDecomposer;->decomposeImpl(Ljava/lang/String;)Ljava/util/Set;+]Ljava/lang/String;Ljava/lang/String;]Ljava/util/regex/Pattern;Ljava/util/regex/Pattern;]Ljava/util/Set;Ljava/util/HashSet; HSPLsun/security/util/AlgorithmDecomposer;->decomposeOneHash(Ljava/lang/String;)Ljava/util/Set; HSPLsun/security/util/AlgorithmDecomposer;->hasLoop(Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;)V HSPLsun/security/util/BitArray;->(I[B)V @@ -32589,7 +32332,7 @@ HSPLsun/security/util/DerIndefLenConverter;->isIndefinite(I)Z HSPLsun/security/util/DerIndefLenConverter;->isLongForm(I)Z HSPLsun/security/util/DerInputBuffer;->([B)V HSPLsun/security/util/DerInputBuffer;->([BII)V -HSPLsun/security/util/DerInputBuffer;->dup()Lsun/security/util/DerInputBuffer; +HSPLsun/security/util/DerInputBuffer;->dup()Lsun/security/util/DerInputBuffer;+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer;]Ljava/lang/Object;Lsun/security/util/DerInputBuffer; HSPLsun/security/util/DerInputBuffer;->getBigInteger(IZ)Ljava/math/BigInteger; HSPLsun/security/util/DerInputBuffer;->getBitString()[B HSPLsun/security/util/DerInputBuffer;->getBitString(I)[B @@ -32601,40 +32344,40 @@ HSPLsun/security/util/DerInputBuffer;->getTime(IZ)Ljava/util/Date; HSPLsun/security/util/DerInputBuffer;->getUTCTime(I)Ljava/util/Date; HSPLsun/security/util/DerInputBuffer;->getUnalignedBitString()Lsun/security/util/BitArray; HSPLsun/security/util/DerInputBuffer;->peek()I -HSPLsun/security/util/DerInputBuffer;->toByteArray()[B -HSPLsun/security/util/DerInputBuffer;->truncate(I)V -HSPLsun/security/util/DerInputStream;->(Lsun/security/util/DerInputBuffer;)V +HSPLsun/security/util/DerInputBuffer;->toByteArray()[B+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; +HSPLsun/security/util/DerInputBuffer;->truncate(I)V+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; +HSPLsun/security/util/DerInputStream;->(Lsun/security/util/DerInputBuffer;)V+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; HSPLsun/security/util/DerInputStream;->([B)V -HSPLsun/security/util/DerInputStream;->available()I +HSPLsun/security/util/DerInputStream;->available()I+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; HSPLsun/security/util/DerInputStream;->getBigInteger()Ljava/math/BigInteger; -HSPLsun/security/util/DerInputStream;->getByte()I -HSPLsun/security/util/DerInputStream;->getBytes([B)V +HSPLsun/security/util/DerInputStream;->getByte()I+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; +HSPLsun/security/util/DerInputStream;->getBytes([B)V+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; HSPLsun/security/util/DerInputStream;->getDerValue()Lsun/security/util/DerValue; HSPLsun/security/util/DerInputStream;->getEnumerated()I HSPLsun/security/util/DerInputStream;->getGeneralizedTime()Ljava/util/Date; HSPLsun/security/util/DerInputStream;->getLength()I -HSPLsun/security/util/DerInputStream;->getLength(ILjava/io/InputStream;)I -HSPLsun/security/util/DerInputStream;->getLength(Ljava/io/InputStream;)I +HSPLsun/security/util/DerInputStream;->getLength(ILjava/io/InputStream;)I+]Ljava/io/InputStream;Lsun/security/util/DerInputBuffer;,Ljava/io/ByteArrayInputStream; +HSPLsun/security/util/DerInputStream;->getLength(Ljava/io/InputStream;)I+]Ljava/io/InputStream;Lsun/security/util/DerInputBuffer; HSPLsun/security/util/DerInputStream;->getOID()Lsun/security/util/ObjectIdentifier; HSPLsun/security/util/DerInputStream;->getOctetString()[B HSPLsun/security/util/DerInputStream;->getSequence(I)[Lsun/security/util/DerValue; -HSPLsun/security/util/DerInputStream;->getSequence(IZ)[Lsun/security/util/DerValue; -HSPLsun/security/util/DerInputStream;->getSet(I)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->getSequence(IZ)[Lsun/security/util/DerValue;+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer;]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream; +HSPLsun/security/util/DerInputStream;->getSet(I)[Lsun/security/util/DerValue;+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer;]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream; HSPLsun/security/util/DerInputStream;->getSet(IZ)[Lsun/security/util/DerValue; HSPLsun/security/util/DerInputStream;->getSet(IZZ)[Lsun/security/util/DerValue; HSPLsun/security/util/DerInputStream;->getUTCTime()Ljava/util/Date; HSPLsun/security/util/DerInputStream;->getUnalignedBitString()Lsun/security/util/BitArray; -HSPLsun/security/util/DerInputStream;->init([BIIZ)V +HSPLsun/security/util/DerInputStream;->init([BIIZ)V+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; HSPLsun/security/util/DerInputStream;->mark(I)V HSPLsun/security/util/DerInputStream;->peekByte()I -HSPLsun/security/util/DerInputStream;->readVector(I)[Lsun/security/util/DerValue; +HSPLsun/security/util/DerInputStream;->readVector(I)[Lsun/security/util/DerValue;+]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream; HSPLsun/security/util/DerInputStream;->readVector(IZ)[Lsun/security/util/DerValue;+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer;]Ljava/util/Vector;Ljava/util/Vector;]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream; -HSPLsun/security/util/DerInputStream;->reset()V +HSPLsun/security/util/DerInputStream;->reset()V+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; HSPLsun/security/util/DerInputStream;->subStream(IZ)Lsun/security/util/DerInputStream; -HSPLsun/security/util/DerInputStream;->toByteArray()[B +HSPLsun/security/util/DerInputStream;->toByteArray()[B+]Lsun/security/util/DerInputBuffer;Lsun/security/util/DerInputBuffer; HSPLsun/security/util/DerOutputStream;->()V HSPLsun/security/util/DerOutputStream;->putDerValue(Lsun/security/util/DerValue;)V -HSPLsun/security/util/DerOutputStream;->putLength(I)V +HSPLsun/security/util/DerOutputStream;->putLength(I)V+]Lsun/security/util/DerOutputStream;Lsun/security/util/DerOutputStream; HSPLsun/security/util/DerOutputStream;->putNull()V HSPLsun/security/util/DerOutputStream;->putOID(Lsun/security/util/ObjectIdentifier;)V HSPLsun/security/util/DerOutputStream;->putOctetString([B)V @@ -32653,7 +32396,7 @@ HSPLsun/security/util/DerValue;->getBigInteger()Ljava/math/BigInteger; HSPLsun/security/util/DerValue;->getBitString()[B HSPLsun/security/util/DerValue;->getBoolean()Z HSPLsun/security/util/DerValue;->getData()Lsun/security/util/DerInputStream; -HSPLsun/security/util/DerValue;->getDataBytes()[B +HSPLsun/security/util/DerValue;->getDataBytes()[B+]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream; HSPLsun/security/util/DerValue;->getIA5String()Ljava/lang/String; HSPLsun/security/util/DerValue;->getInteger()I HSPLsun/security/util/DerValue;->getOID()Lsun/security/util/ObjectIdentifier; @@ -32662,23 +32405,23 @@ HSPLsun/security/util/DerValue;->getOriginalEncodedForm()[B HSPLsun/security/util/DerValue;->getTag()B HSPLsun/security/util/DerValue;->getUnalignedBitString()Lsun/security/util/BitArray; HSPLsun/security/util/DerValue;->init(BLjava/lang/String;)Lsun/security/util/DerInputStream; -HSPLsun/security/util/DerValue;->init(ZLjava/io/InputStream;)Lsun/security/util/DerInputStream;+]Ljava/io/InputStream;Lsun/security/util/DerInputBuffer; +HSPLsun/security/util/DerValue;->init(ZLjava/io/InputStream;)Lsun/security/util/DerInputStream;+]Ljava/io/InputStream;Lsun/security/util/DerInputBuffer;,Ljava/io/ByteArrayInputStream; HSPLsun/security/util/DerValue;->isConstructed()Z HSPLsun/security/util/DerValue;->isContextSpecific()Z HSPLsun/security/util/DerValue;->isContextSpecific(B)Z HSPLsun/security/util/DerValue;->isPrintableStringChar(C)Z HSPLsun/security/util/DerValue;->length()I HSPLsun/security/util/DerValue;->resetTag(B)V -HSPLsun/security/util/DerValue;->toByteArray()[B +HSPLsun/security/util/DerValue;->toByteArray()[B+]Lsun/security/util/DerValue;Lsun/security/util/DerValue;]Lsun/security/util/DerOutputStream;Lsun/security/util/DerOutputStream;]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream; HSPLsun/security/util/DerValue;->toDerInputStream()Lsun/security/util/DerInputStream; HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->getConstraints(Ljava/lang/String;)Ljava/util/Set; HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Ljava/security/Key;)Z -HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V +HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/util/CertConstraintParameters;Lsun/security/util/CertConstraintParameters;]Ljava/security/PublicKey;missing_types]Lsun/security/util/DisabledAlgorithmConstraints$Constraint;Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;]Ljava/util/Iterator;Ljava/util/HashMap$KeyIterator;]Ljava/util/Set;Ljava/util/HashSet; HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Ljava/security/Key;)Z HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V -HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permitsImpl(Ljava/security/Key;)Z +HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permitsImpl(Ljava/security/Key;)Z+]Ljava/lang/String;Ljava/lang/String;]Ljava/security/Key;missing_types HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z -HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V +HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V+]Ljava/security/cert/X509Certificate;missing_types]Lsun/security/util/CertConstraintParameters;Lsun/security/util/CertConstraintParameters;]Lsun/security/util/DisabledAlgorithmConstraints;Lsun/security/util/DisabledAlgorithmConstraints;]Ljava/security/PublicKey;missing_types]Lsun/security/util/DisabledAlgorithmConstraints$Constraints;Lsun/security/util/DisabledAlgorithmConstraints$Constraints; HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/security/Key;)Z @@ -32694,13 +32437,13 @@ HSPLsun/security/util/ManifestEntryVerifier;->(Ljava/util/jar/Manifest;)V HSPLsun/security/util/ManifestEntryVerifier;->getEntry()Ljava/util/jar/JarEntry; HSPLsun/security/util/ManifestEntryVerifier;->setEntry(Ljava/lang/String;Ljava/util/jar/JarEntry;)V HSPLsun/security/util/ManifestEntryVerifier;->update(B)V+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;]Ljava/util/ArrayList;Ljava/util/ArrayList; -HSPLsun/security/util/ManifestEntryVerifier;->update([BII)V +HSPLsun/security/util/ManifestEntryVerifier;->update([BII)V+]Ljava/security/MessageDigest;Ljava/security/MessageDigest$Delegate;]Ljava/util/ArrayList;Ljava/util/ArrayList; HSPLsun/security/util/ManifestEntryVerifier;->verify(Ljava/util/Hashtable;Ljava/util/Hashtable;)[Ljava/security/CodeSigner; HSPLsun/security/util/MemoryCache$SoftCacheEntry;->(Ljava/lang/Object;Ljava/lang/Object;JLjava/lang/ref/ReferenceQueue;)V HSPLsun/security/util/MemoryCache$SoftCacheEntry;->getValue()Ljava/lang/Object; HSPLsun/security/util/MemoryCache$SoftCacheEntry;->isValid(J)Z -HSPLsun/security/util/MemoryCache;->emptyQueue()V -HSPLsun/security/util/MemoryCache;->get(Ljava/lang/Object;)Ljava/lang/Object; +HSPLsun/security/util/MemoryCache;->emptyQueue()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue;]Ljava/util/Map;Ljava/util/LinkedHashMap; +HSPLsun/security/util/MemoryCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Lsun/security/util/MemoryCache$CacheEntry;Lsun/security/util/MemoryCache$SoftCacheEntry;]Ljava/util/Map;Ljava/util/LinkedHashMap; HSPLsun/security/util/MemoryCache;->newEntry(Ljava/lang/Object;Ljava/lang/Object;JLjava/lang/ref/ReferenceQueue;)Lsun/security/util/MemoryCache$CacheEntry; HSPLsun/security/util/MemoryCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V HSPLsun/security/util/ObjectIdentifier;->(Lsun/security/util/DerInputBuffer;)V @@ -32709,7 +32452,7 @@ HSPLsun/security/util/ObjectIdentifier;->check([B)V HSPLsun/security/util/ObjectIdentifier;->encode(Lsun/security/util/DerOutputStream;)V HSPLsun/security/util/ObjectIdentifier;->equals(Ljava/lang/Object;)Z HSPLsun/security/util/ObjectIdentifier;->hashCode()I -HSPLsun/security/util/ObjectIdentifier;->toString()Ljava/lang/String; +HSPLsun/security/util/ObjectIdentifier;->toString()Ljava/lang/String;+]Ljava/lang/StringBuffer;Ljava/lang/StringBuffer; HSPLsun/security/util/SignatureFileVerifier;->(Ljava/util/ArrayList;Lsun/security/util/ManifestDigester;Ljava/lang/String;[B)V HSPLsun/security/util/SignatureFileVerifier;->getDigest(Ljava/lang/String;)Ljava/security/MessageDigest; HSPLsun/security/util/SignatureFileVerifier;->getSigners([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner; @@ -32724,7 +32467,7 @@ HSPLsun/security/util/SignatureFileVerifier;->verifyManifestHash(Ljava/util/jar/ HSPLsun/security/x509/AVA;->(Ljava/io/Reader;ILjava/util/Map;)V HSPLsun/security/x509/AVA;->(Ljava/io/Reader;Ljava/util/Map;)V HSPLsun/security/x509/AVA;->(Lsun/security/util/DerValue;)V+]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream; -HSPLsun/security/x509/AVA;->derEncode(Ljava/io/OutputStream;)V +HSPLsun/security/x509/AVA;->derEncode(Ljava/io/OutputStream;)V+]Lsun/security/util/DerValue;Lsun/security/util/DerValue;]Lsun/security/util/DerOutputStream;Lsun/security/util/DerOutputStream;]Ljava/io/OutputStream;Lsun/security/util/DerOutputStream; HSPLsun/security/x509/AVA;->isDerString(Lsun/security/util/DerValue;Z)Z HSPLsun/security/x509/AVA;->isTerminator(II)Z HSPLsun/security/x509/AVA;->parseString(Ljava/io/Reader;IILjava/lang/StringBuilder;)Lsun/security/util/DerValue; @@ -32732,7 +32475,7 @@ HSPLsun/security/x509/AVA;->readChar(Ljava/io/Reader;Ljava/lang/String;)I HSPLsun/security/x509/AVA;->toKeyword(ILjava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/AVA;->toRFC2253CanonicalString()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/String;Ljava/lang/String;]Lsun/security/util/DerValue;Lsun/security/util/DerValue; HSPLsun/security/x509/AVA;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String; -HSPLsun/security/x509/AVAKeyword;->getKeyword(Lsun/security/util/ObjectIdentifier;ILjava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/AVAKeyword;->getKeyword(Lsun/security/util/ObjectIdentifier;ILjava/util/Map;)Ljava/lang/String;+]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;]Ljava/util/Map;Ljava/util/HashMap;,Ljava/util/Collections$EmptyMap; HSPLsun/security/x509/AVAKeyword;->getOID(Ljava/lang/String;ILjava/util/Map;)Lsun/security/util/ObjectIdentifier; HSPLsun/security/x509/AVAKeyword;->isCompliant(I)Z HSPLsun/security/x509/AccessDescription;->(Lsun/security/util/DerValue;)V @@ -32819,7 +32562,7 @@ HSPLsun/security/x509/RDN;->(Lsun/security/util/DerValue;)V+]Lsun/security HSPLsun/security/x509/RDN;->encode(Lsun/security/util/DerOutputStream;)V HSPLsun/security/x509/RDN;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/RDN;->toRFC2253String(Z)Ljava/lang/String; -HSPLsun/security/x509/RDN;->toRFC2253StringInternal(ZLjava/util/Map;)Ljava/lang/String; +HSPLsun/security/x509/RDN;->toRFC2253StringInternal(ZLjava/util/Map;)Ljava/lang/String;+]Lsun/security/x509/AVA;Lsun/security/x509/AVA; HSPLsun/security/x509/SerialNumber;->(Lsun/security/util/DerInputStream;)V HSPLsun/security/x509/SerialNumber;->(Lsun/security/util/DerValue;)V HSPLsun/security/x509/SerialNumber;->construct(Lsun/security/util/DerValue;)V @@ -32839,32 +32582,32 @@ HSPLsun/security/x509/X500Name;->asX500Name(Ljavax/security/auth/x500/X500Princi HSPLsun/security/x509/X500Name;->asX500Principal()Ljavax/security/auth/x500/X500Principal; HSPLsun/security/x509/X500Name;->checkNoNewLinesNorTabsAtBeginningOfDN(Ljava/lang/String;)V HSPLsun/security/x509/X500Name;->countQuotes(Ljava/lang/String;II)I -HSPLsun/security/x509/X500Name;->equals(Ljava/lang/Object;)Z +HSPLsun/security/x509/X500Name;->equals(Ljava/lang/Object;)Z+]Ljava/lang/String;Ljava/lang/String;]Lsun/security/x509/X500Name;Lsun/security/x509/X500Name; HSPLsun/security/x509/X500Name;->escaped(IILjava/lang/String;)Z HSPLsun/security/x509/X500Name;->generateRFC2253DN(Ljava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/X500Name;->getEncoded()[B -HSPLsun/security/x509/X500Name;->getEncodedInternal()[B -HSPLsun/security/x509/X500Name;->getRFC2253CanonicalName()Ljava/lang/String; +HSPLsun/security/x509/X500Name;->getEncodedInternal()[B+]Lsun/security/util/DerOutputStream;Lsun/security/util/DerOutputStream;]Lsun/security/x509/RDN;Lsun/security/x509/RDN; +HSPLsun/security/x509/X500Name;->getRFC2253CanonicalName()Ljava/lang/String;+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Lsun/security/x509/RDN;Lsun/security/x509/RDN; HSPLsun/security/x509/X500Name;->getRFC2253Name()Ljava/lang/String; HSPLsun/security/x509/X500Name;->getRFC2253Name(Ljava/util/Map;)Ljava/lang/String; HSPLsun/security/x509/X500Name;->hashCode()I -HSPLsun/security/x509/X500Name;->intern(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/ObjectIdentifier; +HSPLsun/security/x509/X500Name;->intern(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/ObjectIdentifier;+]Ljava/util/Map;Ljava/util/HashMap; HSPLsun/security/x509/X500Name;->isEmpty()Z -HSPLsun/security/x509/X500Name;->parseDER(Lsun/security/util/DerInputStream;)V +HSPLsun/security/x509/X500Name;->parseDER(Lsun/security/util/DerInputStream;)V+]Lsun/security/util/DerInputStream;Lsun/security/util/DerInputStream; HSPLsun/security/x509/X500Name;->parseDN(Ljava/lang/String;Ljava/util/Map;)V -HSPLsun/security/x509/X509AttributeName;->(Ljava/lang/String;)V +HSPLsun/security/x509/X509AttributeName;->(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String; HSPLsun/security/x509/X509AttributeName;->getPrefix()Ljava/lang/String; HSPLsun/security/x509/X509AttributeName;->getSuffix()Ljava/lang/String; HSPLsun/security/x509/X509CertImpl;->([B)V HSPLsun/security/x509/X509CertImpl;->checkValidity(Ljava/util/Date;)V -HSPLsun/security/x509/X509CertImpl;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLsun/security/x509/X509CertImpl;->get(Ljava/lang/String;)Ljava/lang/Object;+]Ljava/lang/String;Ljava/lang/String;]Lsun/security/x509/X509AttributeName;Lsun/security/x509/X509AttributeName; HSPLsun/security/x509/X509CertImpl;->getAuthorityKeyIdentifierExtension()Lsun/security/x509/AuthorityKeyIdentifierExtension; HSPLsun/security/x509/X509CertImpl;->getCertificatePoliciesExtension()Lsun/security/x509/CertificatePoliciesExtension; HSPLsun/security/x509/X509CertImpl;->getEncodedInternal()[B HSPLsun/security/x509/X509CertImpl;->getEncodedInternal(Ljava/security/cert/Certificate;)[B HSPLsun/security/x509/X509CertImpl;->getExtendedKeyUsage()Ljava/util/List; HSPLsun/security/x509/X509CertImpl;->getExtendedKeyUsageExtension()Lsun/security/x509/ExtendedKeyUsageExtension; -HSPLsun/security/x509/X509CertImpl;->getExtension(Lsun/security/util/ObjectIdentifier;)Lsun/security/x509/Extension; +HSPLsun/security/x509/X509CertImpl;->getExtension(Lsun/security/util/ObjectIdentifier;)Lsun/security/x509/Extension;+]Lsun/security/x509/Extension;megamorphic_types]Lsun/security/util/ObjectIdentifier;Lsun/security/util/ObjectIdentifier;]Lsun/security/x509/X509CertInfo;Lsun/security/x509/X509CertInfo;]Ljava/util/Collection;Ljava/util/Collections$SynchronizedCollection;]Lsun/security/x509/CertificateExtensions;Lsun/security/x509/CertificateExtensions;]Ljava/util/Iterator;Ljava/util/TreeMap$ValueIterator; HSPLsun/security/x509/X509CertImpl;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal; HSPLsun/security/x509/X509CertImpl;->getKeyUsage()[Z HSPLsun/security/x509/X509CertImpl;->getNameConstraintsExtension()Lsun/security/x509/NameConstraintsExtension; @@ -32884,8 +32627,8 @@ HSPLsun/security/x509/X509CertImpl;->verify(Ljava/security/PublicKey;)V HSPLsun/security/x509/X509CertImpl;->verify(Ljava/security/PublicKey;Ljava/lang/String;)V HSPLsun/security/x509/X509CertInfo;->(Lsun/security/util/DerValue;)V HSPLsun/security/x509/X509CertInfo;->([B)V -HSPLsun/security/x509/X509CertInfo;->attributeMap(Ljava/lang/String;)I -HSPLsun/security/x509/X509CertInfo;->get(Ljava/lang/String;)Ljava/lang/Object; +HSPLsun/security/x509/X509CertInfo;->attributeMap(Ljava/lang/String;)I+]Ljava/lang/Integer;Ljava/lang/Integer;]Ljava/util/Map;Ljava/util/HashMap; +HSPLsun/security/x509/X509CertInfo;->get(Ljava/lang/String;)Ljava/lang/Object;+]Lsun/security/x509/CertificateAlgorithmId;Lsun/security/x509/CertificateAlgorithmId;]Lsun/security/x509/X509AttributeName;Lsun/security/x509/X509AttributeName; HSPLsun/security/x509/X509CertInfo;->getEncodedInfo()[B HSPLsun/security/x509/X509CertInfo;->getX500Name(Ljava/lang/String;Z)Ljava/lang/Object; HSPLsun/security/x509/X509CertInfo;->parse(Lsun/security/util/DerValue;)V @@ -32964,7 +32707,7 @@ HSPLsun/util/calendar/CalendarUtils;->mod(JJ)J HSPLsun/util/calendar/CalendarUtils;->sprintf0d(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder; HSPLsun/util/calendar/Gregorian$Date;->(Ljava/util/TimeZone;)V HSPLsun/util/calendar/Gregorian$Date;->getNormalizedYear()I+]Lsun/util/calendar/Gregorian$Date;Lsun/util/calendar/Gregorian$Date; -HSPLsun/util/calendar/Gregorian$Date;->setNormalizedYear(I)V +HSPLsun/util/calendar/Gregorian$Date;->setNormalizedYear(I)V+]Lsun/util/calendar/Gregorian$Date;Lsun/util/calendar/Gregorian$Date; HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLjava/util/TimeZone;)Lsun/util/calendar/CalendarDate; HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLjava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date; HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate; @@ -33003,9 +32746,6 @@ HSPLsun/util/locale/BaseLocale;->getRegion()Ljava/lang/String; HSPLsun/util/locale/BaseLocale;->getScript()Ljava/lang/String; HSPLsun/util/locale/BaseLocale;->getVariant()Ljava/lang/String; HSPLsun/util/locale/BaseLocale;->hashCode()I+]Ljava/lang/String;Ljava/lang/String; -HSPLsun/util/locale/Extension;->getID()Ljava/lang/String; -HSPLsun/util/locale/Extension;->setValue(Ljava/lang/String;)V+]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder; -HSPLsun/util/locale/Extension;->toString()Ljava/lang/String;+]Lsun/util/locale/Extension;Lsun/util/locale/UnicodeLocaleExtension; HSPLsun/util/locale/InternalLocaleBuilder;->()V HSPLsun/util/locale/InternalLocaleBuilder;->checkVariants(Ljava/lang/String;Ljava/lang/String;)I HSPLsun/util/locale/InternalLocaleBuilder;->clear()Lsun/util/locale/InternalLocaleBuilder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder; @@ -33017,7 +32757,6 @@ HSPLsun/util/locale/InternalLocaleBuilder;->setLanguage(Ljava/lang/String;)Lsun/ HSPLsun/util/locale/InternalLocaleBuilder;->setLanguageTag(Lsun/util/locale/LanguageTag;)Lsun/util/locale/InternalLocaleBuilder;+]Lsun/util/locale/InternalLocaleBuilder;Lsun/util/locale/InternalLocaleBuilder;]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/LanguageTag;Lsun/util/locale/LanguageTag;]Ljava/util/List;Ljava/util/Collections$EmptyList; HSPLsun/util/locale/InternalLocaleBuilder;->setRegion(Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder; HSPLsun/util/locale/InternalLocaleBuilder;->setScript(Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder; -HSPLsun/util/locale/InternalLocaleBuilder;->setUnicodeLocaleExtension(Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Ljava/util/Map;Ljava/util/HashMap; HSPLsun/util/locale/InternalLocaleBuilder;->setVariant(Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder; HSPLsun/util/locale/LanguageTag;->()V HSPLsun/util/locale/LanguageTag;->canonicalizeLanguage(Ljava/lang/String;)Ljava/lang/String; @@ -33030,28 +32769,24 @@ HSPLsun/util/locale/LanguageTag;->getPrivateuse()Ljava/lang/String; HSPLsun/util/locale/LanguageTag;->getRegion()Ljava/lang/String; HSPLsun/util/locale/LanguageTag;->getScript()Ljava/lang/String; HSPLsun/util/locale/LanguageTag;->getVariants()Ljava/util/List;+]Ljava/util/List;Ljava/util/Collections$EmptyList; -HSPLsun/util/locale/LanguageTag;->isExtlang(Ljava/lang/String;)Z +HSPLsun/util/locale/LanguageTag;->isExtlang(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLsun/util/locale/LanguageTag;->isLanguage(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; -HSPLsun/util/locale/LanguageTag;->isPrivateusePrefixChar(C)Z HSPLsun/util/locale/LanguageTag;->isRegion(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; -HSPLsun/util/locale/LanguageTag;->isScript(Ljava/lang/String;)Z +HSPLsun/util/locale/LanguageTag;->isScript(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLsun/util/locale/LanguageTag;->isVariant(Ljava/lang/String;)Z -HSPLsun/util/locale/LanguageTag;->parse(Ljava/lang/String;Lsun/util/locale/ParseStatus;)Lsun/util/locale/LanguageTag;+]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Ljava/util/Map;Ljava/util/HashMap;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus; -HSPLsun/util/locale/LanguageTag;->parseExtensions(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LanguageTag;->parse(Ljava/lang/String;Lsun/util/locale/ParseStatus;)Lsun/util/locale/LanguageTag;+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus; +HSPLsun/util/locale/LanguageTag;->parseExtensions(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator; HSPLsun/util/locale/LanguageTag;->parseExtlangs(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus; HSPLsun/util/locale/LanguageTag;->parseLanguage(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus; HSPLsun/util/locale/LanguageTag;->parseLocale(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Lsun/util/locale/LanguageTag; -HSPLsun/util/locale/LanguageTag;->parsePrivateuse(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z +HSPLsun/util/locale/LanguageTag;->parsePrivateuse(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator; HSPLsun/util/locale/LanguageTag;->parseRegion(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus; HSPLsun/util/locale/LanguageTag;->parseScript(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator;]Lsun/util/locale/ParseStatus;Lsun/util/locale/ParseStatus; -HSPLsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z -HSPLsun/util/locale/LocaleExtensions;->(Ljava/util/Map;Ljava/util/Set;Ljava/util/Map;)V+]Ljava/util/Map$Entry;Ljava/util/HashMap$Node;]Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;]Ljava/util/Map;Ljava/util/HashMap;]Ljava/util/SortedMap;Ljava/util/TreeMap;]Ljava/util/Iterator;Ljava/util/HashMap$EntryIterator;]Ljava/util/Set;Ljava/util/HashMap$EntrySet; -HSPLsun/util/locale/LocaleExtensions;->hashCode()I+]Ljava/lang/String;Ljava/lang/String; -HSPLsun/util/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String;+]Ljava/util/Map$Entry;Ljava/util/TreeMap$TreeMapEntry;]Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;]Ljava/lang/Character;Ljava/lang/Character;]Ljava/util/SortedMap;Ljava/util/TreeMap;]Ljava/util/Iterator;Ljava/util/TreeMap$EntryIterator;]Ljava/util/Set;Ljava/util/TreeMap$EntrySet; +HSPLsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z+]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator; HSPLsun/util/locale/LocaleObjectCache$CacheEntry;->(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V HSPLsun/util/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object; HSPLsun/util/locale/LocaleObjectCache;->cleanStaleEntries()V+]Ljava/lang/ref/ReferenceQueue;Ljava/lang/ref/ReferenceQueue; -HSPLsun/util/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;]Lsun/util/locale/LocaleObjectCache;Ljava/util/Locale$Cache;,Lsun/util/locale/BaseLocale$Cache;]Lsun/util/locale/LocaleObjectCache$CacheEntry;Lsun/util/locale/LocaleObjectCache$CacheEntry; +HSPLsun/util/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object;+]Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentHashMap;]Lsun/util/locale/LocaleObjectCache;Lsun/util/locale/BaseLocale$Cache;,Ljava/util/Locale$Cache;]Lsun/util/locale/LocaleObjectCache$CacheEntry;Lsun/util/locale/LocaleObjectCache$CacheEntry; HSPLsun/util/locale/LocaleObjectCache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object; HSPLsun/util/locale/LocaleUtils;->caseIgnoreMatch(Ljava/lang/String;Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLsun/util/locale/LocaleUtils;->isAlpha(C)Z @@ -33059,7 +32794,7 @@ HSPLsun/util/locale/LocaleUtils;->isAlphaNumeric(C)Z HSPLsun/util/locale/LocaleUtils;->isAlphaNumericString(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLsun/util/locale/LocaleUtils;->isAlphaString(Ljava/lang/String;)Z+]Ljava/lang/String;Ljava/lang/String; HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/lang/String;)Z -HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/List;)Z +HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/List;)Z+]Ljava/util/List;Ljava/util/Collections$EmptyList; HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/Map;)Z HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/Set;)Z HSPLsun/util/locale/LocaleUtils;->isLower(C)Z @@ -33076,13 +32811,11 @@ HSPLsun/util/locale/ParseStatus;->reset()V HSPLsun/util/locale/StringTokenIterator;->(Ljava/lang/String;Ljava/lang/String;)V+]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator; HSPLsun/util/locale/StringTokenIterator;->current()Ljava/lang/String; HSPLsun/util/locale/StringTokenIterator;->currentEnd()I -HSPLsun/util/locale/StringTokenIterator;->currentStart()I HSPLsun/util/locale/StringTokenIterator;->hasNext()Z+]Ljava/lang/String;Ljava/lang/String; HSPLsun/util/locale/StringTokenIterator;->isDone()Z HSPLsun/util/locale/StringTokenIterator;->next()Ljava/lang/String;+]Ljava/lang/String;Ljava/lang/String;]Lsun/util/locale/StringTokenIterator;Lsun/util/locale/StringTokenIterator; HSPLsun/util/locale/StringTokenIterator;->nextDelimiter(I)I+]Ljava/lang/String;Ljava/lang/String; HSPLsun/util/locale/StringTokenIterator;->setStart(I)Lsun/util/locale/StringTokenIterator;+]Ljava/lang/String;Ljava/lang/String; -HSPLsun/util/locale/UnicodeLocaleExtension;->(Ljava/util/SortedSet;Ljava/util/SortedMap;)V+]Ljava/util/Map$Entry;Ljava/util/TreeMap$TreeMapEntry;]Lsun/util/locale/UnicodeLocaleExtension;Lsun/util/locale/UnicodeLocaleExtension;]Ljava/util/StringJoiner;Ljava/util/StringJoiner;]Ljava/util/Map;Ljava/util/TreeMap;]Ljava/util/Iterator;Ljava/util/Collections$EmptyIterator;,Ljava/util/TreeMap$EntryIterator;]Ljava/util/Set;Ljava/util/TreeMap$EntrySet;,Ljava/util/Collections$EmptySet; HSPLsun/util/locale/provider/CalendarDataUtility;->retrieveFirstDayOfWeek(Ljava/util/Locale;I)I HSPLsun/util/logging/LoggingSupport$2;->()V HSPLsun/util/logging/LoggingSupport$2;->run()Ljava/lang/Object; @@ -33627,8 +33360,6 @@ Landroid/app/IWallpaperManager; Landroid/app/IWallpaperManagerCallback$Stub$Proxy; Landroid/app/IWallpaperManagerCallback$Stub; Landroid/app/IWallpaperManagerCallback; -Landroid/app/IWindowToken$Stub; -Landroid/app/IWindowToken; Landroid/app/InstantAppResolverService$1; Landroid/app/InstantAppResolverService$InstantAppResolutionCallback; Landroid/app/InstantAppResolverService$ServiceHandler; @@ -33776,7 +33507,6 @@ Landroid/app/ServiceStartNotAllowedException; Landroid/app/SharedElementCallback$1; Landroid/app/SharedElementCallback; Landroid/app/SharedPreferencesImpl$1; -Landroid/app/SharedPreferencesImpl$2; Landroid/app/SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0; Landroid/app/SharedPreferencesImpl$EditorImpl$1; Landroid/app/SharedPreferencesImpl$EditorImpl$2; @@ -33832,12 +33562,10 @@ Landroid/app/SystemServiceRegistry$137; Landroid/app/SystemServiceRegistry$138; Landroid/app/SystemServiceRegistry$139; Landroid/app/SystemServiceRegistry$13; -Landroid/app/SystemServiceRegistry$140; Landroid/app/SystemServiceRegistry$14; Landroid/app/SystemServiceRegistry$15; Landroid/app/SystemServiceRegistry$16; Landroid/app/SystemServiceRegistry$17; -Landroid/app/SystemServiceRegistry$18$$ExternalSyntheticLambda0; Landroid/app/SystemServiceRegistry$18; Landroid/app/SystemServiceRegistry$19; Landroid/app/SystemServiceRegistry$1; @@ -38743,6 +38471,7 @@ Landroid/net/vcn/VcnTransportInfo; Landroid/net/vcn/VcnUnderlyingNetworkPolicy$1; Landroid/net/vcn/VcnUnderlyingNetworkPolicy; Landroid/net/wifi/SoftApConfToXmlMigrationUtil; +Landroid/net/wifi/WifiConfiguration; Landroid/net/wifi/WifiMigration$1; Landroid/net/wifi/WifiMigration; Landroid/net/wifi/WifiNetworkScoreCache$CacheListener$1; @@ -39713,7 +39442,6 @@ Landroid/security/KeyPairGeneratorSpec; Landroid/security/KeyStore$State; Landroid/security/KeyStore2$$ExternalSyntheticLambda0; Landroid/security/KeyStore2$$ExternalSyntheticLambda1; -Landroid/security/KeyStore2$$ExternalSyntheticLambda2; Landroid/security/KeyStore2$$ExternalSyntheticLambda3; Landroid/security/KeyStore2$$ExternalSyntheticLambda4; Landroid/security/KeyStore2$CheckedRemoteRequest; @@ -42411,7 +42139,6 @@ Landroid/view/inputmethod/TextAttribute$1; Landroid/view/inputmethod/TextAttribute; Landroid/view/inputmethod/TextSnapshot; Landroid/view/inputmethod/ViewFocusParameterInfo; -Landroid/view/selectiontoolbar/SelectionToolbarManager; Landroid/view/textclassifier/ConversationAction$1; Landroid/view/textclassifier/ConversationAction$Builder; Landroid/view/textclassifier/ConversationAction; @@ -43146,7 +42873,6 @@ Landroid/window/WindowOrganizer$1; Landroid/window/WindowOrganizer; Landroid/window/WindowProvider; Landroid/window/WindowProviderService; -Landroid/window/WindowTokenClient$$ExternalSyntheticLambda1; Landroid/window/WindowTokenClient; Lcom/android/apex/ApexInfo; Lcom/android/apex/ApexInfoList; @@ -43814,7 +43540,6 @@ Lcom/android/internal/app/IntentForwarderActivity; Lcom/android/internal/app/MessageSamplingConfig$1; Lcom/android/internal/app/MessageSamplingConfig; Lcom/android/internal/app/MicroAlertController; -Lcom/android/internal/app/NetInitiatedActivity; Lcom/android/internal/app/ProcessMap; Lcom/android/internal/app/ResolverActivity$ActionTitle; Lcom/android/internal/app/ResolverActivity; @@ -44039,8 +43764,6 @@ Lcom/android/internal/listeners/ListenerExecutor$ListenerOperation; Lcom/android/internal/listeners/ListenerExecutor; Lcom/android/internal/listeners/ListenerTransport; Lcom/android/internal/listeners/ListenerTransportManager; -Lcom/android/internal/location/GpsNetInitiatedHandler$1; -Lcom/android/internal/location/GpsNetInitiatedHandler$GpsNiNotification; Lcom/android/internal/location/GpsNetInitiatedHandler; Lcom/android/internal/location/altitude/nano/MapParamsProto; Lcom/android/internal/location/altitude/nano/S2TileProto; @@ -44236,9 +43959,6 @@ Lcom/android/internal/policy/DecorView$ActionModeCallback2Wrapper; Lcom/android/internal/policy/DecorView$ColorViewAttributes; Lcom/android/internal/policy/DecorView$ColorViewState; Lcom/android/internal/policy/DecorView; -Lcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget; -Lcom/android/internal/policy/DividerSnapAlgorithm; -Lcom/android/internal/policy/DockedDividerUtils; Lcom/android/internal/policy/GestureNavigationSettingsObserver$$ExternalSyntheticLambda0; Lcom/android/internal/policy/GestureNavigationSettingsObserver$1; Lcom/android/internal/policy/GestureNavigationSettingsObserver; @@ -44654,7 +44374,6 @@ Lcom/android/internal/telephony/Phone$$ExternalSyntheticLambda0; Lcom/android/internal/telephony/Phone$NetworkSelectMessage; Lcom/android/internal/telephony/Phone$SilentRedialParam; Lcom/android/internal/telephony/Phone; -Lcom/android/internal/telephony/PhoneConfigurationManager$$ExternalSyntheticLambda0; Lcom/android/internal/telephony/PhoneConfigurationManager$ConfigManagerHandler; Lcom/android/internal/telephony/PhoneConfigurationManager$MockableInterface; Lcom/android/internal/telephony/PhoneConfigurationManager; @@ -48676,7 +48395,6 @@ Ljava/util/function/Consumer$$ExternalSyntheticLambda0; Ljava/util/function/Consumer; Ljava/util/function/DoubleBinaryOperator; Ljava/util/function/DoubleConsumer; -Ljava/util/function/DoubleFunction; Ljava/util/function/DoubleSupplier; Ljava/util/function/DoubleUnaryOperator$$ExternalSyntheticLambda0; Ljava/util/function/DoubleUnaryOperator$$ExternalSyntheticLambda1; @@ -49742,7 +49460,6 @@ Lsun/util/locale/BaseLocale$Key; Lsun/util/locale/BaseLocale; Lsun/util/locale/Extension; Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar; -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString; Lsun/util/locale/InternalLocaleBuilder; Lsun/util/locale/LanguageTag; Lsun/util/locale/LocaleExtensions; @@ -50049,7 +49766,6 @@ Lsun/util/logging/PlatformLogger; [Landroid/net/NetworkKey; [Landroid/net/Uri; [Landroid/net/rtp/AudioCodec; -[Landroid/opengl/EGLConfig; [Landroid/os/AsyncTask$Status; [Landroid/os/BatteryConsumer$Key; [Landroid/os/BatteryStats$BitDescription; diff --git a/config/preloaded-classes b/config/preloaded-classes index 977d3a507b32e642c378e800dedc84594a4aaf9c..a4c390913459decd520b8eb37631871c99df28c7 100644 --- a/config/preloaded-classes +++ b/config/preloaded-classes @@ -554,8 +554,6 @@ android.app.IWallpaperManager android.app.IWallpaperManagerCallback$Stub$Proxy android.app.IWallpaperManagerCallback$Stub android.app.IWallpaperManagerCallback -android.app.IWindowToken$Stub -android.app.IWindowToken android.app.InstantAppResolverService$1 android.app.InstantAppResolverService$InstantAppResolutionCallback android.app.InstantAppResolverService$ServiceHandler @@ -702,7 +700,6 @@ android.app.ServiceStartNotAllowedException android.app.SharedElementCallback$1 android.app.SharedElementCallback android.app.SharedPreferencesImpl$1 -android.app.SharedPreferencesImpl$2 android.app.SharedPreferencesImpl$EditorImpl$$ExternalSyntheticLambda0 android.app.SharedPreferencesImpl$EditorImpl$1 android.app.SharedPreferencesImpl$EditorImpl$2 @@ -758,12 +755,10 @@ android.app.SystemServiceRegistry$137 android.app.SystemServiceRegistry$138 android.app.SystemServiceRegistry$139 android.app.SystemServiceRegistry$13 -android.app.SystemServiceRegistry$140 android.app.SystemServiceRegistry$14 android.app.SystemServiceRegistry$15 android.app.SystemServiceRegistry$16 android.app.SystemServiceRegistry$17 -android.app.SystemServiceRegistry$18$$ExternalSyntheticLambda0 android.app.SystemServiceRegistry$18 android.app.SystemServiceRegistry$19 android.app.SystemServiceRegistry$1 @@ -5662,6 +5657,7 @@ android.net.vcn.VcnTransportInfo android.net.vcn.VcnUnderlyingNetworkPolicy$1 android.net.vcn.VcnUnderlyingNetworkPolicy android.net.wifi.SoftApConfToXmlMigrationUtil +android.net.wifi.WifiConfiguration android.net.wifi.WifiMigration$1 android.net.wifi.WifiMigration android.net.wifi.WifiNetworkScoreCache$CacheListener$1 @@ -9320,7 +9316,6 @@ android.view.inputmethod.TextAttribute$1 android.view.inputmethod.TextAttribute android.view.inputmethod.TextSnapshot android.view.inputmethod.ViewFocusParameterInfo -android.view.selectiontoolbar.SelectionToolbarManager android.view.textclassifier.ConversationAction$1 android.view.textclassifier.ConversationAction$Builder android.view.textclassifier.ConversationAction @@ -10054,7 +10049,6 @@ android.window.WindowOrganizer$1 android.window.WindowOrganizer android.window.WindowProvider android.window.WindowProviderService -android.window.WindowTokenClient$$ExternalSyntheticLambda1 android.window.WindowTokenClient com.android.apex.ApexInfo com.android.apex.ApexInfoList @@ -10722,7 +10716,6 @@ com.android.internal.app.IntentForwarderActivity com.android.internal.app.MessageSamplingConfig$1 com.android.internal.app.MessageSamplingConfig com.android.internal.app.MicroAlertController -com.android.internal.app.NetInitiatedActivity com.android.internal.app.ProcessMap com.android.internal.app.ResolverActivity$ActionTitle com.android.internal.app.ResolverActivity @@ -10945,8 +10938,6 @@ com.android.internal.listeners.ListenerExecutor$ListenerOperation com.android.internal.listeners.ListenerExecutor com.android.internal.listeners.ListenerTransport com.android.internal.listeners.ListenerTransportManager -com.android.internal.location.GpsNetInitiatedHandler$1 -com.android.internal.location.GpsNetInitiatedHandler$GpsNiNotification com.android.internal.location.GpsNetInitiatedHandler com.android.internal.location.altitude.nano.MapParamsProto com.android.internal.location.altitude.nano.S2TileProto @@ -11140,9 +11131,6 @@ com.android.internal.policy.DecorView$ActionModeCallback2Wrapper com.android.internal.policy.DecorView$ColorViewAttributes com.android.internal.policy.DecorView$ColorViewState com.android.internal.policy.DecorView -com.android.internal.policy.DividerSnapAlgorithm$SnapTarget -com.android.internal.policy.DividerSnapAlgorithm -com.android.internal.policy.DockedDividerUtils com.android.internal.policy.GestureNavigationSettingsObserver$$ExternalSyntheticLambda0 com.android.internal.policy.GestureNavigationSettingsObserver$1 com.android.internal.policy.GestureNavigationSettingsObserver @@ -12726,10 +12714,8 @@ com.android.internal.util.LatencyTracker$$ExternalSyntheticLambda2 com.android.internal.util.LatencyTracker$Action com.android.internal.util.LatencyTracker$ActionProperties com.android.internal.util.LatencyTracker$FrameworkStatsLogEvent -com.android.internal.util.LatencyTracker$SLatencyTrackerHolder com.android.internal.util.LatencyTracker$Session$$ExternalSyntheticLambda0 com.android.internal.util.LatencyTracker$Session -com.android.internal.util.LatencyTracker com.android.internal.util.LineBreakBufferedWriter com.android.internal.util.LocalLog com.android.internal.util.MemInfoReader diff --git a/core/api/Android.bp b/core/api/Android.bp index 71a2ca2903f6c8ef55b2b45e9604c0d0e912e81e..907916a125da4a8dfe761fdb4ebf3f387677dbb5 100644 --- a/core/api/Android.bp +++ b/core/api/Android.bp @@ -37,6 +37,11 @@ filegroup { srcs: ["removed.txt"], } +filegroup { + name: "non-updatable-lint-baseline.txt", + srcs: ["lint-baseline.txt"], +} + filegroup { name: "non-updatable-system-current.txt", srcs: ["system-current.txt"], diff --git a/core/api/current.txt b/core/api/current.txt index 9ba84c9d7944cdcbec4a5545de26ad0131d11053..d48685ba6f66284bb58fcfbb7b22977ebff190b4 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -9681,14 +9681,24 @@ package android.companion.virtual { public final class VirtualDevice implements android.os.Parcelable { method public int describeContents(); method public int getDeviceId(); + method @FlaggedApi("android.companion.virtual.flags.vdm_public_apis") @NonNull public int[] getDisplayIds(); method @Nullable public String getName(); method @Nullable public String getPersistentDeviceId(); + method @FlaggedApi("android.companion.virtual.flags.vdm_public_apis") public boolean hasCustomSensorSupport(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; } public final class VirtualDeviceManager { + method @FlaggedApi("android.companion.virtual.flags.vdm_public_apis") @Nullable public android.companion.virtual.VirtualDevice getVirtualDevice(int); method @NonNull public java.util.List getVirtualDevices(); + method @FlaggedApi("android.companion.virtual.flags.vdm_public_apis") public void registerVirtualDeviceListener(@NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.VirtualDeviceListener); + method @FlaggedApi("android.companion.virtual.flags.vdm_public_apis") public void unregisterVirtualDeviceListener(@NonNull android.companion.virtual.VirtualDeviceManager.VirtualDeviceListener); + } + + @FlaggedApi("android.companion.virtual.flags.vdm_public_apis") public static interface VirtualDeviceManager.VirtualDeviceListener { + method public default void onVirtualDeviceClosed(int); + method public default void onVirtualDeviceCreated(int); } } @@ -10560,6 +10570,7 @@ package android.content { public final class ContextParams { method @Nullable public String getAttributionTag(); method @Nullable public android.content.AttributionSource getNextAttributionSource(); + method @NonNull public boolean shouldRegisterAttributionSource(); } public static final class ContextParams.Builder { @@ -10568,6 +10579,7 @@ package android.content { method @NonNull public android.content.ContextParams build(); method @NonNull public android.content.ContextParams.Builder setAttributionTag(@Nullable String); method @NonNull public android.content.ContextParams.Builder setNextAttributionSource(@Nullable android.content.AttributionSource); + method @NonNull public android.content.ContextParams.Builder setShouldRegisterAttributionSource(boolean); } public class ContextWrapper extends android.content.Context { @@ -11082,6 +11094,7 @@ package android.content { field public static final String EXTRA_ALLOW_MULTIPLE = "android.intent.extra.ALLOW_MULTIPLE"; field @Deprecated public static final String EXTRA_ALLOW_REPLACE = "android.intent.extra.ALLOW_REPLACE"; field public static final String EXTRA_ALTERNATE_INTENTS = "android.intent.extra.ALTERNATE_INTENTS"; + field public static final String EXTRA_ARCHIVAL = "android.intent.extra.ARCHIVAL"; field public static final String EXTRA_ASSIST_CONTEXT = "android.intent.extra.ASSIST_CONTEXT"; field public static final String EXTRA_ASSIST_INPUT_DEVICE_ID = "android.intent.extra.ASSIST_INPUT_DEVICE_ID"; field public static final String EXTRA_ASSIST_INPUT_HINT_KEYBOARD = "android.intent.extra.ASSIST_INPUT_HINT_KEYBOARD"; @@ -14341,14 +14354,14 @@ package android.database.sqlite { method @NonNull public static android.database.sqlite.SQLiteDatabase create(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory); method @NonNull public static android.database.sqlite.SQLiteDatabase createInMemory(@NonNull android.database.sqlite.SQLiteDatabase.OpenParams); method @NonNull public android.database.sqlite.SQLiteRawStatement createRawStatement(@NonNull String); - method public int delete(String, String, String[]); + method public int delete(@NonNull String, @Nullable String, @Nullable String[]); method public static boolean deleteDatabase(@NonNull java.io.File); method public void disableWriteAheadLogging(); method public boolean enableWriteAheadLogging(); method public void endTransaction(); method public void execPerConnectionSQL(@NonNull String, @Nullable Object[]) throws android.database.SQLException; method public void execSQL(String) throws android.database.SQLException; - method public void execSQL(String, Object[]) throws android.database.SQLException; + method public void execSQL(@NonNull String, @NonNull Object[]) throws android.database.SQLException; method public static String findEditTable(String); method public java.util.List> getAttachedDbs(); method public long getLastChangedRowCount(); @@ -14360,9 +14373,9 @@ package android.database.sqlite { method public long getTotalChangedRowCount(); method public int getVersion(); method public boolean inTransaction(); - method public long insert(String, String, android.content.ContentValues); - method public long insertOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException; - method public long insertWithOnConflict(String, String, android.content.ContentValues, int); + method public long insert(@NonNull String, @Nullable String, @Nullable android.content.ContentValues); + method public long insertOrThrow(@NonNull String, @Nullable String, @Nullable android.content.ContentValues) throws android.database.SQLException; + method public long insertWithOnConflict(@NonNull String, @Nullable String, @Nullable android.content.ContentValues, int); method public boolean isDatabaseIntegrityOk(); method public boolean isDbLockedByCurrentThread(); method @Deprecated public boolean isDbLockedByOtherThreads(); @@ -14379,19 +14392,19 @@ package android.database.sqlite { method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull java.io.File, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory); method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory); method public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(@NonNull String, @Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, @Nullable android.database.DatabaseErrorHandler); - method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String); - method public android.database.Cursor query(boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal); - method public android.database.Cursor query(String, String[], String, String[], String, String, String); - method public android.database.Cursor query(String, String[], String, String[], String, String, String, String); - method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String); - method public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, String, String[], String, String[], String, String, String, String, android.os.CancellationSignal); - method public android.database.Cursor rawQuery(String, String[]); - method public android.database.Cursor rawQuery(String, String[], android.os.CancellationSignal); - method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String); - method public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase.CursorFactory, String, String[], String, android.os.CancellationSignal); + method @NonNull public android.database.Cursor query(boolean, @NonNull String, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable String, @Nullable String, @Nullable String); + method @NonNull public android.database.Cursor query(boolean, @NonNull String, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable android.os.CancellationSignal); + method @NonNull public android.database.Cursor query(@NonNull String, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable String, @Nullable String); + method @NonNull public android.database.Cursor query(@NonNull String, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable String, @Nullable String, @Nullable String); + method @NonNull public android.database.Cursor queryWithFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, @NonNull String, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable String, @Nullable String, @Nullable String); + method @NonNull public android.database.Cursor queryWithFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, boolean, @NonNull String, @Nullable String[], @Nullable String, @Nullable String[], @Nullable String, @Nullable String, @Nullable String, @Nullable String, @Nullable android.os.CancellationSignal); + method @NonNull public android.database.Cursor rawQuery(@NonNull String, @Nullable String[]); + method @NonNull public android.database.Cursor rawQuery(@NonNull String, @Nullable String[], @Nullable android.os.CancellationSignal); + method @NonNull public android.database.Cursor rawQueryWithFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, @NonNull String, @Nullable String[], @NonNull String); + method @NonNull public android.database.Cursor rawQueryWithFactory(@Nullable android.database.sqlite.SQLiteDatabase.CursorFactory, @NonNull String, @Nullable String[], @NonNull String, @Nullable android.os.CancellationSignal); method public static int releaseMemory(); - method public long replace(String, String, android.content.ContentValues); - method public long replaceOrThrow(String, String, android.content.ContentValues) throws android.database.SQLException; + method public long replace(@NonNull String, @Nullable String, @Nullable android.content.ContentValues); + method public long replaceOrThrow(@NonNull String, @Nullable String, @Nullable android.content.ContentValues) throws android.database.SQLException; method public void setCustomAggregateFunction(@NonNull String, @NonNull java.util.function.BinaryOperator) throws android.database.sqlite.SQLiteException; method public void setCustomScalarFunction(@NonNull String, @NonNull java.util.function.UnaryOperator) throws android.database.sqlite.SQLiteException; method public void setForeignKeyConstraintsEnabled(boolean); @@ -14402,8 +14415,8 @@ package android.database.sqlite { method public void setPageSize(long); method public void setTransactionSuccessful(); method public void setVersion(int); - method public int update(String, android.content.ContentValues, String, String[]); - method public int updateWithOnConflict(String, android.content.ContentValues, String, String[], int); + method public int update(@NonNull String, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[]); + method public int updateWithOnConflict(@NonNull String, @Nullable android.content.ContentValues, @Nullable String, @Nullable String[], int); method public void validateSql(@NonNull String, @Nullable android.os.CancellationSignal); method @Deprecated public boolean yieldIfContended(); method public boolean yieldIfContendedSafely(); @@ -15083,7 +15096,7 @@ package android.graphics { method public int getByteCount(); method @NonNull public android.graphics.Color getColor(int, int); method @Nullable public android.graphics.ColorSpace getColorSpace(); - method @NonNull public android.graphics.Bitmap.Config getConfig(); + method @Nullable public android.graphics.Bitmap.Config getConfig(); method public int getDensity(); method @Nullable public android.graphics.Gainmap getGainmap(); method public int getGenerationId(); @@ -15651,6 +15664,7 @@ package android.graphics { public final class Gainmap implements android.os.Parcelable { ctor public Gainmap(@NonNull android.graphics.Bitmap); + ctor public Gainmap(@NonNull android.graphics.Gainmap, @NonNull android.graphics.Bitmap); method public int describeContents(); method @NonNull public float getDisplayRatioForFullHdr(); method @NonNull public float[] getEpsilonHdr(); @@ -16285,7 +16299,8 @@ package android.graphics { method public void arcTo(@NonNull android.graphics.RectF, float, float); method public void arcTo(float, float, float, float, float, float, boolean); method public void close(); - method public void computeBounds(@NonNull android.graphics.RectF, boolean); + method @Deprecated public void computeBounds(@NonNull android.graphics.RectF, boolean); + method public void computeBounds(@NonNull android.graphics.RectF); method public void conicTo(float, float, float, float, float); method public void cubicTo(float, float, float, float, float, float); method @NonNull public android.graphics.Path.FillType getFillType(); @@ -17638,9 +17653,13 @@ package android.graphics.pdf { package android.graphics.text { public final class LineBreakConfig { + method @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public int getHyphenation(); method public int getLineBreakStyle(); method public int getLineBreakWordStyle(); method @NonNull public android.graphics.text.LineBreakConfig merge(@NonNull android.graphics.text.LineBreakConfig); + field @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public static final int HYPHENATION_DISABLED = 0; // 0x0 + field @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public static final int HYPHENATION_ENABLED = 1; // 0x1 + field @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public static final int HYPHENATION_UNSPECIFIED = -1; // 0xffffffff field public static final int LINE_BREAK_STYLE_LOOSE = 1; // 0x1 field public static final int LINE_BREAK_STYLE_NONE = 0; // 0x0 field public static final int LINE_BREAK_STYLE_NORMAL = 2; // 0x2 @@ -17655,6 +17674,7 @@ package android.graphics.text { ctor public LineBreakConfig.Builder(); method @NonNull public android.graphics.text.LineBreakConfig build(); method @NonNull public android.graphics.text.LineBreakConfig.Builder merge(@NonNull android.graphics.text.LineBreakConfig); + method @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") @NonNull public android.graphics.text.LineBreakConfig.Builder setHyphenation(int); method @NonNull public android.graphics.text.LineBreakConfig.Builder setLineBreakStyle(int); method @NonNull public android.graphics.text.LineBreakConfig.Builder setLineBreakWordStyle(int); } @@ -17678,6 +17698,7 @@ package android.graphics.text { method @NonNull public android.graphics.text.LineBreaker.Builder setHyphenationFrequency(int); method @NonNull public android.graphics.text.LineBreaker.Builder setIndents(@Nullable int[]); method @NonNull public android.graphics.text.LineBreaker.Builder setJustificationMode(int); + method @NonNull public android.graphics.text.LineBreaker.Builder setUseBoundsForWidth(boolean); } public static class LineBreaker.ParagraphConstraints { @@ -20401,513 +20422,6 @@ package android.inputmethodservice { package android.location { - public class Address implements android.os.Parcelable { - ctor public Address(java.util.Locale); - method public void clearLatitude(); - method public void clearLongitude(); - method public int describeContents(); - method public String getAddressLine(int); - method public String getAdminArea(); - method public String getCountryCode(); - method public String getCountryName(); - method public android.os.Bundle getExtras(); - method public String getFeatureName(); - method public double getLatitude(); - method public java.util.Locale getLocale(); - method public String getLocality(); - method public double getLongitude(); - method public int getMaxAddressLineIndex(); - method public String getPhone(); - method public String getPostalCode(); - method public String getPremises(); - method public String getSubAdminArea(); - method public String getSubLocality(); - method public String getSubThoroughfare(); - method public String getThoroughfare(); - method public String getUrl(); - method public boolean hasLatitude(); - method public boolean hasLongitude(); - method public void setAddressLine(int, String); - method public void setAdminArea(String); - method public void setCountryCode(String); - method public void setCountryName(String); - method public void setExtras(android.os.Bundle); - method public void setFeatureName(String); - method public void setLatitude(double); - method public void setLocality(String); - method public void setLongitude(double); - method public void setPhone(String); - method public void setPostalCode(String); - method public void setPremises(String); - method public void setSubAdminArea(String); - method public void setSubLocality(String); - method public void setSubThoroughfare(String); - method public void setThoroughfare(String); - method public void setUrl(String); - method public void writeToParcel(android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - @Deprecated public class Criteria implements android.os.Parcelable { - ctor @Deprecated public Criteria(); - ctor @Deprecated public Criteria(android.location.Criteria); - method @Deprecated public int describeContents(); - method @Deprecated public int getAccuracy(); - method @Deprecated public int getBearingAccuracy(); - method @Deprecated public int getHorizontalAccuracy(); - method @Deprecated public int getPowerRequirement(); - method @Deprecated public int getSpeedAccuracy(); - method @Deprecated public int getVerticalAccuracy(); - method @Deprecated public boolean isAltitudeRequired(); - method @Deprecated public boolean isBearingRequired(); - method @Deprecated public boolean isCostAllowed(); - method @Deprecated public boolean isSpeedRequired(); - method @Deprecated public void setAccuracy(int); - method @Deprecated public void setAltitudeRequired(boolean); - method @Deprecated public void setBearingAccuracy(int); - method @Deprecated public void setBearingRequired(boolean); - method @Deprecated public void setCostAllowed(boolean); - method @Deprecated public void setHorizontalAccuracy(int); - method @Deprecated public void setPowerRequirement(int); - method @Deprecated public void setSpeedAccuracy(int); - method @Deprecated public void setSpeedRequired(boolean); - method @Deprecated public void setVerticalAccuracy(int); - method @Deprecated public void writeToParcel(android.os.Parcel, int); - field @Deprecated public static final int ACCURACY_COARSE = 2; // 0x2 - field @Deprecated public static final int ACCURACY_FINE = 1; // 0x1 - field @Deprecated public static final int ACCURACY_HIGH = 3; // 0x3 - field @Deprecated public static final int ACCURACY_LOW = 1; // 0x1 - field @Deprecated public static final int ACCURACY_MEDIUM = 2; // 0x2 - field @Deprecated @NonNull public static final android.os.Parcelable.Creator CREATOR; - field @Deprecated public static final int NO_REQUIREMENT = 0; // 0x0 - field @Deprecated public static final int POWER_HIGH = 3; // 0x3 - field @Deprecated public static final int POWER_LOW = 1; // 0x1 - field @Deprecated public static final int POWER_MEDIUM = 2; // 0x2 - } - - public final class Geocoder { - ctor public Geocoder(@NonNull android.content.Context); - ctor public Geocoder(@NonNull android.content.Context, @NonNull java.util.Locale); - method @Deprecated @Nullable public java.util.List getFromLocation(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @IntRange int) throws java.io.IOException; - method public void getFromLocation(@FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @IntRange int, @NonNull android.location.Geocoder.GeocodeListener); - method @Deprecated @Nullable public java.util.List getFromLocationName(@NonNull String, @IntRange int) throws java.io.IOException; - method public void getFromLocationName(@NonNull String, @IntRange int, @NonNull android.location.Geocoder.GeocodeListener); - method @Deprecated @Nullable public java.util.List getFromLocationName(@NonNull String, @IntRange int, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double) throws java.io.IOException; - method public void getFromLocationName(@NonNull String, @IntRange int, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @FloatRange(from=-90.0, to=90.0) double, @FloatRange(from=-180.0, to=180.0) double, @NonNull android.location.Geocoder.GeocodeListener); - method public static boolean isPresent(); - } - - public static interface Geocoder.GeocodeListener { - method public default void onError(@Nullable String); - method public void onGeocode(@NonNull java.util.List); - } - - public final class GnssAntennaInfo implements android.os.Parcelable { - method public int describeContents(); - method @FloatRange(from=0.0f) public double getCarrierFrequencyMHz(); - method @NonNull public android.location.GnssAntennaInfo.PhaseCenterOffset getPhaseCenterOffset(); - method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getPhaseCenterVariationCorrections(); - method @Nullable public android.location.GnssAntennaInfo.SphericalCorrections getSignalGainCorrections(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static class GnssAntennaInfo.Builder { - ctor @Deprecated public GnssAntennaInfo.Builder(); - ctor public GnssAntennaInfo.Builder(double, @NonNull android.location.GnssAntennaInfo.PhaseCenterOffset); - ctor public GnssAntennaInfo.Builder(@NonNull android.location.GnssAntennaInfo); - method @NonNull public android.location.GnssAntennaInfo build(); - method @NonNull public android.location.GnssAntennaInfo.Builder setCarrierFrequencyMHz(@FloatRange(from=0.0f) double); - method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterOffset(@NonNull android.location.GnssAntennaInfo.PhaseCenterOffset); - method @NonNull public android.location.GnssAntennaInfo.Builder setPhaseCenterVariationCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections); - method @NonNull public android.location.GnssAntennaInfo.Builder setSignalGainCorrections(@Nullable android.location.GnssAntennaInfo.SphericalCorrections); - } - - public static interface GnssAntennaInfo.Listener { - method public void onGnssAntennaInfoReceived(@NonNull java.util.List); - } - - public static final class GnssAntennaInfo.PhaseCenterOffset implements android.os.Parcelable { - ctor public GnssAntennaInfo.PhaseCenterOffset(double, double, double, double, double, double); - method public int describeContents(); - method @FloatRange public double getXOffsetMm(); - method @FloatRange public double getXOffsetUncertaintyMm(); - method @FloatRange public double getYOffsetMm(); - method @FloatRange public double getYOffsetUncertaintyMm(); - method @FloatRange public double getZOffsetMm(); - method @FloatRange public double getZOffsetUncertaintyMm(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssAntennaInfo.SphericalCorrections implements android.os.Parcelable { - ctor public GnssAntennaInfo.SphericalCorrections(@NonNull double[][], @NonNull double[][]); - method public int describeContents(); - method @NonNull public double[][] getCorrectionUncertaintiesArray(); - method @NonNull public double[][] getCorrectionsArray(); - method @FloatRange(from=0.0f, to=180.0f) public double getDeltaPhi(); - method @FloatRange(from=0.0f, to=360.0f) public double getDeltaTheta(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public final class GnssAutomaticGainControl implements android.os.Parcelable { - method public int describeContents(); - method @IntRange(from=0) public long getCarrierFrequencyHz(); - method public int getConstellationType(); - method @FloatRange(from=0xffffd8f0, to=10000) public double getLevelDb(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssAutomaticGainControl.Builder { - ctor public GnssAutomaticGainControl.Builder(); - ctor public GnssAutomaticGainControl.Builder(@NonNull android.location.GnssAutomaticGainControl); - method @NonNull public android.location.GnssAutomaticGainControl build(); - method @NonNull public android.location.GnssAutomaticGainControl.Builder setCarrierFrequencyHz(@IntRange(from=0) long); - method @NonNull public android.location.GnssAutomaticGainControl.Builder setConstellationType(int); - method @NonNull public android.location.GnssAutomaticGainControl.Builder setLevelDb(@FloatRange(from=0xffffd8f0, to=10000) double); - } - - public final class GnssCapabilities implements android.os.Parcelable { - method public int describeContents(); - method @NonNull public java.util.List getGnssSignalTypes(); - method public int hasAccumulatedDeltaRange(); - method public boolean hasAntennaInfo(); - method public boolean hasGeofencing(); - method @Deprecated public boolean hasGnssAntennaInfo(); - method public boolean hasLowPowerMode(); - method public boolean hasMeasurementCorrections(); - method public boolean hasMeasurementCorrectionsExcessPathLength(); - method public boolean hasMeasurementCorrectionsForDriving(); - method public boolean hasMeasurementCorrectionsLosSats(); - method public boolean hasMeasurementCorrectionsReflectingPlane(); - method public boolean hasMeasurementCorrelationVectors(); - method public boolean hasMeasurements(); - method public boolean hasMsa(); - method public boolean hasMsb(); - method public boolean hasNavigationMessages(); - method public boolean hasOnDemandTime(); - method public boolean hasPowerMultibandAcquisition(); - method public boolean hasPowerMultibandTracking(); - method public boolean hasPowerOtherModes(); - method public boolean hasPowerSinglebandAcquisition(); - method public boolean hasPowerSinglebandTracking(); - method public boolean hasPowerTotal(); - method public boolean hasSatelliteBlocklist(); - method public boolean hasSatellitePvt(); - method public boolean hasScheduling(); - method public boolean hasSingleShotFix(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field public static final int CAPABILITY_SUPPORTED = 1; // 0x1 - field public static final int CAPABILITY_UNKNOWN = 0; // 0x0 - field public static final int CAPABILITY_UNSUPPORTED = 2; // 0x2 - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssCapabilities.Builder { - ctor public GnssCapabilities.Builder(); - ctor public GnssCapabilities.Builder(@NonNull android.location.GnssCapabilities); - method @NonNull public android.location.GnssCapabilities build(); - method @NonNull public android.location.GnssCapabilities.Builder setGnssSignalTypes(@NonNull java.util.List); - method @NonNull public android.location.GnssCapabilities.Builder setHasAccumulatedDeltaRange(int); - method @NonNull public android.location.GnssCapabilities.Builder setHasAntennaInfo(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasGeofencing(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasLowPowerMode(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurementCorrections(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurementCorrectionsExcessPathLength(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurementCorrectionsForDriving(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurementCorrectionsLosSats(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurementCorrectionsReflectingPlane(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurementCorrelationVectors(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMeasurements(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMsa(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasMsb(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasNavigationMessages(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasOnDemandTime(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasPowerMultibandAcquisition(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasPowerMultibandTracking(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasPowerOtherModes(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasPowerSinglebandAcquisition(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasPowerSinglebandTracking(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasPowerTotal(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasSatelliteBlocklist(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasSatellitePvt(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasScheduling(boolean); - method @NonNull public android.location.GnssCapabilities.Builder setHasSingleShotFix(boolean); - } - - public final class GnssClock implements android.os.Parcelable { - method public int describeContents(); - method public double getBiasNanos(); - method @FloatRange(from=0.0f) public double getBiasUncertaintyNanos(); - method public double getDriftNanosPerSecond(); - method @FloatRange(from=0.0f) public double getDriftUncertaintyNanosPerSecond(); - method public long getElapsedRealtimeNanos(); - method @FloatRange(from=0.0f) public double getElapsedRealtimeUncertaintyNanos(); - method public long getFullBiasNanos(); - method public int getHardwareClockDiscontinuityCount(); - method public int getLeapSecond(); - method @FloatRange(from=0.0) public double getReferenceCarrierFrequencyHzForIsb(); - method @NonNull public String getReferenceCodeTypeForIsb(); - method public int getReferenceConstellationTypeForIsb(); - method public long getTimeNanos(); - method @FloatRange(from=0.0f) public double getTimeUncertaintyNanos(); - method public boolean hasBiasNanos(); - method public boolean hasBiasUncertaintyNanos(); - method public boolean hasDriftNanosPerSecond(); - method public boolean hasDriftUncertaintyNanosPerSecond(); - method public boolean hasElapsedRealtimeNanos(); - method public boolean hasElapsedRealtimeUncertaintyNanos(); - method public boolean hasFullBiasNanos(); - method public boolean hasLeapSecond(); - method public boolean hasReferenceCarrierFrequencyHzForIsb(); - method public boolean hasReferenceCodeTypeForIsb(); - method public boolean hasReferenceConstellationTypeForIsb(); - method public boolean hasTimeUncertaintyNanos(); - method public void writeToParcel(android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public final class GnssMeasurement implements android.os.Parcelable { - method public int describeContents(); - method public double getAccumulatedDeltaRangeMeters(); - method public int getAccumulatedDeltaRangeState(); - method public double getAccumulatedDeltaRangeUncertaintyMeters(); - method @Deprecated public double getAutomaticGainControlLevelDb(); - method @FloatRange(from=0, to=63) public double getBasebandCn0DbHz(); - method @Deprecated public long getCarrierCycles(); - method public float getCarrierFrequencyHz(); - method @Deprecated public double getCarrierPhase(); - method @Deprecated public double getCarrierPhaseUncertainty(); - method @FloatRange(from=0, to=63) public double getCn0DbHz(); - method @NonNull public String getCodeType(); - method public int getConstellationType(); - method public double getFullInterSignalBiasNanos(); - method @FloatRange(from=0.0) public double getFullInterSignalBiasUncertaintyNanos(); - method public int getMultipathIndicator(); - method public double getPseudorangeRateMetersPerSecond(); - method public double getPseudorangeRateUncertaintyMetersPerSecond(); - method public long getReceivedSvTimeNanos(); - method public long getReceivedSvTimeUncertaintyNanos(); - method public double getSatelliteInterSignalBiasNanos(); - method @FloatRange(from=0.0) public double getSatelliteInterSignalBiasUncertaintyNanos(); - method public double getSnrInDb(); - method public int getState(); - method public int getSvid(); - method public double getTimeOffsetNanos(); - method @Deprecated public boolean hasAutomaticGainControlLevelDb(); - method public boolean hasBasebandCn0DbHz(); - method @Deprecated public boolean hasCarrierCycles(); - method public boolean hasCarrierFrequencyHz(); - method @Deprecated public boolean hasCarrierPhase(); - method @Deprecated public boolean hasCarrierPhaseUncertainty(); - method public boolean hasCodeType(); - method public boolean hasFullInterSignalBiasNanos(); - method public boolean hasFullInterSignalBiasUncertaintyNanos(); - method public boolean hasSatelliteInterSignalBiasNanos(); - method public boolean hasSatelliteInterSignalBiasUncertaintyNanos(); - method public boolean hasSnrInDb(); - method public void writeToParcel(android.os.Parcel, int); - field public static final int ADR_STATE_CYCLE_SLIP = 4; // 0x4 - field public static final int ADR_STATE_HALF_CYCLE_REPORTED = 16; // 0x10 - field public static final int ADR_STATE_HALF_CYCLE_RESOLVED = 8; // 0x8 - field public static final int ADR_STATE_RESET = 2; // 0x2 - field public static final int ADR_STATE_UNKNOWN = 0; // 0x0 - field public static final int ADR_STATE_VALID = 1; // 0x1 - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - field public static final int MULTIPATH_INDICATOR_DETECTED = 1; // 0x1 - field public static final int MULTIPATH_INDICATOR_NOT_DETECTED = 2; // 0x2 - field public static final int MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0 - field public static final int STATE_2ND_CODE_LOCK = 65536; // 0x10000 - field public static final int STATE_BDS_D2_BIT_SYNC = 256; // 0x100 - field public static final int STATE_BDS_D2_SUBFRAME_SYNC = 512; // 0x200 - field public static final int STATE_BIT_SYNC = 2; // 0x2 - field public static final int STATE_CODE_LOCK = 1; // 0x1 - field public static final int STATE_GAL_E1BC_CODE_LOCK = 1024; // 0x400 - field public static final int STATE_GAL_E1B_PAGE_SYNC = 4096; // 0x1000 - field public static final int STATE_GAL_E1C_2ND_CODE_LOCK = 2048; // 0x800 - field public static final int STATE_GLO_STRING_SYNC = 64; // 0x40 - field public static final int STATE_GLO_TOD_DECODED = 128; // 0x80 - field public static final int STATE_GLO_TOD_KNOWN = 32768; // 0x8000 - field public static final int STATE_MSEC_AMBIGUOUS = 16; // 0x10 - field public static final int STATE_SBAS_SYNC = 8192; // 0x2000 - field public static final int STATE_SUBFRAME_SYNC = 4; // 0x4 - field public static final int STATE_SYMBOL_SYNC = 32; // 0x20 - field public static final int STATE_TOW_DECODED = 8; // 0x8 - field public static final int STATE_TOW_KNOWN = 16384; // 0x4000 - field public static final int STATE_UNKNOWN = 0; // 0x0 - } - - public final class GnssMeasurementRequest implements android.os.Parcelable { - method public int describeContents(); - method @IntRange(from=0) public int getIntervalMillis(); - method public boolean isFullTracking(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - field public static final int PASSIVE_INTERVAL = 2147483647; // 0x7fffffff - } - - public static final class GnssMeasurementRequest.Builder { - ctor public GnssMeasurementRequest.Builder(); - ctor public GnssMeasurementRequest.Builder(@NonNull android.location.GnssMeasurementRequest); - method @NonNull public android.location.GnssMeasurementRequest build(); - method @NonNull public android.location.GnssMeasurementRequest.Builder setFullTracking(boolean); - method @NonNull public android.location.GnssMeasurementRequest.Builder setIntervalMillis(@IntRange(from=0) int); - } - - public final class GnssMeasurementsEvent implements android.os.Parcelable { - method public int describeContents(); - method @NonNull public android.location.GnssClock getClock(); - method @NonNull public java.util.Collection getGnssAutomaticGainControls(); - method @NonNull public java.util.Collection getMeasurements(); - method public boolean hasIsFullTracking(); - method public boolean isFullTracking(); - method public void writeToParcel(android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssMeasurementsEvent.Builder { - ctor public GnssMeasurementsEvent.Builder(); - ctor public GnssMeasurementsEvent.Builder(@NonNull android.location.GnssMeasurementsEvent); - method @NonNull public android.location.GnssMeasurementsEvent build(); - method @NonNull public android.location.GnssMeasurementsEvent.Builder clearIsFullTracking(); - method @NonNull public android.location.GnssMeasurementsEvent.Builder setClock(@NonNull android.location.GnssClock); - method @NonNull public android.location.GnssMeasurementsEvent.Builder setGnssAutomaticGainControls(@NonNull java.util.Collection); - method @NonNull public android.location.GnssMeasurementsEvent.Builder setIsFullTracking(boolean); - method @NonNull public android.location.GnssMeasurementsEvent.Builder setMeasurements(@NonNull java.util.Collection); - } - - public abstract static class GnssMeasurementsEvent.Callback { - ctor public GnssMeasurementsEvent.Callback(); - method public void onGnssMeasurementsReceived(android.location.GnssMeasurementsEvent); - method @Deprecated public void onStatusChanged(int); - field @Deprecated public static final int STATUS_LOCATION_DISABLED = 2; // 0x2 - field @Deprecated public static final int STATUS_NOT_ALLOWED = 3; // 0x3 - field @Deprecated public static final int STATUS_NOT_SUPPORTED = 0; // 0x0 - field @Deprecated public static final int STATUS_READY = 1; // 0x1 - } - - public final class GnssNavigationMessage implements android.os.Parcelable { - method public int describeContents(); - method @NonNull public byte[] getData(); - method @IntRange(from=0xffffffff, to=120) public int getMessageId(); - method public int getStatus(); - method @IntRange(from=1) public int getSubmessageId(); - method @IntRange(from=1, to=200) public int getSvid(); - method public int getType(); - method public void writeToParcel(android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - field public static final int STATUS_PARITY_PASSED = 1; // 0x1 - field public static final int STATUS_PARITY_REBUILT = 2; // 0x2 - field public static final int STATUS_UNKNOWN = 0; // 0x0 - field public static final int TYPE_BDS_CNAV1 = 1283; // 0x503 - field public static final int TYPE_BDS_CNAV2 = 1284; // 0x504 - field public static final int TYPE_BDS_D1 = 1281; // 0x501 - field public static final int TYPE_BDS_D2 = 1282; // 0x502 - field public static final int TYPE_GAL_F = 1538; // 0x602 - field public static final int TYPE_GAL_I = 1537; // 0x601 - field public static final int TYPE_GLO_L1CA = 769; // 0x301 - field public static final int TYPE_GPS_CNAV2 = 260; // 0x104 - field public static final int TYPE_GPS_L1CA = 257; // 0x101 - field public static final int TYPE_GPS_L2CNAV = 258; // 0x102 - field public static final int TYPE_GPS_L5CNAV = 259; // 0x103 - field public static final int TYPE_IRN_L5CA = 1793; // 0x701 - field public static final int TYPE_QZS_L1CA = 1025; // 0x401 - field public static final int TYPE_SBS = 513; // 0x201 - field public static final int TYPE_UNKNOWN = 0; // 0x0 - } - - public abstract static class GnssNavigationMessage.Callback { - ctor public GnssNavigationMessage.Callback(); - method public void onGnssNavigationMessageReceived(android.location.GnssNavigationMessage); - method @Deprecated public void onStatusChanged(int); - field @Deprecated public static final int STATUS_LOCATION_DISABLED = 2; // 0x2 - field @Deprecated public static final int STATUS_NOT_SUPPORTED = 0; // 0x0 - field @Deprecated public static final int STATUS_READY = 1; // 0x1 - } - - public final class GnssSignalType implements android.os.Parcelable { - method @NonNull public static android.location.GnssSignalType create(int, @FloatRange(from=0.0f, fromInclusive=false) double, @NonNull String); - method public int describeContents(); - method @FloatRange(from=0.0f, fromInclusive=false) public double getCarrierFrequencyHz(); - method @NonNull public String getCodeType(); - method public int getConstellationType(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public final class GnssStatus implements android.os.Parcelable { - method public int describeContents(); - method @FloatRange(from=0, to=360) public float getAzimuthDegrees(@IntRange(from=0) int); - method @FloatRange(from=0, to=63) public float getBasebandCn0DbHz(@IntRange(from=0) int); - method @FloatRange(from=0) public float getCarrierFrequencyHz(@IntRange(from=0) int); - method @FloatRange(from=0, to=63) public float getCn0DbHz(@IntRange(from=0) int); - method public int getConstellationType(@IntRange(from=0) int); - method @FloatRange(from=0xffffffa6, to=90) public float getElevationDegrees(@IntRange(from=0) int); - method @IntRange(from=0) public int getSatelliteCount(); - method @IntRange(from=1, to=206) public int getSvid(@IntRange(from=0) int); - method public boolean hasAlmanacData(@IntRange(from=0) int); - method public boolean hasBasebandCn0DbHz(@IntRange(from=0) int); - method public boolean hasCarrierFrequencyHz(@IntRange(from=0) int); - method public boolean hasEphemerisData(@IntRange(from=0) int); - method public boolean usedInFix(@IntRange(from=0) int); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field public static final int CONSTELLATION_BEIDOU = 5; // 0x5 - field public static final int CONSTELLATION_GALILEO = 6; // 0x6 - field public static final int CONSTELLATION_GLONASS = 3; // 0x3 - field public static final int CONSTELLATION_GPS = 1; // 0x1 - field public static final int CONSTELLATION_IRNSS = 7; // 0x7 - field public static final int CONSTELLATION_QZSS = 4; // 0x4 - field public static final int CONSTELLATION_SBAS = 2; // 0x2 - field public static final int CONSTELLATION_UNKNOWN = 0; // 0x0 - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssStatus.Builder { - ctor public GnssStatus.Builder(); - method @NonNull public android.location.GnssStatus.Builder addSatellite(int, @IntRange(from=1, to=200) int, @FloatRange(from=0, to=63) float, @FloatRange(from=0xffffffa6, to=90) float, @FloatRange(from=0, to=360) float, boolean, boolean, boolean, boolean, @FloatRange(from=0) float, boolean, @FloatRange(from=0, to=63) float); - method @NonNull public android.location.GnssStatus build(); - method @NonNull public android.location.GnssStatus.Builder clearSatellites(); - } - - public abstract static class GnssStatus.Callback { - ctor public GnssStatus.Callback(); - method public void onFirstFix(int); - method public void onSatelliteStatusChanged(@NonNull android.location.GnssStatus); - method public void onStarted(); - method public void onStopped(); - } - - @Deprecated public final class GpsSatellite { - method @Deprecated public float getAzimuth(); - method @Deprecated public float getElevation(); - method @Deprecated public int getPrn(); - method @Deprecated public float getSnr(); - method @Deprecated public boolean hasAlmanac(); - method @Deprecated public boolean hasEphemeris(); - method @Deprecated public boolean usedInFix(); - } - - @Deprecated public final class GpsStatus { - method @Deprecated @NonNull public static android.location.GpsStatus create(@NonNull android.location.GnssStatus, int); - method @Deprecated public int getMaxSatellites(); - method @Deprecated public Iterable getSatellites(); - method @Deprecated public int getTimeToFirstFix(); - field @Deprecated public static final int GPS_EVENT_FIRST_FIX = 3; // 0x3 - field @Deprecated public static final int GPS_EVENT_SATELLITE_STATUS = 4; // 0x4 - field @Deprecated public static final int GPS_EVENT_STARTED = 1; // 0x1 - field @Deprecated public static final int GPS_EVENT_STOPPED = 2; // 0x2 - } - - @Deprecated public static interface GpsStatus.Listener { - method @Deprecated public void onGpsStatusChanged(int); - } - - @Deprecated public static interface GpsStatus.NmeaListener { - method @Deprecated public void onNmeaReceived(long, String); - } - public class Location implements android.os.Parcelable { ctor public Location(@Nullable String); ctor public Location(@NonNull android.location.Location); @@ -20986,219 +20500,6 @@ package android.location { field public static final int FORMAT_SECONDS = 2; // 0x2 } - public interface LocationListener { - method public default void onFlushComplete(int); - method public void onLocationChanged(@NonNull android.location.Location); - method public default void onLocationChanged(@NonNull java.util.List); - method public default void onProviderDisabled(@NonNull String); - method public default void onProviderEnabled(@NonNull String); - method @Deprecated public default void onStatusChanged(String, int, android.os.Bundle); - } - - public class LocationManager { - method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addGpsStatusListener(android.location.GpsStatus.Listener); - method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.GpsStatus.NmeaListener); - method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull android.location.OnNmeaMessageListener, @Nullable android.os.Handler); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean addNmeaListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.OnNmeaMessageListener); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void addProximityAlert(double, double, float, long, @NonNull android.app.PendingIntent); - method public void addTestProvider(@NonNull String, boolean, boolean, boolean, boolean, boolean, boolean, boolean, int, int); - method public void addTestProvider(@NonNull String, @NonNull android.location.provider.ProviderProperties); - method public void addTestProvider(@NonNull String, @NonNull android.location.provider.ProviderProperties, @NonNull java.util.Set); - method @Deprecated public void clearTestProviderEnabled(@NonNull String); - method @Deprecated public void clearTestProviderLocation(@NonNull String); - method @Deprecated public void clearTestProviderStatus(@NonNull String); - method @NonNull public java.util.List getAllProviders(); - method @Deprecated @Nullable public String getBestProvider(@NonNull android.location.Criteria, boolean); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull String, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull String, @NonNull android.location.LocationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); - method @Nullable public java.util.List getGnssAntennaInfos(); - method @NonNull public android.location.GnssCapabilities getGnssCapabilities(); - method @Nullable public String getGnssHardwareModelName(); - method public int getGnssYearOfHardware(); - method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public android.location.GpsStatus getGpsStatus(@Nullable android.location.GpsStatus); - method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.location.Location getLastKnownLocation(@NonNull String); - method @Deprecated @Nullable public android.location.LocationProvider getProvider(@NonNull String); - method @Nullable public android.location.provider.ProviderProperties getProviderProperties(@NonNull String); - method @NonNull public java.util.List getProviders(boolean); - method @Deprecated @NonNull public java.util.List getProviders(@NonNull android.location.Criteria, boolean); - method public boolean hasProvider(@NonNull String); - method public boolean isLocationEnabled(); - method public boolean isProviderEnabled(@NonNull String); - method public boolean registerAntennaInfoListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssAntennaInfo.Listener); - method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback, @Nullable android.os.Handler); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback); - method @Deprecated public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback, @Nullable android.os.Handler); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssNavigationMessageCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssNavigationMessage.Callback); - method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull android.location.GnssStatus.Callback, @Nullable android.os.Handler); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssStatusCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssStatus.Callback); - method @Deprecated public void removeGpsStatusListener(android.location.GpsStatus.Listener); - method @Deprecated public void removeNmeaListener(@NonNull android.location.GpsStatus.NmeaListener); - method public void removeNmeaListener(@NonNull android.location.OnNmeaMessageListener); - method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeProximityAlert(@NonNull android.app.PendingIntent); - method public void removeTestProvider(@NonNull String); - method @RequiresPermission(anyOf={"android.permission.ACCESS_COARSE_LOCATION", "android.permission.ACCESS_FINE_LOCATION"}, apis="..22") public void removeUpdates(@NonNull android.location.LocationListener); - method public void removeUpdates(@NonNull android.app.PendingIntent); - method public void requestFlush(@NonNull String, @NonNull android.location.LocationListener, int); - method public void requestFlush(@NonNull String, @NonNull android.app.PendingIntent, int); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.location.LocationListener, @Nullable android.os.Looper); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, long, float, @NonNull android.app.PendingIntent); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(long, float, @NonNull android.location.Criteria, @NonNull android.app.PendingIntent); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, @NonNull android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener); - method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@NonNull String, @NonNull android.location.LocationRequest, @NonNull android.app.PendingIntent); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.location.LocationListener, @Nullable android.os.Looper); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.location.LocationListener, @Nullable android.os.Looper); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull String, @NonNull android.app.PendingIntent); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestSingleUpdate(@NonNull android.location.Criteria, @NonNull android.app.PendingIntent); - method public boolean sendExtraCommand(@NonNull String, @NonNull String, @Nullable android.os.Bundle); - method public void setTestProviderEnabled(@NonNull String, boolean); - method public void setTestProviderLocation(@NonNull String, @NonNull android.location.Location); - method @Deprecated public void setTestProviderStatus(@NonNull String, int, @Nullable android.os.Bundle, long); - method public void unregisterAntennaInfoListener(@NonNull android.location.GnssAntennaInfo.Listener); - method public void unregisterGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback); - method public void unregisterGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback); - method public void unregisterGnssStatusCallback(@NonNull android.location.GnssStatus.Callback); - field public static final String ACTION_GNSS_CAPABILITIES_CHANGED = "android.location.action.GNSS_CAPABILITIES_CHANGED"; - field public static final String EXTRA_GNSS_CAPABILITIES = "android.location.extra.GNSS_CAPABILITIES"; - field public static final String EXTRA_LOCATION_ENABLED = "android.location.extra.LOCATION_ENABLED"; - field public static final String EXTRA_PROVIDER_ENABLED = "android.location.extra.PROVIDER_ENABLED"; - field public static final String EXTRA_PROVIDER_NAME = "android.location.extra.PROVIDER_NAME"; - field public static final String FUSED_PROVIDER = "fused"; - field public static final String GPS_PROVIDER = "gps"; - field public static final String KEY_FLUSH_COMPLETE = "flushComplete"; - field public static final String KEY_LOCATIONS = "locations"; - field public static final String KEY_LOCATION_CHANGED = "location"; - field public static final String KEY_PROVIDER_ENABLED = "providerEnabled"; - field public static final String KEY_PROXIMITY_ENTERING = "entering"; - field @Deprecated public static final String KEY_STATUS_CHANGED = "status"; - field public static final String MODE_CHANGED_ACTION = "android.location.MODE_CHANGED"; - field public static final String NETWORK_PROVIDER = "network"; - field public static final String PASSIVE_PROVIDER = "passive"; - field public static final String PROVIDERS_CHANGED_ACTION = "android.location.PROVIDERS_CHANGED"; - } - - @Deprecated public class LocationProvider { - method @Deprecated public int getAccuracy(); - method @Deprecated public String getName(); - method @Deprecated public int getPowerRequirement(); - method @Deprecated public boolean hasMonetaryCost(); - method @Deprecated public boolean meetsCriteria(android.location.Criteria); - method @Deprecated public boolean requiresCell(); - method @Deprecated public boolean requiresNetwork(); - method @Deprecated public boolean requiresSatellite(); - method @Deprecated public boolean supportsAltitude(); - method @Deprecated public boolean supportsBearing(); - method @Deprecated public boolean supportsSpeed(); - field @Deprecated public static final int AVAILABLE = 2; // 0x2 - field @Deprecated public static final int OUT_OF_SERVICE = 0; // 0x0 - field @Deprecated public static final int TEMPORARILY_UNAVAILABLE = 1; // 0x1 - } - - public final class LocationRequest implements android.os.Parcelable { - method public int describeContents(); - method @IntRange(from=1) public long getDurationMillis(); - method @IntRange(from=0) public long getIntervalMillis(); - method @IntRange(from=0) public long getMaxUpdateDelayMillis(); - method @IntRange(from=1, to=java.lang.Integer.MAX_VALUE) public int getMaxUpdates(); - method @FloatRange(from=0, to=java.lang.Float.MAX_VALUE) public float getMinUpdateDistanceMeters(); - method @IntRange(from=0) public long getMinUpdateIntervalMillis(); - method public int getQuality(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - field public static final long PASSIVE_INTERVAL = 9223372036854775807L; // 0x7fffffffffffffffL - field public static final int QUALITY_BALANCED_POWER_ACCURACY = 102; // 0x66 - field public static final int QUALITY_HIGH_ACCURACY = 100; // 0x64 - field public static final int QUALITY_LOW_POWER = 104; // 0x68 - } - - public static final class LocationRequest.Builder { - ctor public LocationRequest.Builder(long); - ctor public LocationRequest.Builder(@NonNull android.location.LocationRequest); - method @NonNull public android.location.LocationRequest build(); - method @NonNull public android.location.LocationRequest.Builder clearMinUpdateIntervalMillis(); - method @NonNull public android.location.LocationRequest.Builder setDurationMillis(@IntRange(from=1) long); - method @NonNull public android.location.LocationRequest.Builder setIntervalMillis(@IntRange(from=0) long); - method @NonNull public android.location.LocationRequest.Builder setMaxUpdateDelayMillis(@IntRange(from=0) long); - method @NonNull public android.location.LocationRequest.Builder setMaxUpdates(@IntRange(from=1, to=java.lang.Integer.MAX_VALUE) int); - method @NonNull public android.location.LocationRequest.Builder setMinUpdateDistanceMeters(@FloatRange(from=0, to=java.lang.Float.MAX_VALUE) float); - method @NonNull public android.location.LocationRequest.Builder setMinUpdateIntervalMillis(@IntRange(from=0) long); - method @NonNull public android.location.LocationRequest.Builder setQuality(int); - } - - public interface OnNmeaMessageListener { - method public void onNmeaMessage(String, long); - } - - public abstract class SettingInjectorService extends android.app.Service { - ctor public SettingInjectorService(String); - method public final android.os.IBinder onBind(android.content.Intent); - method protected abstract boolean onGetEnabled(); - method protected abstract String onGetSummary(); - method public final void onStart(android.content.Intent, int); - method public final int onStartCommand(android.content.Intent, int, int); - method public static final void refreshSettings(@NonNull android.content.Context); - field public static final String ACTION_INJECTED_SETTING_CHANGED = "android.location.InjectedSettingChanged"; - field public static final String ACTION_SERVICE_INTENT = "android.location.SettingInjectorService"; - field public static final String ATTRIBUTES_NAME = "injected-location-setting"; - field public static final String META_DATA_NAME = "android.location.SettingInjectorService"; - } - -} - -package android.location.altitude { - - public final class AltitudeConverter { - ctor public AltitudeConverter(); - method @WorkerThread public void addMslAltitudeToLocation(@NonNull android.content.Context, @NonNull android.location.Location) throws java.io.IOException; - } - -} - -package android.location.provider { - - public final class ProviderProperties implements android.os.Parcelable { - method public int describeContents(); - method public int getAccuracy(); - method public int getPowerUsage(); - method public boolean hasAltitudeSupport(); - method public boolean hasBearingSupport(); - method public boolean hasCellRequirement(); - method public boolean hasMonetaryCost(); - method public boolean hasNetworkRequirement(); - method public boolean hasSatelliteRequirement(); - method public boolean hasSpeedSupport(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field public static final int ACCURACY_COARSE = 2; // 0x2 - field public static final int ACCURACY_FINE = 1; // 0x1 - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - field public static final int POWER_USAGE_HIGH = 3; // 0x3 - field public static final int POWER_USAGE_LOW = 1; // 0x1 - field public static final int POWER_USAGE_MEDIUM = 2; // 0x2 - } - - public static final class ProviderProperties.Builder { - ctor public ProviderProperties.Builder(); - ctor public ProviderProperties.Builder(@NonNull android.location.provider.ProviderProperties); - method @NonNull public android.location.provider.ProviderProperties build(); - method @NonNull public android.location.provider.ProviderProperties.Builder setAccuracy(int); - method @NonNull public android.location.provider.ProviderProperties.Builder setHasAltitudeSupport(boolean); - method @NonNull public android.location.provider.ProviderProperties.Builder setHasBearingSupport(boolean); - method @NonNull public android.location.provider.ProviderProperties.Builder setHasCellRequirement(boolean); - method @NonNull public android.location.provider.ProviderProperties.Builder setHasMonetaryCost(boolean); - method @NonNull public android.location.provider.ProviderProperties.Builder setHasNetworkRequirement(boolean); - method @NonNull public android.location.provider.ProviderProperties.Builder setHasSatelliteRequirement(boolean); - method @NonNull public android.location.provider.ProviderProperties.Builder setHasSpeedSupport(boolean); - method @NonNull public android.location.provider.ProviderProperties.Builder setPowerUsage(int); - } - } package android.media { @@ -24650,10 +23951,12 @@ package android.media { method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String); method @NonNull public java.util.List getControllers(); method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context); + method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") @Nullable public android.media.RouteListingPreference getRouteListingPreference(); method @NonNull public java.util.List getRoutes(); method @NonNull public android.media.MediaRouter2.RoutingController getSystemController(); method public void registerControllerCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.ControllerCallback); method public void registerRouteCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteCallback, @NonNull android.media.RouteDiscoveryPreference); + method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void registerRouteListingPreferenceCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.RouteListingPreferenceCallback); method public void registerTransferCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.MediaRouter2.TransferCallback); method public void setOnGetControllerHintsListener(@Nullable android.media.MediaRouter2.OnGetControllerHintsListener); method public void setRouteListingPreference(@Nullable android.media.RouteListingPreference); @@ -24662,6 +23965,7 @@ package android.media { method public void transferTo(@NonNull android.media.MediaRoute2Info); method public void unregisterControllerCallback(@NonNull android.media.MediaRouter2.ControllerCallback); method public void unregisterRouteCallback(@NonNull android.media.MediaRouter2.RouteCallback); + method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void unregisterRouteListingPreferenceCallback(@NonNull android.media.MediaRouter2.RouteListingPreferenceCallback); method public void unregisterTransferCallback(@NonNull android.media.MediaRouter2.TransferCallback); } @@ -24682,6 +23986,11 @@ package android.media { method public void onRoutesUpdated(@NonNull java.util.List); } + @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public abstract static class MediaRouter2.RouteListingPreferenceCallback { + ctor @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public MediaRouter2.RouteListingPreferenceCallback(); + method @FlaggedApi("com.android.media.flags.enable_rlp_callbacks_in_media_router2") public void onRouteListingPreferenceChanged(@Nullable android.media.RouteListingPreference); + } + public class MediaRouter2.RoutingController { method public void deselectRoute(@NonNull android.media.MediaRoute2Info); method @Nullable public android.os.Bundle getControlHints(); @@ -32976,6 +32285,7 @@ package android.os { method public static long getNativeHeapFreeSize(); method public static long getNativeHeapSize(); method public static long getPss(); + method @FlaggedApi("android.os.remove_app_profiler_pss_collection") public static long getRss(); method public static String getRuntimeStat(String); method public static java.util.Map getRuntimeStats(); method @Deprecated public static int getThreadAllocCount(); @@ -34116,6 +33426,7 @@ package android.os { field public static final String DISALLOW_MICROPHONE_TOGGLE = "disallow_microphone_toggle"; field public static final String DISALLOW_MODIFY_ACCOUNTS = "no_modify_accounts"; field public static final String DISALLOW_MOUNT_PHYSICAL_MEDIA = "no_physical_media"; + field public static final String DISALLOW_NEAR_FIELD_COMMUNICATION_RADIO = "no_near_field_communication_radio"; field public static final String DISALLOW_NETWORK_RESET = "no_network_reset"; field public static final String DISALLOW_OUTGOING_BEAM = "no_outgoing_beam"; field public static final String DISALLOW_OUTGOING_CALLS = "no_outgoing_calls"; @@ -39346,8 +38657,10 @@ package android.security { } public final class FileIntegrityManager { + method @FlaggedApi("android.security.fsverity_api") @Nullable public byte[] getFsVerityDigest(@NonNull java.io.File) throws java.io.IOException; method public boolean isApkVeritySupported(); - method @RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES, android.Manifest.permission.REQUEST_INSTALL_PACKAGES}) public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate) throws java.security.cert.CertificateEncodingException; + method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES, android.Manifest.permission.REQUEST_INSTALL_PACKAGES}) public boolean isAppSourceCertificateTrusted(@NonNull java.security.cert.X509Certificate) throws java.security.cert.CertificateEncodingException; + method @FlaggedApi("android.security.fsverity_api") public void setupFsVerity(@NonNull java.io.File) throws java.io.IOException; } public final class KeyChain { @@ -42266,6 +41579,7 @@ package android.telecom { field public static final int PROPERTY_HIGH_DEF_AUDIO = 16; // 0x10 field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 8192; // 0x2000 field public static final int PROPERTY_IS_EXTERNAL_CALL = 64; // 0x40 + field @FlaggedApi("com.android.server.telecom.flags.voip_app_actions_support") public static final int PROPERTY_IS_TRANSACTIONAL = 32768; // 0x8000 field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 2048; // 0x800 field public static final int PROPERTY_RTT = 1024; // 0x400 field public static final int PROPERTY_SELF_MANAGED = 256; // 0x100 @@ -44882,6 +44196,7 @@ package android.telephony { field public static final int OUT_OF_NETWORK = 11; // 0xb field public static final int OUT_OF_SERVICE = 18; // 0x12 field public static final int POWER_OFF = 17; // 0x11 + field public static final int SATELLITE_ENABLED = 82; // 0x52 field public static final int SERVER_ERROR = 12; // 0xc field public static final int SERVER_UNREACHABLE = 9; // 0x9 field public static final int TIMED_OUT = 13; // 0xd @@ -46006,6 +45321,7 @@ package android.telephony { field public static final int ERI_FLASH = 2; // 0x2 field public static final int ERI_OFF = 1; // 0x1 field public static final int ERI_ON = 0; // 0x0 + field public static final String EVENT_DISPLAY_SOS_MESSAGE = "android.telephony.event.DISPLAY_SOS_MESSAGE"; field public static final String EXTRA_ACTIVE_SIM_SUPPORTED_COUNT = "android.telephony.extra.ACTIVE_SIM_SUPPORTED_COUNT"; field public static final String EXTRA_APN_PROTOCOL = "android.telephony.extra.APN_PROTOCOL"; field public static final String EXTRA_APN_TYPE = "android.telephony.extra.APN_TYPE"; @@ -47271,9 +46587,9 @@ package android.text { } public class BoringLayout extends android.text.Layout implements android.text.TextUtils.EllipsizeCallback { - ctor @Deprecated public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean); - ctor @Deprecated public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int); - ctor @Deprecated public BoringLayout(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, float, float, @NonNull android.text.BoringLayout.Metrics, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int, boolean); + ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean); + ctor public BoringLayout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int); + ctor public BoringLayout(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, float, float, @NonNull android.text.BoringLayout.Metrics, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int, boolean); method public void ellipsized(int, int); method public int getBottomPadding(); method public int getEllipsisCount(int); @@ -47286,12 +46602,12 @@ package android.text { method public int getLineTop(int); method public int getParagraphDirection(int); method public int getTopPadding(); - method @Deprecated public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint); - method @Deprecated public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint, android.text.BoringLayout.Metrics); - method @Deprecated @Nullable public static android.text.BoringLayout.Metrics isBoring(@NonNull CharSequence, @NonNull android.text.TextPaint, @NonNull android.text.TextDirectionHeuristic, boolean, @Nullable android.text.BoringLayout.Metrics); - method @Deprecated public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean); - method @Deprecated public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int); - method @Deprecated @NonNull public static android.text.BoringLayout make(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @NonNull android.text.BoringLayout.Metrics, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int, boolean); + method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint); + method public static android.text.BoringLayout.Metrics isBoring(CharSequence, android.text.TextPaint, android.text.BoringLayout.Metrics); + method @Nullable public static android.text.BoringLayout.Metrics isBoring(@NonNull CharSequence, @NonNull android.text.TextPaint, @NonNull android.text.TextDirectionHeuristic, boolean, @Nullable android.text.BoringLayout.Metrics); + method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean); + method public static android.text.BoringLayout make(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int); + method @NonNull public static android.text.BoringLayout make(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @NonNull android.text.BoringLayout.Metrics, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int, boolean); method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean); method @NonNull public android.text.BoringLayout replaceOrMake(@NonNull CharSequence, @NonNull android.text.TextPaint, @IntRange(from=0) int, @NonNull android.text.Layout.Alignment, @NonNull android.text.BoringLayout.Metrics, boolean, @Nullable android.text.TextUtils.TruncateAt, @IntRange(from=0) int, boolean); method public android.text.BoringLayout replaceOrMake(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float, android.text.BoringLayout.Metrics, boolean, android.text.TextUtils.TruncateAt, int); @@ -47299,6 +46615,7 @@ package android.text { public static class BoringLayout.Metrics extends android.graphics.Paint.FontMetricsInt { ctor public BoringLayout.Metrics(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.graphics.RectF getDrawingBoundingBox(); field public int width; } @@ -47340,6 +46657,7 @@ package android.text { method @NonNull public android.text.DynamicLayout.Builder setLineBreakConfig(@NonNull android.graphics.text.LineBreakConfig); method @NonNull public android.text.DynamicLayout.Builder setLineSpacing(float, @FloatRange(from=0.0) float); method @NonNull public android.text.DynamicLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic); + method @NonNull public android.text.DynamicLayout.Builder setUseBoundsForWidth(boolean); method @NonNull public android.text.DynamicLayout.Builder setUseLineSpacingFromFallbacks(boolean); } @@ -47482,6 +46800,7 @@ package android.text { public abstract class Layout { ctor protected Layout(CharSequence, android.text.TextPaint, int, android.text.Layout.Alignment, float, float); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.graphics.RectF computeDrawingBoundingBox(); method public void draw(android.graphics.Canvas); method public void draw(android.graphics.Canvas, android.graphics.Path, android.graphics.Paint, int); method public void draw(@NonNull android.graphics.Canvas, @Nullable java.util.List, @Nullable java.util.List, @Nullable android.graphics.Path, @Nullable android.graphics.Paint, int); @@ -47490,24 +46809,24 @@ package android.text { method public void fillCharacterBounds(@IntRange(from=0) int, @IntRange(from=0) int, @NonNull float[], @IntRange(from=0) int); method @NonNull public final android.text.Layout.Alignment getAlignment(); method public abstract int getBottomPadding(); - method public final int getBreakStrategy(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public final int getBreakStrategy(); method public void getCursorPath(int, android.graphics.Path, CharSequence); method public static float getDesiredWidth(CharSequence, android.text.TextPaint); method public static float getDesiredWidth(CharSequence, int, int, android.text.TextPaint); method public abstract int getEllipsisCount(int); method public abstract int getEllipsisStart(int); - method @Nullable public final android.text.TextUtils.TruncateAt getEllipsize(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @Nullable public final android.text.TextUtils.TruncateAt getEllipsize(); method @IntRange(from=0) public int getEllipsizedWidth(); method public int getHeight(); - method public final int getHyphenationFrequency(); - method public final int getJustificationMode(); - method @Nullable public final int[] getLeftIndents(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public final int getHyphenationFrequency(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public final int getJustificationMode(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @Nullable public final int[] getLeftIndents(); method public final int getLineAscent(int); method public final int getLineBaseline(int); method public final int getLineBottom(int); method public int getLineBottom(int, boolean); method public int getLineBounds(int, android.graphics.Rect); - method @NonNull public android.graphics.text.LineBreakConfig getLineBreakConfig(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.graphics.text.LineBreakConfig getLineBreakConfig(); method public abstract boolean getLineContainsTab(int); method public abstract int getLineCount(); method public abstract int getLineDescent(int); @@ -47518,13 +46837,13 @@ package android.text { method public float getLineLeft(int); method public float getLineMax(int); method public float getLineRight(int); - method public final float getLineSpacingAmount(); - method public final float getLineSpacingMultiplier(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public final float getLineSpacingAmount(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public final float getLineSpacingMultiplier(); method public abstract int getLineStart(int); method public abstract int getLineTop(int); method public int getLineVisibleEnd(int); method public float getLineWidth(int); - method @IntRange(from=1) public final int getMaxLines(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @IntRange(from=1) public final int getMaxLines(); method public int getOffsetForHorizontal(int, float); method public int getOffsetToLeftOf(int); method public int getOffsetToRightOf(int); @@ -47535,18 +46854,19 @@ package android.text { method public final int getParagraphRight(int); method public float getPrimaryHorizontal(int); method @Nullable public int[] getRangeForRect(@NonNull android.graphics.RectF, @NonNull android.text.SegmentFinder, @NonNull android.text.Layout.TextInclusionStrategy); - method @Nullable public final int[] getRightIndents(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @Nullable public final int[] getRightIndents(); method public float getSecondaryHorizontal(int); method public void getSelectionPath(int, int, android.graphics.Path); method public final float getSpacingAdd(); method public final float getSpacingMultiplier(); - method @NonNull public final CharSequence getText(); - method @NonNull public final android.text.TextDirectionHeuristic getTextDirectionHeuristic(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public final CharSequence getText(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public final android.text.TextDirectionHeuristic getTextDirectionHeuristic(); method public abstract int getTopPadding(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public boolean getUseBoundsForWidth(); method @IntRange(from=0) public final int getWidth(); method public final void increaseWidthTo(int); method public boolean isFallbackLineSpacingEnabled(); - method public final boolean isIncludeFontPadding(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public final boolean isFontPaddingIncluded(); method public boolean isRtlCharAt(int); method protected final boolean isSpanned(); field public static final int BREAK_STRATEGY_BALANCED = 2; // 0x2 @@ -47574,7 +46894,7 @@ package android.text { enum_constant public static final android.text.Layout.Alignment ALIGN_OPPOSITE; } - public static final class Layout.Builder { + @FlaggedApi("com.android.text.flags.use_bounds_for_width") public static final class Layout.Builder { ctor public Layout.Builder(@NonNull CharSequence, @IntRange(from=0) int, @IntRange(from=0) int, @NonNull android.text.TextPaint, @IntRange(from=0) int); method @NonNull public android.text.Layout build(); method @NonNull public android.text.Layout.Builder setAlignment(@NonNull android.text.Layout.Alignment); @@ -47582,16 +46902,17 @@ package android.text { method @NonNull public android.text.Layout.Builder setEllipsize(@Nullable android.text.TextUtils.TruncateAt); method @NonNull public android.text.Layout.Builder setEllipsizedWidth(@IntRange(from=0) int); method @NonNull public android.text.Layout.Builder setFallbackLineSpacingEnabled(boolean); + method @NonNull public android.text.Layout.Builder setFontPaddingIncluded(boolean); method @NonNull public android.text.Layout.Builder setHyphenationFrequency(int); - method @NonNull public android.text.Layout.Builder setIncludeFontPadding(boolean); method @NonNull public android.text.Layout.Builder setJustificationMode(int); method @NonNull public android.text.Layout.Builder setLeftIndents(@Nullable int[]); method @NonNull public android.text.Layout.Builder setLineBreakConfig(@NonNull android.graphics.text.LineBreakConfig); method @NonNull public android.text.Layout.Builder setLineSpacingAmount(float); - method @NonNull public android.text.Layout.Builder setLineSpacingMultiplier(float); + method @NonNull public android.text.Layout.Builder setLineSpacingMultiplier(@FloatRange(from=0) float); method @NonNull public android.text.Layout.Builder setMaxLines(@IntRange(from=1) int); method @NonNull public android.text.Layout.Builder setRightIndents(@Nullable int[]); method @NonNull public android.text.Layout.Builder setTextDirectionHeuristic(@NonNull android.text.TextDirectionHeuristic); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") @NonNull public android.text.Layout.Builder setUseBoundsForWidth(boolean); } public static class Layout.Directions { @@ -47860,6 +47181,7 @@ package android.text { method @NonNull public android.text.StaticLayout.Builder setMaxLines(@IntRange(from=0) int); method public android.text.StaticLayout.Builder setText(CharSequence); method @NonNull public android.text.StaticLayout.Builder setTextDirection(@NonNull android.text.TextDirectionHeuristic); + method @NonNull public android.text.StaticLayout.Builder setUseBoundsForWidth(boolean); method @NonNull public android.text.StaticLayout.Builder setUseLineSpacingFromFallbacks(boolean); } @@ -48567,11 +47889,15 @@ package android.text.style { method public void writeToParcel(@NonNull android.os.Parcel, int); } - public class LineBreakConfigSpan { + @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public class LineBreakConfigSpan { ctor public LineBreakConfigSpan(@NonNull android.graphics.text.LineBreakConfig); method @NonNull public android.graphics.text.LineBreakConfig getLineBreakConfig(); } + @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public static final class LineBreakConfigSpan.NoHyphenationSpan extends android.text.style.LineBreakConfigSpan { + ctor @FlaggedApi("com.android.text.flags.no_break_no_hyphenation_span") public LineBreakConfigSpan.NoHyphenationSpan(); + } + public interface LineHeightSpan extends android.text.style.ParagraphStyle android.text.style.WrapTogetherSpan { method public void chooseHeight(CharSequence, int, int, int, int, android.graphics.Paint.FontMetricsInt); } @@ -50732,6 +50058,13 @@ package android.view { field public static final int VIRTUAL_KEY_RELEASE = 8; // 0x8 } + @FlaggedApi("android.view.flags.scroll_feedback_api") public class HapticScrollFeedbackProvider implements android.view.ScrollFeedbackProvider { + ctor public HapticScrollFeedbackProvider(@NonNull android.view.View); + method public void onScrollLimit(int, int, int, boolean); + method public void onScrollProgress(int, int, int, int); + method public void onSnapToItem(int, int, int); + } + public class InflateException extends java.lang.RuntimeException { ctor public InflateException(); ctor public InflateException(String, Throwable); @@ -51897,6 +51230,12 @@ package android.view { method @UiThread public void updatePositionInWindow(); } + @FlaggedApi("android.view.flags.scroll_feedback_api") public interface ScrollFeedbackProvider { + method public void onScrollLimit(int, int, int, boolean); + method public void onScrollProgress(int, int, int, int); + method public void onSnapToItem(int, int, int); + } + public class SearchEvent { ctor public SearchEvent(android.view.InputDevice); method public android.view.InputDevice getInputDevice(); @@ -53174,6 +52513,7 @@ package android.view { method @Deprecated public static int getEdgeSlop(); method @Deprecated public static int getFadingEdgeLength(); method @Deprecated public static long getGlobalActionKeyTimeout(); + method @FlaggedApi("android.view.flags.scroll_feedback_api") public int getHapticScrollFeedbackTickInterval(int, int, int); method public static int getJumpTapTimeout(); method public static int getKeyRepeatDelay(); method public static int getKeyRepeatTimeout(); @@ -53213,6 +52553,7 @@ package android.view { method @Deprecated public static int getWindowTouchSlop(); method public static long getZoomControlsTimeout(); method public boolean hasPermanentMenuKey(); + method @FlaggedApi("android.view.flags.scroll_feedback_api") public boolean isHapticScrollFeedbackEnabled(int, int, int); method public boolean shouldShowMenuShortcutsWhenKeyboardPresent(); } @@ -60545,6 +59886,7 @@ package android.widget { method public final android.text.method.TransformationMethod getTransformationMethod(); method public android.graphics.Typeface getTypeface(); method public android.text.style.URLSpan[] getUrls(); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public boolean getUseBoundsForWidth(); method public boolean hasSelection(); method public boolean isAllCaps(); method public boolean isCursorVisible(); @@ -60687,6 +60029,7 @@ package android.widget { method public final void setTransformationMethod(android.text.method.TransformationMethod); method public void setTypeface(@Nullable android.graphics.Typeface, int); method public void setTypeface(@Nullable android.graphics.Typeface); + method @FlaggedApi("com.android.text.flags.use_bounds_for_width") public void setUseBoundsForWidth(boolean); method public void setWidth(int); field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0 field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1 diff --git a/core/api/lint-baseline.txt b/core/api/lint-baseline.txt new file mode 100644 index 0000000000000000000000000000000000000000..afb10f5f234acba7e301e748ec90fbd485fb2314 --- /dev/null +++ b/core/api/lint-baseline.txt @@ -0,0 +1,457 @@ +// Baseline format: 1.0 +UnflaggedApi: android.accessibilityservice.AccessibilityService#OVERLAY_RESULT_INTERNAL_ERROR: + New API must be flagged with @FlaggedApi: field android.accessibilityservice.AccessibilityService.OVERLAY_RESULT_INTERNAL_ERROR +UnflaggedApi: android.accessibilityservice.AccessibilityService#OVERLAY_RESULT_INVALID: + New API must be flagged with @FlaggedApi: field android.accessibilityservice.AccessibilityService.OVERLAY_RESULT_INVALID +UnflaggedApi: android.accessibilityservice.AccessibilityService#OVERLAY_RESULT_SUCCESS: + New API must be flagged with @FlaggedApi: field android.accessibilityservice.AccessibilityService.OVERLAY_RESULT_SUCCESS +UnflaggedApi: android.accessibilityservice.AccessibilityService#attachAccessibilityOverlayToDisplay(int, android.view.SurfaceControl, java.util.concurrent.Executor, java.util.function.IntConsumer): + New API must be flagged with @FlaggedApi: method android.accessibilityservice.AccessibilityService.attachAccessibilityOverlayToDisplay(int,android.view.SurfaceControl,java.util.concurrent.Executor,java.util.function.IntConsumer) +UnflaggedApi: android.accessibilityservice.AccessibilityService#attachAccessibilityOverlayToWindow(int, android.view.SurfaceControl, java.util.concurrent.Executor, java.util.function.IntConsumer): + New API must be flagged with @FlaggedApi: method android.accessibilityservice.AccessibilityService.attachAccessibilityOverlayToWindow(int,android.view.SurfaceControl,java.util.concurrent.Executor,java.util.function.IntConsumer) +UnflaggedApi: android.app.Activity#onRequestPermissionsResult(int, String[], int[], int): + New API must be flagged with @FlaggedApi: method android.app.Activity.onRequestPermissionsResult(int,String[],int[],int) +UnflaggedApi: android.app.Activity#requestPermissions(String[], int, int): + New API must be flagged with @FlaggedApi: method android.app.Activity.requestPermissions(String[],int,int) +UnflaggedApi: android.app.Activity#setAllowCrossUidActivitySwitchFromBelow(boolean): + New API must be flagged with @FlaggedApi: method android.app.Activity.setAllowCrossUidActivitySwitchFromBelow(boolean) +UnflaggedApi: android.app.Activity#shouldShowRequestPermissionRationale(String, int): + New API must be flagged with @FlaggedApi: method android.app.Activity.shouldShowRequestPermissionRationale(String,int) +UnflaggedApi: android.app.ActivityManager#addStartInfoTimestamp(int, long): + New API must be flagged with @FlaggedApi: method android.app.ActivityManager.addStartInfoTimestamp(int,long) +UnflaggedApi: android.app.ActivityManager#clearApplicationStartInfoCompletionListener(): + New API must be flagged with @FlaggedApi: method android.app.ActivityManager.clearApplicationStartInfoCompletionListener() +UnflaggedApi: android.app.ActivityManager#getHistoricalProcessStartReasons(int): + New API must be flagged with @FlaggedApi: method android.app.ActivityManager.getHistoricalProcessStartReasons(int) +UnflaggedApi: android.app.ActivityManager#setApplicationStartInfoCompletionListener(java.util.concurrent.Executor, java.util.function.Consumer): + New API must be flagged with @FlaggedApi: method android.app.ActivityManager.setApplicationStartInfoCompletionListener(java.util.concurrent.Executor,java.util.function.Consumer) +UnflaggedApi: android.app.ApplicationStartInfo: + New API must be flagged with @FlaggedApi: class android.app.ApplicationStartInfo +UnflaggedApi: android.app.ApplicationStartInfo#CREATOR: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.CREATOR +UnflaggedApi: android.app.ApplicationStartInfo#LAUNCH_MODE_SINGLE_INSTANCE: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.LAUNCH_MODE_SINGLE_INSTANCE +UnflaggedApi: android.app.ApplicationStartInfo#LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.LAUNCH_MODE_SINGLE_INSTANCE_PER_TASK +UnflaggedApi: android.app.ApplicationStartInfo#LAUNCH_MODE_SINGLE_TASK: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.LAUNCH_MODE_SINGLE_TASK +UnflaggedApi: android.app.ApplicationStartInfo#LAUNCH_MODE_SINGLE_TOP: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.LAUNCH_MODE_SINGLE_TOP +UnflaggedApi: android.app.ApplicationStartInfo#LAUNCH_MODE_STANDARD: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.LAUNCH_MODE_STANDARD +UnflaggedApi: android.app.ApplicationStartInfo#STARTUP_STATE_ERROR: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.STARTUP_STATE_ERROR +UnflaggedApi: android.app.ApplicationStartInfo#STARTUP_STATE_FIRST_FRAME_DRAWN: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.STARTUP_STATE_FIRST_FRAME_DRAWN +UnflaggedApi: android.app.ApplicationStartInfo#STARTUP_STATE_STARTED: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.STARTUP_STATE_STARTED +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_ALARM: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_ALARM +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_BACKUP: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_BACKUP +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_BOOT_COMPLETE: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_BOOT_COMPLETE +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_BROADCAST: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_BROADCAST +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_CONTENT_PROVIDER: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_CONTENT_PROVIDER +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_JOB: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_JOB +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_LAUNCHER: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_LAUNCHER +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_LAUNCHER_RECENTS: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_LAUNCHER_RECENTS +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_OTHER: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_OTHER +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_PUSH: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_PUSH +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_SERVICE: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_SERVICE +UnflaggedApi: android.app.ApplicationStartInfo#START_REASON_START_ACTIVITY: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_REASON_START_ACTIVITY +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_APPLICATION_ONCREATE: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_APPLICATION_ONCREATE +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_BIND_APPLICATION: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_BIND_APPLICATION +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_FIRST_FRAME: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_FIRST_FRAME +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_FORK: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_FORK +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_FULLY_DRAWN: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_FULLY_DRAWN +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_INITIAL_RENDERTHREAD_FRAME: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_INITIAL_RENDERTHREAD_FRAME +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_LAUNCH: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_LAUNCH +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_RESERVED_RANGE_DEVELOPER: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_RESERVED_RANGE_DEVELOPER +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_RESERVED_RANGE_DEVELOPER_START: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_RESERVED_RANGE_DEVELOPER_START +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_RESERVED_RANGE_SYSTEM: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_RESERVED_RANGE_SYSTEM +UnflaggedApi: android.app.ApplicationStartInfo#START_TIMESTAMP_SURFACEFLINGER_COMPOSITION_COMPLETE: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TIMESTAMP_SURFACEFLINGER_COMPOSITION_COMPLETE +UnflaggedApi: android.app.ApplicationStartInfo#START_TYPE_COLD: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TYPE_COLD +UnflaggedApi: android.app.ApplicationStartInfo#START_TYPE_HOT: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TYPE_HOT +UnflaggedApi: android.app.ApplicationStartInfo#START_TYPE_WARM: + New API must be flagged with @FlaggedApi: field android.app.ApplicationStartInfo.START_TYPE_WARM +UnflaggedApi: android.app.ApplicationStartInfo#describeContents(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.describeContents() +UnflaggedApi: android.app.ApplicationStartInfo#getDefiningUid(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getDefiningUid() +UnflaggedApi: android.app.ApplicationStartInfo#getIntent(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getIntent() +UnflaggedApi: android.app.ApplicationStartInfo#getLaunchMode(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getLaunchMode() +UnflaggedApi: android.app.ApplicationStartInfo#getPackageUid(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getPackageUid() +UnflaggedApi: android.app.ApplicationStartInfo#getPid(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getPid() +UnflaggedApi: android.app.ApplicationStartInfo#getProcessName(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getProcessName() +UnflaggedApi: android.app.ApplicationStartInfo#getRealUid(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getRealUid() +UnflaggedApi: android.app.ApplicationStartInfo#getReason(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getReason() +UnflaggedApi: android.app.ApplicationStartInfo#getStartType(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getStartType() +UnflaggedApi: android.app.ApplicationStartInfo#getStartupState(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getStartupState() +UnflaggedApi: android.app.ApplicationStartInfo#getStartupTimestamps(): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.getStartupTimestamps() +UnflaggedApi: android.app.ApplicationStartInfo#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.app.ApplicationStartInfo.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.app.Notification.TvExtender: + New API must be flagged with @FlaggedApi: class android.app.Notification.TvExtender +UnflaggedApi: android.app.Notification.TvExtender#TvExtender(): + New API must be flagged with @FlaggedApi: constructor android.app.Notification.TvExtender() +UnflaggedApi: android.app.Notification.TvExtender#TvExtender(android.app.Notification): + New API must be flagged with @FlaggedApi: constructor android.app.Notification.TvExtender(android.app.Notification) +UnflaggedApi: android.app.Notification.TvExtender#extend(android.app.Notification.Builder): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.extend(android.app.Notification.Builder) +UnflaggedApi: android.app.Notification.TvExtender#getChannelId(): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.getChannelId() +UnflaggedApi: android.app.Notification.TvExtender#getContentIntent(): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.getContentIntent() +UnflaggedApi: android.app.Notification.TvExtender#getDeleteIntent(): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.getDeleteIntent() +UnflaggedApi: android.app.Notification.TvExtender#isAvailableOnTv(): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.isAvailableOnTv() +UnflaggedApi: android.app.Notification.TvExtender#isSuppressShowOverApps(): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.isSuppressShowOverApps() +UnflaggedApi: android.app.Notification.TvExtender#setChannelId(String): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.setChannelId(String) +UnflaggedApi: android.app.Notification.TvExtender#setContentIntent(android.app.PendingIntent): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.setContentIntent(android.app.PendingIntent) +UnflaggedApi: android.app.Notification.TvExtender#setDeleteIntent(android.app.PendingIntent): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.setDeleteIntent(android.app.PendingIntent) +UnflaggedApi: android.app.Notification.TvExtender#setSuppressShowOverApps(boolean): + New API must be flagged with @FlaggedApi: method android.app.Notification.TvExtender.setSuppressShowOverApps(boolean) +UnflaggedApi: android.companion.AssociationInfo#getTag(): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.getTag() +UnflaggedApi: android.companion.CompanionDeviceManager#clearAssociationTag(int): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.clearAssociationTag(int) +UnflaggedApi: android.companion.CompanionDeviceManager#setAssociationTag(int, String): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.setAssociationTag(int,String) +UnflaggedApi: android.companion.CompanionDeviceService#DEVICE_EVENT_BLE_APPEARED: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceService.DEVICE_EVENT_BLE_APPEARED +UnflaggedApi: android.companion.CompanionDeviceService#DEVICE_EVENT_BLE_DISAPPEARED: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceService.DEVICE_EVENT_BLE_DISAPPEARED +UnflaggedApi: android.companion.CompanionDeviceService#DEVICE_EVENT_BT_CONNECTED: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceService.DEVICE_EVENT_BT_CONNECTED +UnflaggedApi: android.companion.CompanionDeviceService#DEVICE_EVENT_BT_DISCONNECTED: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceService.DEVICE_EVENT_BT_DISCONNECTED +UnflaggedApi: android.companion.CompanionDeviceService#DEVICE_EVENT_SELF_MANAGED_APPEARED: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceService.DEVICE_EVENT_SELF_MANAGED_APPEARED +UnflaggedApi: android.companion.CompanionDeviceService#DEVICE_EVENT_SELF_MANAGED_DISAPPEARED: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceService.DEVICE_EVENT_SELF_MANAGED_DISAPPEARED +UnflaggedApi: android.companion.CompanionDeviceService#onDeviceEvent(android.companion.AssociationInfo, int): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceService.onDeviceEvent(android.companion.AssociationInfo,int) +UnflaggedApi: android.companion.virtual.VirtualDevice#getPersistentDeviceId(): + New API must be flagged with @FlaggedApi: method android.companion.virtual.VirtualDevice.getPersistentDeviceId() +UnflaggedApi: android.companion.virtual.VirtualDeviceManager.VirtualDeviceListener#onVirtualDeviceClosed(int): + New API must be flagged with @FlaggedApi: method android.companion.virtual.VirtualDeviceManager.VirtualDeviceListener.onVirtualDeviceClosed(int) +UnflaggedApi: android.companion.virtual.VirtualDeviceManager.VirtualDeviceListener#onVirtualDeviceCreated(int): + New API must be flagged with @FlaggedApi: method android.companion.virtual.VirtualDeviceManager.VirtualDeviceListener.onVirtualDeviceCreated(int) +UnflaggedApi: android.content.AttributionSource#getDeviceId(): + New API must be flagged with @FlaggedApi: method android.content.AttributionSource.getDeviceId() +UnflaggedApi: android.content.AttributionSource.Builder#setDeviceId(int): + New API must be flagged with @FlaggedApi: method android.content.AttributionSource.Builder.setDeviceId(int) +UnflaggedApi: android.content.AttributionSource.Builder#setNextAttributionSource(android.content.AttributionSource): + New API must be flagged with @FlaggedApi: method android.content.AttributionSource.Builder.setNextAttributionSource(android.content.AttributionSource) +UnflaggedApi: android.content.ContextParams#shouldRegisterAttributionSource(): + New API must be flagged with @FlaggedApi: method android.content.ContextParams.shouldRegisterAttributionSource() +UnflaggedApi: android.content.ContextParams.Builder#setShouldRegisterAttributionSource(boolean): + New API must be flagged with @FlaggedApi: method android.content.ContextParams.Builder.setShouldRegisterAttributionSource(boolean) +UnflaggedApi: android.content.Intent#EXTRA_ARCHIVAL: + New API must be flagged with @FlaggedApi: field android.content.Intent.EXTRA_ARCHIVAL +UnflaggedApi: android.content.om.FabricatedOverlay#setResourceValue(String, android.content.res.AssetFileDescriptor, String): + New API must be flagged with @FlaggedApi: method android.content.om.FabricatedOverlay.setResourceValue(String,android.content.res.AssetFileDescriptor,String) +UnflaggedApi: android.content.pm.PackageManager#FEATURE_THREAD_NETWORK: + New API must be flagged with @FlaggedApi: field android.content.pm.PackageManager.FEATURE_THREAD_NETWORK +UnflaggedApi: android.database.sqlite.SQLiteDatabase#beginTransactionReadOnly(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteDatabase.beginTransactionReadOnly() +UnflaggedApi: android.database.sqlite.SQLiteDatabase#beginTransactionWithListenerReadOnly(android.database.sqlite.SQLiteTransactionListener): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteDatabase.beginTransactionWithListenerReadOnly(android.database.sqlite.SQLiteTransactionListener) +UnflaggedApi: android.database.sqlite.SQLiteDatabase#createRawStatement(String): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteDatabase.createRawStatement(String) +UnflaggedApi: android.database.sqlite.SQLiteDatabase#getLastChangedRowCount(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteDatabase.getLastChangedRowCount() +UnflaggedApi: android.database.sqlite.SQLiteDatabase#getLastInsertRowId(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteDatabase.getLastInsertRowId() +UnflaggedApi: android.database.sqlite.SQLiteDatabase#getTotalChangedRowCount(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteDatabase.getTotalChangedRowCount() +UnflaggedApi: android.database.sqlite.SQLiteRawStatement: + New API must be flagged with @FlaggedApi: class android.database.sqlite.SQLiteRawStatement +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#SQLITE_DATA_TYPE_BLOB: + New API must be flagged with @FlaggedApi: field android.database.sqlite.SQLiteRawStatement.SQLITE_DATA_TYPE_BLOB +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#SQLITE_DATA_TYPE_FLOAT: + New API must be flagged with @FlaggedApi: field android.database.sqlite.SQLiteRawStatement.SQLITE_DATA_TYPE_FLOAT +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#SQLITE_DATA_TYPE_INTEGER: + New API must be flagged with @FlaggedApi: field android.database.sqlite.SQLiteRawStatement.SQLITE_DATA_TYPE_INTEGER +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#SQLITE_DATA_TYPE_NULL: + New API must be flagged with @FlaggedApi: field android.database.sqlite.SQLiteRawStatement.SQLITE_DATA_TYPE_NULL +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#SQLITE_DATA_TYPE_TEXT: + New API must be flagged with @FlaggedApi: field android.database.sqlite.SQLiteRawStatement.SQLITE_DATA_TYPE_TEXT +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#bindBlob(int, byte[]): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.bindBlob(int,byte[]) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#bindBlob(int, byte[], int, int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.bindBlob(int,byte[],int,int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#bindDouble(int, double): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.bindDouble(int,double) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#bindInt(int, int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.bindInt(int,int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#bindLong(int, long): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.bindLong(int,long) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#bindNull(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.bindNull(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#bindText(int, String): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.bindText(int,String) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#clearBindings(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.clearBindings() +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#close(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.close() +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getColumnBlob(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getColumnBlob(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getColumnDouble(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getColumnDouble(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getColumnInt(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getColumnInt(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getColumnLength(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getColumnLength(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getColumnLong(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getColumnLong(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getColumnName(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getColumnName(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getColumnText(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getColumnText(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getColumnType(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getColumnType(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getParameterCount(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getParameterCount() +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getParameterIndex(String): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getParameterIndex(String) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getParameterName(int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getParameterName(int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#getResultColumnCount(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.getResultColumnCount() +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#isOpen(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.isOpen() +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#readColumnBlob(int, byte[], int, int, int): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.readColumnBlob(int,byte[],int,int,int) +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#reset(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.reset() +UnflaggedApi: android.database.sqlite.SQLiteRawStatement#step(): + New API must be flagged with @FlaggedApi: method android.database.sqlite.SQLiteRawStatement.step() +UnflaggedApi: android.graphics.Gainmap#Gainmap(android.graphics.Gainmap, android.graphics.Bitmap): + New API must be flagged with @FlaggedApi: constructor android.graphics.Gainmap(android.graphics.Gainmap,android.graphics.Bitmap) +UnflaggedApi: android.graphics.Path#computeBounds(android.graphics.RectF): + New API must be flagged with @FlaggedApi: method android.graphics.Path.computeBounds(android.graphics.RectF) +UnflaggedApi: android.graphics.fonts.FontFamily.Builder#buildVariableFamily(): + New API must be flagged with @FlaggedApi: method android.graphics.fonts.FontFamily.Builder.buildVariableFamily() +UnflaggedApi: android.graphics.text.LineBreakConfig#LINE_BREAK_STYLE_UNSPECIFIED: + New API must be flagged with @FlaggedApi: field android.graphics.text.LineBreakConfig.LINE_BREAK_STYLE_UNSPECIFIED +UnflaggedApi: android.graphics.text.LineBreakConfig#LINE_BREAK_WORD_STYLE_UNSPECIFIED: + New API must be flagged with @FlaggedApi: field android.graphics.text.LineBreakConfig.LINE_BREAK_WORD_STYLE_UNSPECIFIED +UnflaggedApi: android.graphics.text.LineBreakConfig#merge(android.graphics.text.LineBreakConfig): + New API must be flagged with @FlaggedApi: method android.graphics.text.LineBreakConfig.merge(android.graphics.text.LineBreakConfig) +UnflaggedApi: android.graphics.text.LineBreakConfig.Builder#merge(android.graphics.text.LineBreakConfig): + New API must be flagged with @FlaggedApi: method android.graphics.text.LineBreakConfig.Builder.merge(android.graphics.text.LineBreakConfig) +UnflaggedApi: android.graphics.text.LineBreaker.Builder#setUseBoundsForWidth(boolean): + New API must be flagged with @FlaggedApi: method android.graphics.text.LineBreaker.Builder.setUseBoundsForWidth(boolean) +UnflaggedApi: android.graphics.text.PositionedGlyphs#NO_OVERRIDE: + New API must be flagged with @FlaggedApi: field android.graphics.text.PositionedGlyphs.NO_OVERRIDE +UnflaggedApi: android.graphics.text.PositionedGlyphs#getFakeBold(int): + New API must be flagged with @FlaggedApi: method android.graphics.text.PositionedGlyphs.getFakeBold(int) +UnflaggedApi: android.graphics.text.PositionedGlyphs#getFakeItalic(int): + New API must be flagged with @FlaggedApi: method android.graphics.text.PositionedGlyphs.getFakeItalic(int) +UnflaggedApi: android.graphics.text.PositionedGlyphs#getItalicOverride(int): + New API must be flagged with @FlaggedApi: method android.graphics.text.PositionedGlyphs.getItalicOverride(int) +UnflaggedApi: android.graphics.text.PositionedGlyphs#getWeightOverride(int): + New API must be flagged with @FlaggedApi: method android.graphics.text.PositionedGlyphs.getWeightOverride(int) +UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_CAR: + New API must be flagged with @FlaggedApi: field android.media.MediaRoute2Info.TYPE_REMOTE_CAR +UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_COMPUTER: + New API must be flagged with @FlaggedApi: field android.media.MediaRoute2Info.TYPE_REMOTE_COMPUTER +UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_GAME_CONSOLE: + New API must be flagged with @FlaggedApi: field android.media.MediaRoute2Info.TYPE_REMOTE_GAME_CONSOLE +UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_SMARTPHONE: + New API must be flagged with @FlaggedApi: field android.media.MediaRoute2Info.TYPE_REMOTE_SMARTPHONE +UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_SMARTWATCH: + New API must be flagged with @FlaggedApi: field android.media.MediaRoute2Info.TYPE_REMOTE_SMARTWATCH +UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_TABLET: + New API must be flagged with @FlaggedApi: field android.media.MediaRoute2Info.TYPE_REMOTE_TABLET +UnflaggedApi: android.media.MediaRoute2Info#TYPE_REMOTE_TABLET_DOCKED: + New API must be flagged with @FlaggedApi: field android.media.MediaRoute2Info.TYPE_REMOTE_TABLET_DOCKED +UnflaggedApi: android.media.midi.MidiUmpDeviceService: + New API must be flagged with @FlaggedApi: class android.media.midi.MidiUmpDeviceService +UnflaggedApi: android.media.midi.MidiUmpDeviceService#MidiUmpDeviceService(): + New API must be flagged with @FlaggedApi: constructor android.media.midi.MidiUmpDeviceService() +UnflaggedApi: android.media.midi.MidiUmpDeviceService#SERVICE_INTERFACE: + New API must be flagged with @FlaggedApi: field android.media.midi.MidiUmpDeviceService.SERVICE_INTERFACE +UnflaggedApi: android.media.midi.MidiUmpDeviceService#getDeviceInfo(): + New API must be flagged with @FlaggedApi: method android.media.midi.MidiUmpDeviceService.getDeviceInfo() +UnflaggedApi: android.media.midi.MidiUmpDeviceService#getOutputPortReceivers(): + New API must be flagged with @FlaggedApi: method android.media.midi.MidiUmpDeviceService.getOutputPortReceivers() +UnflaggedApi: android.media.midi.MidiUmpDeviceService#onBind(android.content.Intent): + New API must be flagged with @FlaggedApi: method android.media.midi.MidiUmpDeviceService.onBind(android.content.Intent) +UnflaggedApi: android.media.midi.MidiUmpDeviceService#onClose(): + New API must be flagged with @FlaggedApi: method android.media.midi.MidiUmpDeviceService.onClose() +UnflaggedApi: android.media.midi.MidiUmpDeviceService#onDeviceStatusChanged(android.media.midi.MidiDeviceStatus): + New API must be flagged with @FlaggedApi: method android.media.midi.MidiUmpDeviceService.onDeviceStatusChanged(android.media.midi.MidiDeviceStatus) +UnflaggedApi: android.media.midi.MidiUmpDeviceService#onGetInputPortReceivers(): + New API must be flagged with @FlaggedApi: method android.media.midi.MidiUmpDeviceService.onGetInputPortReceivers() +UnflaggedApi: android.os.Build.VERSION_CODES#VANILLA_ICE_CREAM: + New API must be flagged with @FlaggedApi: field android.os.Build.VERSION_CODES.VANILLA_ICE_CREAM +UnflaggedApi: android.os.PerformanceHintManager.Session#setPreferPowerEfficiency(boolean): + New API must be flagged with @FlaggedApi: method android.os.PerformanceHintManager.Session.setPreferPowerEfficiency(boolean) +UnflaggedApi: android.os.UserManager#DISALLOW_NEAR_FIELD_COMMUNICATION_RADIO: + New API must be flagged with @FlaggedApi: field android.os.UserManager.DISALLOW_NEAR_FIELD_COMMUNICATION_RADIO +UnflaggedApi: android.provider.Settings#ACTION_CREDENTIAL_PROVIDER: + New API must be flagged with @FlaggedApi: field android.provider.Settings.ACTION_CREDENTIAL_PROVIDER +UnflaggedApi: android.telecom.Call.Details#getId(): + New API must be flagged with @FlaggedApi: method android.telecom.Call.Details.getId() +UnflaggedApi: android.telephony.CarrierConfigManager#KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE: + New API must be flagged with @FlaggedApi: field android.telephony.CarrierConfigManager.KEY_CARRIER_SUPPORTED_SATELLITE_SERVICES_PER_PROVIDER_BUNDLE +UnflaggedApi: android.telephony.DisconnectCause#SATELLITE_ENABLED: + New API must be flagged with @FlaggedApi: field android.telephony.DisconnectCause.SATELLITE_ENABLED +UnflaggedApi: android.telephony.NetworkRegistrationInfo#SERVICE_TYPE_MMS: + New API must be flagged with @FlaggedApi: field android.telephony.NetworkRegistrationInfo.SERVICE_TYPE_MMS +UnflaggedApi: android.telephony.NetworkRegistrationInfo#isNonTerrestrialNetwork(): + New API must be flagged with @FlaggedApi: method android.telephony.NetworkRegistrationInfo.isNonTerrestrialNetwork() +UnflaggedApi: android.telephony.PhoneNumberUtils#isWpsCallNumber(String): + New API must be flagged with @FlaggedApi: method android.telephony.PhoneNumberUtils.isWpsCallNumber(String) +UnflaggedApi: android.telephony.ServiceState#isUsingNonTerrestrialNetwork(): + New API must be flagged with @FlaggedApi: method android.telephony.ServiceState.isUsingNonTerrestrialNetwork() +UnflaggedApi: android.telephony.TelephonyManager#EVENT_DISPLAY_SOS_MESSAGE: + New API must be flagged with @FlaggedApi: field android.telephony.TelephonyManager.EVENT_DISPLAY_SOS_MESSAGE +UnflaggedApi: android.telephony.TelephonyManager#PURCHASE_PREMIUM_CAPABILITY_RESULT_USER_DISABLED: + New API must be flagged with @FlaggedApi: field android.telephony.TelephonyManager.PURCHASE_PREMIUM_CAPABILITY_RESULT_USER_DISABLED +UnflaggedApi: android.text.DynamicLayout.Builder#setLineBreakConfig(android.graphics.text.LineBreakConfig): + New API must be flagged with @FlaggedApi: method android.text.DynamicLayout.Builder.setLineBreakConfig(android.graphics.text.LineBreakConfig) +UnflaggedApi: android.text.DynamicLayout.Builder#setUseBoundsForWidth(boolean): + New API must be flagged with @FlaggedApi: method android.text.DynamicLayout.Builder.setUseBoundsForWidth(boolean) +UnflaggedApi: android.text.Layout.Builder#Builder(CharSequence, int, int, android.text.TextPaint, int): + New API must be flagged with @FlaggedApi: constructor android.text.Layout.Builder(CharSequence,int,int,android.text.TextPaint,int) +UnflaggedApi: android.text.Layout.Builder#build(): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.build() +UnflaggedApi: android.text.Layout.Builder#setAlignment(android.text.Layout.Alignment): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setAlignment(android.text.Layout.Alignment) +UnflaggedApi: android.text.Layout.Builder#setBreakStrategy(int): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setBreakStrategy(int) +UnflaggedApi: android.text.Layout.Builder#setEllipsize(android.text.TextUtils.TruncateAt): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setEllipsize(android.text.TextUtils.TruncateAt) +UnflaggedApi: android.text.Layout.Builder#setEllipsizedWidth(int): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setEllipsizedWidth(int) +UnflaggedApi: android.text.Layout.Builder#setFallbackLineSpacingEnabled(boolean): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setFallbackLineSpacingEnabled(boolean) +UnflaggedApi: android.text.Layout.Builder#setFontPaddingIncluded(boolean): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setFontPaddingIncluded(boolean) +UnflaggedApi: android.text.Layout.Builder#setHyphenationFrequency(int): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setHyphenationFrequency(int) +UnflaggedApi: android.text.Layout.Builder#setJustificationMode(int): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setJustificationMode(int) +UnflaggedApi: android.text.Layout.Builder#setLeftIndents(int[]): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setLeftIndents(int[]) +UnflaggedApi: android.text.Layout.Builder#setLineBreakConfig(android.graphics.text.LineBreakConfig): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setLineBreakConfig(android.graphics.text.LineBreakConfig) +UnflaggedApi: android.text.Layout.Builder#setLineSpacingAmount(float): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setLineSpacingAmount(float) +UnflaggedApi: android.text.Layout.Builder#setLineSpacingMultiplier(float): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setLineSpacingMultiplier(float) +UnflaggedApi: android.text.Layout.Builder#setMaxLines(int): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setMaxLines(int) +UnflaggedApi: android.text.Layout.Builder#setRightIndents(int[]): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setRightIndents(int[]) +UnflaggedApi: android.text.Layout.Builder#setTextDirectionHeuristic(android.text.TextDirectionHeuristic): + New API must be flagged with @FlaggedApi: method android.text.Layout.Builder.setTextDirectionHeuristic(android.text.TextDirectionHeuristic) +UnflaggedApi: android.text.StaticLayout.Builder#setUseBoundsForWidth(boolean): + New API must be flagged with @FlaggedApi: method android.text.StaticLayout.Builder.setUseBoundsForWidth(boolean) +UnflaggedApi: android.text.style.LineBreakConfigSpan#LineBreakConfigSpan(android.graphics.text.LineBreakConfig): + New API must be flagged with @FlaggedApi: constructor android.text.style.LineBreakConfigSpan(android.graphics.text.LineBreakConfig) +UnflaggedApi: android.text.style.LineBreakConfigSpan#getLineBreakConfig(): + New API must be flagged with @FlaggedApi: method android.text.style.LineBreakConfigSpan.getLineBreakConfig() +UnflaggedApi: android.view.HapticScrollFeedbackProvider#HapticScrollFeedbackProvider(android.view.View): + New API must be flagged with @FlaggedApi: constructor android.view.HapticScrollFeedbackProvider(android.view.View) +UnflaggedApi: android.view.HapticScrollFeedbackProvider#onScrollLimit(int, int, int, boolean): + New API must be flagged with @FlaggedApi: method android.view.HapticScrollFeedbackProvider.onScrollLimit(int,int,int,boolean) +UnflaggedApi: android.view.HapticScrollFeedbackProvider#onScrollProgress(int, int, int, int): + New API must be flagged with @FlaggedApi: method android.view.HapticScrollFeedbackProvider.onScrollProgress(int,int,int,int) +UnflaggedApi: android.view.HapticScrollFeedbackProvider#onSnapToItem(int, int, int): + New API must be flagged with @FlaggedApi: method android.view.HapticScrollFeedbackProvider.onSnapToItem(int,int,int) +UnflaggedApi: android.view.ScrollFeedbackProvider#onScrollLimit(int, int, int, boolean): + New API must be flagged with @FlaggedApi: method android.view.ScrollFeedbackProvider.onScrollLimit(int,int,int,boolean) +UnflaggedApi: android.view.ScrollFeedbackProvider#onScrollProgress(int, int, int, int): + New API must be flagged with @FlaggedApi: method android.view.ScrollFeedbackProvider.onScrollProgress(int,int,int,int) +UnflaggedApi: android.view.ScrollFeedbackProvider#onSnapToItem(int, int, int): + New API must be flagged with @FlaggedApi: method android.view.ScrollFeedbackProvider.onSnapToItem(int,int,int) +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo#ACTION_ARGUMENT_SCROLL_AMOUNT_FLOAT: + New API must be flagged with @FlaggedApi: field android.view.accessibility.AccessibilityNodeInfo.ACTION_ARGUMENT_SCROLL_AMOUNT_FLOAT +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo#isGranularScrollingSupported(): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.isGranularScrollingSupported() +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo#setGranularScrollingSupported(boolean): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.setGranularScrollingSupported(boolean) +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo#CollectionInfo(int, int, boolean, int, int, int): + New API must be flagged with @FlaggedApi: constructor android.view.accessibility.AccessibilityNodeInfo.CollectionInfo(int,int,boolean,int,int,int) +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo#UNDEFINED: + New API must be flagged with @FlaggedApi: field android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.UNDEFINED +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo#getImportantForAccessibilityItemCount(): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.getImportantForAccessibilityItemCount() +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo#getItemCount(): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.getItemCount() +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder: + New API must be flagged with @FlaggedApi: class android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder#Builder(): + New API must be flagged with @FlaggedApi: constructor android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder() +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder#build(): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder.build() +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder#setColumnCount(int): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder.setColumnCount(int) +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder#setHierarchical(boolean): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder.setHierarchical(boolean) +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder#setImportantForAccessibilityItemCount(int): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder.setImportantForAccessibilityItemCount(int) +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder#setItemCount(int): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder.setItemCount(int) +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder#setRowCount(int): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder.setRowCount(int) +UnflaggedApi: android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder#setSelectionMode(int): + New API must be flagged with @FlaggedApi: method android.view.accessibility.AccessibilityNodeInfo.CollectionInfo.Builder.setSelectionMode(int) +UnflaggedApi: android.view.animation.AnimationUtils#getExpectedPresentationTimeMillis(): + New API must be flagged with @FlaggedApi: method android.view.animation.AnimationUtils.getExpectedPresentationTimeMillis() +UnflaggedApi: android.view.animation.AnimationUtils#getExpectedPresentationTimeNanos(): + New API must be flagged with @FlaggedApi: method android.view.animation.AnimationUtils.getExpectedPresentationTimeNanos() +UnflaggedApi: android.view.autofill.AutofillManager#clearAutofillRequestCallback(): + New API must be flagged with @FlaggedApi: method android.view.autofill.AutofillManager.clearAutofillRequestCallback() +UnflaggedApi: android.view.autofill.AutofillManager#setAutofillRequestCallback(java.util.concurrent.Executor, android.view.autofill.AutofillRequestCallback): + New API must be flagged with @FlaggedApi: method android.view.autofill.AutofillManager.setAutofillRequestCallback(java.util.concurrent.Executor,android.view.autofill.AutofillRequestCallback) +UnflaggedApi: android.view.autofill.AutofillRequestCallback: + New API must be flagged with @FlaggedApi: class android.view.autofill.AutofillRequestCallback +UnflaggedApi: android.view.autofill.AutofillRequestCallback#onFillRequest(android.view.inputmethod.InlineSuggestionsRequest, android.os.CancellationSignal, android.service.autofill.FillCallback): + New API must be flagged with @FlaggedApi: method android.view.autofill.AutofillRequestCallback.onFillRequest(android.view.inputmethod.InlineSuggestionsRequest,android.os.CancellationSignal,android.service.autofill.FillCallback) +UnflaggedApi: android.view.inputmethod.InlineSuggestionsRequest.Builder#setClientSupported(boolean): + New API must be flagged with @FlaggedApi: method android.view.inputmethod.InlineSuggestionsRequest.Builder.setClientSupported(boolean) +UnflaggedApi: android.view.inputmethod.InlineSuggestionsRequest.Builder#setServiceSupported(boolean): + New API must be flagged with @FlaggedApi: method android.view.inputmethod.InlineSuggestionsRequest.Builder.setServiceSupported(boolean) diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt index b1feb419ecdebc36b3aae954f58954ec97f1ef45..3de774868bb78d3bf8f0f26d879e89e9ad62bf08 100644 --- a/core/api/module-lib-current.txt +++ b/core/api/module-lib-current.txt @@ -6,7 +6,9 @@ package android { field public static final String CONTROL_AUTOMOTIVE_GNSS = "android.permission.CONTROL_AUTOMOTIVE_GNSS"; field public static final String GET_INTENT_SENDER_INTENT = "android.permission.GET_INTENT_SENDER_INTENT"; field public static final String MAKE_UID_VISIBLE = "android.permission.MAKE_UID_VISIBLE"; + field public static final String MANAGE_REMOTE_AUTH = "android.permission.MANAGE_REMOTE_AUTH"; field public static final String USE_COMPANION_TRANSPORTS = "android.permission.USE_COMPANION_TRANSPORTS"; + field public static final String USE_REMOTE_AUTH = "android.permission.USE_REMOTE_AUTH"; } } @@ -184,16 +186,6 @@ package android.hardware.usb { } -package android.location { - - public class LocationManager { - method @RequiresPermission(allOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.ACCESS_FINE_LOCATION}) public boolean injectLocation(@NonNull android.location.Location); - method @RequiresPermission(android.Manifest.permission.CONTROL_AUTOMOTIVE_GNSS) public boolean isAutomotiveGnssSuspended(); - method @RequiresPermission(android.Manifest.permission.CONTROL_AUTOMOTIVE_GNSS) public void setAutomotiveGnssSuspended(boolean); - } - -} - package android.media { public class AudioManager { @@ -527,6 +519,7 @@ package android.provider { public static final class Settings.Config extends android.provider.Settings.NameValueTable { method @RequiresPermission(android.Manifest.permission.MONITOR_DEVICE_CONFIG_ACCESS) public static void clearMonitorCallback(@NonNull android.content.ContentResolver); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean deleteString(@NonNull String, @NonNull String); + method @NonNull public static java.util.Map getAllStrings(); method @Nullable @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static String getString(@NonNull String); method @NonNull @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static java.util.Map getStrings(@NonNull String, @NonNull java.util.List); method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static int getSyncDisabledMode(); diff --git a/core/api/module-lib-lint-baseline.txt b/core/api/module-lib-lint-baseline.txt index 27436ce358672a850e5133fa384feb5c97cf0314..16338351554894c60eaa8f92d248c60b1e5faa6a 100644 --- a/core/api/module-lib-lint-baseline.txt +++ b/core/api/module-lib-lint-baseline.txt @@ -17,18 +17,6 @@ SamShouldBeLast: android.content.pm.PackageItemInfo#dumpBack(android.util.Printe SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.PackageItemInfo.dumpBack) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.content.pm.PackageItemInfo#dumpFront(android.util.Printer, String): SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.PackageItemInfo.dumpFront) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#addNmeaListener(android.location.OnNmeaMessageListener, android.os.Handler): - SAM-compatible parameters (such as parameter 1, "listener", in android.location.LocationManager.addNmeaListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(String, long, float, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 4, "listener", in android.location.LocationManager.requestLocationUpdates) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(android.location.LocationRequest, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 2, "listener", in android.location.LocationManager.requestLocationUpdates) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(long, float, android.location.Criteria, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 4, "listener", in android.location.LocationManager.requestLocationUpdates) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestSingleUpdate(String, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 2, "listener", in android.location.LocationManager.requestSingleUpdate) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestSingleUpdate(android.location.Criteria, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 2, "listener", in android.location.LocationManager.requestSingleUpdate) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.media.AudioManager#abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes): SAM-compatible parameters (such as parameter 1, "l", in android.media.AudioManager.abandonAudioFocus) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int): @@ -47,13 +35,43 @@ SamShouldBeLast: android.media.session.MediaSessionManager#setOnMediaKeyListener SAM-compatible parameters (such as parameter 1, "listener", in android.media.session.MediaSessionManager.setOnMediaKeyListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.media.session.MediaSessionManager#setOnVolumeKeyLongPressListener(android.media.session.MediaSessionManager.OnVolumeKeyLongPressListener, android.os.Handler): SAM-compatible parameters (such as parameter 1, "listener", in android.media.session.MediaSessionManager.setOnVolumeKeyLongPressListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.os.Binder#attachInterface(android.os.IInterface, String): - SAM-compatible parameters (such as parameter 1, "owner", in android.os.Binder.attachInterface) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.os.Binder#linkToDeath(android.os.IBinder.DeathRecipient, int): - SAM-compatible parameters (such as parameter 1, "recipient", in android.os.Binder.linkToDeath) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.os.Binder#unlinkToDeath(android.os.IBinder.DeathRecipient, int): - SAM-compatible parameters (such as parameter 1, "recipient", in android.os.Binder.unlinkToDeath) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.os.IBinder#linkToDeath(android.os.IBinder.DeathRecipient, int): - SAM-compatible parameters (such as parameter 1, "recipient", in android.os.IBinder.linkToDeath) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.os.IBinder#unlinkToDeath(android.os.IBinder.DeathRecipient, int): - SAM-compatible parameters (such as parameter 1, "recipient", in android.os.IBinder.unlinkToDeath) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions + + +UnflaggedApi: android.Manifest.permission#MANAGE_REMOTE_AUTH: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.MANAGE_REMOTE_AUTH +UnflaggedApi: android.Manifest.permission#USE_COMPANION_TRANSPORTS: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.USE_COMPANION_TRANSPORTS +UnflaggedApi: android.Manifest.permission#USE_REMOTE_AUTH: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.USE_REMOTE_AUTH +UnflaggedApi: android.app.Activity#isResumed(): + New API must be flagged with @FlaggedApi: method android.app.Activity.isResumed() +UnflaggedApi: android.companion.CompanionDeviceManager#MESSAGE_REQUEST_CONTEXT_SYNC: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceManager.MESSAGE_REQUEST_CONTEXT_SYNC +UnflaggedApi: android.companion.CompanionDeviceManager#MESSAGE_REQUEST_PERMISSION_RESTORE: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceManager.MESSAGE_REQUEST_PERMISSION_RESTORE +UnflaggedApi: android.companion.CompanionDeviceManager#MESSAGE_REQUEST_REMOTE_AUTHENTICATION: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceManager.MESSAGE_REQUEST_REMOTE_AUTHENTICATION +UnflaggedApi: android.companion.CompanionDeviceManager#addOnMessageReceivedListener(java.util.concurrent.Executor, int, android.companion.CompanionDeviceManager.OnMessageReceivedListener): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.addOnMessageReceivedListener(java.util.concurrent.Executor,int,android.companion.CompanionDeviceManager.OnMessageReceivedListener) +UnflaggedApi: android.companion.CompanionDeviceManager#addOnTransportsChangedListener(java.util.concurrent.Executor, android.companion.CompanionDeviceManager.OnTransportsChangedListener): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.addOnTransportsChangedListener(java.util.concurrent.Executor,android.companion.CompanionDeviceManager.OnTransportsChangedListener) +UnflaggedApi: android.companion.CompanionDeviceManager#removeOnMessageReceivedListener(int, android.companion.CompanionDeviceManager.OnMessageReceivedListener): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.removeOnMessageReceivedListener(int,android.companion.CompanionDeviceManager.OnMessageReceivedListener) +UnflaggedApi: android.companion.CompanionDeviceManager#removeOnTransportsChangedListener(android.companion.CompanionDeviceManager.OnTransportsChangedListener): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.removeOnTransportsChangedListener(android.companion.CompanionDeviceManager.OnTransportsChangedListener) +UnflaggedApi: android.companion.CompanionDeviceManager#sendMessage(int, byte[], int[]): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.sendMessage(int,byte[],int[]) +UnflaggedApi: android.companion.CompanionDeviceManager.OnMessageReceivedListener: + New API must be flagged with @FlaggedApi: class android.companion.CompanionDeviceManager.OnMessageReceivedListener +UnflaggedApi: android.companion.CompanionDeviceManager.OnMessageReceivedListener#onMessageReceived(int, byte[]): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.OnMessageReceivedListener.onMessageReceived(int,byte[]) +UnflaggedApi: android.companion.CompanionDeviceManager.OnTransportsChangedListener: + New API must be flagged with @FlaggedApi: class android.companion.CompanionDeviceManager.OnTransportsChangedListener +UnflaggedApi: android.companion.CompanionDeviceManager.OnTransportsChangedListener#onTransportsChanged(java.util.List): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.OnTransportsChangedListener.onTransportsChanged(java.util.List) +UnflaggedApi: android.content.Context#REMOTE_AUTH_SERVICE: + New API must be flagged with @FlaggedApi: field android.content.Context.REMOTE_AUTH_SERVICE +UnflaggedApi: android.os.IpcDataCache#MODULE_TELEPHONY: + New API must be flagged with @FlaggedApi: field android.os.IpcDataCache.MODULE_TELEPHONY +UnflaggedApi: android.provider.Settings.Config#getAllStrings(): + New API must be flagged with @FlaggedApi: method android.provider.Settings.Config.getAllStrings() diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 61415839ea2cb674868e259950329ce27da37280..7c78f09f005784ac09fdbaf8593d68674a649c69 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -21,6 +21,7 @@ package android { field public static final String ACCESS_RCS_USER_CAPABILITY_EXCHANGE = "android.permission.ACCESS_RCS_USER_CAPABILITY_EXCHANGE"; 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_SMARTSPACE = "android.permission.ACCESS_SMARTSPACE"; 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"; @@ -94,6 +95,7 @@ package android { field public static final String BYPASS_ROLE_QUALIFICATION = "android.permission.BYPASS_ROLE_QUALIFICATION"; field public static final String CALL_AUDIO_INTERCEPTION = "android.permission.CALL_AUDIO_INTERCEPTION"; field public static final String CAMERA_DISABLE_TRANSMIT_LED = "android.permission.CAMERA_DISABLE_TRANSMIT_LED"; + field public static final String CAMERA_HEADLESS_SYSTEM_USER = "android.permission.CAMERA_HEADLESS_SYSTEM_USER"; field public static final String CAMERA_OPEN_CLOSE_LISTENER = "android.permission.CAMERA_OPEN_CLOSE_LISTENER"; field public static final String CAPTURE_AUDIO_HOTWORD = "android.permission.CAPTURE_AUDIO_HOTWORD"; field public static final String CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD = "android.permission.CAPTURE_CONSENTLESS_BUGREPORT_ON_USERDEBUG_BUILD"; @@ -301,12 +303,14 @@ package android { field public static final String RECOVER_KEYSTORE = "android.permission.RECOVER_KEYSTORE"; field public static final String REGISTER_CALL_PROVIDER = "android.permission.REGISTER_CALL_PROVIDER"; field public static final String REGISTER_CONNECTION_MANAGER = "android.permission.REGISTER_CONNECTION_MANAGER"; + field public static final String REGISTER_NSD_OFFLOAD_ENGINE = "android.permission.REGISTER_NSD_OFFLOAD_ENGINE"; field public static final String REGISTER_SIM_SUBSCRIPTION = "android.permission.REGISTER_SIM_SUBSCRIPTION"; field public static final String REGISTER_STATS_PULL_ATOM = "android.permission.REGISTER_STATS_PULL_ATOM"; field public static final String REMOTE_DISPLAY_PROVIDER = "android.permission.REMOTE_DISPLAY_PROVIDER"; field public static final String REMOVE_DRM_CERTIFICATES = "android.permission.REMOVE_DRM_CERTIFICATES"; field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS"; field public static final String RENOUNCE_PERMISSIONS = "android.permission.RENOUNCE_PERMISSIONS"; + field public static final String REPORT_USAGE_STATS = "android.permission.REPORT_USAGE_STATS"; field @Deprecated public static final String REQUEST_NETWORK_SCORES = "android.permission.REQUEST_NETWORK_SCORES"; field public static final String REQUEST_NOTIFICATION_ASSISTANT_SERVICE = "android.permission.REQUEST_NOTIFICATION_ASSISTANT_SERVICE"; field public static final String RESET_PASSWORD = "android.permission.RESET_PASSWORD"; @@ -3189,6 +3193,7 @@ package android.companion.virtual { public static class VirtualDeviceManager.VirtualDevice implements java.lang.AutoCloseable { method public void addActivityListener(@NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener); + method @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void addActivityPolicyExemption(@NonNull android.content.ComponentName); method public void addSoundEffectListener(@NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.SoundEffectListener); method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void close(); method @NonNull public android.content.Context createContext(); @@ -3209,7 +3214,9 @@ package android.companion.virtual { method public void launchPendingIntent(int, @NonNull android.app.PendingIntent, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.IntConsumer); method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void registerIntentInterceptor(@NonNull android.content.IntentFilter, @NonNull java.util.concurrent.Executor, @NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback); method public void removeActivityListener(@NonNull android.companion.virtual.VirtualDeviceManager.ActivityListener); + method @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void removeActivityPolicyExemption(@NonNull android.content.ComponentName); method public void removeSoundEffectListener(@NonNull android.companion.virtual.VirtualDeviceManager.SoundEffectListener); + method @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setDevicePolicy(int, int); method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void setShowPointerIcon(boolean); method @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) public void unregisterIntentInterceptor(@NonNull android.companion.virtual.VirtualDeviceManager.IntentInterceptorCallback); } @@ -3239,6 +3246,7 @@ package android.companion.virtual { field public static final int LOCK_STATE_DEFAULT = 0; // 0x0 field public static final int NAVIGATION_POLICY_DEFAULT_ALLOWED = 0; // 0x0 field public static final int NAVIGATION_POLICY_DEFAULT_BLOCKED = 1; // 0x1 + field @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) public static final int POLICY_TYPE_ACTIVITY = 3; // 0x3 field public static final int POLICY_TYPE_AUDIO = 1; // 0x1 field public static final int POLICY_TYPE_RECENTS = 2; // 0x2 field public static final int POLICY_TYPE_SENSORS = 0; // 0x0 @@ -3476,6 +3484,7 @@ package android.content { field public static final String SYSTEM_CONFIG_SERVICE = "system_config"; field public static final String SYSTEM_UPDATE_SERVICE = "system_update"; field public static final String TETHERING_SERVICE = "tethering"; + field public static final String THREAD_NETWORK_SERVICE = "thread_network"; field public static final String TIME_MANAGER_SERVICE = "time_manager"; field public static final String TRANSLATION_MANAGER_SERVICE = "translation"; field public static final String UI_TRANSLATION_SERVICE = "ui_translation"; @@ -3543,6 +3552,7 @@ package android.content { field public static final String ACTION_SHOW_SUSPENDED_APP_DETAILS = "android.intent.action.SHOW_SUSPENDED_APP_DETAILS"; field @Deprecated public static final String ACTION_SIM_STATE_CHANGED = "android.intent.action.SIM_STATE_CHANGED"; field public static final String ACTION_SPLIT_CONFIGURATION_CHANGED = "android.intent.action.SPLIT_CONFIGURATION_CHANGED"; + field public static final String ACTION_UNARCHIVE_PACKAGE = "android.intent.action.UNARCHIVE_PACKAGE"; field public static final String ACTION_UPGRADE_SETUP = "android.intent.action.UPGRADE_SETUP"; field public static final String ACTION_USER_ADDED = "android.intent.action.USER_ADDED"; field public static final String ACTION_USER_REMOVED = "android.intent.action.USER_REMOVED"; @@ -3793,6 +3803,8 @@ package android.content.pm { public class PackageInstaller { method @NonNull public android.content.pm.PackageInstaller.InstallInfo readInstallInfo(@NonNull java.io.File, int) throws android.content.pm.PackageInstaller.PackageParsingException; method @NonNull public android.content.pm.PackageInstaller.InstallInfo readInstallInfo(@NonNull android.os.ParcelFileDescriptor, @Nullable String, int) throws android.content.pm.PackageInstaller.PackageParsingException; + method @FlaggedApi(Flags.FLAG_ARCHIVING) @RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES, android.Manifest.permission.REQUEST_DELETE_PACKAGES}) public void requestArchive(@NonNull String, @NonNull android.content.IntentSender) throws android.content.pm.PackageManager.NameNotFoundException; + method @FlaggedApi(Flags.FLAG_ARCHIVING) @RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES, android.Manifest.permission.REQUEST_INSTALL_PACKAGES}) public void requestUnarchive(@NonNull String) throws android.content.pm.PackageManager.NameNotFoundException; method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean); field public static final String ACTION_CONFIRM_INSTALL = "android.content.pm.action.CONFIRM_INSTALL"; field public static final String ACTION_CONFIRM_PRE_APPROVAL = "android.content.pm.action.CONFIRM_PRE_APPROVAL"; @@ -3803,6 +3815,8 @@ package android.content.pm { field public static final String EXTRA_DATA_LOADER_TYPE = "android.content.pm.extra.DATA_LOADER_TYPE"; field public static final String EXTRA_LEGACY_STATUS = "android.content.pm.extra.LEGACY_STATUS"; field public static final String EXTRA_RESOLVED_BASE_PATH = "android.content.pm.extra.RESOLVED_BASE_PATH"; + field @FlaggedApi(Flags.FLAG_ARCHIVING) public static final String EXTRA_UNARCHIVE_ALL_USERS = "android.content.pm.extra.UNARCHIVE_ALL_USERS"; + field @FlaggedApi(Flags.FLAG_ARCHIVING) public static final String EXTRA_UNARCHIVE_PACKAGE_NAME = "android.content.pm.extra.UNARCHIVE_PACKAGE_NAME"; field public static final int LOCATION_DATA_APP = 0; // 0x0 field public static final int LOCATION_MEDIA_DATA = 2; // 0x2 field public static final int LOCATION_MEDIA_OBB = 1; // 0x1 @@ -3863,6 +3877,7 @@ package android.content.pm { method public static void forceSafeLabels(); method @Deprecated @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager); method @NonNull public CharSequence loadSafeLabel(@NonNull android.content.pm.PackageManager, @FloatRange(from=0) float, int); + field @FlaggedApi(Flags.FLAG_ARCHIVING) public boolean isArchived; } public abstract class PackageManager { @@ -3912,6 +3927,7 @@ package android.content.pm { method @RequiresPermission(android.Manifest.permission.SET_HARMFUL_APP_WARNINGS) public void setHarmfulAppWarning(@NonNull String, @Nullable CharSequence); method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.SUSPEND_APPS) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable String); method @Nullable @RequiresPermission(value=android.Manifest.permission.SUSPEND_APPS, conditional=true) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable android.content.pm.SuspendDialogInfo); + method @FlaggedApi(android.content.pm.Flags.FLAG_QUARANTINED_ENABLED) @Nullable @RequiresPermission(value=android.Manifest.permission.SUSPEND_APPS, conditional=true) public String[] setPackagesSuspended(@Nullable String[], boolean, @Nullable android.os.PersistableBundle, @Nullable android.os.PersistableBundle, @Nullable android.content.pm.SuspendDialogInfo, int); method @RequiresPermission(value=android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE, conditional=true) public void setSyntheticAppDetailsActivityEnabled(@NonNull String, boolean); method public void setSystemAppState(@NonNull String, int); method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public abstract void setUpdateAvailable(@NonNull String, boolean); @@ -3962,6 +3978,7 @@ package android.content.pm { field public static final int FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED = 512; // 0x200 field public static final int FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED = 256; // 0x100 field public static final int FLAG_PERMISSION_USER_SET = 1; // 0x1 + field @FlaggedApi(android.content.pm.Flags.FLAG_QUARANTINED_ENABLED) public static final int FLAG_SUSPEND_QUARANTINED = 1; // 0x1 field public static final int INSTALL_FAILED_ALREADY_EXISTS = -1; // 0xffffffff field public static final int INSTALL_FAILED_CONFLICTING_PROVIDER = -13; // 0xfffffff3 field public static final int INSTALL_FAILED_CONTAINER_ERROR = -18; // 0xffffffee @@ -4008,6 +4025,7 @@ package android.content.pm { field @Deprecated public static final int INTENT_FILTER_VERIFICATION_SUCCESS = 1; // 0x1 field @Deprecated public static final int MASK_PERMISSION_FLAGS = 255; // 0xff field public static final int MATCH_ANY_USER = 4194304; // 0x400000 + field public static final long MATCH_ARCHIVED_PACKAGES = 4294967296L; // 0x100000000L field public static final int MATCH_CLONE_PROFILE = 536870912; // 0x20000000 field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000 field public static final int MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS = 536870912; // 0x20000000 @@ -6164,653 +6182,12 @@ package android.hardware.usb { package android.location { - public abstract class BatchedLocationCallback { - ctor public BatchedLocationCallback(); - method public void onLocationBatch(java.util.List); - } - - public final class CorrelationVector implements android.os.Parcelable { - method public int describeContents(); - method @FloatRange(from=0.0f) public double getFrequencyOffsetMetersPerSecond(); - method @NonNull public int[] getMagnitude(); - method @FloatRange(from=0.0f) public double getSamplingStartMeters(); - method @FloatRange(from=0.0f, fromInclusive=false) public double getSamplingWidthMeters(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class CorrelationVector.Builder { - ctor public CorrelationVector.Builder(); - method @NonNull public android.location.CorrelationVector build(); - method @NonNull public android.location.CorrelationVector.Builder setFrequencyOffsetMetersPerSecond(@FloatRange(from=0.0f) double); - method @NonNull public android.location.CorrelationVector.Builder setMagnitude(@NonNull int[]); - method @NonNull public android.location.CorrelationVector.Builder setSamplingStartMeters(@FloatRange(from=0.0f) double); - method @NonNull public android.location.CorrelationVector.Builder setSamplingWidthMeters(@FloatRange(from=0.0f, fromInclusive=false) double); - } - - public final class Country implements android.os.Parcelable { - ctor public Country(@NonNull String, int); - method public int describeContents(); - method @NonNull public String getCountryCode(); - method public int getSource(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field public static final int COUNTRY_SOURCE_LOCALE = 3; // 0x3 - field public static final int COUNTRY_SOURCE_LOCATION = 1; // 0x1 - field public static final int COUNTRY_SOURCE_NETWORK = 0; // 0x0 - field public static final int COUNTRY_SOURCE_SIM = 2; // 0x2 - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public class CountryDetector { - method public void registerCountryDetectorCallback(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); - method public void unregisterCountryDetectorCallback(@NonNull java.util.function.Consumer); - } - - public final class GnssCapabilities implements android.os.Parcelable { - method @Deprecated public boolean hasMeasurementCorrectionsReflectingPane(); - method @Deprecated public boolean hasNavMessages(); - method @Deprecated public boolean hasSatelliteBlacklist(); - } - - public final class GnssExcessPathInfo implements android.os.Parcelable { - method public int describeContents(); - method @FloatRange(from=0.0f) public float getAttenuationDb(); - method @FloatRange(from=0.0f) public float getExcessPathLengthMeters(); - method @FloatRange(from=0.0f) public float getExcessPathLengthUncertaintyMeters(); - method @NonNull public android.location.GnssReflectingPlane getReflectingPlane(); - method public boolean hasAttenuation(); - method public boolean hasExcessPathLength(); - method public boolean hasExcessPathLengthUncertainty(); - method public boolean hasReflectingPlane(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssExcessPathInfo.Builder { - ctor public GnssExcessPathInfo.Builder(); - method @NonNull public android.location.GnssExcessPathInfo build(); - method @NonNull public android.location.GnssExcessPathInfo.Builder clearAttenuationDb(); - method @NonNull public android.location.GnssExcessPathInfo.Builder clearExcessPathLengthMeters(); - method @NonNull public android.location.GnssExcessPathInfo.Builder clearExcessPathLengthUncertaintyMeters(); - method @NonNull public android.location.GnssExcessPathInfo.Builder setAttenuationDb(@FloatRange(from=0.0f) float); - method @NonNull public android.location.GnssExcessPathInfo.Builder setExcessPathLengthMeters(@FloatRange(from=0.0f) float); - method @NonNull public android.location.GnssExcessPathInfo.Builder setExcessPathLengthUncertaintyMeters(@FloatRange(from=0.0f) float); - method @NonNull public android.location.GnssExcessPathInfo.Builder setReflectingPlane(@Nullable android.location.GnssReflectingPlane); - } - - public final class GnssMeasurement implements android.os.Parcelable { - method @Nullable public java.util.Collection getCorrelationVectors(); - method @Nullable public android.location.SatellitePvt getSatellitePvt(); - method public boolean hasCorrelationVectors(); - method public boolean hasSatellitePvt(); - } - - public final class GnssMeasurementCorrections implements android.os.Parcelable { - method public int describeContents(); - method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters(); - method @FloatRange(from=0.0f, to=360.0f) public float getEnvironmentBearingDegrees(); - method @FloatRange(from=0.0f, to=180.0f) public float getEnvironmentBearingUncertaintyDegrees(); - method @FloatRange(from=0.0f) public double getHorizontalPositionUncertaintyMeters(); - method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees(); - method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees(); - method @NonNull public java.util.List getSingleSatelliteCorrectionList(); - method @IntRange(from=0) public long getToaGpsNanosecondsOfWeek(); - method @FloatRange(from=0.0f) public double getVerticalPositionUncertaintyMeters(); - method public boolean hasEnvironmentBearing(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssMeasurementCorrections.Builder { - ctor public GnssMeasurementCorrections.Builder(); - method @NonNull public android.location.GnssMeasurementCorrections build(); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setEnvironmentBearingDegrees(@FloatRange(from=0.0f, to=360.0f) float); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setEnvironmentBearingUncertaintyDegrees(@FloatRange(from=0.0f, to=180.0f) float); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setHorizontalPositionUncertaintyMeters(@FloatRange(from=0.0f) double); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setSingleSatelliteCorrectionList(@NonNull java.util.List); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setToaGpsNanosecondsOfWeek(@IntRange(from=0) long); - method @NonNull public android.location.GnssMeasurementCorrections.Builder setVerticalPositionUncertaintyMeters(@FloatRange(from=0.0f) double); - } - - public final class GnssMeasurementRequest implements android.os.Parcelable { - method @NonNull public android.os.WorkSource getWorkSource(); - method public boolean isCorrelationVectorOutputsEnabled(); - } - - public static final class GnssMeasurementRequest.Builder { - method @NonNull public android.location.GnssMeasurementRequest.Builder setCorrelationVectorOutputsEnabled(boolean); - method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.location.GnssMeasurementRequest.Builder setWorkSource(@Nullable android.os.WorkSource); - } - - public final class GnssReflectingPlane implements android.os.Parcelable { - method public int describeContents(); - method @FloatRange(from=-1000.0F, to=10000.0f) public double getAltitudeMeters(); - method @FloatRange(from=0.0f, to=360.0f) public double getAzimuthDegrees(); - method @FloatRange(from=-90.0F, to=90.0f) public double getLatitudeDegrees(); - method @FloatRange(from=-180.0F, to=180.0f) public double getLongitudeDegrees(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssReflectingPlane.Builder { - ctor public GnssReflectingPlane.Builder(); - method @NonNull public android.location.GnssReflectingPlane build(); - method @NonNull public android.location.GnssReflectingPlane.Builder setAltitudeMeters(@FloatRange(from=-1000.0F, to=10000.0f) double); - method @NonNull public android.location.GnssReflectingPlane.Builder setAzimuthDegrees(@FloatRange(from=0.0f, to=360.0f) double); - method @NonNull public android.location.GnssReflectingPlane.Builder setLatitudeDegrees(@FloatRange(from=-90.0F, to=90.0f) double); - method @NonNull public android.location.GnssReflectingPlane.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double); - } - - public final class GnssRequest implements android.os.Parcelable { - method public int describeContents(); - method public boolean isFullTracking(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssRequest.Builder { - ctor public GnssRequest.Builder(); - ctor public GnssRequest.Builder(@NonNull android.location.GnssRequest); - method @NonNull public android.location.GnssRequest build(); - method @NonNull public android.location.GnssRequest.Builder setFullTracking(boolean); - } - - public final class GnssSingleSatCorrection implements android.os.Parcelable { - method public int describeContents(); - method @FloatRange(from=0.0f, fromInclusive=false) public float getCarrierFrequencyHz(); - method @FloatRange(from=0.0f) public float getCombinedAttenuationDb(); - method public int getConstellationType(); - method @FloatRange(from=0.0f) public float getExcessPathLengthMeters(); - method @FloatRange(from=0.0f) public float getExcessPathLengthUncertaintyMeters(); - method @NonNull public java.util.List getGnssExcessPathInfoList(); - method @FloatRange(from=0.0f, to=1.0f) public float getProbabilityLineOfSight(); - method @Deprecated @Nullable public android.location.GnssReflectingPlane getReflectingPlane(); - method @IntRange(from=0) public int getSatelliteId(); - method public boolean hasCombinedAttenuation(); - method public boolean hasExcessPathLength(); - method public boolean hasExcessPathLengthUncertainty(); - method @Deprecated public boolean hasReflectingPlane(); - method public boolean hasValidSatelliteLineOfSight(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class GnssSingleSatCorrection.Builder { - ctor public GnssSingleSatCorrection.Builder(); - method @NonNull public android.location.GnssSingleSatCorrection build(); - method @NonNull public android.location.GnssSingleSatCorrection.Builder clearCombinedAttenuationDb(); - method @NonNull public android.location.GnssSingleSatCorrection.Builder clearExcessPathLengthMeters(); - method @NonNull public android.location.GnssSingleSatCorrection.Builder clearExcessPathLengthUncertaintyMeters(); - method @NonNull public android.location.GnssSingleSatCorrection.Builder clearProbabilityLineOfSight(); - method @NonNull public android.location.GnssSingleSatCorrection.Builder setCarrierFrequencyHz(@FloatRange(from=0.0f, fromInclusive=false) float); - method @NonNull public android.location.GnssSingleSatCorrection.Builder setCombinedAttenuationDb(@FloatRange(from=0.0f) float); - method @NonNull public android.location.GnssSingleSatCorrection.Builder setConstellationType(int); - method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthMeters(@FloatRange(from=0.0f) float); - method @NonNull public android.location.GnssSingleSatCorrection.Builder setExcessPathLengthUncertaintyMeters(@FloatRange(from=0.0f) float); - method @NonNull public android.location.GnssSingleSatCorrection.Builder setGnssExcessPathInfoList(@NonNull java.util.List); - method @NonNull public android.location.GnssSingleSatCorrection.Builder setProbabilityLineOfSight(@FloatRange(from=0.0f, to=1.0f) float); - method @Deprecated @NonNull public android.location.GnssSingleSatCorrection.Builder setReflectingPlane(@Nullable android.location.GnssReflectingPlane); - method @NonNull public android.location.GnssSingleSatCorrection.Builder setSatelliteId(@IntRange(from=0) int); - } - - @Deprecated public class GpsClock implements android.os.Parcelable { - method @Deprecated public int describeContents(); - method @Deprecated public double getBiasInNs(); - method @Deprecated public double getBiasUncertaintyInNs(); - method @Deprecated public double getDriftInNsPerSec(); - method @Deprecated public double getDriftUncertaintyInNsPerSec(); - method @Deprecated public long getFullBiasInNs(); - method @Deprecated public short getLeapSecond(); - method @Deprecated public long getTimeInNs(); - method @Deprecated public double getTimeUncertaintyInNs(); - method @Deprecated public byte getType(); - method @Deprecated public boolean hasBiasInNs(); - method @Deprecated public boolean hasBiasUncertaintyInNs(); - method @Deprecated public boolean hasDriftInNsPerSec(); - method @Deprecated public boolean hasDriftUncertaintyInNsPerSec(); - method @Deprecated public boolean hasFullBiasInNs(); - method @Deprecated public boolean hasLeapSecond(); - method @Deprecated public boolean hasTimeUncertaintyInNs(); - method @Deprecated public void reset(); - method @Deprecated public void resetBiasInNs(); - method @Deprecated public void resetBiasUncertaintyInNs(); - method @Deprecated public void resetDriftInNsPerSec(); - method @Deprecated public void resetDriftUncertaintyInNsPerSec(); - method @Deprecated public void resetFullBiasInNs(); - method @Deprecated public void resetLeapSecond(); - method @Deprecated public void resetTimeUncertaintyInNs(); - method @Deprecated public void set(android.location.GpsClock); - method @Deprecated public void setBiasInNs(double); - method @Deprecated public void setBiasUncertaintyInNs(double); - method @Deprecated public void setDriftInNsPerSec(double); - method @Deprecated public void setDriftUncertaintyInNsPerSec(double); - method @Deprecated public void setFullBiasInNs(long); - method @Deprecated public void setLeapSecond(short); - method @Deprecated public void setTimeInNs(long); - method @Deprecated public void setTimeUncertaintyInNs(double); - method @Deprecated public void setType(byte); - method @Deprecated public void writeToParcel(android.os.Parcel, int); - field @Deprecated @NonNull public static final android.os.Parcelable.Creator CREATOR; - field @Deprecated public static final byte TYPE_GPS_TIME = 2; // 0x2 - field @Deprecated public static final byte TYPE_LOCAL_HW_TIME = 1; // 0x1 - field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0 - } - - @Deprecated public class GpsMeasurement implements android.os.Parcelable { - method @Deprecated public int describeContents(); - method @Deprecated public double getAccumulatedDeltaRangeInMeters(); - method @Deprecated public short getAccumulatedDeltaRangeState(); - method @Deprecated public double getAccumulatedDeltaRangeUncertaintyInMeters(); - method @Deprecated public double getAzimuthInDeg(); - method @Deprecated public double getAzimuthUncertaintyInDeg(); - method @Deprecated public int getBitNumber(); - method @Deprecated public long getCarrierCycles(); - method @Deprecated public float getCarrierFrequencyInHz(); - method @Deprecated public double getCarrierPhase(); - method @Deprecated public double getCarrierPhaseUncertainty(); - method @Deprecated public double getCn0InDbHz(); - method @Deprecated public double getCodePhaseInChips(); - method @Deprecated public double getCodePhaseUncertaintyInChips(); - method @Deprecated public double getDopplerShiftInHz(); - method @Deprecated public double getDopplerShiftUncertaintyInHz(); - method @Deprecated public double getElevationInDeg(); - method @Deprecated public double getElevationUncertaintyInDeg(); - method @Deprecated public byte getLossOfLock(); - method @Deprecated public byte getMultipathIndicator(); - method @Deprecated public byte getPrn(); - method @Deprecated public double getPseudorangeInMeters(); - method @Deprecated public double getPseudorangeRateInMetersPerSec(); - method @Deprecated public double getPseudorangeRateUncertaintyInMetersPerSec(); - method @Deprecated public double getPseudorangeUncertaintyInMeters(); - method @Deprecated public long getReceivedGpsTowInNs(); - method @Deprecated public long getReceivedGpsTowUncertaintyInNs(); - method @Deprecated public double getSnrInDb(); - method @Deprecated public short getState(); - method @Deprecated public short getTimeFromLastBitInMs(); - method @Deprecated public double getTimeOffsetInNs(); - method @Deprecated public boolean hasAzimuthInDeg(); - method @Deprecated public boolean hasAzimuthUncertaintyInDeg(); - method @Deprecated public boolean hasBitNumber(); - method @Deprecated public boolean hasCarrierCycles(); - method @Deprecated public boolean hasCarrierFrequencyInHz(); - method @Deprecated public boolean hasCarrierPhase(); - method @Deprecated public boolean hasCarrierPhaseUncertainty(); - method @Deprecated public boolean hasCodePhaseInChips(); - method @Deprecated public boolean hasCodePhaseUncertaintyInChips(); - method @Deprecated public boolean hasDopplerShiftInHz(); - method @Deprecated public boolean hasDopplerShiftUncertaintyInHz(); - method @Deprecated public boolean hasElevationInDeg(); - method @Deprecated public boolean hasElevationUncertaintyInDeg(); - method @Deprecated public boolean hasPseudorangeInMeters(); - method @Deprecated public boolean hasPseudorangeUncertaintyInMeters(); - method @Deprecated public boolean hasSnrInDb(); - method @Deprecated public boolean hasTimeFromLastBitInMs(); - method @Deprecated public boolean isPseudorangeRateCorrected(); - method @Deprecated public boolean isUsedInFix(); - method @Deprecated public void reset(); - method @Deprecated public void resetAzimuthInDeg(); - method @Deprecated public void resetAzimuthUncertaintyInDeg(); - method @Deprecated public void resetBitNumber(); - method @Deprecated public void resetCarrierCycles(); - method @Deprecated public void resetCarrierFrequencyInHz(); - method @Deprecated public void resetCarrierPhase(); - method @Deprecated public void resetCarrierPhaseUncertainty(); - method @Deprecated public void resetCodePhaseInChips(); - method @Deprecated public void resetCodePhaseUncertaintyInChips(); - method @Deprecated public void resetDopplerShiftInHz(); - method @Deprecated public void resetDopplerShiftUncertaintyInHz(); - method @Deprecated public void resetElevationInDeg(); - method @Deprecated public void resetElevationUncertaintyInDeg(); - method @Deprecated public void resetPseudorangeInMeters(); - method @Deprecated public void resetPseudorangeUncertaintyInMeters(); - method @Deprecated public void resetSnrInDb(); - method @Deprecated public void resetTimeFromLastBitInMs(); - method @Deprecated public void set(android.location.GpsMeasurement); - method @Deprecated public void setAccumulatedDeltaRangeInMeters(double); - method @Deprecated public void setAccumulatedDeltaRangeState(short); - method @Deprecated public void setAccumulatedDeltaRangeUncertaintyInMeters(double); - method @Deprecated public void setAzimuthInDeg(double); - method @Deprecated public void setAzimuthUncertaintyInDeg(double); - method @Deprecated public void setBitNumber(int); - method @Deprecated public void setCarrierCycles(long); - method @Deprecated public void setCarrierFrequencyInHz(float); - method @Deprecated public void setCarrierPhase(double); - method @Deprecated public void setCarrierPhaseUncertainty(double); - method @Deprecated public void setCn0InDbHz(double); - method @Deprecated public void setCodePhaseInChips(double); - method @Deprecated public void setCodePhaseUncertaintyInChips(double); - method @Deprecated public void setDopplerShiftInHz(double); - method @Deprecated public void setDopplerShiftUncertaintyInHz(double); - method @Deprecated public void setElevationInDeg(double); - method @Deprecated public void setElevationUncertaintyInDeg(double); - method @Deprecated public void setLossOfLock(byte); - method @Deprecated public void setMultipathIndicator(byte); - method @Deprecated public void setPrn(byte); - method @Deprecated public void setPseudorangeInMeters(double); - method @Deprecated public void setPseudorangeRateInMetersPerSec(double); - method @Deprecated public void setPseudorangeRateUncertaintyInMetersPerSec(double); - method @Deprecated public void setPseudorangeUncertaintyInMeters(double); - method @Deprecated public void setReceivedGpsTowInNs(long); - method @Deprecated public void setReceivedGpsTowUncertaintyInNs(long); - method @Deprecated public void setSnrInDb(double); - method @Deprecated public void setState(short); - method @Deprecated public void setTimeFromLastBitInMs(short); - method @Deprecated public void setTimeOffsetInNs(double); - method @Deprecated public void setUsedInFix(boolean); - method @Deprecated public void writeToParcel(android.os.Parcel, int); - field @Deprecated public static final short ADR_STATE_CYCLE_SLIP = 4; // 0x4 - field @Deprecated public static final short ADR_STATE_RESET = 2; // 0x2 - field @Deprecated public static final short ADR_STATE_UNKNOWN = 0; // 0x0 - field @Deprecated public static final short ADR_STATE_VALID = 1; // 0x1 - field @Deprecated @NonNull public static final android.os.Parcelable.Creator CREATOR; - field @Deprecated public static final byte LOSS_OF_LOCK_CYCLE_SLIP = 2; // 0x2 - field @Deprecated public static final byte LOSS_OF_LOCK_OK = 1; // 0x1 - field @Deprecated public static final byte LOSS_OF_LOCK_UNKNOWN = 0; // 0x0 - field @Deprecated public static final byte MULTIPATH_INDICATOR_DETECTED = 1; // 0x1 - field @Deprecated public static final byte MULTIPATH_INDICATOR_NOT_USED = 2; // 0x2 - field @Deprecated public static final byte MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0 - field @Deprecated public static final short STATE_BIT_SYNC = 2; // 0x2 - field @Deprecated public static final short STATE_CODE_LOCK = 1; // 0x1 - field @Deprecated public static final short STATE_MSEC_AMBIGUOUS = 16; // 0x10 - field @Deprecated public static final short STATE_SUBFRAME_SYNC = 4; // 0x4 - field @Deprecated public static final short STATE_TOW_DECODED = 8; // 0x8 - field @Deprecated public static final short STATE_UNKNOWN = 0; // 0x0 - } - - @Deprecated public class GpsMeasurementsEvent implements android.os.Parcelable { - ctor @Deprecated public GpsMeasurementsEvent(android.location.GpsClock, android.location.GpsMeasurement[]); - method @Deprecated public int describeContents(); - method @Deprecated @NonNull public android.location.GpsClock getClock(); - method @Deprecated @NonNull public java.util.Collection getMeasurements(); - method @Deprecated public void writeToParcel(android.os.Parcel, int); - field @Deprecated @NonNull public static final android.os.Parcelable.Creator CREATOR; - field @Deprecated public static final int STATUS_GPS_LOCATION_DISABLED = 2; // 0x2 - field @Deprecated public static final int STATUS_NOT_SUPPORTED = 0; // 0x0 - field @Deprecated public static final int STATUS_READY = 1; // 0x1 - } - - @Deprecated public static interface GpsMeasurementsEvent.Listener { - method @Deprecated public void onGpsMeasurementsReceived(android.location.GpsMeasurementsEvent); - method @Deprecated public void onStatusChanged(int); - } - - @Deprecated public class GpsNavigationMessage implements android.os.Parcelable { - method @Deprecated public int describeContents(); - method @Deprecated @NonNull public byte[] getData(); - method @Deprecated public short getMessageId(); - method @Deprecated public byte getPrn(); - method @Deprecated public short getStatus(); - method @Deprecated public short getSubmessageId(); - method @Deprecated public byte getType(); - method @Deprecated public void reset(); - method @Deprecated public void set(android.location.GpsNavigationMessage); - method @Deprecated public void setData(byte[]); - method @Deprecated public void setMessageId(short); - method @Deprecated public void setPrn(byte); - method @Deprecated public void setStatus(short); - method @Deprecated public void setSubmessageId(short); - method @Deprecated public void setType(byte); - method @Deprecated public void writeToParcel(android.os.Parcel, int); - field @Deprecated @NonNull public static final android.os.Parcelable.Creator CREATOR; - field @Deprecated public static final short STATUS_PARITY_PASSED = 1; // 0x1 - field @Deprecated public static final short STATUS_PARITY_REBUILT = 2; // 0x2 - field @Deprecated public static final short STATUS_UNKNOWN = 0; // 0x0 - field @Deprecated public static final byte TYPE_CNAV2 = 4; // 0x4 - field @Deprecated public static final byte TYPE_L1CA = 1; // 0x1 - field @Deprecated public static final byte TYPE_L2CNAV = 2; // 0x2 - field @Deprecated public static final byte TYPE_L5CNAV = 3; // 0x3 - field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0 - } - - @Deprecated public class GpsNavigationMessageEvent implements android.os.Parcelable { - ctor @Deprecated public GpsNavigationMessageEvent(android.location.GpsNavigationMessage); - method @Deprecated public int describeContents(); - method @Deprecated @NonNull public android.location.GpsNavigationMessage getNavigationMessage(); - method @Deprecated public void writeToParcel(android.os.Parcel, int); - field @Deprecated @NonNull public static final android.os.Parcelable.Creator CREATOR; - field @Deprecated public static int STATUS_GPS_LOCATION_DISABLED; - field @Deprecated public static int STATUS_NOT_SUPPORTED; - field @Deprecated public static int STATUS_READY; - } - - @Deprecated public static interface GpsNavigationMessageEvent.Listener { - method @Deprecated public void onGpsNavigationMessageReceived(android.location.GpsNavigationMessageEvent); - method @Deprecated public void onStatusChanged(int); - } - - public final class LastLocationRequest implements android.os.Parcelable { - method public int describeContents(); - method public boolean isAdasGnssBypass(); - method public boolean isHiddenFromAppOps(); - method public boolean isLocationSettingsIgnored(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class LastLocationRequest.Builder { - ctor public LastLocationRequest.Builder(); - ctor public LastLocationRequest.Builder(@NonNull android.location.LastLocationRequest); - method @NonNull public android.location.LastLocationRequest build(); - method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_BYPASS) public android.location.LastLocationRequest.Builder setAdasGnssBypass(boolean); - method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_APP_OPS_STATS) public android.location.LastLocationRequest.Builder setHiddenFromAppOps(boolean); - method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_BYPASS) public android.location.LastLocationRequest.Builder setLocationSettingsIgnored(boolean); - } - public class Location implements android.os.Parcelable { method public void makeComplete(); method @Deprecated public void setIsFromMockProvider(boolean); field @Deprecated public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation"; } - public class LocationManager { - method @RequiresPermission(allOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.INTERACT_ACROSS_USERS}) public void addProviderRequestChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.location.provider.ProviderRequest.ChangedListener); - method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void flushGnssBatch(); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull android.location.LocationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); - method @Nullable public String getExtraLocationControllerPackage(); - method @Deprecated public int getGnssBatchSize(); - method @Nullable @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public android.location.Location getLastKnownLocation(@NonNull String, @NonNull android.location.LastLocationRequest); - method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public void injectGnssMeasurementCorrections(@NonNull android.location.GnssMeasurementCorrections); - method public boolean isAdasGnssLocationEnabled(); - method public boolean isExtraLocationControllerPackageEnabled(); - method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle); - method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle); - method @Deprecated @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String); - method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@Nullable String, @NonNull String, @Nullable String); - method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.LOCATION_HARDWARE, android.Manifest.permission.UPDATE_APP_OPS_STATS}) public boolean registerGnssBatchedLocationCallback(long, boolean, @NonNull android.location.BatchedLocationCallback, @Nullable android.os.Handler); - method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback); - method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void removeProviderRequestChangedListener(@NonNull android.location.provider.ProviderRequest.ChangedListener); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener); - method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.app.PendingIntent); - method @RequiresPermission(android.Manifest.permission.LOCATION_BYPASS) public void setAdasGnssLocationEnabled(boolean); - method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackage(@Nullable String); - method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setExtraLocationControllerPackageEnabled(boolean); - method @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public void setLocationEnabledForUser(boolean, @NonNull android.os.UserHandle); - method @Deprecated @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public boolean setProviderEnabledForUser(@NonNull String, boolean, @NonNull android.os.UserHandle); - method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean unregisterGnssBatchedLocationCallback(@NonNull android.location.BatchedLocationCallback); - field public static final String ACTION_ADAS_GNSS_ENABLED_CHANGED = "android.location.action.ADAS_GNSS_ENABLED_CHANGED"; - field public static final String EXTRA_ADAS_GNSS_ENABLED = "android.location.extra.ADAS_GNSS_ENABLED"; - field @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public static final String GPS_HARDWARE_PROVIDER = "gps_hardware"; - } - - public final class LocationRequest implements android.os.Parcelable { - method @Deprecated @NonNull public static android.location.LocationRequest create(); - method @Deprecated @NonNull public static android.location.LocationRequest createFromDeprecatedCriteria(@NonNull android.location.Criteria, long, float, boolean); - method @Deprecated @NonNull public static android.location.LocationRequest createFromDeprecatedProvider(@NonNull String, long, float, boolean); - method @Deprecated public long getExpireAt(); - method @Deprecated public long getExpireIn(); - method @Deprecated public long getFastestInterval(); - method @Deprecated public boolean getHideFromAppOps(); - method @Deprecated public long getInterval(); - method @Deprecated public int getNumUpdates(); - method @Deprecated @NonNull public String getProvider(); - method @Deprecated public float getSmallestDisplacement(); - method @NonNull public android.os.WorkSource getWorkSource(); - method public boolean isAdasGnssBypass(); - method public boolean isHiddenFromAppOps(); - method public boolean isLocationSettingsIgnored(); - method public boolean isLowPower(); - method @Deprecated public boolean isLowPowerMode(); - method @Deprecated @NonNull public android.location.LocationRequest setExpireAt(long); - method @Deprecated @NonNull public android.location.LocationRequest setExpireIn(long); - method @Deprecated @NonNull public android.location.LocationRequest setFastestInterval(long); - method @Deprecated public void setHideFromAppOps(boolean); - method @Deprecated @NonNull public android.location.LocationRequest setInterval(long); - method @Deprecated @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_BYPASS) public android.location.LocationRequest setLocationSettingsIgnored(boolean); - method @Deprecated @NonNull public android.location.LocationRequest setLowPowerMode(boolean); - method @Deprecated @NonNull public android.location.LocationRequest setNumUpdates(int); - method @Deprecated @NonNull public android.location.LocationRequest setProvider(@NonNull String); - method @Deprecated @NonNull public android.location.LocationRequest setQuality(int); - method @Deprecated @NonNull public android.location.LocationRequest setSmallestDisplacement(float); - method @Deprecated public void setWorkSource(@Nullable android.os.WorkSource); - field @Deprecated public static final int ACCURACY_BLOCK = 102; // 0x66 - field @Deprecated public static final int ACCURACY_CITY = 104; // 0x68 - field @Deprecated public static final int ACCURACY_FINE = 100; // 0x64 - field @Deprecated public static final int POWER_HIGH = 203; // 0xcb - field @Deprecated public static final int POWER_LOW = 201; // 0xc9 - field @Deprecated public static final int POWER_NONE = 200; // 0xc8 - } - - public static final class LocationRequest.Builder { - method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_BYPASS) public android.location.LocationRequest.Builder setAdasGnssBypass(boolean); - method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_APP_OPS_STATS) public android.location.LocationRequest.Builder setHiddenFromAppOps(boolean); - method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_BYPASS) public android.location.LocationRequest.Builder setLocationSettingsIgnored(boolean); - method @NonNull @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public android.location.LocationRequest.Builder setLowPower(boolean); - method @NonNull @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public android.location.LocationRequest.Builder setWorkSource(@Nullable android.os.WorkSource); - } - - public final class SatellitePvt implements android.os.Parcelable { - method public int describeContents(); - method @Nullable public android.location.SatellitePvt.ClockInfo getClockInfo(); - method public int getEphemerisSource(); - method @FloatRange public double getIonoDelayMeters(); - method @IntRange(from=0, to=1023) public int getIssueOfDataClock(); - method @IntRange(from=0, to=1023) public int getIssueOfDataEphemeris(); - method @Nullable public android.location.SatellitePvt.PositionEcef getPositionEcef(); - method @IntRange(from=0) public long getTimeOfClockSeconds(); - method @IntRange(from=0) public long getTimeOfEphemerisSeconds(); - method @FloatRange public double getTropoDelayMeters(); - method @Nullable public android.location.SatellitePvt.VelocityEcef getVelocityEcef(); - method public boolean hasIono(); - method public boolean hasIssueOfDataClock(); - method public boolean hasIssueOfDataEphemeris(); - method public boolean hasPositionVelocityClockInfo(); - method public boolean hasTimeOfClockSeconds(); - method public boolean hasTimeOfEphemerisSeconds(); - method public boolean hasTropo(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - field public static final int EPHEMERIS_SOURCE_DEMODULATED = 0; // 0x0 - field public static final int EPHEMERIS_SOURCE_OTHER = 3; // 0x3 - field public static final int EPHEMERIS_SOURCE_SERVER_LONG_TERM = 2; // 0x2 - field public static final int EPHEMERIS_SOURCE_SERVER_NORMAL = 1; // 0x1 - } - - public static final class SatellitePvt.Builder { - ctor public SatellitePvt.Builder(); - method @NonNull public android.location.SatellitePvt build(); - method @NonNull public android.location.SatellitePvt.Builder setClockInfo(@NonNull android.location.SatellitePvt.ClockInfo); - method @NonNull public android.location.SatellitePvt.Builder setEphemerisSource(int); - method @NonNull public android.location.SatellitePvt.Builder setIonoDelayMeters(@FloatRange(from=0.0f, to=100.0f) double); - method @NonNull public android.location.SatellitePvt.Builder setIssueOfDataClock(@IntRange(from=0, to=1023) int); - method @NonNull public android.location.SatellitePvt.Builder setIssueOfDataEphemeris(@IntRange(from=0, to=1023) int); - method @NonNull public android.location.SatellitePvt.Builder setPositionEcef(@NonNull android.location.SatellitePvt.PositionEcef); - method @NonNull public android.location.SatellitePvt.Builder setTimeOfClockSeconds(@IntRange(from=0) long); - method @NonNull public android.location.SatellitePvt.Builder setTimeOfEphemerisSeconds(@IntRange(from=0) long); - method @NonNull public android.location.SatellitePvt.Builder setTropoDelayMeters(@FloatRange(from=0.0f, to=100.0f) double); - method @NonNull public android.location.SatellitePvt.Builder setVelocityEcef(@NonNull android.location.SatellitePvt.VelocityEcef); - } - - public static final class SatellitePvt.ClockInfo implements android.os.Parcelable { - ctor public SatellitePvt.ClockInfo(double, double, double); - method public int describeContents(); - method @FloatRange public double getClockDriftMetersPerSecond(); - method @FloatRange public double getHardwareCodeBiasMeters(); - method @FloatRange public double getTimeCorrectionMeters(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class SatellitePvt.PositionEcef implements android.os.Parcelable { - ctor public SatellitePvt.PositionEcef(double, double, double, double); - method public int describeContents(); - method @FloatRange(from=0.0f, fromInclusive=false) public double getUreMeters(); - method @FloatRange public double getXMeters(); - method @FloatRange public double getYMeters(); - method @FloatRange public double getZMeters(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - - public static final class SatellitePvt.VelocityEcef implements android.os.Parcelable { - ctor public SatellitePvt.VelocityEcef(double, double, double, double); - method public int describeContents(); - method @FloatRange(from=0.0f, fromInclusive=false) public double getUreRateMetersPerSecond(); - method @FloatRange public double getXMetersPerSecond(); - method @FloatRange public double getYMetersPerSecond(); - method @FloatRange public double getZMetersPerSecond(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - } - -} - -package android.location.provider { - - public abstract class LocationProviderBase { - ctor public LocationProviderBase(@NonNull android.content.Context, @NonNull String, @NonNull android.location.provider.ProviderProperties); - method @Nullable public final android.os.IBinder getBinder(); - method @NonNull public android.location.provider.ProviderProperties getProperties(); - method public boolean isAllowed(); - method public abstract void onFlush(@NonNull android.location.provider.LocationProviderBase.OnFlushCompleteCallback); - method public abstract void onSendExtraCommand(@NonNull String, @Nullable android.os.Bundle); - method public abstract void onSetRequest(@NonNull android.location.provider.ProviderRequest); - method public void reportLocation(@NonNull android.location.Location); - method public void reportLocations(@NonNull java.util.List); - method public void setAllowed(boolean); - method public void setProperties(@NonNull android.location.provider.ProviderProperties); - field public static final String ACTION_FUSED_PROVIDER = "com.android.location.service.FusedLocationProvider"; - field public static final String ACTION_GNSS_PROVIDER = "android.location.provider.action.GNSS_PROVIDER"; - field public static final String ACTION_NETWORK_PROVIDER = "com.android.location.service.v3.NetworkLocationProvider"; - } - - public static interface LocationProviderBase.OnFlushCompleteCallback { - method public void onFlushComplete(); - } - - public final class ProviderRequest implements android.os.Parcelable { - method public int describeContents(); - method @IntRange(from=0) public long getIntervalMillis(); - method @IntRange(from=0) public long getMaxUpdateDelayMillis(); - method public int getQuality(); - method @NonNull public android.os.WorkSource getWorkSource(); - method public boolean isActive(); - method public boolean isLocationSettingsIgnored(); - method public boolean isLowPower(); - method public void writeToParcel(@NonNull android.os.Parcel, int); - field @NonNull public static final android.os.Parcelable.Creator CREATOR; - field @NonNull public static final android.location.provider.ProviderRequest EMPTY_REQUEST; - field public static final long INTERVAL_DISABLED = 9223372036854775807L; // 0x7fffffffffffffffL - } - - public static final class ProviderRequest.Builder { - ctor public ProviderRequest.Builder(); - method @NonNull public android.location.provider.ProviderRequest build(); - method @NonNull public android.location.provider.ProviderRequest.Builder setIntervalMillis(@IntRange(from=0) long); - method @NonNull public android.location.provider.ProviderRequest.Builder setLocationSettingsIgnored(boolean); - method @NonNull public android.location.provider.ProviderRequest.Builder setLowPower(boolean); - method @NonNull public android.location.provider.ProviderRequest.Builder setMaxUpdateDelayMillis(@IntRange(from=0) long); - method @NonNull public android.location.provider.ProviderRequest.Builder setQuality(int); - method @NonNull public android.location.provider.ProviderRequest.Builder setWorkSource(@NonNull android.os.WorkSource); - } - - public static interface ProviderRequest.ChangedListener { - method public void onProviderRequestChanged(@NonNull String, @NonNull android.location.provider.ProviderRequest); - } - } package android.media { @@ -7273,8 +6650,11 @@ package android.media.audiofx { package android.media.audiopolicy { - public class AudioMix { + public class AudioMix implements android.os.Parcelable { + method public int describeContents(); method public int getMixState(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; field public static final int MIX_STATE_DISABLED = -1; // 0xffffffff field public static final int MIX_STATE_IDLE = 0; // 0x0 field public static final int MIX_STATE_MIXING = 1; // 0x1 @@ -7283,15 +6663,18 @@ package android.media.audiopolicy { } public static class AudioMix.Builder { - ctor public AudioMix.Builder(android.media.audiopolicy.AudioMixingRule) throws java.lang.IllegalArgumentException; + ctor public AudioMix.Builder(@NonNull android.media.audiopolicy.AudioMixingRule) throws java.lang.IllegalArgumentException; method public android.media.audiopolicy.AudioMix build() throws java.lang.IllegalArgumentException; method public android.media.audiopolicy.AudioMix.Builder setDevice(@NonNull android.media.AudioDeviceInfo) throws java.lang.IllegalArgumentException; - method public android.media.audiopolicy.AudioMix.Builder setFormat(android.media.AudioFormat) throws java.lang.IllegalArgumentException; + method public android.media.audiopolicy.AudioMix.Builder setFormat(@NonNull android.media.AudioFormat) throws java.lang.IllegalArgumentException; method public android.media.audiopolicy.AudioMix.Builder setRouteFlags(int) throws java.lang.IllegalArgumentException; } - public class AudioMixingRule { + public class AudioMixingRule implements android.os.Parcelable { + method public int describeContents(); method public int getTargetMixRole(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; field public static final int MIX_ROLE_INJECTOR = 1; // 0x1 field public static final int MIX_ROLE_PLAYERS = 0; // 0x0 field public static final int RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET = 2; // 0x2 @@ -7328,6 +6711,7 @@ package android.media.audiopolicy { method public boolean setUidDeviceAffinity(int, @NonNull java.util.List); method public boolean setUserIdDeviceAffinity(int, @NonNull java.util.List); method public String toLogFriendlyString(); + method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int updateMixingRules(@NonNull java.util.List>); field public static final int FOCUS_POLICY_DUCKING_DEFAULT = 0; // 0x0 field public static final int FOCUS_POLICY_DUCKING_IN_APP = 0; // 0x0 field public static final int FOCUS_POLICY_DUCKING_IN_POLICY = 1; // 0x1 @@ -13254,6 +12638,48 @@ package android.service.voice { method @NonNull public android.service.voice.HotwordRejectedResult.Builder setConfidenceLevel(int); } + public final class HotwordTrainingAudio implements android.os.Parcelable { + method public int describeContents(); + method @NonNull public android.media.AudioFormat getAudioFormat(); + method @NonNull public int getAudioType(); + method @NonNull public byte[] getHotwordAudio(); + method public int getHotwordOffsetMillis(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; + field public static final int HOTWORD_OFFSET_UNSET = -1; // 0xffffffff + } + + public static final class HotwordTrainingAudio.Builder { + ctor public HotwordTrainingAudio.Builder(@NonNull byte[], @NonNull android.media.AudioFormat); + method @NonNull public android.service.voice.HotwordTrainingAudio build(); + method @NonNull public android.service.voice.HotwordTrainingAudio.Builder setAudioFormat(@NonNull android.media.AudioFormat); + method @NonNull public android.service.voice.HotwordTrainingAudio.Builder setAudioType(@NonNull int); + method @NonNull public android.service.voice.HotwordTrainingAudio.Builder setHotwordAudio(@NonNull byte[]); + method @NonNull public android.service.voice.HotwordTrainingAudio.Builder setHotwordOffsetMillis(int); + } + + public final class HotwordTrainingData implements android.os.Parcelable { + method public int describeContents(); + method public static int getMaxTrainingDataSize(); + method public int getTimeoutStage(); + method @NonNull public java.util.List getTrainingAudios(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator CREATOR; + field public static final int TIMEOUT_STAGE_EARLY = 2; // 0x2 + field public static final int TIMEOUT_STAGE_LATE = 4; // 0x4 + field public static final int TIMEOUT_STAGE_MIDDLE = 3; // 0x3 + field public static final int TIMEOUT_STAGE_UNKNOWN = 0; // 0x0 + field public static final int TIMEOUT_STAGE_VERY_EARLY = 1; // 0x1 + } + + public static final class HotwordTrainingData.Builder { + ctor public HotwordTrainingData.Builder(); + method @NonNull public android.service.voice.HotwordTrainingData.Builder addTrainingAudio(@NonNull android.service.voice.HotwordTrainingAudio); + method @NonNull public android.service.voice.HotwordTrainingData build(); + method @NonNull public android.service.voice.HotwordTrainingData.Builder setTimeoutStage(int); + method @NonNull public android.service.voice.HotwordTrainingData.Builder setTrainingAudios(@NonNull java.util.List); + } + public interface SandboxedDetectionInitializer { method public static int getMaxCustomInitializationStatus(); method public void onUpdateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory, long, @Nullable java.util.function.IntConsumer); @@ -17233,9 +16659,8 @@ package android.telephony.satellite { method public void onSatelliteDatagramReceived(long, @NonNull android.telephony.satellite.SatelliteDatagram, int, @NonNull java.util.function.Consumer); } - public class SatelliteManager { + public final class SatelliteManager { method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void deprovisionSatelliteService(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); - method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void onDeviceAlignedWithSatellite(boolean); method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void pollPendingSatelliteDatagrams(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void provisionSatelliteService(@NonNull String, @NonNull byte[], @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public int registerForSatelliteDatagram(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.satellite.SatelliteDatagramCallback); @@ -17250,6 +16675,7 @@ package android.telephony.satellite { method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestSatelliteEnabled(boolean, boolean, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void requestTimeForNextSatelliteVisibility(@NonNull java.util.concurrent.Executor, @NonNull android.os.OutcomeReceiver); method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void sendSatelliteDatagram(int, @NonNull android.telephony.satellite.SatelliteDatagram, boolean, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); + method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void setDeviceAlignedWithSatellite(boolean); method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void startSatelliteTransmissionUpdates(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer, @NonNull android.telephony.satellite.SatelliteTransmissionUpdateCallback); method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void stopSatelliteTransmissionUpdates(@NonNull android.telephony.satellite.SatelliteTransmissionUpdateCallback, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer); method @RequiresPermission(android.Manifest.permission.SATELLITE_COMMUNICATION) public void unregisterForSatelliteDatagram(@NonNull android.telephony.satellite.SatelliteDatagramCallback); @@ -17271,7 +16697,6 @@ package android.telephony.satellite { field public static final int NT_RADIO_TECHNOLOGY_NR_NTN = 2; // 0x2 field public static final int NT_RADIO_TECHNOLOGY_PROPRIETARY = 4; // 0x4 field public static final int NT_RADIO_TECHNOLOGY_UNKNOWN = 0; // 0x0 - field public static final int SATELLITE_ACCESS_BARRED = 16; // 0x10 field public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE = 0; // 0x0 field public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED = 7; // 0x7 field public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_NONE = 6; // 0x6 @@ -17281,35 +16706,39 @@ package android.telephony.satellite { field public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED = 3; // 0x3 field public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS = 2; // 0x2 field public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_UNKNOWN = -1; // 0xffffffff - field public static final int SATELLITE_ERROR = 1; // 0x1 - field public static final int SATELLITE_ERROR_NONE = 0; // 0x0 - field public static final int SATELLITE_INVALID_ARGUMENTS = 8; // 0x8 - field public static final int SATELLITE_INVALID_MODEM_STATE = 7; // 0x7 - field public static final int SATELLITE_INVALID_TELEPHONY_STATE = 6; // 0x6 - field public static final int SATELLITE_MODEM_BUSY = 22; // 0x16 - field public static final int SATELLITE_MODEM_ERROR = 4; // 0x4 + field @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) public static final int SATELLITE_DATAGRAM_TRANSFER_STATE_WAITING_TO_CONNECT = 8; // 0x8 + field @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) public static final int SATELLITE_MODEM_STATE_CONNECTED = 7; // 0x7 field public static final int SATELLITE_MODEM_STATE_DATAGRAM_RETRYING = 3; // 0x3 field public static final int SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING = 2; // 0x2 field public static final int SATELLITE_MODEM_STATE_IDLE = 0; // 0x0 field public static final int SATELLITE_MODEM_STATE_LISTENING = 1; // 0x1 + field @FlaggedApi(Flags.FLAG_OEM_ENABLED_SATELLITE_FLAG) public static final int SATELLITE_MODEM_STATE_NOT_CONNECTED = 6; // 0x6 field public static final int SATELLITE_MODEM_STATE_OFF = 4; // 0x4 field public static final int SATELLITE_MODEM_STATE_UNAVAILABLE = 5; // 0x5 field public static final int SATELLITE_MODEM_STATE_UNKNOWN = -1; // 0xffffffff - field public static final int SATELLITE_NETWORK_ERROR = 5; // 0x5 - field public static final int SATELLITE_NETWORK_TIMEOUT = 17; // 0x11 - field public static final int SATELLITE_NOT_AUTHORIZED = 19; // 0x13 - field public static final int SATELLITE_NOT_REACHABLE = 18; // 0x12 - field public static final int SATELLITE_NOT_SUPPORTED = 20; // 0x14 - field public static final int SATELLITE_NO_RESOURCES = 12; // 0xc - field public static final int SATELLITE_RADIO_NOT_AVAILABLE = 10; // 0xa - field public static final int SATELLITE_REQUEST_ABORTED = 15; // 0xf - field public static final int SATELLITE_REQUEST_FAILED = 9; // 0x9 - field public static final int SATELLITE_REQUEST_IN_PROGRESS = 21; // 0x15 - field public static final int SATELLITE_REQUEST_NOT_SUPPORTED = 11; // 0xb - field public static final int SATELLITE_SERVER_ERROR = 2; // 0x2 - field public static final int SATELLITE_SERVICE_ERROR = 3; // 0x3 - field public static final int SATELLITE_SERVICE_NOT_PROVISIONED = 13; // 0xd - field public static final int SATELLITE_SERVICE_PROVISION_IN_PROGRESS = 14; // 0xe + field public static final int SATELLITE_RESULT_ACCESS_BARRED = 16; // 0x10 + field public static final int SATELLITE_RESULT_ERROR = 1; // 0x1 + field public static final int SATELLITE_RESULT_INVALID_ARGUMENTS = 8; // 0x8 + field public static final int SATELLITE_RESULT_INVALID_MODEM_STATE = 7; // 0x7 + field public static final int SATELLITE_RESULT_INVALID_TELEPHONY_STATE = 6; // 0x6 + field public static final int SATELLITE_RESULT_MODEM_BUSY = 22; // 0x16 + field public static final int SATELLITE_RESULT_MODEM_ERROR = 4; // 0x4 + field public static final int SATELLITE_RESULT_NETWORK_ERROR = 5; // 0x5 + field public static final int SATELLITE_RESULT_NETWORK_TIMEOUT = 17; // 0x11 + field public static final int SATELLITE_RESULT_NOT_AUTHORIZED = 19; // 0x13 + field public static final int SATELLITE_RESULT_NOT_REACHABLE = 18; // 0x12 + field public static final int SATELLITE_RESULT_NOT_SUPPORTED = 20; // 0x14 + field public static final int SATELLITE_RESULT_NO_RESOURCES = 12; // 0xc + field public static final int SATELLITE_RESULT_RADIO_NOT_AVAILABLE = 10; // 0xa + field public static final int SATELLITE_RESULT_REQUEST_ABORTED = 15; // 0xf + field public static final int SATELLITE_RESULT_REQUEST_FAILED = 9; // 0x9 + field public static final int SATELLITE_RESULT_REQUEST_IN_PROGRESS = 21; // 0x15 + field public static final int SATELLITE_RESULT_REQUEST_NOT_SUPPORTED = 11; // 0xb + field public static final int SATELLITE_RESULT_SERVER_ERROR = 2; // 0x2 + field public static final int SATELLITE_RESULT_SERVICE_ERROR = 3; // 0x3 + field public static final int SATELLITE_RESULT_SERVICE_NOT_PROVISIONED = 13; // 0xd + field public static final int SATELLITE_RESULT_SERVICE_PROVISION_IN_PROGRESS = 14; // 0xe + field public static final int SATELLITE_RESULT_SUCCESS = 0; // 0x0 } public static class SatelliteManager.SatelliteException extends java.lang.Exception { diff --git a/core/api/system-lint-baseline.txt b/core/api/system-lint-baseline.txt index 6c233270bad598a07a2b8cc1d93f6fb654ae09d0..ee031db50b620071b47d618dc65af3e188901585 100644 --- a/core/api/system-lint-baseline.txt +++ b/core/api/system-lint-baseline.txt @@ -21,28 +21,10 @@ ListenerLast: android.telephony.satellite.SatelliteManager#stopSatelliteTransmis Listeners should always be at end of argument list (method `stopSatelliteTransmissionUpdates`) -MissingGetterMatchingBuilder: android.telecom.CallScreeningService.CallResponse.Builder#setShouldScreenCallViaAudioProcessing(boolean): - android.telecom.CallScreeningService.CallResponse does not declare a `shouldScreenCallViaAudioProcessing()` method matching method android.telecom.CallScreeningService.CallResponse.Builder.setShouldScreenCallViaAudioProcessing(boolean) -MissingGetterMatchingBuilder: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String): - android.telephony.mbms.DownloadRequest does not declare a `getServiceId()` method matching method android.telephony.mbms.DownloadRequest.Builder.setServiceId(String) - - MissingNullability: android.media.soundtrigger.SoundTriggerDetectionService#onUnbind(android.content.Intent) parameter #0: Missing nullability on parameter `intent` in method `onUnbind` -MissingNullability: android.media.tv.TvRecordingClient.RecordingCallback#onEvent(String, String, android.os.Bundle) parameter #0: - Missing nullability on parameter `inputId` in method `onEvent` -MissingNullability: android.media.tv.TvRecordingClient.RecordingCallback#onEvent(String, String, android.os.Bundle) parameter #1: - Missing nullability on parameter `eventType` in method `onEvent` -MissingNullability: android.media.tv.TvRecordingClient.RecordingCallback#onEvent(String, String, android.os.Bundle) parameter #2: - Missing nullability on parameter `eventArgs` in method `onEvent` MissingNullability: android.printservice.recommendation.RecommendationService#attachBaseContext(android.content.Context) parameter #0: Missing nullability on parameter `base` in method `attachBaseContext` -MissingNullability: android.provider.ContactsContract.MetadataSync#CONTENT_URI: - Missing nullability on field `CONTENT_URI` in class `class android.provider.ContactsContract.MetadataSync` -MissingNullability: android.provider.ContactsContract.MetadataSync#METADATA_AUTHORITY_URI: - Missing nullability on field `METADATA_AUTHORITY_URI` in class `class android.provider.ContactsContract.MetadataSync` -MissingNullability: android.provider.ContactsContract.MetadataSyncState#CONTENT_URI: - Missing nullability on field `CONTENT_URI` in class `class android.provider.ContactsContract.MetadataSyncState` MissingNullability: android.provider.SearchIndexablesProvider#attachInfo(android.content.Context, android.content.pm.ProviderInfo) parameter #0: Missing nullability on parameter `context` in method `attachInfo` MissingNullability: android.provider.SearchIndexablesProvider#attachInfo(android.content.Context, android.content.pm.ProviderInfo) parameter #1: @@ -61,10 +43,6 @@ MissingNullability: android.telephony.NetworkService#onUnbind(android.content.In Missing nullability on parameter `intent` in method `onUnbind` MissingNullability: android.telephony.data.DataService#onUnbind(android.content.Intent) parameter #0: Missing nullability on parameter `intent` in method `onUnbind` -MissingNullability: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String): - Missing nullability on method `setServiceId` return -MissingNullability: android.telephony.mbms.DownloadRequest.Builder#setServiceId(String) parameter #0: - Missing nullability on parameter `serviceId` in method `setServiceId` ProtectedMember: android.printservice.recommendation.RecommendationService#attachBaseContext(android.content.Context): @@ -135,16 +113,6 @@ SamShouldBeLast: android.content.pm.ResolveInfo#dump(android.util.Printer, Strin SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.ResolveInfo.dump) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.location.Location#dump(android.util.Printer, String): SAM-compatible parameters (such as parameter 1, "pw", in android.location.Location.dump) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#addNmeaListener(android.location.OnNmeaMessageListener, android.os.Handler): - SAM-compatible parameters (such as parameter 1, "listener", in android.location.LocationManager.addNmeaListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(String, long, float, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 4, "listener", in android.location.LocationManager.requestLocationUpdates) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestLocationUpdates(long, float, android.location.Criteria, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 4, "listener", in android.location.LocationManager.requestLocationUpdates) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestSingleUpdate(String, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 2, "listener", in android.location.LocationManager.requestSingleUpdate) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.location.LocationManager#requestSingleUpdate(android.location.Criteria, android.location.LocationListener, android.os.Looper): - SAM-compatible parameters (such as parameter 2, "listener", in android.location.LocationManager.requestSingleUpdate) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.media.AudioFocusRequest.Builder#setOnAudioFocusChangeListener(android.media.AudioManager.OnAudioFocusChangeListener, android.os.Handler): SAM-compatible parameters (such as parameter 1, "listener", in android.media.AudioFocusRequest.Builder.setOnAudioFocusChangeListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int): @@ -183,12 +151,6 @@ SamShouldBeLast: android.nfc.NfcAdapter#enableReaderMode(android.app.Activity, a SAM-compatible parameters (such as parameter 2, "callback", in android.nfc.NfcAdapter.enableReaderMode) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.nfc.NfcAdapter#ignore(android.nfc.Tag, int, android.nfc.NfcAdapter.OnTagRemovedListener, android.os.Handler): SAM-compatible parameters (such as parameter 3, "tagRemovedListener", in android.nfc.NfcAdapter.ignore) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.nfc.NfcAdapter#setBeamPushUrisCallback(android.nfc.NfcAdapter.CreateBeamUrisCallback, android.app.Activity): - SAM-compatible parameters (such as parameter 1, "callback", in android.nfc.NfcAdapter.setBeamPushUrisCallback) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.nfc.NfcAdapter#setNdefPushMessageCallback(android.nfc.NfcAdapter.CreateNdefMessageCallback, android.app.Activity, android.app.Activity...): - SAM-compatible parameters (such as parameter 1, "callback", in android.nfc.NfcAdapter.setNdefPushMessageCallback) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.nfc.NfcAdapter#setOnNdefPushCompleteCallback(android.nfc.NfcAdapter.OnNdefPushCompleteCallback, android.app.Activity, android.app.Activity...): - SAM-compatible parameters (such as parameter 1, "callback", in android.nfc.NfcAdapter.setOnNdefPushCompleteCallback) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.os.Binder#attachInterface(android.os.IInterface, String): SAM-compatible parameters (such as parameter 1, "owner", in android.os.Binder.attachInterface) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.os.Binder#linkToDeath(android.os.IBinder.DeathRecipient, int): @@ -233,3 +195,413 @@ SamShouldBeLast: android.view.accessibility.AccessibilityManager#addTouchExplora SAM-compatible parameters (such as parameter 1, "listener", in android.view.accessibility.AccessibilityManager.addTouchExplorationStateChangeListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions SamShouldBeLast: android.webkit.WebChromeClient#onShowFileChooser(android.webkit.WebView, android.webkit.ValueCallback, android.webkit.WebChromeClient.FileChooserParams): SAM-compatible parameters (such as parameter 2, "filePathCallback", in android.webkit.WebChromeClient.onShowFileChooser) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions + + +UnflaggedApi: android.Manifest.permission#ACCESS_SMARTSPACE: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.ACCESS_SMARTSPACE +UnflaggedApi: android.Manifest.permission#ALWAYS_UPDATE_WALLPAPER: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.ALWAYS_UPDATE_WALLPAPER +UnflaggedApi: android.Manifest.permission#CAMERA_HEADLESS_SYSTEM_USER: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.CAMERA_HEADLESS_SYSTEM_USER +UnflaggedApi: android.Manifest.permission#LAUNCH_PERMISSION_SETTINGS: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.LAUNCH_PERMISSION_SETTINGS +UnflaggedApi: android.Manifest.permission#READ_INSTALLED_SESSION_PATHS: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.READ_INSTALLED_SESSION_PATHS +UnflaggedApi: android.Manifest.permission#REGISTER_NSD_OFFLOAD_ENGINE: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.REGISTER_NSD_OFFLOAD_ENGINE +UnflaggedApi: android.Manifest.permission#REPORT_USAGE_STATS: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.REPORT_USAGE_STATS +UnflaggedApi: android.R.string#config_defaultRetailDemo: + New API must be flagged with @FlaggedApi: field android.R.string.config_defaultRetailDemo +UnflaggedApi: android.app.ActivityManager#getExternalHistoricalProcessStartReasons(String, int): + New API must be flagged with @FlaggedApi: method android.app.ActivityManager.getExternalHistoricalProcessStartReasons(String,int) +UnflaggedApi: android.app.AppOpsManager#OPSTR_RECEIVE_SANDBOX_TRIGGER_AUDIO: + New API must be flagged with @FlaggedApi: field android.app.AppOpsManager.OPSTR_RECEIVE_SANDBOX_TRIGGER_AUDIO +UnflaggedApi: android.companion.virtual.VirtualDeviceManager.VirtualDevice#getPersistentDeviceId(): + New API must be flagged with @FlaggedApi: method android.companion.virtual.VirtualDeviceManager.VirtualDevice.getPersistentDeviceId() +UnflaggedApi: android.content.Context#THREAD_NETWORK_SERVICE: + New API must be flagged with @FlaggedApi: field android.content.Context.THREAD_NETWORK_SERVICE +UnflaggedApi: android.content.Intent#ACTION_UNARCHIVE_PACKAGE: + New API must be flagged with @FlaggedApi: field android.content.Intent.ACTION_UNARCHIVE_PACKAGE +UnflaggedApi: android.content.pm.PackageInstaller#readInstallInfo(android.os.ParcelFileDescriptor, String, int): + New API must be flagged with @FlaggedApi: method android.content.pm.PackageInstaller.readInstallInfo(android.os.ParcelFileDescriptor,String,int) +UnflaggedApi: android.content.pm.PackageInstaller.InstallInfo#calculateInstalledSize(android.content.pm.PackageInstaller.SessionParams, android.os.ParcelFileDescriptor): + New API must be flagged with @FlaggedApi: method android.content.pm.PackageInstaller.InstallInfo.calculateInstalledSize(android.content.pm.PackageInstaller.SessionParams,android.os.ParcelFileDescriptor) +UnflaggedApi: android.content.pm.PackageInstaller.SessionInfo#getResolvedBaseApkPath(): + New API must be flagged with @FlaggedApi: method android.content.pm.PackageInstaller.SessionInfo.getResolvedBaseApkPath() +UnflaggedApi: android.content.pm.PackageManager#EXTRA_REQUEST_PERMISSIONS_DEVICE_ID: + New API must be flagged with @FlaggedApi: field android.content.pm.PackageManager.EXTRA_REQUEST_PERMISSIONS_DEVICE_ID +UnflaggedApi: android.content.pm.PackageManager#MATCH_ARCHIVED_PACKAGES: + New API must be flagged with @FlaggedApi: field android.content.pm.PackageManager.MATCH_ARCHIVED_PACKAGES +UnflaggedApi: android.media.audiopolicy.AudioMix#CREATOR: + New API must be flagged with @FlaggedApi: field android.media.audiopolicy.AudioMix.CREATOR +UnflaggedApi: android.media.audiopolicy.AudioMix#describeContents(): + New API must be flagged with @FlaggedApi: method android.media.audiopolicy.AudioMix.describeContents() +UnflaggedApi: android.media.audiopolicy.AudioMix#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.media.audiopolicy.AudioMix.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.media.audiopolicy.AudioMixingRule#CREATOR: + New API must be flagged with @FlaggedApi: field android.media.audiopolicy.AudioMixingRule.CREATOR +UnflaggedApi: android.media.audiopolicy.AudioMixingRule#describeContents(): + New API must be flagged with @FlaggedApi: method android.media.audiopolicy.AudioMixingRule.describeContents() +UnflaggedApi: android.media.audiopolicy.AudioMixingRule#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.media.audiopolicy.AudioMixingRule.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.media.audiopolicy.AudioPolicy#updateMixingRules(java.util.List>): + New API must be flagged with @FlaggedApi: method android.media.audiopolicy.AudioPolicy.updateMixingRules(java.util.List>) +UnflaggedApi: android.net.wifi.sharedconnectivity.app.NetworkProviderInfo#isBatteryCharging(): + New API must be flagged with @FlaggedApi: method android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.isBatteryCharging() +UnflaggedApi: android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.Builder#setBatteryCharging(boolean): + New API must be flagged with @FlaggedApi: method android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.Builder.setBatteryCharging(boolean) +UnflaggedApi: android.os.BugreportParams#BUGREPORT_MODE_ONBOARDING: + New API must be flagged with @FlaggedApi: field android.os.BugreportParams.BUGREPORT_MODE_ONBOARDING +UnflaggedApi: android.provider.Settings#ACTION_APP_PERMISSIONS_SETTINGS: + New API must be flagged with @FlaggedApi: field android.provider.Settings.ACTION_APP_PERMISSIONS_SETTINGS +UnflaggedApi: android.provider.Settings.System#putString(android.content.ContentResolver, String, String, boolean, boolean): + New API must be flagged with @FlaggedApi: method android.provider.Settings.System.putString(android.content.ContentResolver,String,String,boolean,boolean) +UnflaggedApi: android.provider.Settings.System#resetToDefaults(android.content.ContentResolver, String): + New API must be flagged with @FlaggedApi: method android.provider.Settings.System.resetToDefaults(android.content.ContentResolver,String) +UnflaggedApi: android.service.voice.HotwordTrainingAudio: + New API must be flagged with @FlaggedApi: class android.service.voice.HotwordTrainingAudio +UnflaggedApi: android.service.voice.HotwordTrainingAudio#CONTENTS_FILE_DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingAudio.CONTENTS_FILE_DESCRIPTOR +UnflaggedApi: android.service.voice.HotwordTrainingAudio#CREATOR: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingAudio.CREATOR +UnflaggedApi: android.service.voice.HotwordTrainingAudio#HOTWORD_OFFSET_UNSET: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingAudio.HOTWORD_OFFSET_UNSET +UnflaggedApi: android.service.voice.HotwordTrainingAudio#PARCELABLE_WRITE_RETURN_VALUE: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingAudio.PARCELABLE_WRITE_RETURN_VALUE +UnflaggedApi: android.service.voice.HotwordTrainingAudio#describeContents(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.describeContents() +UnflaggedApi: android.service.voice.HotwordTrainingAudio#getAudioFormat(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.getAudioFormat() +UnflaggedApi: android.service.voice.HotwordTrainingAudio#getAudioType(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.getAudioType() +UnflaggedApi: android.service.voice.HotwordTrainingAudio#getHotwordAudio(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.getHotwordAudio() +UnflaggedApi: android.service.voice.HotwordTrainingAudio#getHotwordOffsetMillis(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.getHotwordOffsetMillis() +UnflaggedApi: android.service.voice.HotwordTrainingAudio#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.service.voice.HotwordTrainingAudio.Builder: + New API must be flagged with @FlaggedApi: class android.service.voice.HotwordTrainingAudio.Builder +UnflaggedApi: android.service.voice.HotwordTrainingAudio.Builder#Builder(byte[], android.media.AudioFormat): + New API must be flagged with @FlaggedApi: constructor android.service.voice.HotwordTrainingAudio.Builder(byte[],android.media.AudioFormat) +UnflaggedApi: android.service.voice.HotwordTrainingAudio.Builder#build(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.Builder.build() +UnflaggedApi: android.service.voice.HotwordTrainingAudio.Builder#setAudioFormat(android.media.AudioFormat): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.Builder.setAudioFormat(android.media.AudioFormat) +UnflaggedApi: android.service.voice.HotwordTrainingAudio.Builder#setAudioType(int): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.Builder.setAudioType(int) +UnflaggedApi: android.service.voice.HotwordTrainingAudio.Builder#setHotwordOffsetMillis(int): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingAudio.Builder.setHotwordOffsetMillis(int) +UnflaggedApi: android.service.voice.HotwordTrainingData: + New API must be flagged with @FlaggedApi: class android.service.voice.HotwordTrainingData +UnflaggedApi: android.service.voice.HotwordTrainingData#CONTENTS_FILE_DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingData.CONTENTS_FILE_DESCRIPTOR +UnflaggedApi: android.service.voice.HotwordTrainingData#CREATOR: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingData.CREATOR +UnflaggedApi: android.service.voice.HotwordTrainingData#PARCELABLE_WRITE_RETURN_VALUE: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingData.PARCELABLE_WRITE_RETURN_VALUE +UnflaggedApi: android.service.voice.HotwordTrainingData#TIMEOUT_STAGE_EARLY: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingData.TIMEOUT_STAGE_EARLY +UnflaggedApi: android.service.voice.HotwordTrainingData#TIMEOUT_STAGE_LATE: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingData.TIMEOUT_STAGE_LATE +UnflaggedApi: android.service.voice.HotwordTrainingData#TIMEOUT_STAGE_MIDDLE: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingData.TIMEOUT_STAGE_MIDDLE +UnflaggedApi: android.service.voice.HotwordTrainingData#TIMEOUT_STAGE_UNKNOWN: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingData.TIMEOUT_STAGE_UNKNOWN +UnflaggedApi: android.service.voice.HotwordTrainingData#TIMEOUT_STAGE_VERY_EARLY: + New API must be flagged with @FlaggedApi: field android.service.voice.HotwordTrainingData.TIMEOUT_STAGE_VERY_EARLY +UnflaggedApi: android.service.voice.HotwordTrainingData#describeContents(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.describeContents() +UnflaggedApi: android.service.voice.HotwordTrainingData#getMaxTrainingDataSize(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.getMaxTrainingDataSize() +UnflaggedApi: android.service.voice.HotwordTrainingData#getTimeoutStage(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.getTimeoutStage() +UnflaggedApi: android.service.voice.HotwordTrainingData#getTrainingAudios(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.getTrainingAudios() +UnflaggedApi: android.service.voice.HotwordTrainingData#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.service.voice.HotwordTrainingData.Builder: + New API must be flagged with @FlaggedApi: class android.service.voice.HotwordTrainingData.Builder +UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#Builder(): + New API must be flagged with @FlaggedApi: constructor android.service.voice.HotwordTrainingData.Builder() +UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#addTrainingAudio(android.service.voice.HotwordTrainingAudio): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.Builder.addTrainingAudio(android.service.voice.HotwordTrainingAudio) +UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#build(): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.Builder.build() +UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#setTimeoutStage(int): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.Builder.setTimeoutStage(int) +UnflaggedApi: android.service.voice.HotwordTrainingData.Builder#setTrainingAudios(java.util.List): + New API must be flagged with @FlaggedApi: method android.service.voice.HotwordTrainingData.Builder.setTrainingAudios(java.util.List) +UnflaggedApi: android.telecom.StreamingCall#EXTRA_CALL_ID: + New API must be flagged with @FlaggedApi: field android.telecom.StreamingCall.EXTRA_CALL_ID +UnflaggedApi: android.telephony.NetworkRegistrationInfo.Builder#setIsNonTerrestrialNetwork(boolean): + New API must be flagged with @FlaggedApi: method android.telephony.NetworkRegistrationInfo.Builder.setIsNonTerrestrialNetwork(boolean) +UnflaggedApi: android.telephony.mbms.vendor.MbmsDownloadServiceBase#DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.telephony.mbms.vendor.MbmsDownloadServiceBase.DESCRIPTOR +UnflaggedApi: android.telephony.mbms.vendor.MbmsStreamingServiceBase#DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.telephony.mbms.vendor.MbmsStreamingServiceBase.DESCRIPTOR +UnflaggedApi: android.telephony.satellite.AntennaDirection: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.AntennaDirection +UnflaggedApi: android.telephony.satellite.AntennaDirection#CONTENTS_FILE_DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.AntennaDirection.CONTENTS_FILE_DESCRIPTOR +UnflaggedApi: android.telephony.satellite.AntennaDirection#CREATOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.AntennaDirection.CREATOR +UnflaggedApi: android.telephony.satellite.AntennaDirection#PARCELABLE_WRITE_RETURN_VALUE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.AntennaDirection.PARCELABLE_WRITE_RETURN_VALUE +UnflaggedApi: android.telephony.satellite.AntennaDirection#describeContents(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaDirection.describeContents() +UnflaggedApi: android.telephony.satellite.AntennaDirection#getX(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaDirection.getX() +UnflaggedApi: android.telephony.satellite.AntennaDirection#getY(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaDirection.getY() +UnflaggedApi: android.telephony.satellite.AntennaDirection#getZ(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaDirection.getZ() +UnflaggedApi: android.telephony.satellite.AntennaDirection#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaDirection.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.telephony.satellite.AntennaPosition: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.AntennaPosition +UnflaggedApi: android.telephony.satellite.AntennaPosition#CONTENTS_FILE_DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.AntennaPosition.CONTENTS_FILE_DESCRIPTOR +UnflaggedApi: android.telephony.satellite.AntennaPosition#CREATOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.AntennaPosition.CREATOR +UnflaggedApi: android.telephony.satellite.AntennaPosition#PARCELABLE_WRITE_RETURN_VALUE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.AntennaPosition.PARCELABLE_WRITE_RETURN_VALUE +UnflaggedApi: android.telephony.satellite.AntennaPosition#describeContents(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaPosition.describeContents() +UnflaggedApi: android.telephony.satellite.AntennaPosition#getAntennaDirection(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaPosition.getAntennaDirection() +UnflaggedApi: android.telephony.satellite.AntennaPosition#getSuggestedHoldPosition(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaPosition.getSuggestedHoldPosition() +UnflaggedApi: android.telephony.satellite.AntennaPosition#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.AntennaPosition.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.telephony.satellite.PointingInfo: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.PointingInfo +UnflaggedApi: android.telephony.satellite.PointingInfo#CONTENTS_FILE_DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.PointingInfo.CONTENTS_FILE_DESCRIPTOR +UnflaggedApi: android.telephony.satellite.PointingInfo#CREATOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.PointingInfo.CREATOR +UnflaggedApi: android.telephony.satellite.PointingInfo#PARCELABLE_WRITE_RETURN_VALUE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.PointingInfo.PARCELABLE_WRITE_RETURN_VALUE +UnflaggedApi: android.telephony.satellite.PointingInfo#describeContents(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.PointingInfo.describeContents() +UnflaggedApi: android.telephony.satellite.PointingInfo#getSatelliteAzimuthDegrees(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.PointingInfo.getSatelliteAzimuthDegrees() +UnflaggedApi: android.telephony.satellite.PointingInfo#getSatelliteElevationDegrees(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.PointingInfo.getSatelliteElevationDegrees() +UnflaggedApi: android.telephony.satellite.PointingInfo#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.PointingInfo.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.SatelliteCapabilities +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#CONTENTS_FILE_DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteCapabilities.CONTENTS_FILE_DESCRIPTOR +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#CREATOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteCapabilities.CREATOR +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#PARCELABLE_WRITE_RETURN_VALUE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteCapabilities.PARCELABLE_WRITE_RETURN_VALUE +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#describeContents(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteCapabilities.describeContents() +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#getAntennaPositionMap(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteCapabilities.getAntennaPositionMap() +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#getMaxBytesPerOutgoingDatagram(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteCapabilities.getMaxBytesPerOutgoingDatagram() +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#getSupportedRadioTechnologies(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteCapabilities.getSupportedRadioTechnologies() +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#isPointingRequired(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteCapabilities.isPointingRequired() +UnflaggedApi: android.telephony.satellite.SatelliteCapabilities#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteCapabilities.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.telephony.satellite.SatelliteDatagram: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.SatelliteDatagram +UnflaggedApi: android.telephony.satellite.SatelliteDatagram#CONTENTS_FILE_DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteDatagram.CONTENTS_FILE_DESCRIPTOR +UnflaggedApi: android.telephony.satellite.SatelliteDatagram#CREATOR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteDatagram.CREATOR +UnflaggedApi: android.telephony.satellite.SatelliteDatagram#PARCELABLE_WRITE_RETURN_VALUE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteDatagram.PARCELABLE_WRITE_RETURN_VALUE +UnflaggedApi: android.telephony.satellite.SatelliteDatagram#describeContents(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteDatagram.describeContents() +UnflaggedApi: android.telephony.satellite.SatelliteDatagram#getSatelliteDatagram(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteDatagram.getSatelliteDatagram() +UnflaggedApi: android.telephony.satellite.SatelliteDatagram#writeToParcel(android.os.Parcel, int): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteDatagram.writeToParcel(android.os.Parcel,int) +UnflaggedApi: android.telephony.satellite.SatelliteDatagramCallback: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.SatelliteDatagramCallback +UnflaggedApi: android.telephony.satellite.SatelliteDatagramCallback#onSatelliteDatagramReceived(long, android.telephony.satellite.SatelliteDatagram, int, java.util.function.Consumer): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteDatagramCallback.onSatelliteDatagramReceived(long,android.telephony.satellite.SatelliteDatagram,int,java.util.function.Consumer) +UnflaggedApi: android.telephony.satellite.SatelliteManager: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.SatelliteManager +UnflaggedApi: android.telephony.satellite.SatelliteManager#DATAGRAM_TYPE_LOCATION_SHARING: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_LOCATION_SHARING +UnflaggedApi: android.telephony.satellite.SatelliteManager#DATAGRAM_TYPE_SOS_MESSAGE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_SOS_MESSAGE +UnflaggedApi: android.telephony.satellite.SatelliteManager#DATAGRAM_TYPE_UNKNOWN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DATAGRAM_TYPE_UNKNOWN +UnflaggedApi: android.telephony.satellite.SatelliteManager#DEVICE_HOLD_POSITION_LANDSCAPE_LEFT: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DEVICE_HOLD_POSITION_LANDSCAPE_LEFT +UnflaggedApi: android.telephony.satellite.SatelliteManager#DEVICE_HOLD_POSITION_LANDSCAPE_RIGHT: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DEVICE_HOLD_POSITION_LANDSCAPE_RIGHT +UnflaggedApi: android.telephony.satellite.SatelliteManager#DEVICE_HOLD_POSITION_PORTRAIT: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DEVICE_HOLD_POSITION_PORTRAIT +UnflaggedApi: android.telephony.satellite.SatelliteManager#DEVICE_HOLD_POSITION_UNKNOWN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DEVICE_HOLD_POSITION_UNKNOWN +UnflaggedApi: android.telephony.satellite.SatelliteManager#DISPLAY_MODE_CLOSED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DISPLAY_MODE_CLOSED +UnflaggedApi: android.telephony.satellite.SatelliteManager#DISPLAY_MODE_FIXED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DISPLAY_MODE_FIXED +UnflaggedApi: android.telephony.satellite.SatelliteManager#DISPLAY_MODE_OPENED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DISPLAY_MODE_OPENED +UnflaggedApi: android.telephony.satellite.SatelliteManager#DISPLAY_MODE_UNKNOWN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.DISPLAY_MODE_UNKNOWN +UnflaggedApi: android.telephony.satellite.SatelliteManager#NT_RADIO_TECHNOLOGY_EMTC_NTN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_EMTC_NTN +UnflaggedApi: android.telephony.satellite.SatelliteManager#NT_RADIO_TECHNOLOGY_NB_IOT_NTN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_NB_IOT_NTN +UnflaggedApi: android.telephony.satellite.SatelliteManager#NT_RADIO_TECHNOLOGY_NR_NTN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_NR_NTN +UnflaggedApi: android.telephony.satellite.SatelliteManager#NT_RADIO_TECHNOLOGY_PROPRIETARY: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_PROPRIETARY +UnflaggedApi: android.telephony.satellite.SatelliteManager#NT_RADIO_TECHNOLOGY_UNKNOWN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.NT_RADIO_TECHNOLOGY_UNKNOWN +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_IDLE +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_FAILED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_NONE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_NONE +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_SUCCESS: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVE_SUCCESS +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_RECEIVING +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SENDING +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_FAILED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_SEND_SUCCESS +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_DATAGRAM_TRANSFER_STATE_UNKNOWN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_DATAGRAM_TRANSFER_STATE_UNKNOWN +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_MODEM_STATE_DATAGRAM_RETRYING: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_RETRYING +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_DATAGRAM_TRANSFERRING +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_MODEM_STATE_IDLE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_IDLE +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_MODEM_STATE_LISTENING: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_LISTENING +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_MODEM_STATE_OFF: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_OFF +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_MODEM_STATE_UNAVAILABLE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_UNAVAILABLE +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_MODEM_STATE_UNKNOWN: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_MODEM_STATE_UNKNOWN +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_ACCESS_BARRED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_ACCESS_BARRED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_ERROR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_ERROR +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_INVALID_ARGUMENTS: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_INVALID_ARGUMENTS +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_INVALID_MODEM_STATE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_INVALID_MODEM_STATE +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_INVALID_TELEPHONY_STATE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_MODEM_BUSY: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_MODEM_BUSY +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_MODEM_ERROR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_MODEM_ERROR +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_NETWORK_ERROR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NETWORK_ERROR +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_NETWORK_TIMEOUT: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NETWORK_TIMEOUT +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_NOT_AUTHORIZED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NOT_AUTHORIZED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_NOT_REACHABLE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NOT_REACHABLE +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_NOT_SUPPORTED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NOT_SUPPORTED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_NO_RESOURCES: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_NO_RESOURCES +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_RADIO_NOT_AVAILABLE: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_RADIO_NOT_AVAILABLE +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_REQUEST_ABORTED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_ABORTED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_REQUEST_FAILED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_FAILED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_REQUEST_IN_PROGRESS: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_IN_PROGRESS +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_REQUEST_NOT_SUPPORTED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_REQUEST_NOT_SUPPORTED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_SERVER_ERROR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SERVER_ERROR +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_SERVICE_ERROR: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SERVICE_ERROR +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_SERVICE_NOT_PROVISIONED: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SERVICE_NOT_PROVISIONED +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_SERVICE_PROVISION_IN_PROGRESS: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SERVICE_PROVISION_IN_PROGRESS +UnflaggedApi: android.telephony.satellite.SatelliteManager#SATELLITE_RESULT_SUCCESS: + New API must be flagged with @FlaggedApi: field android.telephony.satellite.SatelliteManager.SATELLITE_RESULT_SUCCESS +UnflaggedApi: android.telephony.satellite.SatelliteManager#deprovisionSatelliteService(String, java.util.concurrent.Executor, java.util.function.Consumer): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.deprovisionSatelliteService(String,java.util.concurrent.Executor,java.util.function.Consumer) +UnflaggedApi: android.telephony.satellite.SatelliteManager#pollPendingSatelliteDatagrams(java.util.concurrent.Executor, java.util.function.Consumer): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.pollPendingSatelliteDatagrams(java.util.concurrent.Executor,java.util.function.Consumer) +UnflaggedApi: android.telephony.satellite.SatelliteManager#provisionSatelliteService(String, byte[], android.os.CancellationSignal, java.util.concurrent.Executor, java.util.function.Consumer): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.provisionSatelliteService(String,byte[],android.os.CancellationSignal,java.util.concurrent.Executor,java.util.function.Consumer) +UnflaggedApi: android.telephony.satellite.SatelliteManager#registerForSatelliteDatagram(java.util.concurrent.Executor, android.telephony.satellite.SatelliteDatagramCallback): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.registerForSatelliteDatagram(java.util.concurrent.Executor,android.telephony.satellite.SatelliteDatagramCallback) +UnflaggedApi: android.telephony.satellite.SatelliteManager#registerForSatelliteModemStateChanged(java.util.concurrent.Executor, android.telephony.satellite.SatelliteStateCallback): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.registerForSatelliteModemStateChanged(java.util.concurrent.Executor,android.telephony.satellite.SatelliteStateCallback) +UnflaggedApi: android.telephony.satellite.SatelliteManager#registerForSatelliteProvisionStateChanged(java.util.concurrent.Executor, android.telephony.satellite.SatelliteProvisionStateCallback): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.registerForSatelliteProvisionStateChanged(java.util.concurrent.Executor,android.telephony.satellite.SatelliteProvisionStateCallback) +UnflaggedApi: android.telephony.satellite.SatelliteManager#requestIsDemoModeEnabled(java.util.concurrent.Executor, android.os.OutcomeReceiver): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.requestIsDemoModeEnabled(java.util.concurrent.Executor,android.os.OutcomeReceiver) +UnflaggedApi: android.telephony.satellite.SatelliteManager#requestIsSatelliteCommunicationAllowedForCurrentLocation(java.util.concurrent.Executor, android.os.OutcomeReceiver): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.requestIsSatelliteCommunicationAllowedForCurrentLocation(java.util.concurrent.Executor,android.os.OutcomeReceiver) +UnflaggedApi: android.telephony.satellite.SatelliteManager#requestIsSatelliteEnabled(java.util.concurrent.Executor, android.os.OutcomeReceiver): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.requestIsSatelliteEnabled(java.util.concurrent.Executor,android.os.OutcomeReceiver) +UnflaggedApi: android.telephony.satellite.SatelliteManager#requestIsSatelliteProvisioned(java.util.concurrent.Executor, android.os.OutcomeReceiver): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.requestIsSatelliteProvisioned(java.util.concurrent.Executor,android.os.OutcomeReceiver) +UnflaggedApi: android.telephony.satellite.SatelliteManager#requestIsSatelliteSupported(java.util.concurrent.Executor, android.os.OutcomeReceiver): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.requestIsSatelliteSupported(java.util.concurrent.Executor,android.os.OutcomeReceiver) +UnflaggedApi: android.telephony.satellite.SatelliteManager#requestSatelliteCapabilities(java.util.concurrent.Executor, android.os.OutcomeReceiver): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.requestSatelliteCapabilities(java.util.concurrent.Executor,android.os.OutcomeReceiver) +UnflaggedApi: android.telephony.satellite.SatelliteManager#requestSatelliteEnabled(boolean, boolean, java.util.concurrent.Executor, java.util.function.Consumer): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.requestSatelliteEnabled(boolean,boolean,java.util.concurrent.Executor,java.util.function.Consumer) +UnflaggedApi: android.telephony.satellite.SatelliteManager#requestTimeForNextSatelliteVisibility(java.util.concurrent.Executor, android.os.OutcomeReceiver): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.requestTimeForNextSatelliteVisibility(java.util.concurrent.Executor,android.os.OutcomeReceiver) +UnflaggedApi: android.telephony.satellite.SatelliteManager#sendSatelliteDatagram(int, android.telephony.satellite.SatelliteDatagram, boolean, java.util.concurrent.Executor, java.util.function.Consumer): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.sendSatelliteDatagram(int,android.telephony.satellite.SatelliteDatagram,boolean,java.util.concurrent.Executor,java.util.function.Consumer) +UnflaggedApi: android.telephony.satellite.SatelliteManager#setDeviceAlignedWithSatellite(boolean): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.setDeviceAlignedWithSatellite(boolean) +UnflaggedApi: android.telephony.satellite.SatelliteManager#startSatelliteTransmissionUpdates(java.util.concurrent.Executor, java.util.function.Consumer, android.telephony.satellite.SatelliteTransmissionUpdateCallback): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.startSatelliteTransmissionUpdates(java.util.concurrent.Executor,java.util.function.Consumer,android.telephony.satellite.SatelliteTransmissionUpdateCallback) +UnflaggedApi: android.telephony.satellite.SatelliteManager#stopSatelliteTransmissionUpdates(android.telephony.satellite.SatelliteTransmissionUpdateCallback, java.util.concurrent.Executor, java.util.function.Consumer): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.stopSatelliteTransmissionUpdates(android.telephony.satellite.SatelliteTransmissionUpdateCallback,java.util.concurrent.Executor,java.util.function.Consumer) +UnflaggedApi: android.telephony.satellite.SatelliteManager#unregisterForSatelliteDatagram(android.telephony.satellite.SatelliteDatagramCallback): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.unregisterForSatelliteDatagram(android.telephony.satellite.SatelliteDatagramCallback) +UnflaggedApi: android.telephony.satellite.SatelliteManager#unregisterForSatelliteModemStateChanged(android.telephony.satellite.SatelliteStateCallback): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.unregisterForSatelliteModemStateChanged(android.telephony.satellite.SatelliteStateCallback) +UnflaggedApi: android.telephony.satellite.SatelliteManager#unregisterForSatelliteProvisionStateChanged(android.telephony.satellite.SatelliteProvisionStateCallback): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.unregisterForSatelliteProvisionStateChanged(android.telephony.satellite.SatelliteProvisionStateCallback) +UnflaggedApi: android.telephony.satellite.SatelliteManager.SatelliteException: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.SatelliteManager.SatelliteException +UnflaggedApi: android.telephony.satellite.SatelliteManager.SatelliteException#SatelliteException(int): + New API must be flagged with @FlaggedApi: constructor android.telephony.satellite.SatelliteManager.SatelliteException(int) +UnflaggedApi: android.telephony.satellite.SatelliteManager.SatelliteException#getErrorCode(): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteManager.SatelliteException.getErrorCode() +UnflaggedApi: android.telephony.satellite.SatelliteProvisionStateCallback: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.SatelliteProvisionStateCallback +UnflaggedApi: android.telephony.satellite.SatelliteProvisionStateCallback#onSatelliteProvisionStateChanged(boolean): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteProvisionStateCallback.onSatelliteProvisionStateChanged(boolean) +UnflaggedApi: android.telephony.satellite.SatelliteStateCallback: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.SatelliteStateCallback +UnflaggedApi: android.telephony.satellite.SatelliteStateCallback#onSatelliteModemStateChanged(int): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteStateCallback.onSatelliteModemStateChanged(int) +UnflaggedApi: android.telephony.satellite.SatelliteTransmissionUpdateCallback: + New API must be flagged with @FlaggedApi: class android.telephony.satellite.SatelliteTransmissionUpdateCallback +UnflaggedApi: android.telephony.satellite.SatelliteTransmissionUpdateCallback#onReceiveDatagramStateChanged(int, int, int): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteTransmissionUpdateCallback.onReceiveDatagramStateChanged(int,int,int) +UnflaggedApi: android.telephony.satellite.SatelliteTransmissionUpdateCallback#onSatellitePositionChanged(android.telephony.satellite.PointingInfo): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteTransmissionUpdateCallback.onSatellitePositionChanged(android.telephony.satellite.PointingInfo) +UnflaggedApi: android.telephony.satellite.SatelliteTransmissionUpdateCallback#onSendDatagramStateChanged(int, int, int): + New API must be flagged with @FlaggedApi: method android.telephony.satellite.SatelliteTransmissionUpdateCallback.onSendDatagramStateChanged(int,int,int) diff --git a/core/api/system-removed.txt b/core/api/system-removed.txt index 1c10356c6b038c80aca0e4d7eda0b0c8f8c09533..aa17df3471d7143bf566243e7ef0fe18d49c8074 100644 --- a/core/api/system-removed.txt +++ b/core/api/system-removed.txt @@ -114,20 +114,6 @@ package android.hardware.hdmi { } -package android.location { - - public class LocationManager { - method @Deprecated public boolean addGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener); - method @Deprecated public boolean addGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener); - method @Deprecated @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@Nullable String, @NonNull String); - method @Deprecated public void removeGpsMeasurementListener(android.location.GpsMeasurementsEvent.Listener); - method @Deprecated public void removeGpsNavigationMessageListener(android.location.GpsNavigationMessageEvent.Listener); - method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackage(String); - method @Deprecated @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public void setLocationControllerExtraPackageEnabled(boolean); - } - -} - package android.media.tv { public final class TvInputManager { diff --git a/core/api/test-current.txt b/core/api/test-current.txt index e61c39ff2525b4dd2b31feba42557b6cfc409f14..40c6fa8986f79edceaea1cc9b825174c8ad1a79f 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -28,6 +28,7 @@ package android { field public static final String MANAGE_APP_OPS_MODES = "android.permission.MANAGE_APP_OPS_MODES"; field public static final String MANAGE_CRATES = "android.permission.MANAGE_CRATES"; field public static final String MANAGE_NOTIFICATION_LISTENERS = "android.permission.MANAGE_NOTIFICATION_LISTENERS"; + field public static final String MANAGE_REMOTE_AUTH = "android.permission.MANAGE_REMOTE_AUTH"; field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS"; field public static final String MANAGE_TOAST_RATE_LIMITING = "android.permission.MANAGE_TOAST_RATE_LIMITING"; field public static final String MODIFY_HDR_CONVERSION_MODE = "android.permission.MODIFY_HDR_CONVERSION_MODE"; @@ -49,11 +50,13 @@ package android { field public static final String SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS = "android.permission.SET_AND_VERIFY_LOCKSCREEN_CREDENTIALS"; field public static final String SET_GAME_SERVICE = "android.permission.SET_GAME_SERVICE"; field public static final String SET_KEYBOARD_LAYOUT = "android.permission.SET_KEYBOARD_LAYOUT"; + field public static final String START_ACTIVITIES_FROM_SDK_SANDBOX = "android.permission.START_ACTIVITIES_FROM_SDK_SANDBOX"; field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS"; field public static final String TEST_BIOMETRIC = "android.permission.TEST_BIOMETRIC"; field public static final String TEST_INPUT_METHOD = "android.permission.TEST_INPUT_METHOD"; field public static final String TEST_MANAGE_ROLLBACKS = "android.permission.TEST_MANAGE_ROLLBACKS"; field public static final String UPGRADE_RUNTIME_PERMISSIONS = "android.permission.UPGRADE_RUNTIME_PERMISSIONS"; + field public static final String USE_REMOTE_AUTH = "android.permission.USE_REMOTE_AUTH"; field public static final String WRITE_ALLOWLISTED_DEVICE_CONFIG = "android.permission.WRITE_ALLOWLISTED_DEVICE_CONFIG"; field public static final String WRITE_DEVICE_CONFIG = "android.permission.WRITE_DEVICE_CONFIG"; field @Deprecated public static final String WRITE_MEDIA_STORAGE = "android.permission.WRITE_MEDIA_STORAGE"; @@ -496,15 +499,15 @@ package android.app { method public int compareTo(android.app.WindowConfiguration); method public int describeContents(); method public int getActivityType(); - method public android.graphics.Rect getAppBounds(); - method public android.graphics.Rect getBounds(); + method @Nullable public android.graphics.Rect getAppBounds(); + method @NonNull public android.graphics.Rect getBounds(); method @NonNull public android.graphics.Rect getMaxBounds(); method public int getRotation(); method public int getWindowingMode(); method public static boolean isFloating(int); method public void setActivityType(int); - method public void setAppBounds(android.graphics.Rect); - method public void setBounds(android.graphics.Rect); + method public void setAppBounds(@Nullable android.graphics.Rect); + method public void setBounds(@Nullable android.graphics.Rect); method public void setMaxBounds(@Nullable android.graphics.Rect); method public void setRotation(int); method public void setTo(android.app.WindowConfiguration); @@ -837,6 +840,23 @@ package android.appwidget { package android.companion { + public static final class AssociationInfo.Builder { + ctor public AssociationInfo.Builder(int, int, @NonNull String); + ctor public AssociationInfo.Builder(@NonNull android.companion.AssociationInfo); + method @NonNull public android.companion.AssociationInfo build(); + method @NonNull public android.companion.AssociationInfo.Builder setAssociatedDevice(@Nullable android.companion.AssociatedDevice); + method @NonNull public android.companion.AssociationInfo.Builder setDeviceMacAddress(@Nullable android.net.MacAddress); + method @NonNull public android.companion.AssociationInfo.Builder setDeviceProfile(@Nullable String); + method @NonNull public android.companion.AssociationInfo.Builder setDisplayName(@Nullable CharSequence); + method @NonNull public android.companion.AssociationInfo.Builder setLastTimeConnected(long); + method @NonNull public android.companion.AssociationInfo.Builder setNotifyOnDeviceNearby(boolean); + method @NonNull public android.companion.AssociationInfo.Builder setRevoked(boolean); + method @NonNull public android.companion.AssociationInfo.Builder setSelfManaged(boolean); + method @NonNull public android.companion.AssociationInfo.Builder setSystemDataSyncFlags(int); + method @NonNull public android.companion.AssociationInfo.Builder setTag(@Nullable String); + method @NonNull public android.companion.AssociationInfo.Builder setTimeApproved(long); + } + public final class CompanionDeviceManager { method @RequiresPermission("android.permission.MANAGE_COMPANION_DEVICES") public void enableSecureTransport(boolean); field public static final int MESSAGE_REQUEST_PING = 1669362552; // 0x63807378 @@ -1164,6 +1184,7 @@ package android.credentials { method @Nullable public CharSequence getSettingsSubtitle(); method @NonNull public boolean hasCapability(@NonNull String); method public boolean isEnabled(); + method public boolean isPrimary(); method public boolean isSystemProvider(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator CREATOR; @@ -1728,109 +1749,6 @@ package android.inputmethodservice { } -package android.location { - - public final class GnssClock implements android.os.Parcelable { - ctor public GnssClock(); - method public void reset(); - method public void resetBiasNanos(); - method public void resetBiasUncertaintyNanos(); - method public void resetDriftNanosPerSecond(); - method public void resetDriftUncertaintyNanosPerSecond(); - method public void resetElapsedRealtimeNanos(); - method public void resetElapsedRealtimeUncertaintyNanos(); - method public void resetFullBiasNanos(); - method public void resetLeapSecond(); - method public void resetReferenceCarrierFrequencyHzForIsb(); - method public void resetReferenceCodeTypeForIsb(); - method public void resetReferenceConstellationTypeForIsb(); - method public void resetTimeUncertaintyNanos(); - method public void set(android.location.GnssClock); - method public void setBiasNanos(double); - method public void setBiasUncertaintyNanos(@FloatRange(from=0.0f) double); - method public void setDriftNanosPerSecond(double); - method public void setDriftUncertaintyNanosPerSecond(@FloatRange(from=0.0f) double); - method public void setElapsedRealtimeNanos(long); - method public void setElapsedRealtimeUncertaintyNanos(@FloatRange(from=0.0f) double); - method public void setFullBiasNanos(long); - method public void setHardwareClockDiscontinuityCount(int); - method public void setLeapSecond(int); - method public void setReferenceCarrierFrequencyHzForIsb(@FloatRange(from=0.0) double); - method public void setReferenceCodeTypeForIsb(@NonNull String); - method public void setReferenceConstellationTypeForIsb(int); - method public void setTimeNanos(long); - method public void setTimeUncertaintyNanos(@FloatRange(from=0.0f) double); - } - - public final class GnssMeasurement implements android.os.Parcelable { - ctor public GnssMeasurement(); - method public void reset(); - method public void resetAutomaticGainControlLevel(); - method public void resetBasebandCn0DbHz(); - method @Deprecated public void resetCarrierCycles(); - method public void resetCarrierFrequencyHz(); - method @Deprecated public void resetCarrierPhase(); - method @Deprecated public void resetCarrierPhaseUncertainty(); - method public void resetCodeType(); - method public void resetCorrelationVectors(); - method public void resetFullInterSignalBiasNanos(); - method public void resetFullInterSignalBiasUncertaintyNanos(); - method public void resetSatelliteInterSignalBiasNanos(); - method public void resetSatelliteInterSignalBiasUncertaintyNanos(); - method public void resetSatellitePvt(); - method public void resetSnrInDb(); - method public void set(android.location.GnssMeasurement); - method public void setAccumulatedDeltaRangeMeters(double); - method public void setAccumulatedDeltaRangeState(int); - method public void setAccumulatedDeltaRangeUncertaintyMeters(double); - method @Deprecated public void setAutomaticGainControlLevelInDb(double); - method public void setBasebandCn0DbHz(double); - method @Deprecated public void setCarrierCycles(long); - method public void setCarrierFrequencyHz(float); - method @Deprecated public void setCarrierPhase(double); - method @Deprecated public void setCarrierPhaseUncertainty(double); - method public void setCn0DbHz(double); - method public void setCodeType(@NonNull String); - method public void setConstellationType(int); - method public void setCorrelationVectors(@Nullable java.util.Collection); - method public void setFullInterSignalBiasNanos(double); - method public void setFullInterSignalBiasUncertaintyNanos(@FloatRange(from=0.0) double); - method public void setMultipathIndicator(int); - method public void setPseudorangeRateMetersPerSecond(double); - method public void setPseudorangeRateUncertaintyMetersPerSecond(double); - method public void setReceivedSvTimeNanos(long); - method public void setReceivedSvTimeUncertaintyNanos(long); - method public void setSatelliteInterSignalBiasNanos(double); - method public void setSatelliteInterSignalBiasUncertaintyNanos(@FloatRange(from=0.0) double); - method public void setSatellitePvt(@Nullable android.location.SatellitePvt); - method public void setSnrInDb(double); - method public void setState(int); - method public void setSvid(int); - method public void setTimeOffsetNanos(double); - field public static final int ADR_STATE_ALL = 31; // 0x1f - } - - public final class GnssNavigationMessage implements android.os.Parcelable { - ctor public GnssNavigationMessage(); - method public void reset(); - method public void set(android.location.GnssNavigationMessage); - method public void setData(byte[]); - method public void setMessageId(@IntRange(from=0xffffffff, to=120) int); - method public void setStatus(int); - method public void setSubmessageId(@IntRange(from=1) int); - method public void setSvid(@IntRange(from=1, to=200) int); - method public void setType(int); - } - - public class LocationManager { - method @NonNull public String[] getBackgroundThrottlingWhitelist(); - method @NonNull public android.os.PackageTagsList getIgnoreSettingsAllowlist(); - method @Deprecated @NonNull public String[] getIgnoreSettingsWhitelist(); - method @Deprecated @Nullable @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public java.util.List getProviderPackages(@NonNull String); - } - -} - package android.media { public final class AudioAttributes implements android.os.Parcelable { @@ -1877,6 +1795,8 @@ package android.media { public class AudioManager { method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public int abandonAudioFocusForTest(@NonNull android.media.AudioFocusRequest, @NonNull String); + method @RequiresPermission("Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED") public boolean enterAudioFocusFreezeForTest(@NonNull java.util.List); + method @RequiresPermission("Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED") public boolean exitAudioFocusFreezeForTest(); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED) public void forceComputeCsdOnAllDevices(boolean); method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED) public void forceUseFrameworkMel(boolean); method @NonNull @RequiresPermission(android.Manifest.permission.CALL_AUDIO_INTERCEPTION) public android.media.AudioRecord getCallDownlinkExtractionAudioRecord(@NonNull android.media.AudioFormat); @@ -1884,6 +1804,9 @@ package android.media { method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED) public float getCsd(); method @Nullable public static android.media.AudioDeviceInfo getDeviceInfoFromType(int); method @IntRange(from=0) @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFadeOutDurationOnFocusLossMillis(@NonNull android.media.AudioAttributes); + method @NonNull @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public java.util.List getFocusDuckedUidsForTest(); + method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFocusFadeOutDurationForTest(); + method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public long getFocusUnmuteDelayAfterFadeOutForTest(); method @Nullable public static android.media.AudioHalVersionInfo getHalVersion(); method public static final int[] getPublicStreamTypes(); method @NonNull public java.util.List getReportedSurroundFormats(); @@ -2193,6 +2116,7 @@ package android.net.wifi.sharedconnectivity.app { public class SharedConnectivityManager { method @Nullable public static android.net.wifi.sharedconnectivity.app.SharedConnectivityManager create(@NonNull android.content.Context, @NonNull String, @NonNull String); + method @NonNull public android.content.BroadcastReceiver getBroadcastReceiver(); method @Nullable public android.content.ServiceConnection getServiceConnection(); method public void setService(@Nullable android.os.IInterface); } @@ -2222,6 +2146,10 @@ package android.os { method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void unplugBattery(boolean); } + public final class BugreportParams { + field public static final int BUGREPORT_MODE_MAX_VALUE = 7; // 0x7 + } + public class Build { method public static boolean is64BitAbi(String); method public static boolean isDebuggable(); @@ -2682,8 +2610,14 @@ package android.os.vibrator { package android.os.vibrator.persistence { + public class ParsedVibration { + method @NonNull public java.util.List getVibrationEffects(); + method @Nullable public android.os.VibrationEffect resolve(@NonNull android.os.Vibrator); + } + public final class VibrationXmlParser { - method @Nullable public static android.os.VibrationEffect parse(@NonNull java.io.Reader) throws java.io.IOException; + method @Nullable public static android.os.vibrator.persistence.ParsedVibration parseDocument(@NonNull java.io.Reader) throws java.io.IOException; + method @Nullable public static android.os.VibrationEffect parseVibrationEffect(@NonNull java.io.Reader) throws java.io.IOException; } public final class VibrationXmlSerializer { diff --git a/core/api/test-lint-baseline.txt b/core/api/test-lint-baseline.txt index 4a972806b31493cd87b6654b378c30f5ea04225a..107be8be42e2210230c0ec7a68729ee00b83644e 100644 --- a/core/api/test-lint-baseline.txt +++ b/core/api/test-lint-baseline.txt @@ -1,1037 +1,341 @@ // Baseline format: 1.0 -AcronymName: android.app.NotificationChannel#isImportanceLockedByOEM(): - Acronyms should not be capitalized in method names: was `isImportanceLockedByOEM`, should this be `isImportanceLockedByOem`? -AcronymName: android.app.NotificationChannel#setImportanceLockedByOEM(boolean): - Acronyms should not be capitalized in method names: was `setImportanceLockedByOEM`, should this be `setImportanceLockedByOem`? +KotlinKeyword: android.app.Notification#when: + Avoid field names that are Kotlin hard keywords ("when"); see https://android.github.io/kotlin-guides/interop.html#no-hard-keywords -ArrayReturn: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #10: - Method parameter should be Collection (or subclass) instead of raw array; was `android.media.audiofx.AudioEffect.Descriptor[]` -ArrayReturn: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #11: - Method parameter should be Collection (or subclass) instead of raw array; was `android.media.audiofx.AudioEffect.Descriptor[]` -ArrayReturn: android.view.Display#getSupportedWideColorGamut(): - Method should return Collection (or subclass) instead of raw array; was `android.graphics.ColorSpace[]` -ArrayReturn: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #0: - Method parameter should be Collection (or subclass) instead of raw array; was `android.view.View[]` -ArrayReturn: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillOptions(CharSequence[]) parameter #0: - Method parameter should be Collection (or subclass) instead of raw array; was `java.lang.CharSequence[]` - - -AutoBoxing: android.os.VintfObject#getTargetFrameworkCompatibilityMatrixVersion(): - Must avoid boxed primitives (`java.lang.Long`) - - -BuilderSetStyle: android.os.StrictMode.ThreadPolicy.Builder#detectExplicitGc(): - Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.os.StrictMode.ThreadPolicy.Builder.detectExplicitGc() -BuilderSetStyle: android.os.StrictMode.VmPolicy.Builder#permitIncorrectContextUse(): - Builder methods names should use setFoo() / addFoo() / clearFoo() style: method android.os.StrictMode.VmPolicy.Builder.permitIncorrectContextUse() - - -ConcreteCollection: android.content.AutofillOptions#disabledActivities: - Field type is concrete collection (`android.util.ArrayMap`); must be higher-level interface -ConcreteCollection: android.content.AutofillOptions#whitelistedActivitiesForAugmentedAutofill: - Field type is concrete collection (`android.util.ArraySet`); must be higher-level interface -ConcreteCollection: android.content.ContentCaptureOptions#ContentCaptureOptions(int, int, int, int, int, android.util.ArraySet) parameter #5: - Parameter type is concrete collection (`android.util.ArraySet`); must be higher-level interface -ConcreteCollection: android.content.ContentCaptureOptions#whitelistedComponents: - Field type is concrete collection (`android.util.ArraySet`); must be higher-level interface -ConcreteCollection: android.database.sqlite.SQLiteDebug.PagerStats#dbStats: - Field type is concrete collection (`java.util.ArrayList`); must be higher-level interface -ConcreteCollection: android.service.autofill.CompositeUserData#getFieldClassificationAlgorithms(): - Return type is concrete collection (`android.util.ArrayMap`); must be higher-level interface -ConcreteCollection: android.service.autofill.CompositeUserData#getFieldClassificationArgs(): - Return type is concrete collection (`android.util.ArrayMap`); must be higher-level interface -ConcreteCollection: android.service.autofill.InternalTransformation#batchApply(android.service.autofill.ValueFinder, android.widget.RemoteViews, java.util.ArrayList>) parameter #2: - Parameter type is concrete collection (`java.util.ArrayList`); must be higher-level interface -ConcreteCollection: android.service.autofill.UserData#getFieldClassificationAlgorithms(): - Return type is concrete collection (`android.util.ArrayMap`); must be higher-level interface - - -ContextFirst: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #1: - Context is distinct, so it must be the first argument (method `get`) - - -EndsWithImpl: android.view.contentcapture.ViewNode.ViewStructureImpl: - Don't expose your implementation details: `ViewStructureImpl` ends with `Impl` - - -Enum: android.view.inspector.InspectableProperty.ValueType: - Enums are discouraged in Android APIs - - -EqualsAndHashCode: android.os.StrictMode.ViolationInfo#hashCode(): - Must override both equals and hashCode; missing one in android.os.StrictMode.ViolationInfo - - -ExecutorRegistration: android.media.audiofx.AudioEffect#setParameterListener(android.media.audiofx.AudioEffect.OnParameterChangeListener): - Registration methods should have overload that accepts delivery Executor: `setParameterListener` -ExecutorRegistration: android.permission.PermissionControllerManager#countPermissionApps(java.util.List, int, android.permission.PermissionControllerManager.OnCountPermissionAppsResultCallback, android.os.Handler): - Registration methods should have overload that accepts delivery Executor: `countPermissionApps` -ExecutorRegistration: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler): - Registration methods should have overload that accepts delivery Executor: `getAppPermissions` -ExecutorRegistration: android.service.watchdog.ExplicitHealthCheckService#setCallback(android.os.RemoteCallback): - Registration methods should have overload that accepts delivery Executor: `setCallback` -ExecutorRegistration: android.window.WindowOrganizer#applySyncTransaction(android.window.WindowContainerTransaction, android.window.WindowContainerTransactionCallback): - Registration methods should have overload that accepts delivery Executor: `applySyncTransaction` - - -ForbiddenSuperClass: android.app.AppDetailsActivity: - AppDetailsActivity should not extend `Activity`. Activity subclasses are impossible to compose. Expose a composable API instead. - - -GenericException: android.service.autofill.CharSequenceTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int): - Methods must not throw generic exceptions (`java.lang.Exception`) -GenericException: android.service.autofill.DateTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int): - Methods must not throw generic exceptions (`java.lang.Exception`) -GenericException: android.service.autofill.ImageTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int): - Methods must not throw generic exceptions (`java.lang.Exception`) - - -GetterSetterNames: android.location.GnssClock#setBiasNanos(double): - Symmetric method for `hasBiasNanos` must be named `setHasBiasNanos`; was `setBiasNanos` -GetterSetterNames: android.location.GnssClock#setBiasUncertaintyNanos(double): - Symmetric method for `hasBiasUncertaintyNanos` must be named `setHasBiasUncertaintyNanos`; was `setBiasUncertaintyNanos` -GetterSetterNames: android.location.GnssClock#setDriftNanosPerSecond(double): - Symmetric method for `hasDriftNanosPerSecond` must be named `setHasDriftNanosPerSecond`; was `setDriftNanosPerSecond` -GetterSetterNames: android.location.GnssClock#setDriftUncertaintyNanosPerSecond(double): - Symmetric method for `hasDriftUncertaintyNanosPerSecond` must be named `setHasDriftUncertaintyNanosPerSecond`; was `setDriftUncertaintyNanosPerSecond` -GetterSetterNames: android.location.GnssClock#setElapsedRealtimeNanos(long): - Symmetric method for `hasElapsedRealtimeNanos` must be named `setHasElapsedRealtimeNanos`; was `setElapsedRealtimeNanos` -GetterSetterNames: android.location.GnssClock#setElapsedRealtimeUncertaintyNanos(double): - Symmetric method for `hasElapsedRealtimeUncertaintyNanos` must be named `setHasElapsedRealtimeUncertaintyNanos`; was `setElapsedRealtimeUncertaintyNanos` -GetterSetterNames: android.location.GnssClock#setFullBiasNanos(long): - Symmetric method for `hasFullBiasNanos` must be named `setHasFullBiasNanos`; was `setFullBiasNanos` -GetterSetterNames: android.location.GnssClock#setLeapSecond(int): - Symmetric method for `hasLeapSecond` must be named `setHasLeapSecond`; was `setLeapSecond` -GetterSetterNames: android.location.GnssClock#setReferenceCarrierFrequencyHzForIsb(double): - Symmetric method for `hasReferenceCarrierFrequencyHzForIsb` must be named `setHasReferenceCarrierFrequencyHzForIsb`; was `setReferenceCarrierFrequencyHzForIsb` -GetterSetterNames: android.location.GnssClock#setReferenceCodeTypeForIsb(String): - Symmetric method for `hasReferenceCodeTypeForIsb` must be named `setHasReferenceCodeTypeForIsb`; was `setReferenceCodeTypeForIsb` -GetterSetterNames: android.location.GnssClock#setReferenceConstellationTypeForIsb(int): - Symmetric method for `hasReferenceConstellationTypeForIsb` must be named `setHasReferenceConstellationTypeForIsb`; was `setReferenceConstellationTypeForIsb` -GetterSetterNames: android.location.GnssClock#setTimeUncertaintyNanos(double): - Symmetric method for `hasTimeUncertaintyNanos` must be named `setHasTimeUncertaintyNanos`; was `setTimeUncertaintyNanos` -GetterSetterNames: android.location.GnssMeasurement#setBasebandCn0DbHz(double): - Symmetric method for `hasBasebandCn0DbHz` must be named `setHasBasebandCn0DbHz`; was `setBasebandCn0DbHz` -GetterSetterNames: android.location.GnssMeasurement#setCarrierFrequencyHz(float): - Symmetric method for `hasCarrierFrequencyHz` must be named `setHasCarrierFrequencyHz`; was `setCarrierFrequencyHz` -GetterSetterNames: android.location.GnssMeasurement#setCodeType(String): - Symmetric method for `hasCodeType` must be named `setHasCodeType`; was `setCodeType` -GetterSetterNames: android.location.GnssMeasurement#setCorrelationVectors(java.util.Collection): - Symmetric method for `hasCorrelationVectors` must be named `setHasCorrelationVectors`; was `setCorrelationVectors` -GetterSetterNames: android.location.GnssMeasurement#setFullInterSignalBiasNanos(double): - Symmetric method for `hasFullInterSignalBiasNanos` must be named `setHasFullInterSignalBiasNanos`; was `setFullInterSignalBiasNanos` -GetterSetterNames: android.location.GnssMeasurement#setFullInterSignalBiasUncertaintyNanos(double): - Symmetric method for `hasFullInterSignalBiasUncertaintyNanos` must be named `setHasFullInterSignalBiasUncertaintyNanos`; was `setFullInterSignalBiasUncertaintyNanos` -GetterSetterNames: android.location.GnssMeasurement#setSatelliteInterSignalBiasNanos(double): - Symmetric method for `hasSatelliteInterSignalBiasNanos` must be named `setHasSatelliteInterSignalBiasNanos`; was `setSatelliteInterSignalBiasNanos` -GetterSetterNames: android.location.GnssMeasurement#setSatelliteInterSignalBiasUncertaintyNanos(double): - Symmetric method for `hasSatelliteInterSignalBiasUncertaintyNanos` must be named `setHasSatelliteInterSignalBiasUncertaintyNanos`; was `setSatelliteInterSignalBiasUncertaintyNanos` -GetterSetterNames: android.location.GnssMeasurement#setSatellitePvt(android.location.SatellitePvt): - Symmetric method for `hasSatellitePvt` must be named `setHasSatellitePvt`; was `setSatellitePvt` -GetterSetterNames: android.location.GnssMeasurement#setSnrInDb(double): - Symmetric method for `hasSnrInDb` must be named `setHasSnrInDb`; was `setSnrInDb` -GetterSetterNames: android.net.NetworkPolicyManager#getRestrictBackground(): - Symmetric method for `setRestrictBackground` must be named `isRestrictBackground`; was `getRestrictBackground` - - -IntentBuilderName: android.hardware.soundtrigger.KeyphraseEnrollmentInfo#getManageKeyphraseIntent(int, String, java.util.Locale): - Methods creating an Intent should be named `createIntent()`, was `getManageKeyphraseIntent` - - -IntentName: android.provider.Settings.Secure#VOICE_INTERACTION_SERVICE: - Intent action constant name must be ACTION_FOO: VOICE_INTERACTION_SERVICE -IntentName: android.provider.Telephony.Sms.Intents#SMS_CARRIER_PROVISION_ACTION: - Intent action constant name must be ACTION_FOO: SMS_CARRIER_PROVISION_ACTION - - -KotlinOperator: android.os.PackageTagsList#contains(android.os.PackageTagsList): - Method can be invoked as a "in" operator from Kotlin: `contains` (this is usually desirable; just make sure it makes sense for this type of object) -KotlinOperator: android.util.SparseArrayMap#get(int, K): - Method can be invoked with an indexing operator from Kotlin: `get` (this is usually desirable; just make sure it makes sense for this type of object) - - -ListenerLast: android.permission.PermissionControllerManager#countPermissionApps(java.util.List, int, android.permission.PermissionControllerManager.OnCountPermissionAppsResultCallback, android.os.Handler) parameter #3: - Listeners should always be at end of argument list (method `countPermissionApps`) -ListenerLast: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler) parameter #2: - Listeners should always be at end of argument list (method `getAppPermissions`) - - -ManagerConstructor: android.content.pm.ShortcutManager#ShortcutManager(android.content.Context): - Managers must always be obtained from Context; no direct constructors - - -MinMaxConstant: android.os.UserHandle#MIN_SECONDARY_USER_ID: - If min/max could change in future, make them dynamic methods: android.os.UserHandle#MIN_SECONDARY_USER_ID -MinMaxConstant: android.view.autofill.AutofillManager#MAX_TEMP_AUGMENTED_SERVICE_DURATION_MS: - If min/max could change in future, make them dynamic methods: android.view.autofill.AutofillManager#MAX_TEMP_AUGMENTED_SERVICE_DURATION_MS - - -MissingGetterMatchingBuilder: android.media.VolumeShaper.Configuration.Builder#setOptionFlags(int): - android.media.VolumeShaper.Configuration does not declare a `getOptionFlags()` method matching method android.media.VolumeShaper.Configuration.Builder.setOptionFlags(int) -MissingGetterMatchingBuilder: android.media.audiopolicy.AudioPolicy.Builder#setIsTestFocusPolicy(boolean): - android.media.audiopolicy.AudioPolicy does not declare a `isIsTestFocusPolicy()` method matching method android.media.audiopolicy.AudioPolicy.Builder.setIsTestFocusPolicy(boolean) -MissingGetterMatchingBuilder: android.security.keystore.KeyGenParameterSpec.Builder#setUniqueIdIncluded(boolean): - android.security.keystore.KeyGenParameterSpec does not declare a `isUniqueIdIncluded()` method matching method android.security.keystore.KeyGenParameterSpec.Builder.setUniqueIdIncluded(boolean) -MissingGetterMatchingBuilder: android.telecom.ConnectionRequest.Builder#setIsAdhocConferenceCall(boolean): - android.telecom.ConnectionRequest does not declare a `isIsAdhocConferenceCall()` method matching method android.telecom.ConnectionRequest.Builder.setIsAdhocConferenceCall(boolean) -MissingGetterMatchingBuilder: android.telecom.ConnectionRequest.Builder#setRttPipeFromInCall(android.os.ParcelFileDescriptor): - android.telecom.ConnectionRequest does not declare a `getRttPipeFromInCall()` method matching method android.telecom.ConnectionRequest.Builder.setRttPipeFromInCall(android.os.ParcelFileDescriptor) -MissingGetterMatchingBuilder: android.telecom.ConnectionRequest.Builder#setRttPipeToInCall(android.os.ParcelFileDescriptor): - android.telecom.ConnectionRequest does not declare a `getRttPipeToInCall()` method matching method android.telecom.ConnectionRequest.Builder.setRttPipeToInCall(android.os.ParcelFileDescriptor) -MissingGetterMatchingBuilder: android.telecom.ConnectionRequest.Builder#setShouldShowIncomingCallUi(boolean): - android.telecom.ConnectionRequest does not declare a `shouldShowIncomingCallUi()` method matching method android.telecom.ConnectionRequest.Builder.setShouldShowIncomingCallUi(boolean) -MissingGetterMatchingBuilder: android.view.Display.Mode.Builder#setResolution(int, int): - android.view.Display.Mode does not declare a `getResolution()` method matching method android.view.Display.Mode.Builder.setResolution(int,int) - - -MissingNullability: android.app.Activity#onMovedToDisplay(int, android.content.res.Configuration) parameter #1: - Missing nullability on parameter `config` in method `onMovedToDisplay` -MissingNullability: android.app.ActivityManager#alwaysShowUnsupportedCompileSdkWarning(android.content.ComponentName) parameter #0: - Missing nullability on parameter `activity` in method `alwaysShowUnsupportedCompileSdkWarning` -MissingNullability: android.app.ActivityManager#holdLock(android.os.IBinder, int) parameter #0: - Missing nullability on parameter `token` in method `holdLock` -MissingNullability: android.app.ActivityManager#scheduleApplicationInfoChanged(java.util.List, int) parameter #0: - Missing nullability on parameter `packages` in method `scheduleApplicationInfoChanged` -MissingNullability: android.app.ActivityManager.TaskDescription#getIconFilename(): - Missing nullability on method `getIconFilename` return -MissingNullability: android.app.ActivityTaskManager#clearLaunchParamsForPackages(java.util.List) parameter #0: - Missing nullability on parameter `packageNames` in method `clearLaunchParamsForPackages` -MissingNullability: android.app.ActivityTaskManager#resizeTask(int, android.graphics.Rect) parameter #1: - Missing nullability on parameter `bounds` in method `resizeTask` -MissingNullability: android.app.ActivityTaskManager#supportsMultiWindow(android.content.Context) parameter #0: - Missing nullability on parameter `context` in method `supportsMultiWindow` -MissingNullability: android.app.ActivityTaskManager#supportsSplitScreenMultiWindow(android.content.Context) parameter #0: - Missing nullability on parameter `context` in method `supportsSplitScreenMultiWindow` MissingNullability: android.app.AppDetailsActivity#onCreate(android.os.Bundle) parameter #0: Missing nullability on parameter `savedInstanceState` in method `onCreate` -MissingNullability: android.app.AppOpsManager#isOperationActive(int, int, String) parameter #2: - Missing nullability on parameter `packageName` in method `isOperationActive` -MissingNullability: android.app.AppOpsManager#opToPermission(int): - Missing nullability on method `opToPermission` return -MissingNullability: android.app.AppOpsManager#permissionToOpCode(String) parameter #0: - Missing nullability on parameter `permission` in method `permissionToOpCode` -MissingNullability: android.app.AppOpsManager#setMode(int, int, String, int) parameter #2: - Missing nullability on parameter `packageName` in method `setMode` -MissingNullability: android.app.NotificationManager#allowAssistantAdjustment(String) parameter #0: - Missing nullability on parameter `capability` in method `allowAssistantAdjustment` -MissingNullability: android.app.NotificationManager#disallowAssistantAdjustment(String) parameter #0: - Missing nullability on parameter `capability` in method `disallowAssistantAdjustment` -MissingNullability: android.app.NotificationManager#getEffectsSuppressor(): - Missing nullability on method `getEffectsSuppressor` return -MissingNullability: android.app.TimePickerDialog#getTimePicker(): - Missing nullability on method `getTimePicker` return -MissingNullability: android.app.WindowConfiguration#compareTo(android.app.WindowConfiguration) parameter #0: - Missing nullability on parameter `that` in method `compareTo` -MissingNullability: android.app.WindowConfiguration#getAppBounds(): - Missing nullability on method `getAppBounds` return -MissingNullability: android.app.WindowConfiguration#getBounds(): - Missing nullability on method `getBounds` return -MissingNullability: android.app.WindowConfiguration#setAppBounds(android.graphics.Rect) parameter #0: - Missing nullability on parameter `rect` in method `setAppBounds` -MissingNullability: android.app.WindowConfiguration#setBounds(android.graphics.Rect) parameter #0: - Missing nullability on parameter `rect` in method `setBounds` -MissingNullability: android.app.WindowConfiguration#setTo(android.app.WindowConfiguration) parameter #0: - Missing nullability on parameter `other` in method `setTo` -MissingNullability: android.app.WindowConfiguration#writeToParcel(android.os.Parcel, int) parameter #0: - Missing nullability on parameter `dest` in method `writeToParcel` -MissingNullability: android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts(android.os.UserHandle): - Missing nullability on method `getOwnerInstalledCaCerts` return -MissingNullability: android.app.admin.SecurityLog.SecurityEvent#SecurityEvent(long, byte[]) parameter #1: - Missing nullability on parameter `data` in method `SecurityEvent` -MissingNullability: android.app.prediction.AppPredictor#getSessionId(): - Missing nullability on method `getSessionId` return -MissingNullability: android.content.AutofillOptions#forWhitelistingItself(): - Missing nullability on method `forWhitelistingItself` return -MissingNullability: android.content.AutofillOptions#writeToParcel(android.os.Parcel, int) parameter #0: - Missing nullability on parameter `parcel` in method `writeToParcel` -MissingNullability: android.content.ContentCaptureOptions#forWhitelistingItself(): - Missing nullability on method `forWhitelistingItself` return -MissingNullability: android.content.ContentCaptureOptions#writeToParcel(android.os.Parcel, int) parameter #0: - Missing nullability on parameter `parcel` in method `writeToParcel` -MissingNullability: android.content.ContentResolver#getSyncAdapterPackagesForAuthorityAsUser(String, int): - Missing nullability on method `getSyncAdapterPackagesForAuthorityAsUser` return -MissingNullability: android.content.ContentResolver#getSyncAdapterPackagesForAuthorityAsUser(String, int) parameter #0: - Missing nullability on parameter `authority` in method `getSyncAdapterPackagesForAuthorityAsUser` -MissingNullability: android.content.pm.ActivityInfo#isTranslucentOrFloating(android.content.res.TypedArray) parameter #0: - Missing nullability on parameter `attributes` in method `isTranslucentOrFloating` -MissingNullability: android.content.pm.LauncherApps#LauncherApps(android.content.Context) parameter #0: - Missing nullability on parameter `context` in method `LauncherApps` -MissingNullability: android.content.pm.PackageManager#getHoldLockToken(): - Missing nullability on method `getHoldLockToken` return -MissingNullability: android.content.pm.PackageManager#getNamesForUids(int[]) parameter #0: - Missing nullability on parameter `uids` in method `getNamesForUids` -MissingNullability: android.content.pm.PackageManager#holdLock(android.os.IBinder, int) parameter #0: - Missing nullability on parameter `token` in method `holdLock` -MissingNullability: android.content.pm.ShortcutManager#ShortcutManager(android.content.Context) parameter #0: - Missing nullability on parameter `context` in method `ShortcutManager` -MissingNullability: android.content.pm.UserInfo#UserInfo(android.content.pm.UserInfo) parameter #0: - Missing nullability on parameter `orig` in method `UserInfo` -MissingNullability: android.content.pm.UserInfo#UserInfo(int, String, String, int) parameter #1: - Missing nullability on parameter `name` in method `UserInfo` -MissingNullability: android.content.pm.UserInfo#UserInfo(int, String, String, int) parameter #2: - Missing nullability on parameter `iconPath` in method `UserInfo` -MissingNullability: android.content.pm.UserInfo#UserInfo(int, String, String, int, String) parameter #1: - Missing nullability on parameter `name` in method `UserInfo` -MissingNullability: android.content.pm.UserInfo#UserInfo(int, String, String, int, String) parameter #2: - Missing nullability on parameter `iconPath` in method `UserInfo` -MissingNullability: android.content.pm.UserInfo#UserInfo(int, String, String, int, String) parameter #4: - Missing nullability on parameter `userType` in method `UserInfo` -MissingNullability: android.content.pm.UserInfo#UserInfo(int, String, int) parameter #1: - Missing nullability on parameter `name` in method `UserInfo` -MissingNullability: android.content.pm.UserInfo#getUserHandle(): - Missing nullability on method `getUserHandle` return -MissingNullability: android.content.pm.UserInfo#iconPath: - Missing nullability on field `iconPath` in class `class android.content.pm.UserInfo` -MissingNullability: android.content.pm.UserInfo#lastLoggedInFingerprint: - Missing nullability on field `lastLoggedInFingerprint` in class `class android.content.pm.UserInfo` -MissingNullability: android.content.pm.UserInfo#name: - Missing nullability on field `name` in class `class android.content.pm.UserInfo` -MissingNullability: android.content.pm.UserInfo#userType: - Missing nullability on field `userType` in class `class android.content.pm.UserInfo` -MissingNullability: android.content.pm.UserInfo#writeToParcel(android.os.Parcel, int) parameter #0: - Missing nullability on parameter `dest` in method `writeToParcel` -MissingNullability: android.content.res.AssetManager#getOverlayablesToString(String) parameter #0: - Missing nullability on parameter `packageName` in method `getOverlayablesToString` -MissingNullability: android.content.res.Configuration#windowConfiguration: - Missing nullability on field `windowConfiguration` in class `class android.content.res.Configuration` -MissingNullability: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]) parameter #0: - Missing nullability on parameter `printer` in method `dump` -MissingNullability: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]) parameter #1: - Missing nullability on parameter `args` in method `dump` -MissingNullability: android.database.sqlite.SQLiteDebug#getDatabaseInfo(): - Missing nullability on method `getDatabaseInfo` return -MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#DbStats(String, long, long, int, int, int, int) parameter #0: - Missing nullability on parameter `dbName` in method `DbStats` -MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#cache: - Missing nullability on field `cache` in class `class android.database.sqlite.SQLiteDebug.DbStats` -MissingNullability: android.database.sqlite.SQLiteDebug.DbStats#dbName: - Missing nullability on field `dbName` in class `class android.database.sqlite.SQLiteDebug.DbStats` -MissingNullability: android.database.sqlite.SQLiteDebug.PagerStats#dbStats: - Missing nullability on field `dbStats` in class `class android.database.sqlite.SQLiteDebug.PagerStats` -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #0: - Missing nullability on parameter `db` in method `SQLiteDirectCursorDriver` -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #1: - Missing nullability on parameter `sql` in method `SQLiteDirectCursorDriver` -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #2: - Missing nullability on parameter `editTable` in method `SQLiteDirectCursorDriver` -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#SQLiteDirectCursorDriver(android.database.sqlite.SQLiteDatabase, String, String, android.os.CancellationSignal) parameter #3: - Missing nullability on parameter `cancellationSignal` in method `SQLiteDirectCursorDriver` -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#cursorRequeried(android.database.Cursor) parameter #0: - Missing nullability on parameter `cursor` in method `cursorRequeried` -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]): - Missing nullability on method `query` return -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]) parameter #0: - Missing nullability on parameter `factory` in method `query` -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]) parameter #1: - Missing nullability on parameter `selectionArgs` in method `query` -MissingNullability: android.database.sqlite.SQLiteDirectCursorDriver#setBindArguments(String[]) parameter #0: - Missing nullability on parameter `bindArgs` in method `setBindArguments` -MissingNullability: android.database.sqlite.SQLiteGlobal#getDefaultJournalMode(): - Missing nullability on method `getDefaultJournalMode` return -MissingNullability: android.database.sqlite.SQLiteGlobal#getDefaultSyncMode(): - Missing nullability on method `getDefaultSyncMode` return -MissingNullability: android.database.sqlite.SQLiteGlobal#getWALSyncMode(): - Missing nullability on method `getWALSyncMode` return -MissingNullability: android.graphics.ImageDecoder#createSource(android.content.res.Resources, java.io.InputStream, int) parameter #0: - Missing nullability on parameter `res` in method `createSource` -MissingNullability: android.graphics.drawable.AdaptiveIconDrawable#getSafeZone(): - Missing nullability on method `getSafeZone` return -MissingNullability: android.graphics.drawable.ColorDrawable#getXfermode(): - Missing nullability on method `getXfermode` return -MissingNullability: android.hardware.camera2.CameraManager#getCameraIdListNoLazy(): - Missing nullability on method `getCameraIdListNoLazy` return -MissingNullability: android.hardware.display.AmbientDisplayConfiguration#AmbientDisplayConfiguration(android.content.Context) parameter #0: - Missing nullability on parameter `context` in method `AmbientDisplayConfiguration` -MissingNullability: android.location.GnssClock#set(android.location.GnssClock) parameter #0: - Missing nullability on parameter `clock` in method `set` -MissingNullability: android.location.GnssMeasurement#set(android.location.GnssMeasurement) parameter #0: - Missing nullability on parameter `measurement` in method `set` -MissingNullability: android.location.GnssNavigationMessage#set(android.location.GnssNavigationMessage) parameter #0: - Missing nullability on parameter `navigationMessage` in method `set` -MissingNullability: android.location.GnssNavigationMessage#setData(byte[]) parameter #0: - Missing nullability on parameter `value` in method `setData` -MissingNullability: android.media.AudioAttributes#getSdkUsages(): - Missing nullability on method `getSdkUsages` return -MissingNullability: android.media.AudioManager#getPublicStreamTypes(): - Missing nullability on method `getPublicStreamTypes` return -MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #3: - Missing nullability on parameter `clientFormat` in method `AudioRecordingConfiguration` -MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #4: - Missing nullability on parameter `devFormat` in method `AudioRecordingConfiguration` -MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String) parameter #6: - Missing nullability on parameter `packageName` in method `AudioRecordingConfiguration` -MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #10: - Missing nullability on parameter `clientEffects` in method `AudioRecordingConfiguration` -MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #11: - Missing nullability on parameter `deviceEffects` in method `AudioRecordingConfiguration` -MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #3: - Missing nullability on parameter `clientFormat` in method `AudioRecordingConfiguration` -MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #4: - Missing nullability on parameter `devFormat` in method `AudioRecordingConfiguration` -MissingNullability: android.media.AudioRecordingConfiguration#AudioRecordingConfiguration(int, int, int, android.media.AudioFormat, android.media.AudioFormat, int, String, int, boolean, int, android.media.audiofx.AudioEffect.Descriptor[], android.media.audiofx.AudioEffect.Descriptor[]) parameter #6: - Missing nullability on parameter `packageName` in method `AudioRecordingConfiguration` -MissingNullability: android.media.PlaybackParams#setAudioStretchMode(int): - Missing nullability on method `setAudioStretchMode` return -MissingNullability: android.media.audiofx.AudioEffect#EFFECT_TYPE_NULL: - Missing nullability on field `EFFECT_TYPE_NULL` in class `class android.media.audiofx.AudioEffect` -MissingNullability: android.media.audiofx.AudioEffect#byteArrayToInt(byte[]) parameter #0: - Missing nullability on parameter `valueBuf` in method `byteArrayToInt` -MissingNullability: android.media.audiofx.AudioEffect#byteArrayToShort(byte[]) parameter #0: - Missing nullability on parameter `valueBuf` in method `byteArrayToShort` -MissingNullability: android.media.audiofx.AudioEffect#getParameter(byte[], byte[]) parameter #0: - Missing nullability on parameter `param` in method `getParameter` -MissingNullability: android.media.audiofx.AudioEffect#getParameter(byte[], byte[]) parameter #1: - Missing nullability on parameter `value` in method `getParameter` -MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, byte[]) parameter #1: - Missing nullability on parameter `value` in method `getParameter` -MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, int[]) parameter #1: - Missing nullability on parameter `value` in method `getParameter` -MissingNullability: android.media.audiofx.AudioEffect#getParameter(int, short[]) parameter #1: - Missing nullability on parameter `value` in method `getParameter` -MissingNullability: android.media.audiofx.AudioEffect#getParameter(int[], short[]) parameter #0: - Missing nullability on parameter `param` in method `getParameter` -MissingNullability: android.media.audiofx.AudioEffect#getParameter(int[], short[]) parameter #1: - Missing nullability on parameter `value` in method `getParameter` -MissingNullability: android.media.audiofx.AudioEffect#intToByteArray(int): - Missing nullability on method `intToByteArray` return -MissingNullability: android.media.audiofx.AudioEffect#isEffectTypeAvailable(java.util.UUID) parameter #0: - Missing nullability on parameter `type` in method `isEffectTypeAvailable` -MissingNullability: android.media.audiofx.AudioEffect#setParameter(byte[], byte[]) parameter #0: - Missing nullability on parameter `param` in method `setParameter` -MissingNullability: android.media.audiofx.AudioEffect#setParameter(byte[], byte[]) parameter #1: - Missing nullability on parameter `value` in method `setParameter` -MissingNullability: android.media.audiofx.AudioEffect#setParameter(int, byte[]) parameter #1: - Missing nullability on parameter `value` in method `setParameter` -MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], byte[]) parameter #0: - Missing nullability on parameter `param` in method `setParameter` -MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], byte[]) parameter #1: - Missing nullability on parameter `value` in method `setParameter` -MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], int[]) parameter #0: - Missing nullability on parameter `param` in method `setParameter` -MissingNullability: android.media.audiofx.AudioEffect#setParameter(int[], int[]) parameter #1: - Missing nullability on parameter `value` in method `setParameter` -MissingNullability: android.media.audiofx.AudioEffect#setParameterListener(android.media.audiofx.AudioEffect.OnParameterChangeListener) parameter #0: - Missing nullability on parameter `listener` in method `setParameterListener` -MissingNullability: android.media.audiofx.AudioEffect#shortToByteArray(short): - Missing nullability on method `shortToByteArray` return -MissingNullability: android.media.audiofx.AudioEffect.Descriptor#Descriptor(android.os.Parcel) parameter #0: - Missing nullability on parameter `in` in method `Descriptor` -MissingNullability: android.media.audiofx.AudioEffect.Descriptor#writeToParcel(android.os.Parcel) parameter #0: - Missing nullability on parameter `dest` in method `writeToParcel` -MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #0: - Missing nullability on parameter `effect` in method `onParameterChange` -MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #2: - Missing nullability on parameter `param` in method `onParameterChange` -MissingNullability: android.media.audiofx.AudioEffect.OnParameterChangeListener#onParameterChange(android.media.audiofx.AudioEffect, int, byte[], byte[]) parameter #3: - Missing nullability on parameter `value` in method `onParameterChange` -MissingNullability: android.os.Build#is64BitAbi(String) parameter #0: - Missing nullability on parameter `abi` in method `is64BitAbi` -MissingNullability: android.os.Build.VERSION#ACTIVE_CODENAMES: - Missing nullability on field `ACTIVE_CODENAMES` in class `class android.os.Build.VERSION` -MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...): - Missing nullability on method `buildPath` return -MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...) parameter #0: - Missing nullability on parameter `base` in method `buildPath` -MissingNullability: android.os.Environment#buildPath(java.io.File, java.lang.String...) parameter #1: - Missing nullability on parameter `segments` in method `buildPath` -MissingNullability: android.os.FileUtils#contains(java.io.File, java.io.File) parameter #0: - Missing nullability on parameter `dir` in method `contains` -MissingNullability: android.os.FileUtils#contains(java.io.File, java.io.File) parameter #1: - Missing nullability on parameter `file` in method `contains` -MissingNullability: android.os.ParcelFileDescriptor#getFile(java.io.FileDescriptor): - Missing nullability on method `getFile` return -MissingNullability: android.os.ParcelFileDescriptor#getFile(java.io.FileDescriptor) parameter #0: - Missing nullability on parameter `fd` in method `getFile` -MissingNullability: android.os.StrictMode#setViolationLogger(android.os.StrictMode.ViolationLogger) parameter #0: - Missing nullability on parameter `listener` in method `setViolationLogger` -MissingNullability: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel) parameter #0: - Missing nullability on parameter `in` in method `ViolationInfo` -MissingNullability: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel, boolean) parameter #0: - Missing nullability on parameter `in` in method `ViolationInfo` -MissingNullability: android.os.StrictMode.ViolationInfo#broadcastIntentAction: - Missing nullability on field `broadcastIntentAction` in class `class android.os.StrictMode.ViolationInfo` -MissingNullability: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String) parameter #0: - Missing nullability on parameter `pw` in method `dump` -MissingNullability: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String) parameter #1: - Missing nullability on parameter `prefix` in method `dump` -MissingNullability: android.os.StrictMode.ViolationInfo#getStackTrace(): - Missing nullability on method `getStackTrace` return -MissingNullability: android.os.StrictMode.ViolationInfo#getViolationClass(): - Missing nullability on method `getViolationClass` return -MissingNullability: android.os.StrictMode.ViolationInfo#getViolationDetails(): - Missing nullability on method `getViolationDetails` return -MissingNullability: android.os.StrictMode.ViolationInfo#tags: - Missing nullability on field `tags` in class `class android.os.StrictMode.ViolationInfo` -MissingNullability: android.os.StrictMode.ViolationInfo#writeToParcel(android.os.Parcel, int) parameter #0: - Missing nullability on parameter `dest` in method `writeToParcel` -MissingNullability: android.os.StrictMode.ViolationLogger#log(android.os.StrictMode.ViolationInfo) parameter #0: - Missing nullability on parameter `info` in method `log` -MissingNullability: android.os.VibrationEffect#RINGTONES: - Missing nullability on field `RINGTONES` in class `class android.os.VibrationEffect` -MissingNullability: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #0: - Missing nullability on parameter `uri` in method `get` -MissingNullability: android.os.VibrationEffect#get(android.net.Uri, android.content.Context) parameter #1: - Missing nullability on parameter `context` in method `get` -MissingNullability: android.os.VibrationEffect#get(int): - Missing nullability on method `get` return -MissingNullability: android.os.VibrationEffect#get(int, boolean): - Missing nullability on method `get` return -MissingNullability: android.os.VintfObject#getHalNamesAndVersions(): - Missing nullability on method `getHalNamesAndVersions` return -MissingNullability: android.os.VintfObject#getSepolicyVersion(): - Missing nullability on method `getSepolicyVersion` return -MissingNullability: android.os.VintfObject#getTargetFrameworkCompatibilityMatrixVersion(): - Missing nullability on method `getTargetFrameworkCompatibilityMatrixVersion` return -MissingNullability: android.os.VintfObject#getVndkSnapshots(): - Missing nullability on method `getVndkSnapshots` return -MissingNullability: android.os.VintfObject#report(): - Missing nullability on method `report` return -MissingNullability: android.os.VintfRuntimeInfo#getCpuInfo(): - Missing nullability on method `getCpuInfo` return -MissingNullability: android.os.VintfRuntimeInfo#getHardwareId(): - Missing nullability on method `getHardwareId` return -MissingNullability: android.os.VintfRuntimeInfo#getKernelVersion(): - Missing nullability on method `getKernelVersion` return -MissingNullability: android.os.VintfRuntimeInfo#getNodeName(): - Missing nullability on method `getNodeName` return -MissingNullability: android.os.VintfRuntimeInfo#getOsName(): - Missing nullability on method `getOsName` return -MissingNullability: android.os.VintfRuntimeInfo#getOsRelease(): - Missing nullability on method `getOsRelease` return -MissingNullability: android.os.VintfRuntimeInfo#getOsVersion(): - Missing nullability on method `getOsVersion` return -MissingNullability: android.os.WorkSource#add(int, String) parameter #1: - Missing nullability on parameter `name` in method `add` -MissingNullability: android.os.health.HealthKeys.Constants#Constants(Class) parameter #0: - Missing nullability on parameter `clazz` in method `Constants` -MissingNullability: android.os.health.HealthKeys.Constants#getDataType(): - Missing nullability on method `getDataType` return -MissingNullability: android.os.health.HealthKeys.Constants#getKeys(int): - Missing nullability on method `getKeys` return -MissingNullability: android.os.health.HealthStats#HealthStats(android.os.Parcel) parameter #0: - Missing nullability on parameter `in` in method `HealthStats` -MissingNullability: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel) parameter #0: - Missing nullability on parameter `in` in method `HealthStatsParceler` -MissingNullability: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.health.HealthStatsWriter) parameter #0: - Missing nullability on parameter `writer` in method `HealthStatsParceler` -MissingNullability: android.os.health.HealthStatsParceler#getHealthStats(): - Missing nullability on method `getHealthStats` return -MissingNullability: android.os.health.HealthStatsParceler#writeToParcel(android.os.Parcel, int) parameter #0: - Missing nullability on parameter `out` in method `writeToParcel` -MissingNullability: android.os.health.HealthStatsWriter#HealthStatsWriter(android.os.health.HealthKeys.Constants) parameter #0: - Missing nullability on parameter `constants` in method `HealthStatsWriter` -MissingNullability: android.os.health.HealthStatsWriter#addMeasurements(int, String, long) parameter #1: - Missing nullability on parameter `name` in method `addMeasurements` -MissingNullability: android.os.health.HealthStatsWriter#addStats(int, String, android.os.health.HealthStatsWriter) parameter #1: - Missing nullability on parameter `name` in method `addStats` -MissingNullability: android.os.health.HealthStatsWriter#addStats(int, String, android.os.health.HealthStatsWriter) parameter #2: - Missing nullability on parameter `value` in method `addStats` -MissingNullability: android.os.health.HealthStatsWriter#addTimers(int, String, android.os.health.TimerStat) parameter #1: - Missing nullability on parameter `name` in method `addTimers` -MissingNullability: android.os.health.HealthStatsWriter#addTimers(int, String, android.os.health.TimerStat) parameter #2: - Missing nullability on parameter `value` in method `addTimers` -MissingNullability: android.os.health.HealthStatsWriter#flattenToParcel(android.os.Parcel) parameter #0: - Missing nullability on parameter `out` in method `flattenToParcel` -MissingNullability: android.os.storage.StorageVolume#getPath(): - Missing nullability on method `getPath` return -MissingNullability: android.provider.CalendarContract.Calendars#SYNC_WRITABLE_COLUMNS: - Missing nullability on field `SYNC_WRITABLE_COLUMNS` in class `class android.provider.CalendarContract.Calendars` -MissingNullability: android.provider.CalendarContract.Events#SYNC_WRITABLE_COLUMNS: - Missing nullability on field `SYNC_WRITABLE_COLUMNS` in class `class android.provider.CalendarContract.Events` -MissingNullability: android.provider.ContactsContract.RawContactsEntity#CORP_CONTENT_URI: - Missing nullability on field `CORP_CONTENT_URI` in class `class android.provider.ContactsContract.RawContactsEntity` -MissingNullability: android.security.keystore.KeyProtection.Builder#setBoundToSpecificSecureUserId(long): - Missing nullability on method `setBoundToSpecificSecureUserId` return -MissingNullability: android.service.autofill.CompositeUserData#getCategoryIds(): - Missing nullability on method `getCategoryIds` return -MissingNullability: android.service.autofill.CompositeUserData#getDefaultFieldClassificationArgs(): - Missing nullability on method `getDefaultFieldClassificationArgs` return -MissingNullability: android.service.autofill.CompositeUserData#getFieldClassificationAlgorithms(): - Missing nullability on method `getFieldClassificationAlgorithms` return -MissingNullability: android.service.autofill.CompositeUserData#getFieldClassificationArgs(): - Missing nullability on method `getFieldClassificationArgs` return -MissingNullability: android.service.autofill.CompositeUserData#getValues(): - Missing nullability on method `getValues` return -MissingNullability: android.service.autofill.CompositeUserData#writeToParcel(android.os.Parcel, int) parameter #0: - Missing nullability on parameter `parcel` in method `writeToParcel` -MissingNullability: android.service.autofill.UserData#getFieldClassificationAlgorithms(): - Missing nullability on method `getFieldClassificationAlgorithms` return -MissingNullability: android.telecom.Call.Details#getTelecomCallId(): - Missing nullability on method `getTelecomCallId` return -MissingNullability: android.telephony.ServiceState#addNetworkRegistrationInfo(android.telephony.NetworkRegistrationInfo) parameter #0: - Missing nullability on parameter `nri` in method `addNetworkRegistrationInfo` -MissingNullability: android.telephony.ServiceState#setCellBandwidths(int[]) parameter #0: - Missing nullability on parameter `bandwidths` in method `setCellBandwidths` -MissingNullability: android.telephony.SmsManager#checkSmsShortCodeDestination(String, String) parameter #0: - Missing nullability on parameter `destAddress` in method `checkSmsShortCodeDestination` -MissingNullability: android.telephony.SmsManager#checkSmsShortCodeDestination(String, String) parameter #1: - Missing nullability on parameter `countryIso` in method `checkSmsShortCodeDestination` -MissingNullability: android.telephony.TelephonyManager#HAL_VERSION_UNKNOWN: - Missing nullability on field `HAL_VERSION_UNKNOWN` in class `class android.telephony.TelephonyManager` -MissingNullability: android.telephony.TelephonyManager#HAL_VERSION_UNSUPPORTED: - Missing nullability on field `HAL_VERSION_UNSUPPORTED` in class `class android.telephony.TelephonyManager` -MissingNullability: android.telephony.TelephonyManager#getLine1AlphaTag(): - Missing nullability on method `getLine1AlphaTag` return -MissingNullability: android.telephony.TelephonyManager#getRadioHalVersion(): - Missing nullability on method `getRadioHalVersion` return -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #0: - Missing nullability on parameter `mccmnc` in method `setCarrierTestOverride` -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #1: - Missing nullability on parameter `imsi` in method `setCarrierTestOverride` -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #2: - Missing nullability on parameter `iccid` in method `setCarrierTestOverride` -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #3: - Missing nullability on parameter `gid1` in method `setCarrierTestOverride` -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #4: - Missing nullability on parameter `gid2` in method `setCarrierTestOverride` -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #5: - Missing nullability on parameter `plmn` in method `setCarrierTestOverride` -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #6: - Missing nullability on parameter `spn` in method `setCarrierTestOverride` -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #7: - Missing nullability on parameter `carrierPriviledgeRules` in method `setCarrierTestOverride` -MissingNullability: android.telephony.TelephonyManager#setCarrierTestOverride(String, String, String, String, String, String, String, String, String) parameter #8: - Missing nullability on parameter `apn` in method `setCarrierTestOverride` -MissingNullability: android.text.Selection.MemoryTextWatcher#afterTextChanged(android.text.Editable) parameter #0: - Missing nullability on parameter `s` in method `afterTextChanged` -MissingNullability: android.text.Selection.MemoryTextWatcher#beforeTextChanged(CharSequence, int, int, int) parameter #0: - Missing nullability on parameter `s` in method `beforeTextChanged` -MissingNullability: android.text.Selection.MemoryTextWatcher#onTextChanged(CharSequence, int, int, int) parameter #0: - Missing nullability on parameter `s` in method `onTextChanged` -MissingNullability: android.transition.TransitionManager#getTransition(android.transition.Scene): - Missing nullability on method `getTransition` return -MissingNullability: android.transition.TransitionManager#getTransition(android.transition.Scene) parameter #0: - Missing nullability on parameter `scene` in method `getTransition` -MissingNullability: android.util.FeatureFlagUtils#getAllFeatureFlags(): - Missing nullability on method `getAllFeatureFlags` return -MissingNullability: android.util.FeatureFlagUtils#isEnabled(android.content.Context, String) parameter #0: - Missing nullability on parameter `context` in method `isEnabled` -MissingNullability: android.util.FeatureFlagUtils#isEnabled(android.content.Context, String) parameter #1: - Missing nullability on parameter `feature` in method `isEnabled` -MissingNullability: android.util.FeatureFlagUtils#setEnabled(android.content.Context, String, boolean) parameter #0: - Missing nullability on parameter `context` in method `setEnabled` -MissingNullability: android.util.FeatureFlagUtils#setEnabled(android.content.Context, String, boolean) parameter #1: - Missing nullability on parameter `feature` in method `setEnabled` -MissingNullability: android.util.TimeUtils#formatDuration(long): - Missing nullability on method `formatDuration` return -MissingNullability: android.util.proto.EncodedBuffer#dumpBuffers(String) parameter #0: - Missing nullability on parameter `tag` in method `dumpBuffers` -MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #0: - Missing nullability on parameter `tag` in method `dumpByteString` -MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #1: - Missing nullability on parameter `prefix` in method `dumpByteString` -MissingNullability: android.util.proto.EncodedBuffer#dumpByteString(String, String, byte[]) parameter #2: - Missing nullability on parameter `buf` in method `dumpByteString` -MissingNullability: android.util.proto.EncodedBuffer#getBytes(int): - Missing nullability on method `getBytes` return -MissingNullability: android.util.proto.EncodedBuffer#getDebugString(): - Missing nullability on method `getDebugString` return -MissingNullability: android.util.proto.EncodedBuffer#writeRawBuffer(byte[]) parameter #0: - Missing nullability on parameter `val` in method `writeRawBuffer` -MissingNullability: android.util.proto.EncodedBuffer#writeRawBuffer(byte[], int, int) parameter #0: - Missing nullability on parameter `val` in method `writeRawBuffer` -MissingNullability: android.util.proto.ProtoParseException#ProtoParseException(String) parameter #0: - Missing nullability on parameter `msg` in method `ProtoParseException` -MissingNullability: android.util.proto.WireTypeMismatchException#WireTypeMismatchException(String) parameter #0: - Missing nullability on parameter `msg` in method `WireTypeMismatchException` -MissingNullability: android.view.Choreographer#postCallback(int, Runnable, Object) parameter #1: - Missing nullability on parameter `action` in method `postCallback` -MissingNullability: android.view.Choreographer#postCallback(int, Runnable, Object) parameter #2: - Missing nullability on parameter `token` in method `postCallback` -MissingNullability: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long) parameter #1: - Missing nullability on parameter `action` in method `postCallbackDelayed` -MissingNullability: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long) parameter #2: - Missing nullability on parameter `token` in method `postCallbackDelayed` -MissingNullability: android.view.Choreographer#removeCallbacks(int, Runnable, Object) parameter #1: - Missing nullability on parameter `action` in method `removeCallbacks` -MissingNullability: android.view.Choreographer#removeCallbacks(int, Runnable, Object) parameter #2: - Missing nullability on parameter `token` in method `removeCallbacks` -MissingNullability: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #0: - Missing nullability on parameter `views` in method `sort` -MissingNullability: android.view.FocusFinder#sort(android.view.View[], int, int, android.view.ViewGroup, boolean) parameter #3: - Missing nullability on parameter `root` in method `sort` -MissingNullability: android.view.KeyEvent#actionToString(int): - Missing nullability on method `actionToString` return -MissingNullability: android.view.SurfaceControlViewHost#relayout(android.view.WindowManager.LayoutParams) parameter #0: - Missing nullability on parameter `attrs` in method `relayout` -MissingNullability: android.view.View#getTooltipView(): - Missing nullability on method `getTooltipView` return -MissingNullability: android.view.View#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #0: - Missing nullability on parameter `background` in method `isDefaultFocusHighlightNeeded` -MissingNullability: android.view.View#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #1: - Missing nullability on parameter `foreground` in method `isDefaultFocusHighlightNeeded` -MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable) parameter #0: - Missing nullability on parameter `tree` in method `startRenderingCommandsCapture` -MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable) parameter #1: - Missing nullability on parameter `executor` in method `startRenderingCommandsCapture` -MissingNullability: android.view.ViewDebug#startRenderingCommandsCapture(android.view.View, java.util.concurrent.Executor, java.util.concurrent.Callable) parameter #2: - Missing nullability on parameter `callback` in method `startRenderingCommandsCapture` -MissingNullability: android.view.WindowManager#holdLock(android.os.IBinder, int) parameter #0: - Missing nullability on parameter `token` in method `holdLock` -MissingNullability: android.view.WindowManager.LayoutParams#accessibilityTitle: - Missing nullability on field `accessibilityTitle` in class `class android.view.WindowManager.LayoutParams` -MissingNullability: android.view.accessibility.AccessibilityNodeInfo#writeToParcelNoRecycle(android.os.Parcel, int) parameter #0: - Missing nullability on parameter `parcel` in method `writeToParcelNoRecycle` -MissingNullability: android.view.accessibility.AccessibilityWindowInfo#setNumInstancesInUseCounter(java.util.concurrent.atomic.AtomicInteger) parameter #0: - Missing nullability on parameter `counter` in method `setNumInstancesInUseCounter` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#asyncNewChild(int): - Missing nullability on method `asyncNewChild` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getAutofillId(): - Missing nullability on method `getAutofillId` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getExtras(): - Missing nullability on method `getExtras` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getHint(): - Missing nullability on method `getHint` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getNode(): - Missing nullability on method `getNode` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getTempRect(): - Missing nullability on method `getTempRect` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#getText(): - Missing nullability on method `getText` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newChild(int): - Missing nullability on method `newChild` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newHtmlInfoBuilder(String): - Missing nullability on method `newHtmlInfoBuilder` return -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#newHtmlInfoBuilder(String) parameter #0: - Missing nullability on parameter `tagName` in method `newHtmlInfoBuilder` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillHints(String[]) parameter #0: - Missing nullability on parameter `hints` in method `setAutofillHints` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillId(android.view.autofill.AutofillId) parameter #0: - Missing nullability on parameter `id` in method `setAutofillId` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillId(android.view.autofill.AutofillId, int) parameter #0: - Missing nullability on parameter `parentId` in method `setAutofillId` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillOptions(CharSequence[]) parameter #0: - Missing nullability on parameter `options` in method `setAutofillOptions` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setAutofillValue(android.view.autofill.AutofillValue) parameter #0: - Missing nullability on parameter `value` in method `setAutofillValue` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setClassName(String) parameter #0: - Missing nullability on parameter `className` in method `setClassName` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setContentDescription(CharSequence) parameter #0: - Missing nullability on parameter `contentDescription` in method `setContentDescription` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHint(CharSequence) parameter #0: - Missing nullability on parameter `hint` in method `setHint` MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHintIdEntry(String) parameter #0: Missing nullability on parameter `entryName` in method `setHintIdEntry` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setHtmlInfo(android.view.ViewStructure.HtmlInfo) parameter #0: - Missing nullability on parameter `htmlInfo` in method `setHtmlInfo` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #1: - Missing nullability on parameter `packageName` in method `setId` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #2: - Missing nullability on parameter `typeName` in method `setId` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setId(int, String, String, String) parameter #3: - Missing nullability on parameter `entryName` in method `setId` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setLocaleList(android.os.LocaleList) parameter #0: - Missing nullability on parameter `localeList` in method `setLocaleList` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setText(CharSequence) parameter #0: - Missing nullability on parameter `text` in method `setText` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setText(CharSequence, int, int) parameter #0: - Missing nullability on parameter `text` in method `setText` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTextLines(int[], int[]) parameter #0: - Missing nullability on parameter `charOffsets` in method `setTextLines` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTextLines(int[], int[]) parameter #1: - Missing nullability on parameter `baselines` in method `setTextLines` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setTransformation(android.graphics.Matrix) parameter #0: - Missing nullability on parameter `matrix` in method `setTransformation` -MissingNullability: android.view.contentcapture.ViewNode.ViewStructureImpl#setWebDomain(String) parameter #0: - Missing nullability on parameter `domain` in method `setWebDomain` -MissingNullability: android.widget.CalendarView#getBoundsForDate(long, android.graphics.Rect) parameter #1: - Missing nullability on parameter `outBounds` in method `getBoundsForDate` MissingNullability: android.widget.ImageView#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #0: Missing nullability on parameter `background` in method `isDefaultFocusHighlightNeeded` MissingNullability: android.widget.ImageView#isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable) parameter #1: Missing nullability on parameter `foreground` in method `isDefaultFocusHighlightNeeded` -MissingNullability: android.widget.Magnifier#getMagnifierDefaultSize(): - Missing nullability on method `getMagnifierDefaultSize` return -MissingNullability: android.widget.Magnifier#setOnOperationCompleteCallback(android.widget.Magnifier.Callback) parameter #0: - Missing nullability on parameter `callback` in method `setOnOperationCompleteCallback` -MissingNullability: android.widget.NumberPicker#getDisplayedValueForCurrentSelection(): - Missing nullability on method `getDisplayedValueForCurrentSelection` return -MissingNullability: android.widget.PopupMenu#getMenuListView(): - Missing nullability on method `getMenuListView` return -MissingNullability: android.widget.TimePicker#getAmView(): - Missing nullability on method `getAmView` return -MissingNullability: android.widget.TimePicker#getHourView(): - Missing nullability on method `getHourView` return -MissingNullability: android.widget.TimePicker#getMinuteView(): - Missing nullability on method `getMinuteView` return -MissingNullability: android.widget.TimePicker#getPmView(): - Missing nullability on method `getPmView` return - - -MutableBareField: android.content.AutofillOptions#appDisabledExpiration: - Bare field appDisabledExpiration must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.AutofillOptions#augmentedAutofillEnabled: - Bare field augmentedAutofillEnabled must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.AutofillOptions#disabledActivities: - Bare field disabledActivities must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.AutofillOptions#whitelistedActivitiesForAugmentedAutofill: - Bare field whitelistedActivitiesForAugmentedAutofill must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#convertedFromPreCreated: - Bare field convertedFromPreCreated must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#creationTime: - Bare field creationTime must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#flags: - Bare field flags must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#guestToRemove: - Bare field guestToRemove must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#iconPath: - Bare field iconPath must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#id: - Bare field id must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#lastLoggedInFingerprint: - Bare field lastLoggedInFingerprint must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#lastLoggedInTime: - Bare field lastLoggedInTime must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#name: - Bare field name must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#partial: - Bare field partial must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#preCreated: - Bare field preCreated must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#profileBadge: - Bare field profileBadge must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#profileGroupId: - Bare field profileGroupId must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#restrictedProfileParentId: - Bare field restrictedProfileParentId must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#serialNumber: - Bare field serialNumber must be marked final, or moved behind accessors if mutable -MutableBareField: android.content.pm.UserInfo#userType: - Bare field userType must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#cache: - Bare field cache must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#dbName: - Bare field dbName must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#dbSize: - Bare field dbSize must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#lookaside: - Bare field lookaside must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.DbStats#pageSize: - Bare field pageSize must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#dbStats: - Bare field dbStats must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#largestMemAlloc: - Bare field largestMemAlloc must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#memoryUsed: - Bare field memoryUsed must be marked final, or moved behind accessors if mutable -MutableBareField: android.database.sqlite.SQLiteDebug.PagerStats#pageCacheOverflow: - Bare field pageCacheOverflow must be marked final, or moved behind accessors if mutable -MutableBareField: android.os.StrictMode.ViolationInfo#broadcastIntentAction: - Bare field broadcastIntentAction must be marked final, or moved behind accessors if mutable -MutableBareField: android.os.StrictMode.ViolationInfo#durationMillis: - Bare field durationMillis must be marked final, or moved behind accessors if mutable -MutableBareField: android.os.StrictMode.ViolationInfo#numAnimationsRunning: - Bare field numAnimationsRunning must be marked final, or moved behind accessors if mutable -MutableBareField: android.os.StrictMode.ViolationInfo#numInstances: - Bare field numInstances must be marked final, or moved behind accessors if mutable -MutableBareField: android.os.StrictMode.ViolationInfo#tags: - Bare field tags must be marked final, or moved behind accessors if mutable -MutableBareField: android.os.StrictMode.ViolationInfo#violationNumThisLoop: - Bare field violationNumThisLoop must be marked final, or moved behind accessors if mutable -MutableBareField: android.os.StrictMode.ViolationInfo#violationUptimeMillis: - Bare field violationUptimeMillis must be marked final, or moved behind accessors if mutable - - -NoByteOrShort: android.media.audiofx.AudioEffect#byteArrayToShort(byte[]): - Should avoid odd sized primitives; use `int` instead of `short` in method android.media.audiofx.AudioEffect.byteArrayToShort(byte[]) -NoByteOrShort: android.media.audiofx.AudioEffect#setParameter(int, short) parameter #1: - Should avoid odd sized primitives; use `int` instead of `short` in parameter value in android.media.audiofx.AudioEffect.setParameter(int param, short value) -NoByteOrShort: android.media.audiofx.AudioEffect#shortToByteArray(short) parameter #0: - Should avoid odd sized primitives; use `int` instead of `short` in parameter value in android.media.audiofx.AudioEffect.shortToByteArray(short value) -NoByteOrShort: android.util.proto.EncodedBuffer#readRawByte(): - Should avoid odd sized primitives; use `int` instead of `byte` in method android.util.proto.EncodedBuffer.readRawByte() -NoByteOrShort: android.util.proto.EncodedBuffer#writeRawByte(byte) parameter #0: - Should avoid odd sized primitives; use `int` instead of `byte` in parameter val in android.util.proto.EncodedBuffer.writeRawByte(byte val) - - -NoSettingsProvider: android.provider.Settings.Global#APP_OPS_CONSTANTS: - New setting keys are not allowed (Field: APP_OPS_CONSTANTS); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#AUTOMATIC_POWER_SAVE_MODE: - New setting keys are not allowed (Field: AUTOMATIC_POWER_SAVE_MODE); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#BATTERY_SAVER_CONSTANTS: - New setting keys are not allowed (Field: BATTERY_SAVER_CONSTANTS); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD: - New setting keys are not allowed (Field: DYNAMIC_POWER_SAVINGS_DISABLE_THRESHOLD); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#DYNAMIC_POWER_SAVINGS_ENABLED: - New setting keys are not allowed (Field: DYNAMIC_POWER_SAVINGS_ENABLED); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#HDR_CONVERSION_MODE: - New setting keys are not allowed (Field: HDR_CONVERSION_MODE); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#HDR_FORCE_CONVERSION_TYPE: - New setting keys are not allowed (Field: HDR_FORCE_CONVERSION_TYPE); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#HIDDEN_API_BLACKLIST_EXEMPTIONS: - New setting keys are not allowed (Field: HIDDEN_API_BLACKLIST_EXEMPTIONS); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#HIDDEN_API_POLICY: - New setting keys are not allowed (Field: HIDDEN_API_POLICY); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#HIDE_ERROR_DIALOGS: - New setting keys are not allowed (Field: HIDE_ERROR_DIALOGS); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#LOW_POWER_MODE: - New setting keys are not allowed (Field: LOW_POWER_MODE); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#LOW_POWER_MODE_STICKY: - New setting keys are not allowed (Field: LOW_POWER_MODE_STICKY); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Global#OVERLAY_DISPLAY_DEVICES: - New setting keys are not allowed (Field: OVERLAY_DISPLAY_DEVICES); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED: - New setting keys are not allowed (Field: ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#ACCESSIBILITY_MAGNIFICATION_CAPABILITY: - New setting keys are not allowed (Field: ACCESSIBILITY_MAGNIFICATION_CAPABILITY); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#ACCESSIBILITY_MAGNIFICATION_MODE: - New setting keys are not allowed (Field: ACCESSIBILITY_MAGNIFICATION_MODE); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#ACCESSIBILITY_SHORTCUT_TARGET_SERVICE: - New setting keys are not allowed (Field: ACCESSIBILITY_SHORTCUT_TARGET_SERVICE); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#AUTOFILL_SERVICE: - New setting keys are not allowed (Field: AUTOFILL_SERVICE); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#BIOMETRIC_VIRTUAL_ENABLED: - New setting keys are not allowed (Field: BIOMETRIC_VIRTUAL_ENABLED); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#CONTENT_CAPTURE_ENABLED: - New setting keys are not allowed (Field: CONTENT_CAPTURE_ENABLED); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#DISABLED_PRINT_SERVICES: - New setting keys are not allowed (Field: DISABLED_PRINT_SERVICES); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#ENABLED_VR_LISTENERS: - New setting keys are not allowed (Field: ENABLED_VR_LISTENERS); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#IMMERSIVE_MODE_CONFIRMATIONS: - New setting keys are not allowed (Field: IMMERSIVE_MODE_CONFIRMATIONS); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#NOTIFICATION_BADGING: - New setting keys are not allowed (Field: NOTIFICATION_BADGING); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#POWER_MENU_LOCKED_SHOW_CONTENT: - New setting keys are not allowed (Field: POWER_MENU_LOCKED_SHOW_CONTENT); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#SYNC_PARENT_SOUNDS: - New setting keys are not allowed (Field: SYNC_PARENT_SOUNDS); use getters/setters in relevant manager class -NoSettingsProvider: android.provider.Settings.Secure#VOICE_INTERACTION_SERVICE: - New setting keys are not allowed (Field: VOICE_INTERACTION_SERVICE); use getters/setters in relevant manager class - - -OnNameExpected: android.service.notification.ConditionProviderService#isBound(): - If implemented by developer, should follow the on style; otherwise consider marking final -OnNameExpected: android.service.watchdog.ExplicitHealthCheckService#setCallback(android.os.RemoteCallback): - If implemented by developer, should follow the on style; otherwise consider marking final - - -PackageLayering: android.util.FeatureFlagUtils: - Method parameter type `android.content.Context` violates package layering: nothing in `package android.util` should depend on `package android.content` - - -ParcelConstructor: android.credentials.ui.ProviderData#ProviderData(android.os.Parcel): - Parcelable inflation is exposed through CREATOR, not raw constructors, in android.credentials.ui.ProviderData -ParcelConstructor: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel): - Parcelable inflation is exposed through CREATOR, not raw constructors, in android.os.StrictMode.ViolationInfo -ParcelConstructor: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel): - Parcelable inflation is exposed through CREATOR, not raw constructors, in android.os.health.HealthStatsParceler - - -ParcelCreator: android.app.WindowConfiguration: - Parcelable requires a `CREATOR` field; missing in android.app.WindowConfiguration -ParcelCreator: android.service.autofill.InternalOnClickAction: - Parcelable requires a `CREATOR` field; missing in android.service.autofill.InternalOnClickAction -ParcelCreator: android.service.autofill.InternalSanitizer: - Parcelable requires a `CREATOR` field; missing in android.service.autofill.InternalSanitizer -ParcelCreator: android.service.autofill.InternalTransformation: - Parcelable requires a `CREATOR` field; missing in android.service.autofill.InternalTransformation -ParcelCreator: android.service.autofill.InternalValidator: - Parcelable requires a `CREATOR` field; missing in android.service.autofill.InternalValidator - - -ParcelNotFinal: android.app.WindowConfiguration: - Parcelable classes must be final: android.app.WindowConfiguration is not final -ParcelNotFinal: android.content.pm.UserInfo: - Parcelable classes must be final: android.content.pm.UserInfo is not final -ParcelNotFinal: android.os.health.HealthStatsParceler: - Parcelable classes must be final: android.os.health.HealthStatsParceler is not final -ParcelNotFinal: android.service.autofill.InternalOnClickAction: - Parcelable classes must be final: android.service.autofill.InternalOnClickAction is not final -ParcelNotFinal: android.service.autofill.InternalSanitizer: - Parcelable classes must be final: android.service.autofill.InternalSanitizer is not final -ParcelNotFinal: android.service.autofill.InternalTransformation: - Parcelable classes must be final: android.service.autofill.InternalTransformation is not final -ParcelNotFinal: android.service.autofill.InternalValidator: - Parcelable classes must be final: android.service.autofill.InternalValidator is not final ProtectedMember: android.app.AppDetailsActivity#onCreate(android.os.Bundle): Protected methods not allowed; must be public: method android.app.AppDetailsActivity.onCreate(android.os.Bundle)} -ProtectedMember: android.view.View#resetResolvedDrawables(): - Protected methods not allowed; must be public: method android.view.View.resetResolvedDrawables()} ProtectedMember: android.view.ViewGroup#resetResolvedDrawables(): Protected methods not allowed; must be public: method android.view.ViewGroup.resetResolvedDrawables()} -RethrowRemoteException: android.app.ActivityManager#resumeAppSwitches(): - Methods calling system APIs should rethrow `RemoteException` as `RuntimeException` (but do not list it in the throws clause) - - -SamShouldBeLast: android.database.sqlite.SQLiteDebug#dump(android.util.Printer, String[]): - SAM-compatible parameters (such as parameter 1, "printer", in android.database.sqlite.SQLiteDebug.dump) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.database.sqlite.SQLiteDirectCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]): - SAM-compatible parameters (such as parameter 1, "factory", in android.database.sqlite.SQLiteDirectCursorDriver.query) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.os.StrictMode.ViolationInfo#dump(android.util.Printer, String): - SAM-compatible parameters (such as parameter 1, "pw", in android.os.StrictMode.ViolationInfo.dump) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.permission.PermissionControllerManager#countPermissionApps(java.util.List, int, android.permission.PermissionControllerManager.OnCountPermissionAppsResultCallback, android.os.Handler): - SAM-compatible parameters (such as parameter 3, "callback", in android.permission.PermissionControllerManager.countPermissionApps) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.permission.PermissionControllerManager#getAppPermissions(String, android.permission.PermissionControllerManager.OnGetAppPermissionResultCallback, android.os.Handler): - SAM-compatible parameters (such as parameter 2, "callback", in android.permission.PermissionControllerManager.getAppPermissions) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.service.autofill.CharSequenceTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int): - SAM-compatible parameters (such as parameter 1, "finder", in android.service.autofill.CharSequenceTransformation.apply) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.service.autofill.DateTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int): - SAM-compatible parameters (such as parameter 1, "finder", in android.service.autofill.DateTransformation.apply) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.service.autofill.ImageTransformation#apply(android.service.autofill.ValueFinder, android.widget.RemoteViews, int): - SAM-compatible parameters (such as parameter 1, "finder", in android.service.autofill.ImageTransformation.apply) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.service.autofill.InternalTransformation#batchApply(android.service.autofill.ValueFinder, android.widget.RemoteViews, java.util.ArrayList>): - SAM-compatible parameters (such as parameter 1, "finder", in android.service.autofill.InternalTransformation.batchApply) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.view.Choreographer#postCallback(int, Runnable, Object): - SAM-compatible parameters (such as parameter 2, "action", in android.view.Choreographer.postCallback) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.view.Choreographer#postCallbackDelayed(int, Runnable, Object, long): - SAM-compatible parameters (such as parameter 2, "action", in android.view.Choreographer.postCallbackDelayed) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions -SamShouldBeLast: android.view.Choreographer#removeCallbacks(int, Runnable, Object): - SAM-compatible parameters (such as parameter 2, "action", in android.view.Choreographer.removeCallbacks) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions - - -StaticUtils: android.os.health.HealthKeys: - Fully-static utility classes must not have constructor -StaticUtils: android.service.autofill.InternalTransformation: - Fully-static utility classes must not have constructor -StaticUtils: android.util.FeatureFlagUtils: - Fully-static utility classes must not have constructor - - -StreamFiles: android.os.Environment#buildPath(java.io.File, java.lang.String...): - Methods accepting `File` should also accept `FileDescriptor` or streams: method android.os.Environment.buildPath(java.io.File,java.lang.String...) -StreamFiles: android.os.FileUtils#contains(java.io.File, java.io.File): - Methods accepting `File` should also accept `FileDescriptor` or streams: method android.os.FileUtils.contains(java.io.File,java.io.File) - - -UseIcu: android.hardware.soundtrigger.KeyphraseEnrollmentInfo#getKeyphraseMetadata(String, java.util.Locale) parameter #1: - Type `java.util.Locale` should be replaced with richer ICU type `android.icu.util.ULocale` -UseIcu: android.hardware.soundtrigger.KeyphraseEnrollmentInfo#getManageKeyphraseIntent(int, String, java.util.Locale) parameter #2: - Type `java.util.Locale` should be replaced with richer ICU type `android.icu.util.ULocale` -UseIcu: android.hardware.soundtrigger.KeyphraseMetadata#supportsLocale(java.util.Locale) parameter #0: - Type `java.util.Locale` should be replaced with richer ICU type `android.icu.util.ULocale` - - -UserHandle: android.app.admin.DevicePolicyManager#getOwnerInstalledCaCerts(android.os.UserHandle): - When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added -UserHandle: android.app.usage.StorageStatsManager#queryCratesForPackage(java.util.UUID, String, android.os.UserHandle): - When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added -UserHandle: android.app.usage.StorageStatsManager#queryCratesForUser(java.util.UUID, android.os.UserHandle): - When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added -UserHandle: android.content.pm.PackageManager#getInstallReason(String, android.os.UserHandle): - When a method overload is needed to target a specific UserHandle, callers should be directed to use Context.createPackageContextAsUser() and re-obtain the relevant Manager, and no new API should be added - - -UserHandleName: android.content.AutofillOptions: - Classes holding a set of parameters should be called `FooParams`, was `AutofillOptions` -UserHandleName: android.content.ContentCaptureOptions: - Classes holding a set of parameters should be called `FooParams`, was `ContentCaptureOptions` - - -VisiblySynchronized: PsiThisExpression: - Internal locks must not be exposed (synchronizing on this or class is still externally observable): method android.content.res.AssetManager.getApkPaths() -VisiblySynchronized: android.content.res.AssetManager#getApkPaths(): - Internal locks must not be exposed (synchronizing on this or class is still externally observable): method android.content.res.AssetManager.getApkPaths() -VisiblySynchronized: android.content.res.AssetManager#getLastResourceResolution(): - Internal locks must not be exposed (synchronizing on this or class is still externally observable): method android.content.res.AssetManager.getLastResourceResolution() -VisiblySynchronized: android.content.res.AssetManager#getOverlayablesToString(String): - Internal locks must not be exposed (synchronizing on this or class is still externally observable): method android.content.res.AssetManager.getOverlayablesToString(String) -VisiblySynchronized: android.content.res.AssetManager#setResourceResolutionLoggingEnabled(boolean): - Internal locks must not be exposed (synchronizing on this or class is still externally observable): method android.content.res.AssetManager.setResourceResolutionLoggingEnabled(boolean) -VisiblySynchronized: android.os.MessageQueue#removeSyncBarrier(int): - Internal locks must not be exposed (synchronizing on this or class is still externally observable): method android.os.MessageQueue.removeSyncBarrier(int) +SamShouldBeLast: android.animation.ValueAnimator#ofObject(android.animation.TypeEvaluator, java.lang.Object...): + SAM-compatible parameters (such as parameter 1, "evaluator", in android.animation.ValueAnimator.ofObject) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.Activity#convertToTranslucent(android.app.Activity.TranslucentConversionListener, android.app.ActivityOptions): + SAM-compatible parameters (such as parameter 1, "callback", in android.app.Activity.convertToTranslucent) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.ActivityManager#addOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener, int): + SAM-compatible parameters (such as parameter 1, "listener", in android.app.ActivityManager.addOnUidImportanceListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.AlarmManager#set(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler): + SAM-compatible parameters (such as parameter 4, "listener", in android.app.AlarmManager.set) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.AlarmManager#set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource): + SAM-compatible parameters (such as parameter 5, "listener", in android.app.AlarmManager.set) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.AlarmManager#setExact(int, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler): + SAM-compatible parameters (such as parameter 4, "listener", in android.app.AlarmManager.setExact) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.AlarmManager#setWindow(int, long, long, String, android.app.AlarmManager.OnAlarmListener, android.os.Handler): + SAM-compatible parameters (such as parameter 5, "listener", in android.app.AlarmManager.setWindow) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.PendingIntent#send(android.content.Context, int, android.content.Intent, android.app.PendingIntent.OnFinished, android.os.Handler): + SAM-compatible parameters (such as parameter 4, "onFinished", in android.app.PendingIntent.send) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.PendingIntent#send(android.content.Context, int, android.content.Intent, android.app.PendingIntent.OnFinished, android.os.Handler, String): + SAM-compatible parameters (such as parameter 4, "onFinished", in android.app.PendingIntent.send) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.PendingIntent#send(android.content.Context, int, android.content.Intent, android.app.PendingIntent.OnFinished, android.os.Handler, String, android.os.Bundle): + SAM-compatible parameters (such as parameter 4, "onFinished", in android.app.PendingIntent.send) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.PendingIntent#send(int, android.app.PendingIntent.OnFinished, android.os.Handler): + SAM-compatible parameters (such as parameter 2, "onFinished", in android.app.PendingIntent.send) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.UiAutomation#executeAndWaitForEvent(Runnable, android.app.UiAutomation.AccessibilityEventFilter, long): + SAM-compatible parameters (such as parameter 2, "filter", in android.app.UiAutomation.executeAndWaitForEvent) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.app.WallpaperManager#addOnColorsChangedListener(android.app.WallpaperManager.OnColorsChangedListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.app.WallpaperManager.addOnColorsChangedListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.content.pm.ActivityInfo#dump(android.util.Printer, String): + SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.ActivityInfo.dump) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.content.pm.ApplicationInfo#dump(android.util.Printer, String): + SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.ApplicationInfo.dump) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.content.pm.ComponentInfo#dumpBack(android.util.Printer, String): + SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.ComponentInfo.dumpBack) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.content.pm.ComponentInfo#dumpFront(android.util.Printer, String): + SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.ComponentInfo.dumpFront) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.content.pm.PackageItemInfo#dumpBack(android.util.Printer, String): + SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.PackageItemInfo.dumpBack) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.content.pm.PackageItemInfo#dumpFront(android.util.Printer, String): + SAM-compatible parameters (such as parameter 1, "pw", in android.content.pm.PackageItemInfo.dumpFront) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.database.sqlite.SQLiteCursorDriver#query(android.database.sqlite.SQLiteDatabase.CursorFactory, String[]): + SAM-compatible parameters (such as parameter 1, "factory", in android.database.sqlite.SQLiteCursorDriver.query) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.graphics.drawable.AdaptiveIconDrawable#scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long): + SAM-compatible parameters (such as parameter 2, "what", in android.graphics.drawable.AdaptiveIconDrawable.scheduleDrawable) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.graphics.drawable.Drawable#scheduleSelf(Runnable, long): + SAM-compatible parameters (such as parameter 1, "what", in android.graphics.drawable.Drawable.scheduleSelf) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.graphics.drawable.Drawable.Callback#scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long): + SAM-compatible parameters (such as parameter 2, "what", in android.graphics.drawable.Drawable.Callback.scheduleDrawable) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.graphics.drawable.LayerDrawable#scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long): + SAM-compatible parameters (such as parameter 2, "what", in android.graphics.drawable.LayerDrawable.scheduleDrawable) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.AudioManager#abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes): + SAM-compatible parameters (such as parameter 1, "l", in android.media.AudioManager.abandonAudioFocus) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int): + SAM-compatible parameters (such as parameter 1, "l", in android.media.AudioManager.requestAudioFocus) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy): + SAM-compatible parameters (such as parameter 1, "l", in android.media.AudioManager.requestAudioFocus) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.AudioManager#requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, int, int): + SAM-compatible parameters (such as parameter 1, "l", in android.media.AudioManager.requestAudioFocus) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.AudioRecord#addOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.media.AudioRecord.addOnRoutingChangedListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.AudioRecord#addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.media.AudioRecord.addOnRoutingChangedListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.AudioTrack#addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.media.AudioTrack.addOnRoutingChangedListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.AudioTrack#addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.media.AudioTrack.addOnRoutingChangedListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.media.MediaCas#setEventListener(android.media.MediaCas.EventListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.media.MediaCas.setEventListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.os.Parcel#createFixedArray(Class, java.util.function.Function, int...): + SAM-compatible parameters (such as parameter 2, "asInterface", in android.os.Parcel.createFixedArray) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity, android.security.KeyChainAliasCallback, String[], java.security.Principal[], String, int, String): + SAM-compatible parameters (such as parameter 2, "response", in android.security.KeyChain.choosePrivateKeyAlias) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.security.KeyChain#choosePrivateKeyAlias(android.app.Activity, android.security.KeyChainAliasCallback, String[], java.security.Principal[], android.net.Uri, String): + SAM-compatible parameters (such as parameter 2, "response", in android.security.KeyChain.choosePrivateKeyAlias) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.view.Choreographer#postFrameCallbackDelayed(android.view.Choreographer.FrameCallback, long): + SAM-compatible parameters (such as parameter 1, "callback", in android.view.Choreographer.postFrameCallbackDelayed) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.view.View#postDelayed(Runnable, long): + SAM-compatible parameters (such as parameter 1, "action", in android.view.View.postDelayed) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.view.View#postOnAnimationDelayed(Runnable, long): + SAM-compatible parameters (such as parameter 1, "action", in android.view.View.postOnAnimationDelayed) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.view.View#scheduleDrawable(android.graphics.drawable.Drawable, Runnable, long): + SAM-compatible parameters (such as parameter 2, "what", in android.view.View.scheduleDrawable) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.view.Window#addOnFrameMetricsAvailableListener(android.view.Window.OnFrameMetricsAvailableListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.view.Window.addOnFrameMetricsAvailableListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.view.accessibility.AccessibilityManager#addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.view.accessibility.AccessibilityManager.addAccessibilityStateChangeListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.view.accessibility.AccessibilityManager#addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener, android.os.Handler): + SAM-compatible parameters (such as parameter 1, "listener", in android.view.accessibility.AccessibilityManager.addTouchExplorationStateChangeListener) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions +SamShouldBeLast: android.view.inputmethod.InputMethodInfo#dump(android.util.Printer, String): + SAM-compatible parameters (such as parameter 1, "pw", in android.view.inputmethod.InputMethodInfo.dump) should be last to improve Kotlin interoperability; see https://kotlinlang.org/docs/reference/java-interop.html#sam-conversions + + +UnflaggedApi: android.Manifest.permission#MANAGE_REMOTE_AUTH: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.MANAGE_REMOTE_AUTH +UnflaggedApi: android.Manifest.permission#START_ACTIVITIES_FROM_SDK_SANDBOX: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.START_ACTIVITIES_FROM_SDK_SANDBOX +UnflaggedApi: android.Manifest.permission#USE_REMOTE_AUTH: + New API must be flagged with @FlaggedApi: field android.Manifest.permission.USE_REMOTE_AUTH +UnflaggedApi: android.app.admin.DevicePolicyIdentifiers#PERMITTED_INPUT_METHODS_POLICY: + New API must be flagged with @FlaggedApi: field android.app.admin.DevicePolicyIdentifiers.PERMITTED_INPUT_METHODS_POLICY +UnflaggedApi: android.app.admin.DevicePolicyIdentifiers#PERSONAL_APPS_SUSPENDED_POLICY: + New API must be flagged with @FlaggedApi: field android.app.admin.DevicePolicyIdentifiers.PERSONAL_APPS_SUSPENDED_POLICY +UnflaggedApi: android.app.admin.DevicePolicyIdentifiers#SCREEN_CAPTURE_DISABLED_POLICY: + New API must be flagged with @FlaggedApi: field android.app.admin.DevicePolicyIdentifiers.SCREEN_CAPTURE_DISABLED_POLICY +UnflaggedApi: android.app.admin.DevicePolicyIdentifiers#USB_DATA_SIGNALING_POLICY: + New API must be flagged with @FlaggedApi: field android.app.admin.DevicePolicyIdentifiers.USB_DATA_SIGNALING_POLICY +UnflaggedApi: android.companion.AssociationInfo.Builder: + New API must be flagged with @FlaggedApi: class android.companion.AssociationInfo.Builder +UnflaggedApi: android.companion.AssociationInfo.Builder#Builder(android.companion.AssociationInfo): + New API must be flagged with @FlaggedApi: constructor android.companion.AssociationInfo.Builder(android.companion.AssociationInfo) +UnflaggedApi: android.companion.AssociationInfo.Builder#Builder(int, int, String): + New API must be flagged with @FlaggedApi: constructor android.companion.AssociationInfo.Builder(int,int,String) +UnflaggedApi: android.companion.AssociationInfo.Builder#build(): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.build() +UnflaggedApi: android.companion.AssociationInfo.Builder#setAssociatedDevice(android.companion.AssociatedDevice): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setAssociatedDevice(android.companion.AssociatedDevice) +UnflaggedApi: android.companion.AssociationInfo.Builder#setDeviceMacAddress(android.net.MacAddress): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setDeviceMacAddress(android.net.MacAddress) +UnflaggedApi: android.companion.AssociationInfo.Builder#setDeviceProfile(String): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setDeviceProfile(String) +UnflaggedApi: android.companion.AssociationInfo.Builder#setDisplayName(CharSequence): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setDisplayName(CharSequence) +UnflaggedApi: android.companion.AssociationInfo.Builder#setLastTimeConnected(long): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setLastTimeConnected(long) +UnflaggedApi: android.companion.AssociationInfo.Builder#setNotifyOnDeviceNearby(boolean): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setNotifyOnDeviceNearby(boolean) +UnflaggedApi: android.companion.AssociationInfo.Builder#setRevoked(boolean): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setRevoked(boolean) +UnflaggedApi: android.companion.AssociationInfo.Builder#setSelfManaged(boolean): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setSelfManaged(boolean) +UnflaggedApi: android.companion.AssociationInfo.Builder#setSystemDataSyncFlags(int): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setSystemDataSyncFlags(int) +UnflaggedApi: android.companion.AssociationInfo.Builder#setTag(String): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setTag(String) +UnflaggedApi: android.companion.AssociationInfo.Builder#setTimeApproved(long): + New API must be flagged with @FlaggedApi: method android.companion.AssociationInfo.Builder.setTimeApproved(long) +UnflaggedApi: android.companion.CompanionDeviceManager#MESSAGE_REQUEST_PING: + New API must be flagged with @FlaggedApi: field android.companion.CompanionDeviceManager.MESSAGE_REQUEST_PING +UnflaggedApi: android.companion.CompanionDeviceManager#enableSecureTransport(boolean): + New API must be flagged with @FlaggedApi: method android.companion.CompanionDeviceManager.enableSecureTransport(boolean) +UnflaggedApi: android.content.AttributionSource#AttributionSource(int, int, String, String, android.os.IBinder, String[], android.content.AttributionSource): + New API must be flagged with @FlaggedApi: constructor android.content.AttributionSource(int,int,String,String,android.os.IBinder,String[],android.content.AttributionSource) +UnflaggedApi: android.content.AttributionSource#AttributionSource(int, int, String, String, android.os.IBinder, String[], int, android.content.AttributionSource): + New API must be flagged with @FlaggedApi: constructor android.content.AttributionSource(int,int,String,String,android.os.IBinder,String[],int,android.content.AttributionSource) +UnflaggedApi: android.content.pm.UserInfo#isCommunalProfile(): + New API must be flagged with @FlaggedApi: method android.content.pm.UserInfo.isCommunalProfile() +UnflaggedApi: android.content.pm.UserInfo#isPrivateProfile(): + New API must be flagged with @FlaggedApi: method android.content.pm.UserInfo.isPrivateProfile() +UnflaggedApi: android.credentials.CredentialProviderInfo#isPrimary(): + New API must be flagged with @FlaggedApi: method android.credentials.CredentialProviderInfo.isPrimary() +UnflaggedApi: android.media.AudioManager#enterAudioFocusFreezeForTest(java.util.List): + New API must be flagged with @FlaggedApi: method android.media.AudioManager.enterAudioFocusFreezeForTest(java.util.List) +UnflaggedApi: android.media.AudioManager#exitAudioFocusFreezeForTest(): + New API must be flagged with @FlaggedApi: method android.media.AudioManager.exitAudioFocusFreezeForTest() +UnflaggedApi: android.media.AudioManager#getFocusDuckedUidsForTest(): + New API must be flagged with @FlaggedApi: method android.media.AudioManager.getFocusDuckedUidsForTest() +UnflaggedApi: android.media.AudioManager#getFocusFadeOutDurationForTest(): + New API must be flagged with @FlaggedApi: method android.media.AudioManager.getFocusFadeOutDurationForTest() +UnflaggedApi: android.media.AudioManager#getFocusUnmuteDelayAfterFadeOutForTest(): + New API must be flagged with @FlaggedApi: method android.media.AudioManager.getFocusUnmuteDelayAfterFadeOutForTest() +UnflaggedApi: android.media.RingtoneSelection: + New API must be flagged with @FlaggedApi: class android.media.RingtoneSelection +UnflaggedApi: android.media.RingtoneSelection#DEFAULT_SELECTION_URI_STRING: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.DEFAULT_SELECTION_URI_STRING +UnflaggedApi: android.media.RingtoneSelection#FROM_URI_RINGTONE_SELECTION_ONLY: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.FROM_URI_RINGTONE_SELECTION_ONLY +UnflaggedApi: android.media.RingtoneSelection#FROM_URI_RINGTONE_SELECTION_OR_SOUND: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.FROM_URI_RINGTONE_SELECTION_OR_SOUND +UnflaggedApi: android.media.RingtoneSelection#FROM_URI_RINGTONE_SELECTION_OR_VIBRATION: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.FROM_URI_RINGTONE_SELECTION_OR_VIBRATION +UnflaggedApi: android.media.RingtoneSelection#SOUND_SOURCE_DEFAULT: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.SOUND_SOURCE_DEFAULT +UnflaggedApi: android.media.RingtoneSelection#SOUND_SOURCE_OFF: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.SOUND_SOURCE_OFF +UnflaggedApi: android.media.RingtoneSelection#SOUND_SOURCE_URI: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.SOUND_SOURCE_URI +UnflaggedApi: android.media.RingtoneSelection#VIBRATION_SOURCE_APPLICATION_PROVIDED: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.VIBRATION_SOURCE_APPLICATION_PROVIDED +UnflaggedApi: android.media.RingtoneSelection#VIBRATION_SOURCE_AUDIO_CHANNEL: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.VIBRATION_SOURCE_AUDIO_CHANNEL +UnflaggedApi: android.media.RingtoneSelection#VIBRATION_SOURCE_DEFAULT: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.VIBRATION_SOURCE_DEFAULT +UnflaggedApi: android.media.RingtoneSelection#VIBRATION_SOURCE_HAPTIC_GENERATOR: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.VIBRATION_SOURCE_HAPTIC_GENERATOR +UnflaggedApi: android.media.RingtoneSelection#VIBRATION_SOURCE_OFF: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.VIBRATION_SOURCE_OFF +UnflaggedApi: android.media.RingtoneSelection#VIBRATION_SOURCE_URI: + New API must be flagged with @FlaggedApi: field android.media.RingtoneSelection.VIBRATION_SOURCE_URI +UnflaggedApi: android.media.RingtoneSelection#fromUri(android.net.Uri, int): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.fromUri(android.net.Uri,int) +UnflaggedApi: android.media.RingtoneSelection#getSoundSource(): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.getSoundSource() +UnflaggedApi: android.media.RingtoneSelection#getSoundUri(): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.getSoundUri() +UnflaggedApi: android.media.RingtoneSelection#getVibrationSource(): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.getVibrationSource() +UnflaggedApi: android.media.RingtoneSelection#getVibrationUri(): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.getVibrationUri() +UnflaggedApi: android.media.RingtoneSelection#isRingtoneSelectionUri(android.net.Uri): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.isRingtoneSelectionUri(android.net.Uri) +UnflaggedApi: android.media.RingtoneSelection#toUri(): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.toUri() +UnflaggedApi: android.media.RingtoneSelection.Builder: + New API must be flagged with @FlaggedApi: class android.media.RingtoneSelection.Builder +UnflaggedApi: android.media.RingtoneSelection.Builder#Builder(): + New API must be flagged with @FlaggedApi: constructor android.media.RingtoneSelection.Builder() +UnflaggedApi: android.media.RingtoneSelection.Builder#Builder(android.media.RingtoneSelection): + New API must be flagged with @FlaggedApi: constructor android.media.RingtoneSelection.Builder(android.media.RingtoneSelection) +UnflaggedApi: android.media.RingtoneSelection.Builder#build(): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.Builder.build() +UnflaggedApi: android.media.RingtoneSelection.Builder#setSoundSource(android.net.Uri): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.Builder.setSoundSource(android.net.Uri) +UnflaggedApi: android.media.RingtoneSelection.Builder#setSoundSource(int): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.Builder.setSoundSource(int) +UnflaggedApi: android.media.RingtoneSelection.Builder#setVibrationSource(android.net.Uri): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.Builder.setVibrationSource(android.net.Uri) +UnflaggedApi: android.media.RingtoneSelection.Builder#setVibrationSource(int): + New API must be flagged with @FlaggedApi: method android.media.RingtoneSelection.Builder.setVibrationSource(int) +UnflaggedApi: android.media.soundtrigger.SoundTriggerInstrumentation#setInPhoneCallState(boolean): + New API must be flagged with @FlaggedApi: method android.media.soundtrigger.SoundTriggerInstrumentation.setInPhoneCallState(boolean) +UnflaggedApi: android.media.soundtrigger.SoundTriggerManager#createManagerForModule(android.hardware.soundtrigger.SoundTrigger.ModuleProperties): + New API must be flagged with @FlaggedApi: method android.media.soundtrigger.SoundTriggerManager.createManagerForModule(android.hardware.soundtrigger.SoundTrigger.ModuleProperties) +UnflaggedApi: android.media.soundtrigger.SoundTriggerManager#createManagerForTestModule(): + New API must be flagged with @FlaggedApi: method android.media.soundtrigger.SoundTriggerManager.createManagerForTestModule() +UnflaggedApi: android.media.soundtrigger.SoundTriggerManager#listModuleProperties(): + New API must be flagged with @FlaggedApi: method android.media.soundtrigger.SoundTriggerManager.listModuleProperties() +UnflaggedApi: android.media.soundtrigger.SoundTriggerManager#loadSoundModel(android.hardware.soundtrigger.SoundTrigger.SoundModel): + New API must be flagged with @FlaggedApi: method android.media.soundtrigger.SoundTriggerManager.loadSoundModel(android.hardware.soundtrigger.SoundTrigger.SoundModel) +UnflaggedApi: android.media.soundtrigger.SoundTriggerManager.Model#getSoundModel(): + New API must be flagged with @FlaggedApi: method android.media.soundtrigger.SoundTriggerManager.Model.getSoundModel() +UnflaggedApi: android.net.wifi.sharedconnectivity.app.SharedConnectivityManager#getBroadcastReceiver(): + New API must be flagged with @FlaggedApi: method android.net.wifi.sharedconnectivity.app.SharedConnectivityManager.getBroadcastReceiver() +UnflaggedApi: android.os.BatteryManager#BATTERY_PLUGGED_ANY: + New API must be flagged with @FlaggedApi: field android.os.BatteryManager.BATTERY_PLUGGED_ANY +UnflaggedApi: android.os.BugreportParams#BUGREPORT_MODE_MAX_VALUE: + New API must be flagged with @FlaggedApi: field android.os.BugreportParams.BUGREPORT_MODE_MAX_VALUE +UnflaggedApi: android.os.PowerManager#isBatterySaverSupported(): + New API must be flagged with @FlaggedApi: method android.os.PowerManager.isBatterySaverSupported() +UnflaggedApi: android.os.UserHandle#USER_CURRENT: + New API must be flagged with @FlaggedApi: field android.os.UserHandle.USER_CURRENT +UnflaggedApi: android.os.UserManager#getAliveUsers(): + New API must be flagged with @FlaggedApi: method android.os.UserManager.getAliveUsers() +UnflaggedApi: android.os.UserManager#getUsers(): + New API must be flagged with @FlaggedApi: method android.os.UserManager.getUsers() +UnflaggedApi: android.os.vibrator.persistence.ParsedVibration: + New API must be flagged with @FlaggedApi: class android.os.vibrator.persistence.ParsedVibration +UnflaggedApi: android.os.vibrator.persistence.ParsedVibration#getVibrationEffects(): + New API must be flagged with @FlaggedApi: method android.os.vibrator.persistence.ParsedVibration.getVibrationEffects() +UnflaggedApi: android.os.vibrator.persistence.ParsedVibration#resolve(android.os.Vibrator): + New API must be flagged with @FlaggedApi: method android.os.vibrator.persistence.ParsedVibration.resolve(android.os.Vibrator) +UnflaggedApi: android.os.vibrator.persistence.VibrationXmlParser: + New API must be flagged with @FlaggedApi: class android.os.vibrator.persistence.VibrationXmlParser +UnflaggedApi: android.os.vibrator.persistence.VibrationXmlParser#parseDocument(java.io.Reader): + New API must be flagged with @FlaggedApi: method android.os.vibrator.persistence.VibrationXmlParser.parseDocument(java.io.Reader) +UnflaggedApi: android.os.vibrator.persistence.VibrationXmlParser#parseVibrationEffect(java.io.Reader): + New API must be flagged with @FlaggedApi: method android.os.vibrator.persistence.VibrationXmlParser.parseVibrationEffect(java.io.Reader) +UnflaggedApi: android.os.vibrator.persistence.VibrationXmlSerializer: + New API must be flagged with @FlaggedApi: class android.os.vibrator.persistence.VibrationXmlSerializer +UnflaggedApi: android.os.vibrator.persistence.VibrationXmlSerializer#serialize(android.os.VibrationEffect, java.io.Writer): + New API must be flagged with @FlaggedApi: method android.os.vibrator.persistence.VibrationXmlSerializer.serialize(android.os.VibrationEffect,java.io.Writer) +UnflaggedApi: android.os.vibrator.persistence.VibrationXmlSerializer.SerializationFailedException: + New API must be flagged with @FlaggedApi: class android.os.vibrator.persistence.VibrationXmlSerializer.SerializationFailedException +UnflaggedApi: android.service.notification.NotificationRankingUpdate: + New API must be flagged with @FlaggedApi: class android.service.notification.NotificationRankingUpdate +UnflaggedApi: android.service.notification.NotificationRankingUpdate#CONTENTS_FILE_DESCRIPTOR: + New API must be flagged with @FlaggedApi: field android.service.notification.NotificationRankingUpdate.CONTENTS_FILE_DESCRIPTOR +UnflaggedApi: android.service.notification.NotificationRankingUpdate#PARCELABLE_WRITE_RETURN_VALUE: + New API must be flagged with @FlaggedApi: field android.service.notification.NotificationRankingUpdate.PARCELABLE_WRITE_RETURN_VALUE +UnflaggedApi: android.service.notification.NotificationRankingUpdate#isFdNotNullAndClosed(): + New API must be flagged with @FlaggedApi: method android.service.notification.NotificationRankingUpdate.isFdNotNullAndClosed() +UnflaggedApi: android.telephony.TelephonyManager#HAL_SERVICE_SATELLITE: + New API must be flagged with @FlaggedApi: field android.telephony.TelephonyManager.HAL_SERVICE_SATELLITE +UnflaggedApi: android.telephony.ims.feature.MmTelFeature.MmTelCapabilities: + New API must be flagged with @FlaggedApi: class android.telephony.ims.feature.MmTelFeature.MmTelCapabilities +UnflaggedApi: android.text.MeasuredParagraph: + New API must be flagged with @FlaggedApi: class android.text.MeasuredParagraph +UnflaggedApi: android.text.MeasuredParagraph#buildForStaticLayoutTest(android.text.TextPaint, android.graphics.text.LineBreakConfig, CharSequence, int, int, android.text.TextDirectionHeuristic, int, boolean, android.text.MeasuredParagraph.StyleRunCallback): + New API must be flagged with @FlaggedApi: method android.text.MeasuredParagraph.buildForStaticLayoutTest(android.text.TextPaint,android.graphics.text.LineBreakConfig,CharSequence,int,int,android.text.TextDirectionHeuristic,int,boolean,android.text.MeasuredParagraph.StyleRunCallback) +UnflaggedApi: android.text.MeasuredParagraph.StyleRunCallback: + New API must be flagged with @FlaggedApi: class android.text.MeasuredParagraph.StyleRunCallback +UnflaggedApi: android.text.MeasuredParagraph.StyleRunCallback#onAppendReplacementRun(android.graphics.Paint, int, float): + New API must be flagged with @FlaggedApi: method android.text.MeasuredParagraph.StyleRunCallback.onAppendReplacementRun(android.graphics.Paint,int,float) +UnflaggedApi: android.text.MeasuredParagraph.StyleRunCallback#onAppendStyleRun(android.graphics.Paint, android.graphics.text.LineBreakConfig, int, boolean): + New API must be flagged with @FlaggedApi: method android.text.MeasuredParagraph.StyleRunCallback.onAppendStyleRun(android.graphics.Paint,android.graphics.text.LineBreakConfig,int,boolean) +UnflaggedApi: android.view.Choreographer#getFrameTimeNanos(): + New API must be flagged with @FlaggedApi: method android.view.Choreographer.getFrameTimeNanos() +UnflaggedApi: android.view.InputDevice#getAssociatedDisplayId(): + New API must be flagged with @FlaggedApi: method android.view.InputDevice.getAssociatedDisplayId() +UnflaggedApi: android.view.InputDevice#getKeyboardLanguageTag(): + New API must be flagged with @FlaggedApi: method android.view.InputDevice.getKeyboardLanguageTag() +UnflaggedApi: android.view.InputDevice#getKeyboardLayoutType(): + New API must be flagged with @FlaggedApi: method android.view.InputDevice.getKeyboardLayoutType() +UnflaggedApi: android.view.MotionEvent.PointerCoords#isResampled(): + New API must be flagged with @FlaggedApi: method android.view.MotionEvent.PointerCoords.isResampled() +UnflaggedApi: android.view.WindowManager#replaceContentOnDisplayWithMirror(int, android.view.Window): + New API must be flagged with @FlaggedApi: method android.view.WindowManager.replaceContentOnDisplayWithMirror(int,android.view.Window) +UnflaggedApi: android.view.WindowManager#replaceContentOnDisplayWithSc(int, android.view.SurfaceControl): + New API must be flagged with @FlaggedApi: method android.view.WindowManager.replaceContentOnDisplayWithSc(int,android.view.SurfaceControl) +UnflaggedApi: android.view.WindowManager.LayoutParams#preferredMaxDisplayRefreshRate: + New API must be flagged with @FlaggedApi: field android.view.WindowManager.LayoutParams.preferredMaxDisplayRefreshRate +UnflaggedApi: android.view.WindowManager.LayoutParams#preferredMinDisplayRefreshRate: + New API must be flagged with @FlaggedApi: field android.view.WindowManager.LayoutParams.preferredMinDisplayRefreshRate +UnflaggedApi: android.view.accessibility.AccessibilityWindowInfo#UNDEFINED_WINDOW_ID: + New API must be flagged with @FlaggedApi: field android.view.accessibility.AccessibilityWindowInfo.UNDEFINED_WINDOW_ID +UnflaggedApi: android.view.animation.AnimationUtils#lockAnimationClock(long, long): + New API must be flagged with @FlaggedApi: method android.view.animation.AnimationUtils.lockAnimationClock(long,long) +UnflaggedApi: android.view.inputmethod.InputMethodManager#getEnabledInputMethodListAsUser(android.os.UserHandle): + New API must be flagged with @FlaggedApi: method android.view.inputmethod.InputMethodManager.getEnabledInputMethodListAsUser(android.os.UserHandle) +UnflaggedApi: android.view.inputmethod.InputMethodManager#getEnabledInputMethodSubtypeListAsUser(String, boolean, android.os.UserHandle): + New API must be flagged with @FlaggedApi: method android.view.inputmethod.InputMethodManager.getEnabledInputMethodSubtypeListAsUser(String,boolean,android.os.UserHandle) +UnflaggedApi: android.view.inputmethod.InputMethodManager#isCurrentRootView(android.view.View): + New API must be flagged with @FlaggedApi: method android.view.inputmethod.InputMethodManager.isCurrentRootView(android.view.View) +UnflaggedApi: android.view.inputmethod.InputMethodManager#isStylusHandwritingAvailableAsUser(android.os.UserHandle): + New API must be flagged with @FlaggedApi: method android.view.inputmethod.InputMethodManager.isStylusHandwritingAvailableAsUser(android.os.UserHandle) +UnflaggedApi: android.view.inputmethod.InsertModeGesture: + New API must be flagged with @FlaggedApi: class android.view.inputmethod.InsertModeGesture +UnflaggedApi: android.window.WindowInfosListenerForTest.WindowInfo#displayId: + New API must be flagged with @FlaggedApi: field android.window.WindowInfosListenerForTest.WindowInfo.displayId +UnflaggedApi: android.window.WindowInfosListenerForTest.WindowInfo#isVisible: + New API must be flagged with @FlaggedApi: field android.window.WindowInfosListenerForTest.WindowInfo.isVisible +UnflaggedApi: android.window.WindowInfosListenerForTest.WindowInfo#transform: + New API must be flagged with @FlaggedApi: field android.window.WindowInfosListenerForTest.WindowInfo.transform diff --git a/core/java/Android.bp b/core/java/Android.bp index 70cb597875ff2929da041f83b9503369b076d4ab..13a1bd6ca17663c27a39137202bd05bfc36aa205 100644 --- a/core/java/Android.bp +++ b/core/java/Android.bp @@ -9,6 +9,11 @@ package { default_applicable_licenses: ["frameworks_base_license"], } +aidl_library { + name: "HardwareBuffer_aidl", + hdrs: ["android/hardware/HardwareBuffer.aidl"], +} + filegroup { name: "framework-core-sources", srcs: [ diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index a366464ceac2aa3ce316f2e905d1f64e75ad9c0c..7bc6f9bfafc754e827d5dd349d29b411e95a0033 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -23,7 +23,7 @@ import static android.Manifest.permission.INTERACT_ACROSS_USERS_FULL; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; import static android.app.WindowConfiguration.inMultiWindowMode; import static android.os.Process.myUid; - +import static com.android.sdksandbox.flags.Flags.sandboxActivitySdkBasedContext; import static java.lang.Character.MIN_VALUE; import android.annotation.AnimRes; @@ -8631,6 +8631,12 @@ public class Activity extends ContextThemeWrapper Configuration config, String referrer, IVoiceInteractor voiceInteractor, Window window, ActivityConfigCallback activityConfigCallback, IBinder assistToken, IBinder shareableActivityToken) { + if (sandboxActivitySdkBasedContext()) { + // Sandbox activities extract a token from the intent's extra to identify the related + // SDK as part of overriding attachBaseContext, then it wraps the passed context in an + // SDK ContextWrapper, so mIntent has to be set before calling attachBaseContext. + mIntent = intent; + } attachBaseContext(context); mFragments.attachHost(null /*parent*/); @@ -8656,6 +8662,7 @@ public class Activity extends ContextThemeWrapper mShareableActivityToken = shareableActivityToken; mIdent = ident; mApplication = application; + //TODO(b/300059435): do not set the mIntent again as part of the flag clean up. mIntent = intent; mReferrer = referrer; mComponent = intent.getComponent(); diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index 021f932c562c1107d3ba61ffaad39d3d1f97433f..32c40df325858894e53c416cafc008a58d87f2ee 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -35,6 +35,7 @@ import android.content.ServiceConnection; import android.content.pm.ActivityInfo; import android.content.pm.ActivityPresentationInfo; import android.content.pm.ApplicationInfo; +import android.content.pm.IPackageDataObserver; import android.content.pm.UserInfo; import android.net.Uri; import android.os.Bundle; @@ -1224,4 +1225,13 @@ public abstract class ActivityManagerInternal { */ @NonNull public abstract StatsEvent getCachedAppsHighWatermarkStats(int atomTag, boolean resetAfterPull); + + /** + * Internal method for clearing app data, with the extra param that is used to indicate restore. + * Used by Backup service during restore operation. + * + * @hide + */ + public abstract boolean clearApplicationUserData(String packageName, boolean keepState, + boolean isRestore, IPackageDataObserver observer, int userId); } diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java index 2ae721648656a5205f5cee19d8514788d63ecae8..895dde7600585fb8b7be5ffe9e108ac343640792 100644 --- a/core/java/android/app/ActivityOptions.java +++ b/core/java/android/app/ActivityOptions.java @@ -1507,8 +1507,9 @@ public class ActivityOptions extends ComponentOptions { } /** @hide */ - public void setRemoteTransition(@Nullable RemoteTransition remoteTransition) { + public ActivityOptions setRemoteTransition(@Nullable RemoteTransition remoteTransition) { mRemoteTransition = remoteTransition; + return this; } /** @hide */ diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index cc716ecfdafa9cbd0848ea8104b00e98e25c74aa..01912012f04adc51e4e7f37289e94fd597769bbb 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -29,14 +29,16 @@ import static android.app.servertransaction.ActivityLifecycleItem.ON_STOP; import static android.app.servertransaction.ActivityLifecycleItem.PRE_ON_CREATE; import static android.content.ContentResolver.DEPRECATE_DATA_COLUMNS; import static android.content.ContentResolver.DEPRECATE_DATA_PREFIX; +import static android.content.res.Configuration.UI_MODE_TYPE_DESK; +import static android.content.res.Configuration.UI_MODE_TYPE_MASK; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Display.INVALID_DISPLAY; import static android.window.ConfigurationHelper.freeTextLayoutCachesIfNeeded; import static android.window.ConfigurationHelper.isDifferentDisplay; import static android.window.ConfigurationHelper.shouldUpdateResources; - import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE; import static com.android.internal.os.SafeZipPathValidatorCallback.VALIDATE_ZIP_PATH_FOR_PATH_TRAVERSAL; +import static com.android.sdksandbox.flags.Flags.sandboxActivitySdkBasedContext; import android.annotation.NonNull; import android.annotation.Nullable; @@ -52,6 +54,8 @@ import android.app.backup.BackupAgent; import android.app.backup.BackupAnnotations.BackupDestination; import android.app.backup.BackupAnnotations.OperationType; import android.app.compat.CompatChanges; +import android.app.sdksandbox.sandboxactivity.ActivityContextInfo; +import android.app.sdksandbox.sandboxactivity.ActivityContextInfoProvider; import android.app.servertransaction.ActivityLifecycleItem; import android.app.servertransaction.ActivityLifecycleItem.LifecycleState; import android.app.servertransaction.ActivityRelaunchItem; @@ -206,6 +210,7 @@ import android.window.WindowContextInfo; import android.window.WindowProviderService; import android.window.WindowTokenClientController; +import com.android.internal.R; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IVoiceInteractor; @@ -223,6 +228,7 @@ import com.android.internal.util.function.pooled.PooledLambda; import com.android.org.conscrypt.TrustedCertificateStore; import com.android.server.am.MemInfoDumpProto; +import dalvik.annotation.optimization.NeverCompile; import dalvik.system.AppSpecializationHooks; import dalvik.system.CloseGuard; import dalvik.system.VMDebug; @@ -1282,8 +1288,13 @@ public final class ActivityThread extends ClientTransactionHandler } private void updateCompatOverrideScale(CompatibilityInfo info) { - CompatibilityInfo.setOverrideInvertedScale( - info.hasOverrideScaling() ? info.applicationInvertedScale : 1f); + if (info.hasOverrideScaling()) { + CompatibilityInfo.setOverrideInvertedScale(info.applicationInvertedScale, + info.applicationDensityInvertedScale); + } else { + CompatibilityInfo.setOverrideInvertedScale(/* invertScale */ 1f, + /* densityInvertScale */1f); + } } public final void runIsolatedEntryPoint(String entryPoint, String[] entryPointArgs) { @@ -1496,6 +1507,7 @@ public final class ActivityThread extends ClientTransactionHandler } } + @NeverCompile @Override public void dumpMemInfo(ParcelFileDescriptor pfd, Debug.MemoryInfo mem, boolean checkin, boolean dumpFullInfo, boolean dumpDalvik, boolean dumpSummaryOnly, @@ -1510,6 +1522,7 @@ public final class ActivityThread extends ClientTransactionHandler } } + @NeverCompile private void dumpMemInfo(PrintWriter pw, Debug.MemoryInfo memInfo, boolean checkin, boolean dumpFullInfo, boolean dumpDalvik, boolean dumpSummaryOnly, boolean dumpUnreachable) { long nativeMax = Debug.getNativeHeapSize() / 1024; @@ -1666,6 +1679,7 @@ public final class ActivityThread extends ClientTransactionHandler } } + @NeverCompile @Override public void dumpMemInfoProto(ParcelFileDescriptor pfd, Debug.MemoryInfo mem, boolean dumpFullInfo, boolean dumpDalvik, boolean dumpSummaryOnly, @@ -1679,6 +1693,7 @@ public final class ActivityThread extends ClientTransactionHandler } } + @NeverCompile private void dumpMemInfo(ProtoOutputStream proto, Debug.MemoryInfo memInfo, boolean dumpFullInfo, boolean dumpDalvik, boolean dumpSummaryOnly, boolean dumpUnreachable) { @@ -3020,6 +3035,7 @@ public final class ActivityThread extends ClientTransactionHandler pw.println(String.format(format, objs)); } + @NeverCompile public static void dumpMemInfoTable(PrintWriter pw, Debug.MemoryInfo memInfo, boolean checkin, boolean dumpFullInfo, boolean dumpDalvik, boolean dumpSummaryOnly, int pid, String processName, @@ -3349,6 +3365,7 @@ public final class ActivityThread extends ClientTransactionHandler /** * Dump mem info data to proto. */ + @NeverCompile public static void dumpMemInfoTable(ProtoOutputStream proto, Debug.MemoryInfo memInfo, boolean dumpDalvik, boolean dumpSummaryOnly, long nativeMax, long nativeAllocated, long nativeFree, @@ -3580,6 +3597,12 @@ public final class ActivityThread extends ClientTransactionHandler return mActivities.get(token); } + @Nullable + @Override + public Context getWindowContext(@NonNull IBinder clientToken) { + return WindowTokenClientController.getInstance().getWindowContext(clientToken); + } + @VisibleForTesting(visibility = PACKAGE) public Configuration getConfiguration() { return mConfigurationController.getConfiguration(); @@ -3635,15 +3658,16 @@ public final class ActivityThread extends ClientTransactionHandler } @UnsupportedAppUsage - public final void sendActivityResult( - IBinder token, String id, int requestCode, + public void sendActivityResult( + IBinder activityToken, String id, int requestCode, int resultCode, Intent data) { if (DEBUG_RESULTS) Slog.v(TAG, "sendActivityResult: id=" + id + " req=" + requestCode + " res=" + resultCode + " data=" + data); ArrayList list = new ArrayList(); list.add(new ResultInfo(id, requestCode, resultCode, data)); - final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread, token); - clientTransaction.addCallback(ActivityResultItem.obtain(list)); + final ClientTransaction clientTransaction = ClientTransaction.obtain(mAppThread, + activityToken); + clientTransaction.addCallback(ActivityResultItem.obtain(activityToken, list)); try { mAppThread.scheduleTransaction(clientTransaction); } catch (RemoteException e) { @@ -3696,7 +3720,19 @@ public final class ActivityThread extends ClientTransactionHandler /** Core implementation of activity launch. */ private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) { ActivityInfo aInfo = r.activityInfo; - if (r.packageInfo == null) { + + if (getInstrumentation() != null + && getInstrumentation().getContext() != null + && getInstrumentation().getContext().getApplicationInfo() != null + && getInstrumentation().isSdkSandboxAllowedToStartActivities()) { + // Activities launched from CTS-in-sandbox tests use a customized ApplicationInfo. See + // also {@link SdkSandboxManagerLocal#getSdkSandboxApplicationInfoForInstrumentation}. + r.packageInfo = + getPackageInfo( + getInstrumentation().getContext().getApplicationInfo(), + mCompatibilityInfo, + Context.CONTEXT_INCLUDE_CODE); + } else if (r.packageInfo == null) { r.packageInfo = getPackageInfo(aInfo.applicationInfo, mCompatibilityInfo, Context.CONTEXT_INCLUDE_CODE); } @@ -3713,16 +3749,38 @@ public final class ActivityThread extends ClientTransactionHandler r.activityInfo.targetActivity); } - ContextImpl appContext = createBaseContextForActivity(r); + boolean isSandboxActivityContext = sandboxActivitySdkBasedContext() + && r.intent.isSandboxActivity(mSystemContext); + boolean isSandboxedSdkContextUsed = false; + ContextImpl activityBaseContext; + if (isSandboxActivityContext) { + activityBaseContext = createBaseContextForSandboxActivity(r); + if (activityBaseContext == null) { + // Failed to retrieve the SDK based sandbox activity context, falling back to the + // app based context. + activityBaseContext = createBaseContextForActivity(r); + } else { + isSandboxedSdkContextUsed = true; + } + } else { + activityBaseContext = createBaseContextForActivity(r); + } Activity activity = null; try { - java.lang.ClassLoader cl = appContext.getClassLoader(); + java.lang.ClassLoader cl; + if (isSandboxedSdkContextUsed) { + // In case of sandbox activity, the context refers to the an SDK with no visibility + // on the SandboxedActivity java class, the App context should be used instead. + cl = activityBaseContext.getApplicationContext().getClassLoader(); + } else { + cl = activityBaseContext.getClassLoader(); + } activity = mInstrumentation.newActivity( cl, component.getClassName(), r.intent); StrictMode.incrementExpectedActivityCount(activity.getClass()); r.intent.setExtrasClassLoader(cl); r.intent.prepareToEnterProcess(isProtectedComponent(r.activityInfo), - appContext.getAttributionSource()); + activityBaseContext.getAttributionSource()); if (r.state != null) { r.state.setClassLoader(cl); } @@ -3753,7 +3811,8 @@ public final class ActivityThread extends ClientTransactionHandler } if (activity != null) { - CharSequence title = r.activityInfo.loadLabel(appContext.getPackageManager()); + CharSequence title = + r.activityInfo.loadLabel(activityBaseContext.getPackageManager()); Configuration config = new Configuration(mConfigurationController.getCompatConfiguration()); if (r.overrideConfig != null) { @@ -3770,11 +3829,11 @@ public final class ActivityThread extends ClientTransactionHandler // Activity resources must be initialized with the same loaders as the // application context. - appContext.getResources().addLoaders( + activityBaseContext.getResources().addLoaders( app.getResources().getLoaders().toArray(new ResourcesLoader[0])); - appContext.setOuterContext(activity); - activity.attach(appContext, this, getInstrumentation(), r.token, + activityBaseContext.setOuterContext(activity); + activity.attach(activityBaseContext, this, getInstrumentation(), r.token, r.ident, app, r.intent, r.activityInfo, title, r.parent, r.embeddedID, r.lastNonConfigurationInstances, config, r.referrer, r.voiceInteractor, window, r.activityConfigCallback, @@ -3930,6 +3989,44 @@ public final class ActivityThread extends ClientTransactionHandler return appContext; } + /** + * Creates the base context for the sandbox activity based on its corresponding SDK {@link + * ApplicationInfo} and flags. + */ + @Nullable + private ContextImpl createBaseContextForSandboxActivity(@NonNull ActivityClientRecord r) { + ActivityContextInfoProvider contextInfoProvider = ActivityContextInfoProvider.getInstance(); + + ActivityContextInfo contextInfo; + try { + contextInfo = contextInfoProvider.getActivityContextInfo(r.intent); + } catch (IllegalArgumentException e) { + Log.e(TAG, "Passed intent does not match an expected sandbox activity", e); + return null; + } catch (IllegalStateException e) { + Log.e(TAG, "SDK customized context flag is disabled", e); + return null; + } catch (Exception e) { // generic catch to unexpected exceptions + Log.e(TAG, "Failed to create context for sandbox activity", e); + return null; + } + + final int displayId = ActivityClient.getInstance().getDisplayId(r.token); + final LoadedApk sdkApk = getPackageInfo( + contextInfo.getSdkApplicationInfo(), + r.packageInfo.getCompatibilityInfo(), + ActivityContextInfo.CONTEXT_FLAGS); + + final ContextImpl activityContext = ContextImpl.createActivityContext( + this, sdkApk, r.activityInfo, r.token, displayId, r.overrideConfig); + + // Set sandbox app's context as the application context for sdk context + activityContext.mPackageInfo.makeApplicationInner( + /*forceDefaultAppClass=*/false, mInstrumentation); + + return activityContext; + } + /** * Extended implementation of activity launch. Used when server requests a launch or relaunch. */ @@ -4345,16 +4442,16 @@ public final class ActivityThread extends ClientTransactionHandler private void schedulePauseWithUserLeavingHint(ActivityClientRecord r) { final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token); - transaction.setLifecycleStateRequest(PauseActivityItem.obtain(r.activity.isFinishing(), - /* userLeaving */ true, r.activity.mConfigChangeFlags, /* dontReport */ false, - /* autoEnteringPip */ false)); + transaction.setLifecycleStateRequest(PauseActivityItem.obtain(r.token, + r.activity.isFinishing(), /* userLeaving */ true, r.activity.mConfigChangeFlags, + /* dontReport */ false, /* autoEnteringPip */ false)); executeTransaction(transaction); } private void scheduleResume(ActivityClientRecord r) { final ClientTransaction transaction = ClientTransaction.obtain(this.mAppThread, r.token); - transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(/* isForward */ false, - /* shouldSendCompatFakeFocus */ false)); + transaction.setLifecycleStateRequest(ResumeActivityItem.obtain(r.token, + /* isForward */ false, /* shouldSendCompatFakeFocus */ false)); executeTransaction(transaction); } @@ -5938,8 +6035,8 @@ public final class ActivityThread extends ClientTransactionHandler ? r.createdConfig : mConfigurationController.getConfiguration(), r.overrideConfig); final ActivityRelaunchItem activityRelaunchItem = ActivityRelaunchItem.obtain( - null /* pendingResults */, null /* pendingIntents */, 0 /* configChanges */, - mergedConfiguration, r.mPreserveWindow); + r.token, null /* pendingResults */, null /* pendingIntents */, + 0 /* configChanges */, mergedConfiguration, r.mPreserveWindow); // Make sure to match the existing lifecycle state in the end of the transaction. final ActivityLifecycleItem lifecycleRequest = TransactionExecutorHelper.getLifecycleRequestForCurrentState(r); @@ -6099,9 +6196,21 @@ public final class ActivityThread extends ClientTransactionHandler final boolean shouldUpdateResources = hasPublicResConfigChange || shouldUpdateResources(activityToken, currentResConfig, newConfig, amOverrideConfig, movedToDifferentDisplay, hasPublicResConfigChange); - final boolean shouldReportChange = shouldReportChange( - activity.mCurrentConfig, newConfig, r.mSizeConfigurations, - activity.mActivityInfo.getRealConfigChanged(), alwaysReportChange); + + // TODO(b/274944389): remove once a longer-term solution is implemented. + boolean skipActivityRelaunchWhenDocking = activity.getResources().getBoolean( + R.bool.config_skipActivityRelaunchWhenDocking); + int handledConfigChanges = activity.mActivityInfo.getRealConfigChanged(); + if (skipActivityRelaunchWhenDocking && onlyDeskInUiModeChanged(activity.mCurrentConfig, + newConfig)) { + // If we're not relaunching this activity when docking, we should send the configuration + // changed event. Pretend as if the activity is handling uiMode config changes in its + // manifest so that we'll report any dock changes. + handledConfigChanges |= ActivityInfo.CONFIG_UI_MODE; + } + + final boolean shouldReportChange = shouldReportChange(activity.mCurrentConfig, newConfig, + r.mSizeConfigurations, handledConfigChanges, alwaysReportChange); // Nothing significant, don't proceed with updating and reporting. if (!shouldUpdateResources && !shouldReportChange) { return null; @@ -6147,6 +6256,25 @@ public final class ActivityThread extends ClientTransactionHandler return configToReport; } + /** + * Returns true if the uiMode configuration changed, and desk mode + * ({@link android.content.res.Configuration#UI_MODE_TYPE_DESK}) was the only change to uiMode. + */ + private boolean onlyDeskInUiModeChanged(Configuration oldConfig, Configuration newConfig) { + boolean deskModeChanged = isInDeskUiMode(oldConfig) != isInDeskUiMode(newConfig); + + // UI mode contains fields other than the UI mode type, so determine if any other fields + // changed. + boolean uiModeOtherFieldsChanged = + (oldConfig.uiMode & ~UI_MODE_TYPE_MASK) != (newConfig.uiMode & ~UI_MODE_TYPE_MASK); + + return deskModeChanged && !uiModeOtherFieldsChanged; + } + + private static boolean isInDeskUiMode(Configuration config) { + return (config.uiMode & UI_MODE_TYPE_MASK) == UI_MODE_TYPE_DESK; + } + /** * Returns {@code true} if {@link Activity#onConfigurationChanged(Configuration)} should be * dispatched. diff --git a/core/java/android/app/AppOps.md b/core/java/android/app/AppOps.md index 4589a71d5e5f2e326cc4b886dfef50fafc11751e..7b11a0351ebe62f7a82e35eeda0b2abb6128592e 100644 --- a/core/java/android/app/AppOps.md +++ b/core/java/android/app/AppOps.md @@ -59,8 +59,8 @@ To control access the app-op can be set to: : Throw a `SecurityException` on access. This can be suppressed by using a `...noThrow` method to check the mode -The initial state of an app-op is defined in `AppOpsManager.sOpDefaultMode`. Confusingly the -initial state is often not `MODE_DEFAULT` +The initial state of an app-op is defined in its `AppOpInfo`. Confusingly the initial state is not +always `MODE_DEFAULT`, if `AppOpInfo.Builder.setDefaultMode()` is called with a different mode. Per-package modes can be set using `AppOpsManager.setMode` and per-uid modes can be set using `AppOpsManager.setUidMode`. diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index 56fef1aac36a20b8b21f7cacc3db8b30b13dc1c0..4f9225ff55858fb843e0fe46885b73505bf13905 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -1486,13 +1486,13 @@ public class AppOpsManager { AppProtoEnums.APP_OP_RECEIVE_SANDBOX_TRIGGER_AUDIO; /** - * Allows the assistant app to get the negative trigger data from the PCC sandbox to improve the + * Allows the assistant app to get the training data from the PCC sandbox to improve the * hotword training model. * * @hide */ - public static final int OP_RECEIVE_SANDBOX_NEGATIVE_DATA_AUDIO = - AppProtoEnums.APP_OP_RECEIVE_SANDBOX_NEGATIVE_DATA_AUDIO; + public static final int OP_RECEIVE_SANDBOX_TRAINING_DATA = + AppProtoEnums.APP_OP_RECEIVE_SANDBOX_TRAINING_DATA; /** @hide */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) @@ -1640,7 +1640,7 @@ public class AppOpsManager { OPSTR_CAMERA_SANDBOXED, OPSTR_RECORD_AUDIO_SANDBOXED, OPSTR_RECEIVE_SANDBOX_TRIGGER_AUDIO, - OPSTR_RECEIVE_SANDBOX_NEGATIVE_DATA_AUDIO + OPSTR_RECEIVE_SANDBOX_TRAINING_DATA }) public @interface AppOpString {} @@ -2261,13 +2261,13 @@ public class AppOpsManager { "android:receive_sandbox_trigger_audio"; /** - * Allows the assistant app to get the negative trigger data from the PCC sandbox to improve + * Allows the assistant app to get the training data from the PCC sandbox to improve * the hotword training model. * * @hide */ - public static final String OPSTR_RECEIVE_SANDBOX_NEGATIVE_DATA_AUDIO = - "android:receive_sandbox_negative_data_audio"; + public static final String OPSTR_RECEIVE_SANDBOX_TRAINING_DATA = + "android:receive_sandbox_training_data"; /** {@link #sAppOpsToNote} not initialized yet for this op */ private static final byte SHOULD_COLLECT_NOTE_OP_NOT_INITIALIZED = 0; @@ -2811,9 +2811,9 @@ public class AppOpsManager { OPSTR_RECEIVE_SANDBOX_TRIGGER_AUDIO, "RECEIVE_SANDBOX_TRIGGER_AUDIO") .setDefaultMode(AppOpsManager.MODE_ALLOWED).build(), - new AppOpInfo.Builder(OP_RECEIVE_SANDBOX_NEGATIVE_DATA_AUDIO, - OPSTR_RECEIVE_SANDBOX_NEGATIVE_DATA_AUDIO, - "RECEIVE_SANDBOX_NEGATIVE_DATA_AUDIO").build() + new AppOpInfo.Builder(OP_RECEIVE_SANDBOX_TRAINING_DATA, + OPSTR_RECEIVE_SANDBOX_TRAINING_DATA, + "RECEIVE_SANDBOX_TRAINING_DATA").build() }; // The number of longs needed to form a full bitmask of app ops @@ -8632,7 +8632,7 @@ public class AppOpsManager { } } - SyncNotedAppOp syncOp = mService.noteProxyOperation(op, attributionSource, + SyncNotedAppOp syncOp = mService.noteProxyOperation(op, attributionSource.asState(), collectionMode == COLLECT_ASYNC, message, shouldCollectMessage, skipProxyOperation); @@ -9105,7 +9105,7 @@ public class AppOpsManager { } SyncNotedAppOp syncOp = mService.startProxyOperation(clientId, op, - attributionSource, false, collectionMode == COLLECT_ASYNC, message, + attributionSource.asState(), false, collectionMode == COLLECT_ASYNC, message, shouldCollectMessage, skipProxyOperation, proxyAttributionFlags, proxiedAttributionFlags, attributionChainId); @@ -9223,7 +9223,7 @@ public class AppOpsManager { public void finishProxyOp(@NonNull IBinder clientId, @NonNull String op, @NonNull AttributionSource attributionSource, boolean skipProxyOperation) { try { - mService.finishProxyOperation(clientId, strOpToOp(op), attributionSource, + mService.finishProxyOperation(clientId, strOpToOp(op), attributionSource.asState(), skipProxyOperation); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java index 02558602acd3f8911c1c860782af57d7e4d7fa8b..04d04b9adbdd37386558bf22a77d4dbadcb8e7b8 100644 --- a/core/java/android/app/ApplicationPackageManager.java +++ b/core/java/android/app/ApplicationPackageManager.java @@ -3355,7 +3355,11 @@ public class ApplicationPackageManager extends PackageManager { } Drawable dr = null; if (itemInfo.packageName != null) { - dr = getDrawable(itemInfo.packageName, itemInfo.icon, appInfo); + if (itemInfo.isArchived) { + dr = getArchivedAppIcon(itemInfo.packageName); + } else { + dr = getDrawable(itemInfo.packageName, itemInfo.icon, appInfo); + } } if (dr == null && itemInfo != appInfo && appInfo != null) { dr = loadUnbadgedItemIcon(appInfo, appInfo); @@ -3964,4 +3968,14 @@ public class ApplicationPackageManager extends PackageManager { throw e.rethrowFromSystemServer(); } } + + @Nullable + private Drawable getArchivedAppIcon(String packageName) { + try { + return new BitmapDrawable(null, + mPM.getArchivedAppIcon(packageName, new UserHandle(getUserId()))); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } } diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java index 6753cb884ea7ac4998cec032337b063fb7cf8407..98020ff2d173b6ca8d7764fb362f6b7003001e9b 100644 --- a/core/java/android/app/ClientTransactionHandler.java +++ b/core/java/android/app/ClientTransactionHandler.java @@ -16,11 +16,13 @@ package android.app; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.ActivityThread.ActivityClientRecord; import android.app.servertransaction.ClientTransaction; import android.app.servertransaction.ClientTransactionItem; import android.app.servertransaction.PendingTransactionActions; import android.app.servertransaction.TransactionExecutor; +import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; import android.content.res.Configuration; @@ -28,6 +30,7 @@ import android.os.IBinder; import android.util.MergedConfiguration; import android.view.SurfaceControl; import android.window.SplashScreenView.SplashScreenViewParcelable; +import android.window.WindowContext; import android.window.WindowContextInfo; import com.android.internal.annotations.VisibleForTesting; @@ -85,6 +88,10 @@ public abstract class ClientTransactionHandler { /** Get activity instance for the token. */ public abstract Activity getActivity(IBinder token); + /** Gets the {@link WindowContext} instance for the token. */ + @Nullable + public abstract Context getWindowContext(@NonNull IBinder clientToken); + // Prepare phase related logic and handlers. Methods that inform about about pending changes or // do other internal bookkeeping. diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 5feafbed148cd02c393700859a25108704a399b3..a538247998e6c3cb4f0265dad36002feeb9e5ef2 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -3455,20 +3455,20 @@ class ContextImpl extends Context { mOpPackageName = overrideOpPackageName != null ? overrideOpPackageName : opPackageName; mParams = Objects.requireNonNull(params); mAttributionSource = createAttributionSource(attributionTag, nextAttributionSource, - params.getRenouncedPermissions()); + params.getRenouncedPermissions(), params.shouldRegisterAttributionSource()); mContentResolver = new ApplicationContentResolver(this, mainThread); } private @NonNull AttributionSource createAttributionSource(@Nullable String attributionTag, @Nullable AttributionSource nextAttributionSource, - @Nullable Set renouncedPermissions) { + @Nullable Set renouncedPermissions, boolean shouldRegister) { AttributionSource attributionSource = new AttributionSource(Process.myUid(), Process.myPid(), mOpPackageName, attributionTag, (renouncedPermissions != null) ? renouncedPermissions.toArray(new String[0]) : null, getDeviceId(), nextAttributionSource); // If we want to access protected data on behalf of another app we need to // tell the OS that we opt in to participate in the attribution chain. - if (nextAttributionSource != null) { + if (nextAttributionSource != null || shouldRegister) { attributionSource = getSystemService(PermissionManager.class) .registerAttributionSource(attributionSource); } diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java index 4851279eea972656103b8a24a8553aba510a5a0b..d0d76a4c828505cb4033a1662b9c4fa963b194ba 100644 --- a/core/java/android/app/Dialog.java +++ b/core/java/android/app/Dialog.java @@ -454,12 +454,11 @@ public class Dialog implements DialogInterface, Window.Callback, */ protected void onStart() { if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(true); - if (mContext != null + if (allowsRegisterDefaultOnBackInvokedCallback() && mContext != null && WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext)) { // Add onBackPressed as default back behavior. mDefaultBackCallback = this::onBackPressed; getOnBackInvokedDispatcher().registerSystemOnBackInvokedCallback(mDefaultBackCallback); - mDefaultBackCallback = null; } } @@ -470,9 +469,18 @@ public class Dialog implements DialogInterface, Window.Callback, if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(false); if (mDefaultBackCallback != null) { getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(mDefaultBackCallback); + mDefaultBackCallback = null; } } + /** + * Whether this dialog allows to register the default onBackInvokedCallback. + * @hide + */ + protected boolean allowsRegisterDefaultOnBackInvokedCallback() { + return true; + } + private static final String DIALOG_SHOWING_TAG = "android:dialogShowing"; private static final String DIALOG_HIERARCHY_TAG = "android:dialogHierarchy"; @@ -697,7 +705,8 @@ public class Dialog implements DialogInterface, Window.Callback, if (event.isTracking() && !event.isCanceled()) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: - if (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext)) { + if (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext) + || !allowsRegisterDefaultOnBackInvokedCallback()) { onBackPressed(); return true; } diff --git a/core/java/android/app/HomeVisibilityListener.java b/core/java/android/app/HomeVisibilityListener.java index 0b5a5ed100c9cfd30e7e0d3e5502d71714236919..1f5f2e4c8237df311fe7fdbf518eae75d0d9ac47 100644 --- a/core/java/android/app/HomeVisibilityListener.java +++ b/core/java/android/app/HomeVisibilityListener.java @@ -17,7 +17,6 @@ package android.app; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; -import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS; import static android.view.Display.DEFAULT_DISPLAY; import android.annotation.SuppressLint; @@ -108,13 +107,12 @@ public abstract class HomeVisibilityListener { if (DBG) { Log.d(TAG, "Task#" + i + ": activity=" + task.topActivity + ", visible=" + task.isVisible() - + ", flg=" + Integer.toHexString(task.baseIntent.getFlags())); + + ", flg=" + Integer.toHexString(task.baseIntent.getFlags()) + + ", type=" + task.getActivityType()); } - if (!task.isVisible() - || (task.baseIntent.getFlags() & FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) != 0) { - continue; + if (task.isVisible() && (task.getActivityType() == ACTIVITY_TYPE_HOME)) { + return true; } - return task.getActivityType() == ACTIVITY_TYPE_HOME; } return false; } diff --git a/core/java/android/app/IUriGrantsManager.aidl b/core/java/android/app/IUriGrantsManager.aidl index 9e7f2fecfea02d50e8b14afb851d9056c3f93b9d..b630d034dca996ec78e13dce4ddeddba564f6975 100644 --- a/core/java/android/app/IUriGrantsManager.aidl +++ b/core/java/android/app/IUriGrantsManager.aidl @@ -39,4 +39,7 @@ interface IUriGrantsManager { void clearGrantedUriPermissions(in String packageName, int userId); ParceledListSlice getUriPermissions(in String packageName, boolean incoming, boolean persistedOnly); + + int checkGrantUriPermission_ignoreNonSystem( + int sourceUid, String targetPkg, in Uri uri, int modeFlags, int userId); } diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java index e31486f18dbf1a1358ed29552ccfdfea6d8ba753..10747bb0e57e4a261d4a298801eda5d99595aa5b 100644 --- a/core/java/android/app/Instrumentation.java +++ b/core/java/android/app/Instrumentation.java @@ -26,6 +26,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.ActivityInfo; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.hardware.input.InputManager; import android.hardware.input.InputManagerGlobal; @@ -474,6 +475,56 @@ public class Instrumentation { sr.waitForComplete(); } + boolean isSdkSandboxAllowedToStartActivities() { + return Process.isSdkSandbox() + && mThread != null + && mThread.mBoundApplication != null + && mThread.mBoundApplication.isSdkInSandbox + && getContext() != null + && (getContext() + .checkSelfPermission( + android.Manifest.permission + .START_ACTIVITIES_FROM_SDK_SANDBOX) + == PackageManager.PERMISSION_GRANTED); + } + + /** + * Activity name resolution for CTS-in-SdkSandbox tests requires some adjustments. Intents + * generated using {@link Context#getPackageName()} use the SDK sandbox package name in the + * component field instead of the test package name. An SDK-in-sandbox test attempting to launch + * an activity in the test package will encounter name resolution errors when resolving the + * activity name in the SDK sandbox package. + * + *

This function replaces the package name of the input intent component to allow activities + * belonging to a CTS-in-sandbox test to resolve correctly. + * + * @param intent the intent to modify to allow CTS-in-sandbox activity resolution. + */ + private void adjustIntentForCtsInSdkSandboxInstrumentation(@NonNull Intent intent) { + if (mComponent != null + && intent.getComponent() != null + && getContext() + .getPackageManager() + .getSdkSandboxPackageName() + .equals(intent.getComponent().getPackageName())) { + // Resolve the intent target for the test package, not for the sandbox package. + intent.setComponent( + new ComponentName( + mComponent.getPackageName(), intent.getComponent().getClassName())); + } + // We match the intent identifier against the running instrumentations for the sandbox. + intent.setIdentifier(mComponent.getPackageName()); + } + + private ActivityInfo resolveActivityInfoForCtsInSandbox(@NonNull Intent intent) { + adjustIntentForCtsInSdkSandboxInstrumentation(intent); + ActivityInfo ai = intent.resolveActivityInfo(getTargetContext().getPackageManager(), 0); + if (ai != null) { + ai.processName = mThread.getProcessName(); + } + return ai; + } + /** * Start a new activity and wait for it to begin running before returning. * In addition to being synchronous, this method as some semantic @@ -531,8 +582,10 @@ public class Instrumentation { synchronized (mSync) { intent = new Intent(intent); - ActivityInfo ai = intent.resolveActivityInfo( - getTargetContext().getPackageManager(), 0); + ActivityInfo ai = + isSdkSandboxAllowedToStartActivities() + ? resolveActivityInfoForCtsInSandbox(intent) + : intent.resolveActivityInfo(getTargetContext().getPackageManager(), 0); if (ai == null) { throw new RuntimeException("Unable to resolve activity for: " + intent); } @@ -1842,6 +1895,9 @@ public class Instrumentation { if (referrer != null) { intent.putExtra(Intent.EXTRA_REFERRER, referrer); } + if (isSdkSandboxAllowedToStartActivities()) { + adjustIntentForCtsInSdkSandboxInstrumentation(intent); + } if (mActivityMonitors != null) { synchronized (mSync) { final int N = mActivityMonitors.size(); @@ -1914,6 +1970,11 @@ public class Instrumentation { IBinder token, Activity target, Intent[] intents, Bundle options, int userId) { IApplicationThread whoThread = (IApplicationThread) contextThread; + if (isSdkSandboxAllowedToStartActivities()) { + for (Intent intent : intents) { + adjustIntentForCtsInSdkSandboxInstrumentation(intent); + } + } if (mActivityMonitors != null) { synchronized (mSync) { final int N = mActivityMonitors.size(); @@ -1989,6 +2050,9 @@ public class Instrumentation { Context who, IBinder contextThread, IBinder token, String target, Intent intent, int requestCode, Bundle options) { IApplicationThread whoThread = (IApplicationThread) contextThread; + if (isSdkSandboxAllowedToStartActivities()) { + adjustIntentForCtsInSdkSandboxInstrumentation(intent); + } if (mActivityMonitors != null) { synchronized (mSync) { final int N = mActivityMonitors.size(); @@ -2060,6 +2124,9 @@ public class Instrumentation { Context who, IBinder contextThread, IBinder token, String resultWho, Intent intent, int requestCode, Bundle options, UserHandle user) { IApplicationThread whoThread = (IApplicationThread) contextThread; + if (isSdkSandboxAllowedToStartActivities()) { + adjustIntentForCtsInSdkSandboxInstrumentation(intent); + } if (mActivityMonitors != null) { synchronized (mSync) { final int N = mActivityMonitors.size(); @@ -2110,6 +2177,9 @@ public class Instrumentation { Intent intent, int requestCode, Bundle options, boolean ignoreTargetSecurity, int userId) { IApplicationThread whoThread = (IApplicationThread) contextThread; + if (isSdkSandboxAllowedToStartActivities()) { + adjustIntentForCtsInSdkSandboxInstrumentation(intent); + } if (mActivityMonitors != null) { synchronized (mSync) { final int N = mActivityMonitors.size(); @@ -2161,6 +2231,9 @@ public class Instrumentation { Context who, IBinder contextThread, IAppTask appTask, Intent intent, Bundle options) { IApplicationThread whoThread = (IApplicationThread) contextThread; + if (isSdkSandboxAllowedToStartActivities()) { + adjustIntentForCtsInSdkSandboxInstrumentation(intent); + } if (mActivityMonitors != null) { synchronized (mSync) { final int N = mActivityMonitors.size(); diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java index e447dc511ced17b2b175b7c2ff49384bc488f340..2d554031ab48ccf3ae847c190629e010cb09bf42 100644 --- a/core/java/android/app/KeyguardManager.java +++ b/core/java/android/app/KeyguardManager.java @@ -49,7 +49,6 @@ import android.util.ArrayMap; import android.util.Log; import android.view.IOnKeyguardExitResult; import android.view.IWindowManager; -import android.view.WindowManager.LayoutParams; import android.view.WindowManagerGlobal; import com.android.internal.annotations.VisibleForTesting; @@ -71,9 +70,7 @@ import java.util.Objects; import java.util.concurrent.Executor; /** - * Class that can be used to lock and unlock the keyguard. The - * actual class to control the keyguard locking is - * {@link android.app.KeyguardManager.KeyguardLock}. + * Class to manage and query the state of the lock screen (also known as Keyguard). */ @SystemService(Context.KEYGUARD_SERVICE) public class KeyguardManager { @@ -259,7 +256,9 @@ public class KeyguardManager { * {@link android.app.Activity#RESULT_OK} if the user successfully completes the challenge. * * @return the intent for launching the activity or null if no password is required. - * @deprecated see BiometricPrompt.Builder#setDeviceCredentialAllowed(boolean) + * + * @deprecated see {@link + * android.hardware.biometrics.BiometricPrompt.Builder#setAllowedAuthenticators(int)} */ @Deprecated @RequiresFeature(PackageManager.FEATURE_SECURE_LOCK_SCREEN) @@ -477,13 +476,12 @@ public class KeyguardManager { /** * Handle returned by {@link KeyguardManager#newKeyguardLock} that allows - * you to disable / reenable the keyguard. + * you to temporarily disable / reenable the keyguard (lock screen). * - * @deprecated Use {@link LayoutParams#FLAG_DISMISS_KEYGUARD} - * and/or {@link LayoutParams#FLAG_SHOW_WHEN_LOCKED} - * instead; this allows you to seamlessly hide the keyguard as your application - * moves in and out of the foreground and does not require that any special - * permissions be requested. + * @deprecated Use {@link android.R.attr#showWhenLocked} or {@link + * android.app.Activity#setShowWhenLocked(boolean)} instead. This allows you to seamlessly + * occlude and unocclude the keyguard as your application moves in and out of the foreground + * and does not require that any special permissions be requested. */ @Deprecated public class KeyguardLock { @@ -498,12 +496,12 @@ public class KeyguardManager { * Disable the keyguard from showing. If the keyguard is currently * showing, hide it. The keyguard will be prevented from showing again * until {@link #reenableKeyguard()} is called. - * + *

+ * This only works if the keyguard is not secure. + *

* A good place to call this is from {@link android.app.Activity#onResume()} * - * Note: This call has no effect while any {@link android.app.admin.DevicePolicyManager} - * is enabled that requires a password. - * + * @see KeyguardManager#isKeyguardSecure() * @see #reenableKeyguard() */ @RequiresPermission(Manifest.permission.DISABLE_KEYGUARD) @@ -520,9 +518,6 @@ public class KeyguardManager { * * A good place to call this is from {@link android.app.Activity#onPause()} * - * Note: This call has no effect while any {@link android.app.admin.DevicePolicyManager} - * is enabled that requires a password. - * * @see #disableKeyguard() */ @RequiresPermission(Manifest.permission.DISABLE_KEYGUARD) @@ -621,20 +616,18 @@ public class KeyguardManager { } /** - * Enables you to lock or unlock the keyguard. Get an instance of this class by - * calling {@link android.content.Context#getSystemService(java.lang.String) Context.getSystemService()}. - * This class is wrapped by {@link android.app.KeyguardManager KeyguardManager}. + * Enables you to temporarily disable / reenable the keyguard (lock screen). + * * @param tag A tag that informally identifies who you are (for debugging who * is disabling the keyguard). * * @return A {@link KeyguardLock} handle to use to disable and reenable the * keyguard. * - * @deprecated Use {@link LayoutParams#FLAG_DISMISS_KEYGUARD} - * and/or {@link LayoutParams#FLAG_SHOW_WHEN_LOCKED} - * instead; this allows you to seamlessly hide the keyguard as your application - * moves in and out of the foreground and does not require that any special - * permissions be requested. + * @deprecated Use {@link android.R.attr#showWhenLocked} or {@link + * android.app.Activity#setShowWhenLocked(boolean)} instead. This allows you to seamlessly + * occlude and unocclude the keyguard as your application moves in and out of the foreground + * and does not require that any special permissions be requested. */ @Deprecated public KeyguardLock newKeyguardLock(String tag) { @@ -642,9 +635,36 @@ public class KeyguardManager { } /** - * Return whether the keyguard is currently locked. + * Returns whether the lock screen (also known as Keyguard) is showing. + *

+ * Specifically, this returns {@code true} in the following cases: + *

+ *

+ * "Showing" refers to a logical state of the UI, regardless of whether the screen happens to be + * on. When the power button is pressed on an unlocked device, the lock screen starts "showing" + * immediately when the screen turns off. + *

+ * This method does not distinguish a lock screen that is requiring authentication (e.g. with + * PIN, pattern, password, or biometric) from a lock screen that is trivially dismissible (e.g. + * with swipe). It also does not distinguish a lock screen requesting a SIM card PIN from a + * normal device lock screen. Finally, it always returns the global lock screen state and does + * not consider the {@link Context}'s user specifically. + *

+ * Note that {@code isKeyguardLocked()} is confusingly named and probably should be called + * {@code isKeyguardShowing()}. On many devices, the lock screen displays an unlocked + * padlock icon when it is trivially dismissible. As mentioned above, {@code isKeyguardLocked()} + * actually returns {@code true} in this case, not {@code false} as might be expected. {@link + * #isDeviceLocked()} is an alternative API that has slightly different semantics. * - * @return {@code true} if the keyguard is locked. + * @return {@code true} if the lock screen is showing + * @see #isDeviceLocked() */ public boolean isKeyguardLocked() { try { @@ -655,12 +675,23 @@ public class KeyguardManager { } /** - * Return whether the keyguard is secured by a PIN, pattern or password or a SIM card - * is currently locked. - * - *

See also {@link #isDeviceSecure()} which ignores SIM locked states. + * Returns whether the user has a secure lock screen or there is a locked SIM card. + *

+ * Specifically, this returns {@code true} if at least one of the following is true: + *

+ *

+ * This method does not consider whether the lock screen is currently showing or not. + *

+ * See also {@link #isDeviceSecure()} which excludes locked SIM cards. * - * @return {@code true} if a PIN, pattern or password is set or a SIM card is locked. + * @return {@code true} if the user has a secure lock screen or there is a locked SIM card + * @see #isDeviceSecure() */ public boolean isKeyguardSecure() { try { @@ -671,11 +702,11 @@ public class KeyguardManager { } /** - * If keyguard screen is showing or in restricted key input mode (i.e. in - * keyguard password emergency screen). When in such mode, certain keys, - * such as the Home key and the right soft keys, don't work. + * Returns whether the lock screen is showing. + *

+ * This is exactly the same as {@link #isKeyguardLocked()}. * - * @return {@code true} if in keyguard restricted input mode. + * @return the value of {@link #isKeyguardLocked()} * @deprecated Use {@link #isKeyguardLocked()} instead. */ public boolean inKeyguardRestrictedInputMode() { @@ -683,11 +714,26 @@ public class KeyguardManager { } /** - * Returns whether the device is currently locked and requires a PIN, pattern or - * password to unlock. + * Returns whether the device is currently locked for the user. + *

+ * This returns the device locked state for the {@link Context}'s user. If this user is the + * current user, then the device is considered "locked" when the lock screen is showing (i.e. + * {@link #isKeyguardLocked()} returns {@code true}) and is not trivially dismissible (e.g. with + * swipe), and the user has a PIN, pattern, or password. + *

+ * Note: the above definition implies that a user with no PIN, pattern, or password is never + * considered locked, even if the lock screen is showing and requesting a SIM card PIN. The + * device PIN and SIM PIN are separate. Also, the user is not considered locked if face + * authentication has just completed or a trust agent is keeping the device unlocked, since in + * these cases the lock screen is dismissible with swipe. + *

+ * For a user that is not the current user but can be switched to (usually this means "another + * full user"), and that has a PIN, pattern, or password, the device is always considered + * locked. For a profile with a unified challenge, the device is considered locked if and only + * if the device is locked for the parent user. * - * @return {@code true} if unlocking the device currently requires a PIN, pattern or - * password. + * @return {@code true} if the device is currently locked for the user + * @see #isKeyguardLocked() */ public boolean isDeviceLocked() { return isDeviceLocked(mContext.getUserId()); @@ -708,12 +754,19 @@ public class KeyguardManager { } /** - * Returns whether the device is secured with a PIN, pattern or - * password. - * - *

See also {@link #isKeyguardSecure} which treats SIM locked states as secure. + * Returns whether the user has a secure lock screen. + *

+ * This returns {@code true} if the {@link Context}'s user has a secure lock screen. A full user + * has a secure lock screen if its lock screen is set to PIN, pattern, or password, as opposed + * to swipe or none. A profile that uses a unified challenge is considered to have a secure lock + * screen if and only if its parent user has a secure lock screen. + *

+ * This method does not consider whether the lock screen is currently showing or not. + *

+ * See also {@link #isKeyguardSecure()} which includes locked SIM cards. * - * @return {@code true} if a PIN, pattern or password was set. + * @return {@code true} if the user has a secure lock screen + * @see #isKeyguardSecure() */ public boolean isDeviceSecure() { return isDeviceSecure(mContext.getUserId()); @@ -734,8 +787,7 @@ public class KeyguardManager { } /** - * If the device is currently locked (see {@link #isKeyguardLocked()}, requests the Keyguard to - * be dismissed. + * Requests that the Keyguard (lock screen) be dismissed if it is currently showing. *

* If the Keyguard is not secure or the device is currently in a trusted state, calling this * method will immediately dismiss the Keyguard without any user interaction. @@ -746,8 +798,9 @@ public class KeyguardManager { * If the value set for the {@link Activity} attr {@link android.R.attr#turnScreenOn} is true, * the screen will turn on when the keyguard is dismissed. * - * @param activity The activity requesting the dismissal. The activity must be either visible - * by using {@link LayoutParams#FLAG_SHOW_WHEN_LOCKED} or must be in a state in + * @param activity The activity requesting the dismissal. The activity must either be visible + * by using {@link android.R.attr#showWhenLocked} or {@link + * android.app.Activity#setShowWhenLocked(boolean)}, or must be in a state in * which it would be visible if Keyguard would not be hiding it. If that's not * the case, the request will fail immediately and * {@link KeyguardDismissCallback#onDismissError} will be invoked. @@ -762,8 +815,7 @@ public class KeyguardManager { } /** - * If the device is currently locked (see {@link #isKeyguardLocked()}, requests the Keyguard to - * be dismissed. + * Requests that the Keyguard (lock screen) be dismissed if it is currently showing. *

* If the Keyguard is not secure or the device is currently in a trusted state, calling this * method will immediately dismiss the Keyguard without any user interaction. @@ -774,8 +826,9 @@ public class KeyguardManager { * If the value set for the {@link Activity} attr {@link android.R.attr#turnScreenOn} is true, * the screen will turn on when the keyguard is dismissed. * - * @param activity The activity requesting the dismissal. The activity must be either visible - * by using {@link LayoutParams#FLAG_SHOW_WHEN_LOCKED} or must be in a state in + * @param activity The activity requesting the dismissal. The activity must either be visible + * by using {@link android.R.attr#showWhenLocked} or {@link + * android.app.Activity#setShowWhenLocked(boolean)}, or must be in a state in * which it would be visible if Keyguard would not be hiding it. If that's not * the case, the request will fail immediately and * {@link KeyguardDismissCallback#onDismissError} will be invoked. @@ -829,12 +882,12 @@ public class KeyguardManager { * @param callback Lets you know whether the operation was successful and * it is safe to launch anything that would normally be considered safe * once the user has gotten past the keyguard. - - * @deprecated Use {@link LayoutParams#FLAG_DISMISS_KEYGUARD} - * and/or {@link LayoutParams#FLAG_SHOW_WHEN_LOCKED} - * instead; this allows you to seamlessly hide the keyguard as your application - * moves in and out of the foreground and does not require that any special - * permissions be requested. + * + * @deprecated Use {@link android.R.attr#showWhenLocked} or {@link + * android.app.Activity#setShowWhenLocked(boolean)} to seamlessly occlude and unocclude the + * keyguard as your application moves in and out of the foreground, without requiring any + * special permissions. Use {@link #requestDismissKeyguard(android.app.Activity, + * KeyguardDismissCallback)} to request dismissal of the keyguard. */ @Deprecated @RequiresPermission(Manifest.permission.DISABLE_KEYGUARD) diff --git a/core/java/android/app/LocaleConfig.java b/core/java/android/app/LocaleConfig.java index 729e555509a63528040c17dab2b629d5afe9a5eb..0857c9655e8db63655d29dc358978fb1297d3213 100644 --- a/core/java/android/app/LocaleConfig.java +++ b/core/java/android/app/LocaleConfig.java @@ -40,7 +40,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Arrays; import java.util.Collections; -import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.List; import java.util.Locale; import java.util.Set; @@ -195,7 +195,8 @@ public class LocaleConfig implements Parcelable { XmlUtils.beginDocument(parser, TAG_LOCALE_CONFIG); int outerDepth = parser.getDepth(); AttributeSet attrs = Xml.asAttributeSet(parser); - Set localeNames = new HashSet(); + // LinkedHashSet to preserve insertion order + Set localeNames = new LinkedHashSet<>(); while (XmlUtils.nextElementWithin(parser, outerDepth)) { if (TAG_LOCALE.equals(parser.getName())) { final TypedArray attributes = res.obtainAttributes( diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 892b45ed2292f5c16333c7a5ff1e77fad74e0311..2c42df3c8819afef6f802758dcb7f45d13637237 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -1628,6 +1628,14 @@ public class Notification implements Parcelable */ public static final int GROUP_ALERT_CHILDREN = 2; + /** + * Constant for the {@link Builder#setGroup(String) group key} that is added to notifications + * that are not already grouped when {@link Builder#setSilent()} is used. + * + * @hide + */ + public static final String GROUP_KEY_SILENT = "silent"; + private int mGroupAlertBehavior = GROUP_ALERT_ALL; /** @@ -2892,11 +2900,6 @@ public class Notification implements Parcelable } } - final Person person = extras.getParcelable(EXTRA_MESSAGING_PERSON, Person.class); - if (person != null) { - person.visitUris(visitor); - } - final RemoteInputHistoryItem[] history = extras.getParcelableArray( Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, RemoteInputHistoryItem.class); @@ -2908,9 +2911,14 @@ public class Notification implements Parcelable } } } - } - if (isStyle(MessagingStyle.class) && extras != null) { + // Extras for MessagingStyle. We visit them even if not isStyle(MessagingStyle), since + // Notification Listeners might use directly (without the isStyle check). + final Person person = extras.getParcelable(EXTRA_MESSAGING_PERSON, Person.class); + if (person != null) { + person.visitUris(visitor); + } + final Parcelable[] messages = extras.getParcelableArray(EXTRA_MESSAGES, Parcelable.class); if (!ArrayUtils.isEmpty(messages)) { @@ -2930,9 +2938,8 @@ public class Notification implements Parcelable } visitIconUri(visitor, extras.getParcelable(EXTRA_CONVERSATION_ICON, Icon.class)); - } - if (isStyle(CallStyle.class) & extras != null) { + // Extras for CallStyle (same reason for visiting without checking isStyle). Person callPerson = extras.getParcelable(EXTRA_CALL_PERSON, Person.class); if (callPerson != null) { callPerson.visitUris(visitor); @@ -4289,6 +4296,35 @@ public class Notification implements Parcelable return this; } + /** + * If {@code true}, silences this instance of the notification, regardless of the sounds or + * vibrations set on the notification or notification channel. If {@code false}, then the + * normal sound and vibration logic applies. + * + * @hide + */ + public @NonNull Builder setSilent(boolean silent) { + if (!silent) { + return this; + } + if (mN.isGroupSummary()) { + setGroupAlertBehavior(GROUP_ALERT_CHILDREN); + } else { + setGroupAlertBehavior(GROUP_ALERT_SUMMARY); + } + + setVibrate(null); + setSound(null); + mN.defaults &= ~DEFAULT_SOUND; + mN.defaults &= ~DEFAULT_VIBRATE; + setDefaults(mN.defaults); + + if (TextUtils.isEmpty(mN.mGroupKey)) { + setGroup(GROUP_KEY_SILENT); + } + return this; + } + /** * Set the first line of text in the platform notification template. */ @@ -7634,14 +7670,17 @@ public class Notification implements Parcelable } extras.putBoolean(EXTRA_SHOW_BIG_PICTURE_WHEN_COLLAPSED, mShowBigPictureWhenCollapsed); - // If the icon contains a bitmap, use the old extra so that listeners which look for - // that extra can still find the picture. Don't include the new extra in that case, - // to avoid duplicating data. - if (mPictureIcon != null && mPictureIcon.getType() == Icon.TYPE_BITMAP) { + if (mPictureIcon == null) { + extras.remove(EXTRA_PICTURE_ICON); + extras.remove(EXTRA_PICTURE); + } else if (mPictureIcon.getType() == Icon.TYPE_BITMAP) { + // If the icon contains a bitmap, use the old extra so that listeners which look + // for that extra can still find the picture. Don't include the new extra in + // that case, to avoid duplicating data. extras.putParcelable(EXTRA_PICTURE, mPictureIcon.getBitmap()); - extras.putParcelable(EXTRA_PICTURE_ICON, null); + extras.remove(EXTRA_PICTURE_ICON); } else { - extras.putParcelable(EXTRA_PICTURE, null); + extras.remove(EXTRA_PICTURE); extras.putParcelable(EXTRA_PICTURE_ICON, mPictureIcon); } } @@ -12819,7 +12858,6 @@ public class Notification implements Parcelable } else { mBackgroundColor = rawColor; } - mProtectionColor = COLOR_INVALID; // filled in at the end mPrimaryTextColor = ContrastColorUtil.findAlphaToMeetContrast( ContrastColorUtil.resolvePrimaryColor(ctx, mBackgroundColor, nightMode), mBackgroundColor, 4.5); @@ -12836,7 +12874,6 @@ public class Notification implements Parcelable } else { int[] attrs = { R.attr.colorSurface, - R.attr.colorBackgroundFloating, R.attr.textColorPrimary, R.attr.textColorSecondary, R.attr.colorAccent, @@ -12848,15 +12885,14 @@ public class Notification implements Parcelable }; try (TypedArray ta = obtainDayNightAttributes(ctx, attrs)) { mBackgroundColor = getColor(ta, 0, nightMode ? Color.BLACK : Color.WHITE); - mProtectionColor = getColor(ta, 1, COLOR_INVALID); - mPrimaryTextColor = getColor(ta, 2, COLOR_INVALID); - mSecondaryTextColor = getColor(ta, 3, COLOR_INVALID); - mPrimaryAccentColor = getColor(ta, 4, COLOR_INVALID); - mSecondaryAccentColor = getColor(ta, 5, COLOR_INVALID); - mTertiaryAccentColor = getColor(ta, 6, COLOR_INVALID); - mOnAccentTextColor = getColor(ta, 7, COLOR_INVALID); - mErrorColor = getColor(ta, 8, COLOR_INVALID); - mRippleAlpha = Color.alpha(getColor(ta, 9, 0x33ffffff)); + mPrimaryTextColor = getColor(ta, 1, COLOR_INVALID); + mSecondaryTextColor = getColor(ta, 2, COLOR_INVALID); + mPrimaryAccentColor = getColor(ta, 3, COLOR_INVALID); + mSecondaryAccentColor = getColor(ta, 4, COLOR_INVALID); + mTertiaryAccentColor = getColor(ta, 5, COLOR_INVALID); + mOnAccentTextColor = getColor(ta, 6, COLOR_INVALID); + mErrorColor = getColor(ta, 7, COLOR_INVALID); + mRippleAlpha = Color.alpha(getColor(ta, 8, 0x33ffffff)); } mContrastColor = calculateContrastColor(ctx, rawColor, mPrimaryAccentColor, mBackgroundColor, nightMode); @@ -12889,9 +12925,7 @@ public class Notification implements Parcelable } } // make sure every color has a valid value - if (mProtectionColor == COLOR_INVALID) { - mProtectionColor = ColorUtils.blendARGB(mPrimaryTextColor, mBackgroundColor, 0.8f); - } + mProtectionColor = ColorUtils.blendARGB(mPrimaryTextColor, mBackgroundColor, 0.9f); } /** calculates the contrast color for the non-colorized notifications */ diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index e57849957f13ef1e5180d568829c773bafe88392..cbbf4e0f9adc847b262fcf4547f0b0d1b0784134 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -243,6 +243,7 @@ import android.view.translation.ITranslationManager; import android.view.translation.TranslationManager; import android.view.translation.UiTranslationManager; +import com.android.internal.R; import com.android.internal.app.IAppOpsService; import com.android.internal.app.IBatteryStats; import com.android.internal.app.ISoundTriggerService; @@ -867,10 +868,10 @@ public final class SystemServiceRegistry { @Override public VirtualDeviceManager createService(ContextImpl ctx) throws ServiceNotFoundException { - if (!ctx.getPackageManager().hasSystemFeature( - PackageManager.FEATURE_COMPANION_DEVICE_SETUP)) { + if (!ctx.getResources().getBoolean(R.bool.config_enableVirtualDeviceManager)) { return null; } + IVirtualDeviceManager service = IVirtualDeviceManager.Stub.asInterface( ServiceManager.getServiceOrThrow(Context.VIRTUAL_DEVICE_SERVICE)); return new VirtualDeviceManager(service, ctx.getOuterContext()); diff --git a/core/java/android/app/TEST_MAPPING b/core/java/android/app/TEST_MAPPING index 06e1b5bb5fb8c8587d9cb05c06fca89adea9393a..93107cea406e012a7e469ec624ee7eb0803ebe6e 100644 --- a/core/java/android/app/TEST_MAPPING +++ b/core/java/android/app/TEST_MAPPING @@ -349,21 +349,6 @@ ], "file_patterns": ["(/|^)ContextImpl.java"] }, - { - "name": "CtsWindowManagerDeviceScvh", - "options": [ - { - "exclude-annotation": "androidx.test.filters.FlakyTest" - }, - { - "exclude-annotation": "org.junit.Ignore" - }, - { - "include-filter": "android.content.wm.cts" - } - ], - "file_patterns": ["(/|^)ContextImpl.java"] - }, { "name": "CtsWindowManagerDeviceWindow", "options": [ diff --git a/core/java/android/app/TaskInfo.java b/core/java/android/app/TaskInfo.java index 2b5175ca6659c6510864197c7d87a5bb6da22f83..634089b736189ff9d06821ecbf34c1e4363a21f7 100644 --- a/core/java/android/app/TaskInfo.java +++ b/core/java/android/app/TaskInfo.java @@ -247,6 +247,13 @@ public class TaskInfo { */ public boolean topActivityEligibleForUserAspectRatioButton; + /** + * Whether the user has forced the activity to be fullscreen through the user aspect ratio + * settings. + * @hide + */ + public boolean isUserFullscreenOverrideEnabled; + /** * Hint about the letterbox state of the top activity. * @hide @@ -543,7 +550,8 @@ public class TaskInfo { && isSleeping == that.isSleeping && Objects.equals(mTopActivityLocusId, that.mTopActivityLocusId) && parentTaskId == that.parentTaskId - && Objects.equals(topActivity, that.topActivity); + && Objects.equals(topActivity, that.topActivity) + && isUserFullscreenOverrideEnabled == that.isUserFullscreenOverrideEnabled; } /** @@ -574,7 +582,8 @@ public class TaskInfo { && (!hasCompatUI() || configuration.getLayoutDirection() == that.configuration.getLayoutDirection()) && (!hasCompatUI() || configuration.uiMode == that.configuration.uiMode) - && (!hasCompatUI() || isVisible == that.isVisible); + && (!hasCompatUI() || isVisible == that.isVisible) + && isUserFullscreenOverrideEnabled == that.isUserFullscreenOverrideEnabled; } /** @@ -630,6 +639,7 @@ public class TaskInfo { topActivityLetterboxHorizontalPosition = source.readInt(); topActivityLetterboxWidth = source.readInt(); topActivityLetterboxHeight = source.readInt(); + isUserFullscreenOverrideEnabled = source.readBoolean(); } /** @@ -686,6 +696,7 @@ public class TaskInfo { dest.writeInt(topActivityLetterboxHorizontalPosition); dest.writeInt(topActivityLetterboxWidth); dest.writeInt(topActivityLetterboxHeight); + dest.writeBoolean(isUserFullscreenOverrideEnabled); } @Override @@ -732,6 +743,7 @@ public class TaskInfo { + topActivityLetterboxHorizontalPosition + " topActivityLetterboxWidth=" + topActivityLetterboxWidth + " topActivityLetterboxHeight=" + topActivityLetterboxHeight + + " isUserFullscreenOverrideEnabled=" + isUserFullscreenOverrideEnabled + " locusId=" + mTopActivityLocusId + " displayAreaFeatureId=" + displayAreaFeatureId + " cameraCompatControlState=" diff --git a/core/java/android/app/WindowConfiguration.java b/core/java/android/app/WindowConfiguration.java index 5b955031a098cf020a3067312a894f903fa27c87..019a1a8cb2a6ab681cbbf4d5ef667b89615d02c3 100644 --- a/core/java/android/app/WindowConfiguration.java +++ b/core/java/android/app/WindowConfiguration.java @@ -36,6 +36,7 @@ import android.os.Parcelable; import android.util.proto.ProtoInputStream; import android.util.proto.ProtoOutputStream; import android.util.proto.WireTypeMismatchException; +import android.view.Display; import android.view.DisplayInfo; import android.view.Surface; import android.view.WindowManager; @@ -66,6 +67,7 @@ public class WindowConfiguration implements Parcelable, ComparableNote that for {@link #POLICY_SUSPEND_PACKAGES} it returns the PO or DO to keep the + * behavior the same as before the bug fix for b/192245204. + * + *

This API is only callable by the system UID + * + * @param userId The user for whom to retrieve the information. + * @param restriction The restriction enforced by admins. It could be any user restriction or + * policy like {@link DevicePolicyManager#POLICY_DISABLE_CAMERA} and + * {@link DevicePolicyManager#POLICY_DISABLE_SCREEN_CAPTURE}. + * + * @hide + */ + public @NonNull Set getEnforcingAdminsForRestriction(int userId, + @NonNull String restriction) { + if (mService != null) { + try { + return new HashSet<>(mService.getEnforcingAdminsForRestriction( + userId, restriction)); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + return null; + } + /** * Hide or unhide packages. When a package is hidden it is unavailable for use, but the data and * actual package file remain. This function can be called by a device owner, profile owner, or @@ -16111,11 +16139,6 @@ public class DevicePolicyManager { * Called by a profile owner of an organization-owned managed profile to suspend personal * apps on the device. When personal apps are suspended the device can only be used for calls. * - *

When personal apps are suspended, an ongoing notification about that is shown to the user. - * When the user taps the notification, system invokes {@link #ACTION_CHECK_POLICY_COMPLIANCE} - * in the profile owner package. Profile owner implementation that uses personal apps suspension - * must handle this intent. - * * @param admin Which {@link DeviceAdminReceiver} this request is associated with * @param suspended Whether personal apps should be suspended. * @throws IllegalStateException if the profile owner doesn't have an activity that handles diff --git a/core/java/android/app/admin/EnforcingAdmin.aidl b/core/java/android/app/admin/EnforcingAdmin.aidl new file mode 100644 index 0000000000000000000000000000000000000000..bfbfdbeaf9aa46eeb3dd90329ee3f5745fc9c24e --- /dev/null +++ b/core/java/android/app/admin/EnforcingAdmin.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2023 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.admin; + +parcelable EnforcingAdmin; \ No newline at end of file diff --git a/core/java/android/app/admin/EnforcingAdmin.java b/core/java/android/app/admin/EnforcingAdmin.java index 771794dbe0fb9eb21eb9ebf73754162788d2b401..7c718f6651a2d4369531a7c3619d5e176931824e 100644 --- a/core/java/android/app/admin/EnforcingAdmin.java +++ b/core/java/android/app/admin/EnforcingAdmin.java @@ -19,6 +19,7 @@ package android.app.admin; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SystemApi; +import android.content.ComponentName; import android.os.Parcel; import android.os.Parcelable; import android.os.UserHandle; @@ -37,6 +38,11 @@ public final class EnforcingAdmin implements Parcelable { private final Authority mAuthority; private final UserHandle mUserHandle; + /** + * @hide + */ + private final ComponentName mComponentName; + /** * Creates an enforcing admin with the given params. */ @@ -46,6 +52,21 @@ public final class EnforcingAdmin implements Parcelable { mPackageName = Objects.requireNonNull(packageName); mAuthority = Objects.requireNonNull(authority); mUserHandle = Objects.requireNonNull(userHandle); + mComponentName = null; + } + + /** + * Creates an enforcing admin with the given params. + * + * @hide + */ + public EnforcingAdmin( + @NonNull String packageName, @NonNull Authority authority, + @NonNull UserHandle userHandle, @Nullable ComponentName componentName) { + mPackageName = Objects.requireNonNull(packageName); + mAuthority = Objects.requireNonNull(authority); + mUserHandle = Objects.requireNonNull(userHandle); + mComponentName = componentName; } private EnforcingAdmin(Parcel source) { @@ -53,6 +74,7 @@ public final class EnforcingAdmin implements Parcelable { mUserHandle = new UserHandle(source.readInt()); mAuthority = Objects.requireNonNull( source.readParcelable(Authority.class.getClassLoader())); + mComponentName = source.readParcelable(ComponentName.class.getClassLoader()); } /** @@ -86,7 +108,8 @@ public final class EnforcingAdmin implements Parcelable { EnforcingAdmin other = (EnforcingAdmin) o; return Objects.equals(mPackageName, other.mPackageName) && Objects.equals(mAuthority, other.mAuthority) - && Objects.equals(mUserHandle, other.mUserHandle); + && Objects.equals(mUserHandle, other.mUserHandle) + && Objects.equals(mComponentName, other.mComponentName); } @Override @@ -97,7 +120,7 @@ public final class EnforcingAdmin implements Parcelable { @Override public String toString() { return "EnforcingAdmin { mPackageName= " + mPackageName + ", mAuthority= " + mAuthority - + ", mUserHandle= " + mUserHandle + " }"; + + ", mUserHandle= " + mUserHandle + ", mComponentName= " + mComponentName + " }"; } @Override @@ -110,6 +133,7 @@ public final class EnforcingAdmin implements Parcelable { dest.writeString(mPackageName); dest.writeInt(mUserHandle.getIdentifier()); dest.writeParcelable(mAuthority, flags); + dest.writeParcelable(mComponentName, flags); } @NonNull diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl index 95ec89e5f444de12ab70feef480bc59536d442f7..c49b820b9e378ed3a253e74df1f262e150d705b0 100644 --- a/core/java/android/app/admin/IDevicePolicyManager.aidl +++ b/core/java/android/app/admin/IDevicePolicyManager.aidl @@ -54,6 +54,7 @@ import android.security.keystore.ParcelableKeyGenParameterSpec; import android.telephony.data.ApnSetting; import com.android.internal.infra.AndroidFuture; import android.app.admin.DevicePolicyState; +import android.app.admin.EnforcingAdmin; import java.util.List; @@ -274,6 +275,7 @@ interface IDevicePolicyManager { Intent createAdminSupportIntent(in String restriction); Bundle getEnforcingAdminAndUserDetails(int userId,String restriction); + List getEnforcingAdminsForRestriction(int userId,String restriction); boolean setApplicationHidden(in ComponentName admin, in String callerPackage, in String packageName, boolean hidden, boolean parent); boolean isApplicationHidden(in ComponentName admin, in String callerPackage, in String packageName, boolean parent); diff --git a/core/java/android/app/admin/Provisioning_OWNERS b/core/java/android/app/admin/Provisioning_OWNERS index fa0a1f09bfc8daa70736652c3c276100a4b1176a..8f71fc0c4c05adc812c97852357c0b4162933420 100644 --- a/core/java/android/app/admin/Provisioning_OWNERS +++ b/core/java/android/app/admin/Provisioning_OWNERS @@ -1,4 +1,4 @@ # Assign bugs to android-enterprise-triage@google.com -mdb.ae-provisioning-reviews@google.com +ae-provisioning-reviews@google.com +petuska@google.com #{LAST_RESORT_SUGGESTION} file:EnterprisePlatform_OWNERS -petuska@google.com #{LAST_RESORT_SUGGESTION} \ No newline at end of file diff --git a/core/java/android/app/assist/AssistStructure.java b/core/java/android/app/assist/AssistStructure.java index d66fca8945f15e15b3f1122016cffba0872818d6..ed0f872bf9bcc1e88a14dc676cfb30082745350a 100644 --- a/core/java/android/app/assist/AssistStructure.java +++ b/core/java/android/app/assist/AssistStructure.java @@ -2495,7 +2495,8 @@ public class AssistStructure implements Parcelable { + ", hints=" + Arrays.toString(node.getAutofillHints()) + ", value=" + node.getAutofillValue() + ", sanitized=" + node.isSanitized() - + ", important=" + node.getImportantForAutofill()); + + ", important=" + node.getImportantForAutofill() + + ", visibility=" + node.getVisibility()); } final int NCHILDREN = node.getChildCount(); diff --git a/core/java/android/app/search/SearchSession.java b/core/java/android/app/search/SearchSession.java index 0dbd81ee507d979feaabd3b3d7539b3f4f31e48a..99b64a05b5e2beeb3bc2e10765b02b5edadd3ad6 100644 --- a/core/java/android/app/search/SearchSession.java +++ b/core/java/android/app/search/SearchSession.java @@ -104,7 +104,7 @@ public final class SearchSession implements AutoCloseable { mInterface = android.app.search.ISearchUiManager.Stub.asInterface(b); mSessionId = new SearchSessionId( context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUserId()); - // b/175527717 whitelist possible clients of this API + // b/175527717 allowlist possible clients of this API searchContext.setPackageName(context.getPackageName()); try { mInterface.createSearchSession(searchContext, mSessionId, mToken); diff --git a/core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java b/core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java index 1c490be0838183a74915cab3c0b2b72dd20edd70..c2c54278a84e3f20494c21875f637204fec72ee4 100644 --- a/core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java +++ b/core/java/android/app/servertransaction/ActivityConfigurationChangeItem.java @@ -23,6 +23,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityThread.ActivityClientRecord; import android.app.ClientTransactionHandler; +import android.content.Context; import android.content.res.CompatibilityInfo; import android.content.res.Configuration; import android.os.IBinder; @@ -40,29 +41,37 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { private Configuration mConfiguration; @Override - public void preExecute(android.app.ClientTransactionHandler client, IBinder token) { + public void preExecute(@NonNull ClientTransactionHandler client, @Nullable IBinder token) { CompatibilityInfo.applyOverrideScaleIfNeeded(mConfiguration); // Notify the client of an upcoming change in the token configuration. This ensures that // batches of config change items only process the newest configuration. - client.updatePendingActivityConfiguration(token, mConfiguration); + client.updatePendingActivityConfiguration(getActivityToken(), mConfiguration); } @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @Nullable ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { // TODO(lifecycler): detect if PIP or multi-window mode changed and report it here. Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityConfigChanged"); client.handleActivityConfigurationChanged(r, mConfiguration, INVALID_DISPLAY); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } + @Nullable + @Override + public Context getContextToUpdate(@NonNull ClientTransactionHandler client, + @Nullable IBinder token) { + return client.getActivity(getActivityToken()); + } // ObjectPoolItem implementation private ActivityConfigurationChangeItem() {} /** Obtain an instance initialized with provided params. */ - public static ActivityConfigurationChangeItem obtain(@NonNull Configuration config) { + @NonNull + public static ActivityConfigurationChangeItem obtain(@NonNull IBinder activityToken, + @NonNull Configuration config) { if (config == null) { throw new IllegalArgumentException("Config must not be null."); } @@ -72,6 +81,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { if (instance == null) { instance = new ActivityConfigurationChangeItem(); } + instance.setActivityToken(activityToken); instance.mConfiguration = config; return instance; @@ -79,6 +89,7 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { @Override public void recycle() { + super.recycle(); mConfiguration = Configuration.EMPTY; ObjectPool.recycle(this); } @@ -88,32 +99,34 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeTypedObject(mConfiguration, flags); } /** Read from Parcel. */ - private ActivityConfigurationChangeItem(Parcel in) { + private ActivityConfigurationChangeItem(@NonNull Parcel in) { + super(in); mConfiguration = in.readTypedObject(Configuration.CREATOR); } public static final @NonNull Creator CREATOR = - new Creator() { - public ActivityConfigurationChangeItem createFromParcel(Parcel in) { - return new ActivityConfigurationChangeItem(in); - } + new Creator<>() { + public ActivityConfigurationChangeItem createFromParcel(@NonNull Parcel in) { + return new ActivityConfigurationChangeItem(in); + } - public ActivityConfigurationChangeItem[] newArray(int size) { - return new ActivityConfigurationChangeItem[size]; - } - }; + public ActivityConfigurationChangeItem[] newArray(int size) { + return new ActivityConfigurationChangeItem[size]; + } + }; @Override public boolean equals(@Nullable Object o) { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final ActivityConfigurationChangeItem other = (ActivityConfigurationChangeItem) o; @@ -122,11 +135,15 @@ public class ActivityConfigurationChangeItem extends ActivityTransactionItem { @Override public int hashCode() { - return mConfiguration.hashCode(); + int result = 17; + result = 31 * result + super.hashCode(); + result = 31 * result + Objects.hashCode(mConfiguration); + return result; } @Override public String toString() { - return "ActivityConfigurationChange{config=" + mConfiguration + "}"; + return "ActivityConfigurationChange{" + super.toString() + + ",config=" + mConfiguration + "}"; } } diff --git a/core/java/android/app/servertransaction/ActivityLifecycleItem.java b/core/java/android/app/servertransaction/ActivityLifecycleItem.java index cadb6606b1bedb3447f5294cc1016abc625436ec..b34f6788fb6014f0e29ca18c222ada189b10e8ff 100644 --- a/core/java/android/app/servertransaction/ActivityLifecycleItem.java +++ b/core/java/android/app/servertransaction/ActivityLifecycleItem.java @@ -17,6 +17,8 @@ package android.app.servertransaction; import android.annotation.IntDef; +import android.annotation.NonNull; +import android.os.Parcel; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -50,12 +52,13 @@ public abstract class ActivityLifecycleItem extends ActivityTransactionItem { public static final int ON_DESTROY = 6; public static final int ON_RESTART = 7; + ActivityLifecycleItem() {} + + ActivityLifecycleItem(@NonNull Parcel in) { + super(in); + } + /** A final lifecycle state that an activity should reach. */ @LifecycleState public abstract int getTargetState(); - - /** Called by subclasses to make sure base implementation is cleaned up */ - @Override - public void recycle() { - } } diff --git a/core/java/android/app/servertransaction/ActivityRelaunchItem.java b/core/java/android/app/servertransaction/ActivityRelaunchItem.java index a8b058ac3583d2f06d3af9e65e6053299c2d8f3e..491d0260f6fb54991c9c86f660269ebd131b64cf 100644 --- a/core/java/android/app/servertransaction/ActivityRelaunchItem.java +++ b/core/java/android/app/servertransaction/ActivityRelaunchItem.java @@ -56,18 +56,18 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { private ActivityClientRecord mActivityClientRecord; @Override - public void preExecute(ClientTransactionHandler client, IBinder token) { + public void preExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token) { // The local config is already scaled so only apply if this item is from server side. if (!client.isExecutingLocalTransaction()) { CompatibilityInfo.applyOverrideScaleIfNeeded(mConfig); } - mActivityClientRecord = client.prepareRelaunchActivity(token, mPendingResults, + mActivityClientRecord = client.prepareRelaunchActivity(getActivityToken(), mPendingResults, mPendingNewIntents, mConfigChanges, mConfig, mPreserveWindow); } @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { if (mActivityClientRecord == null) { if (DEBUG_ORDER) Slog.d(TAG, "Activity relaunch cancelled"); return; @@ -78,9 +78,9 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } @Override - public void postExecute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { - final ActivityClientRecord r = getActivityClientRecord(client, token); + public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, + @NonNull PendingTransactionActions pendingActions) { + final ActivityClientRecord r = getActivityClientRecord(client); client.reportRelaunch(r); } @@ -89,13 +89,16 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { private ActivityRelaunchItem() {} /** Obtain an instance initialized with provided params. */ - public static ActivityRelaunchItem obtain(List pendingResults, - List pendingNewIntents, int configChanges, MergedConfiguration config, - boolean preserveWindow) { + @NonNull + public static ActivityRelaunchItem obtain(@NonNull IBinder activityToken, + @Nullable List pendingResults, + @Nullable List pendingNewIntents, int configChanges, + @NonNull MergedConfiguration config, boolean preserveWindow) { ActivityRelaunchItem instance = ObjectPool.obtain(ActivityRelaunchItem.class); if (instance == null) { instance = new ActivityRelaunchItem(); } + instance.setActivityToken(activityToken); instance.mPendingResults = pendingResults; instance.mPendingNewIntents = pendingNewIntents; instance.mConfigChanges = configChanges; @@ -107,6 +110,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public void recycle() { + super.recycle(); mPendingResults = null; mPendingNewIntents = null; mConfigChanges = 0; @@ -121,7 +125,8 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeTypedList(mPendingResults, flags); dest.writeTypedList(mPendingNewIntents, flags); dest.writeInt(mConfigChanges); @@ -130,7 +135,8 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } /** Read from Parcel. */ - private ActivityRelaunchItem(Parcel in) { + private ActivityRelaunchItem(@NonNull Parcel in) { + super(in); mPendingResults = in.createTypedArrayList(ResultInfo.CREATOR); mPendingNewIntents = in.createTypedArrayList(ReferrerIntent.CREATOR); mConfigChanges = in.readInt(); @@ -139,22 +145,22 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { } public static final @NonNull Creator CREATOR = - new Creator() { - public ActivityRelaunchItem createFromParcel(Parcel in) { - return new ActivityRelaunchItem(in); - } + new Creator<>() { + public ActivityRelaunchItem createFromParcel(@NonNull Parcel in) { + return new ActivityRelaunchItem(in); + } - public ActivityRelaunchItem[] newArray(int size) { - return new ActivityRelaunchItem[size]; - } - }; + public ActivityRelaunchItem[] newArray(int size) { + return new ActivityRelaunchItem[size]; + } + }; @Override public boolean equals(@Nullable Object o) { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final ActivityRelaunchItem other = (ActivityRelaunchItem) o; @@ -167,6 +173,7 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + Objects.hashCode(mPendingResults); result = 31 * result + Objects.hashCode(mPendingNewIntents); result = 31 * result + mConfigChanges; @@ -177,8 +184,11 @@ public class ActivityRelaunchItem extends ActivityTransactionItem { @Override public String toString() { - return "ActivityRelaunchItem{pendingResults=" + mPendingResults - + ",pendingNewIntents=" + mPendingNewIntents + ",configChanges=" + mConfigChanges - + ",config=" + mConfig + ",preserveWindow" + mPreserveWindow + "}"; + return "ActivityRelaunchItem{" + super.toString() + + ",pendingResults=" + mPendingResults + + ",pendingNewIntents=" + mPendingNewIntents + + ",configChanges=" + mConfigChanges + + ",config=" + mConfig + + ",preserveWindow" + mPreserveWindow + "}"; } } diff --git a/core/java/android/app/servertransaction/ActivityResultItem.java b/core/java/android/app/servertransaction/ActivityResultItem.java index 27d104b592844c45fa49a3d0be68c836d0964b05..24fced4981d617311eb89f5a08aed579f8262863 100644 --- a/core/java/android/app/servertransaction/ActivityResultItem.java +++ b/core/java/android/app/servertransaction/ActivityResultItem.java @@ -30,6 +30,7 @@ import android.compat.annotation.ChangeId; import android.compat.annotation.EnabledAfter; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; +import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.os.Trace; @@ -61,24 +62,26 @@ public class ActivityResultItem extends ActivityTransactionItem { } @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityDeliverResult"); client.handleSendResult(r, mResultInfoList, "ACTIVITY_RESULT"); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } - // ObjectPoolItem implementation private ActivityResultItem() {} /** Obtain an instance initialized with provided params. */ - public static ActivityResultItem obtain(List resultInfoList) { + @NonNull + public static ActivityResultItem obtain(@NonNull IBinder activityToken, + @NonNull List resultInfoList) { ActivityResultItem instance = ObjectPool.obtain(ActivityResultItem.class); if (instance == null) { instance = new ActivityResultItem(); } + instance.setActivityToken(activityToken); instance.mResultInfoList = resultInfoList; return instance; @@ -86,41 +89,43 @@ public class ActivityResultItem extends ActivityTransactionItem { @Override public void recycle() { + super.recycle(); mResultInfoList = null; ObjectPool.recycle(this); } - // Parcelable implementation /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeTypedList(mResultInfoList, flags); } /** Read from Parcel. */ - private ActivityResultItem(Parcel in) { + private ActivityResultItem(@NonNull Parcel in) { + super(in); mResultInfoList = in.createTypedArrayList(ResultInfo.CREATOR); } public static final @NonNull Parcelable.Creator CREATOR = - new Parcelable.Creator() { - public ActivityResultItem createFromParcel(Parcel in) { - return new ActivityResultItem(in); - } + new Parcelable.Creator<>() { + public ActivityResultItem createFromParcel(@NonNull Parcel in) { + return new ActivityResultItem(in); + } - public ActivityResultItem[] newArray(int size) { - return new ActivityResultItem[size]; - } - }; + public ActivityResultItem[] newArray(int size) { + return new ActivityResultItem[size]; + } + }; @Override public boolean equals(@Nullable Object o) { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final ActivityResultItem other = (ActivityResultItem) o; @@ -129,11 +134,15 @@ public class ActivityResultItem extends ActivityTransactionItem { @Override public int hashCode() { - return mResultInfoList.hashCode(); + int result = 17; + result = 31 * result + super.hashCode(); + result = 31 * result + Objects.hashCode(mResultInfoList); + return result; } @Override public String toString() { - return "ActivityResultItem{resultInfoList=" + mResultInfoList + "}"; + return "ActivityResultItem{" + super.toString() + + ",resultInfoList=" + mResultInfoList + "}"; } } diff --git a/core/java/android/app/servertransaction/ActivityTransactionItem.java b/core/java/android/app/servertransaction/ActivityTransactionItem.java index 469a9bfe59ef10b8af17862c1317745dcc4a8790..0f8879e1429be04d08eccee4a78f3bd794125f4f 100644 --- a/core/java/android/app/servertransaction/ActivityTransactionItem.java +++ b/core/java/android/app/servertransaction/ActivityTransactionItem.java @@ -18,13 +18,18 @@ package android.app.servertransaction; import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE; +import android.annotation.CallSuper; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.ActivityThread.ActivityClientRecord; import android.app.ClientTransactionHandler; import android.os.IBinder; +import android.os.Parcel; import com.android.internal.annotations.VisibleForTesting; +import java.util.Objects; + /** * An activity-targeting callback message to a client that can be scheduled and executed. * It also provides nullity-free version of @@ -37,11 +42,16 @@ import com.android.internal.annotations.VisibleForTesting; * @hide */ public abstract class ActivityTransactionItem extends ClientTransactionItem { - @Override - public final void execute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { - final ActivityClientRecord r = getActivityClientRecord(client, token); + /** Target client activity. */ + private IBinder mActivityToken; + + ActivityTransactionItem() {} + + @Override + public final void execute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, + @NonNull PendingTransactionActions pendingActions) { + final ActivityClientRecord r = getActivityClientRecord(client); execute(client, r, pendingActions); } @@ -51,25 +61,80 @@ public abstract class ActivityTransactionItem extends ClientTransactionItem { */ @VisibleForTesting(visibility = PACKAGE) public abstract void execute(@NonNull ClientTransactionHandler client, - @NonNull ActivityClientRecord r, PendingTransactionActions pendingActions); + @NonNull ActivityClientRecord r, @NonNull PendingTransactionActions pendingActions); /** - * Gets the {@link ActivityClientRecord} instance that corresponds to the provided token. + * Gets the {@link ActivityClientRecord} instance that this transaction item is for. * @param client Target client handler. - * @param token Target activity token. - * @return The {@link ActivityClientRecord} instance that corresponds to the provided token. + * @return The {@link ActivityClientRecord} instance that this transaction item is for. */ - @NonNull ActivityClientRecord getActivityClientRecord( - @NonNull ClientTransactionHandler client, IBinder token) { - final ActivityClientRecord r = client.getActivityClient(token); + @NonNull + final ActivityClientRecord getActivityClientRecord(@NonNull ClientTransactionHandler client) { + final ActivityClientRecord r = client.getActivityClient(getActivityToken()); if (r == null) { throw new IllegalArgumentException("Activity client record must not be null to execute " + "transaction item: " + this); } - if (client.getActivity(token) == null) { + if (client.getActivity(getActivityToken()) == null) { throw new IllegalArgumentException("Activity must not be null to execute " + "transaction item: " + this); } return r; } + + @VisibleForTesting(visibility = PACKAGE) + @NonNull + @Override + public IBinder getActivityToken() { + return mActivityToken; + } + + void setActivityToken(@NonNull IBinder activityToken) { + mActivityToken = activityToken; + } + + // To be overridden + + ActivityTransactionItem(@NonNull Parcel in) { + mActivityToken = in.readStrongBinder(); + } + + @CallSuper + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeStrongBinder(mActivityToken); + } + + @CallSuper + @Override + public void recycle() { + mActivityToken = null; + } + + // Subclass must override and call super.equals to compare the mActivityToken. + @SuppressWarnings("EqualsGetClass") + @CallSuper + @Override + public boolean equals(@Nullable Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + final ActivityTransactionItem other = (ActivityTransactionItem) o; + return Objects.equals(mActivityToken, other.mActivityToken); + } + + @CallSuper + @Override + public int hashCode() { + return Objects.hashCode(mActivityToken); + } + + @CallSuper + @Override + public String toString() { + return "mActivityToken=" + mActivityToken; + } } diff --git a/core/java/android/app/servertransaction/ClientTransactionItem.java b/core/java/android/app/servertransaction/ClientTransactionItem.java index b159f336cd85066420b87a09ec4cc7f7be3221b5..30fc104a71b754bf946f913ef35dcd6ef0cfca6f 100644 --- a/core/java/android/app/servertransaction/ClientTransactionItem.java +++ b/core/java/android/app/servertransaction/ClientTransactionItem.java @@ -19,15 +19,24 @@ package android.app.servertransaction; import static android.app.servertransaction.ActivityLifecycleItem.LifecycleState; import static android.app.servertransaction.ActivityLifecycleItem.UNDEFINED; +import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.app.ClientTransactionHandler; +import android.content.Context; +import android.os.IBinder; import android.os.Parcelable; +import com.android.internal.annotations.VisibleForTesting; + /** * A callback message to a client that can be scheduled and executed. * Examples of these might be activity configuration change, multi-window mode change, activity * result delivery etc. * * @see ClientTransaction - * @see com.android.server.am.ClientLifecycleManager + * @see com.android.server.wm.ClientLifecycleManager * @hide */ public abstract class ClientTransactionItem implements BaseClientRequest, Parcelable { @@ -42,6 +51,26 @@ public abstract class ClientTransactionItem implements BaseClientRequest, Parcel return true; } + /** + * If this {@link ClientTransactionItem} is updating configuration, returns the {@link Context} + * it is updating; otherwise, returns {@code null}. + */ + @Nullable + public Context getContextToUpdate(@NonNull ClientTransactionHandler client, + @NonNull IBinder token) { + return null; + } + + /** + * Returns the activity token if this transaction item is activity-targeting. Otherwise, + * returns {@code null}. + */ + @VisibleForTesting(visibility = PACKAGE) + @Nullable + public IBinder getActivityToken() { + return null; + } + // Parcelable @Override diff --git a/core/java/android/app/servertransaction/ClientTransactionListenerController.java b/core/java/android/app/servertransaction/ClientTransactionListenerController.java new file mode 100644 index 0000000000000000000000000000000000000000..e2aee839b0c3ef33afebac472b8d863be827c365 --- /dev/null +++ b/core/java/android/app/servertransaction/ClientTransactionListenerController.java @@ -0,0 +1,142 @@ +/* + * Copyright (C) 2023 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 static com.android.window.flags.Flags.syncWindowConfigUpdateFlag; + +import static java.util.Objects.requireNonNull; + +import android.annotation.CallbackExecutor; +import android.annotation.NonNull; +import android.os.Process; +import android.util.ArrayMap; + +import com.android.internal.annotations.GuardedBy; +import com.android.internal.annotations.VisibleForTesting; + +import java.util.ArrayList; +import java.util.concurrent.Executor; +import java.util.function.IntConsumer; + +/** + * Singleton controller to manage listeners to individual {@link ClientTransaction}. + * + * TODO(b/260873529) make as TestApi to allow CTS. + * @hide + */ +public class ClientTransactionListenerController { + + private static ClientTransactionListenerController sController; + + private final Object mLock = new Object(); + + /** + * Mapping from client registered listener for display change to the corresponding + * {@link Executor} to invoke the listener on. + * @see #registerDisplayChangeListener(IntConsumer, Executor) + */ + @GuardedBy("mLock") + private final ArrayMap mDisplayChangeListeners = new ArrayMap<>(); + + private final ArrayList mTmpDisplayChangeListeners = new ArrayList<>(); + + /** Gets the singleton controller. */ + @NonNull + public static ClientTransactionListenerController getInstance() { + synchronized (ClientTransactionListenerController.class) { + if (sController == null) { + sController = new ClientTransactionListenerController(); + } + return sController; + } + } + + /** Creates a new instance for test only. */ + @VisibleForTesting + @NonNull + public static ClientTransactionListenerController createInstanceForTesting() { + return new ClientTransactionListenerController(); + } + + private ClientTransactionListenerController() {} + + /** + * Registers a new listener for display change. It will be invoked when receives a + * {@link ClientTransaction} that is updating display-related window configuration, such as + * bounds and rotation. + * + * WHen triggered, the listener will be invoked with the logical display id that was changed. + * + * @param listener the listener to invoke when receives a transaction with Display change. + * @param executor the executor on which callback method will be invoked. + */ + public void registerDisplayChangeListener(@NonNull IntConsumer listener, + @NonNull @CallbackExecutor Executor executor) { + if (!isSyncWindowConfigUpdateFlagEnabled()) { + return; + } + requireNonNull(listener); + requireNonNull(executor); + synchronized (mLock) { + mDisplayChangeListeners.put(listener, executor); + } + } + + /** + * Unregisters the listener for display change that was previously registered through + * {@link #registerDisplayChangeListener}. + */ + public void unregisterDisplayChangeListener(@NonNull IntConsumer listener) { + if (!isSyncWindowConfigUpdateFlagEnabled()) { + return; + } + synchronized (mLock) { + mDisplayChangeListeners.remove(listener); + } + } + + /** + * Called when receives a {@link ClientTransaction} that is updating display-related + * window configuration. + */ + public void onDisplayChanged(int displayId) { + if (!isSyncWindowConfigUpdateFlagEnabled()) { + return; + } + synchronized (mLock) { + // Make a copy of the list to avoid listener removal during callback. + mTmpDisplayChangeListeners.addAll(mDisplayChangeListeners.keySet()); + final int num = mTmpDisplayChangeListeners.size(); + try { + for (int i = 0; i < num; i++) { + final IntConsumer listener = mTmpDisplayChangeListeners.get(i); + final Executor executor = mDisplayChangeListeners.get(listener); + executor.execute(() -> listener.accept(displayId)); + } + } finally { + mTmpDisplayChangeListeners.clear(); + } + } + } + + /** Whether {@link #syncWindowConfigUpdateFlag} feature flag is enabled. */ + @VisibleForTesting + public boolean isSyncWindowConfigUpdateFlagEnabled() { + // Can't read flag from isolated process. + return !Process.isIsolated() && syncWindowConfigUpdateFlag(); + } +} diff --git a/core/java/android/app/servertransaction/ConfigurationChangeItem.java b/core/java/android/app/servertransaction/ConfigurationChangeItem.java index a563bbc9c70d6f5bb9af17f05f18545aefc38972..f72e2e04deca800b1ad0b4bb2a4495449d3de3c4 100644 --- a/core/java/android/app/servertransaction/ConfigurationChangeItem.java +++ b/core/java/android/app/servertransaction/ConfigurationChangeItem.java @@ -16,8 +16,11 @@ package android.app.servertransaction; +import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.ActivityThread; import android.app.ClientTransactionHandler; +import android.content.Context; import android.content.res.CompatibilityInfo; import android.content.res.Configuration; import android.os.IBinder; @@ -35,24 +38,30 @@ public class ConfigurationChangeItem extends ClientTransactionItem { private int mDeviceId; @Override - public void preExecute(android.app.ClientTransactionHandler client, IBinder token) { + public void preExecute(@NonNull ClientTransactionHandler client, @Nullable IBinder token) { CompatibilityInfo.applyOverrideScaleIfNeeded(mConfiguration); client.updatePendingConfiguration(mConfiguration); } @Override - public void execute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @Nullable IBinder token, + @NonNull PendingTransactionActions pendingActions) { client.handleConfigurationChanged(mConfiguration, mDeviceId); } + @Nullable + @Override + public Context getContextToUpdate(@NonNull ClientTransactionHandler client, + @Nullable IBinder token) { + return ActivityThread.currentApplication(); + } // ObjectPoolItem implementation private ConfigurationChangeItem() {} /** Obtain an instance initialized with provided params. */ - public static ConfigurationChangeItem obtain(Configuration config, int deviceId) { + public static ConfigurationChangeItem obtain(@NonNull Configuration config, int deviceId) { ConfigurationChangeItem instance = ObjectPool.obtain(ConfigurationChangeItem.class); if (instance == null) { instance = new ConfigurationChangeItem(); diff --git a/core/java/android/app/servertransaction/DestroyActivityItem.java b/core/java/android/app/servertransaction/DestroyActivityItem.java index a074286a4ecdd5cbe93702ddbb725ce95a7f8fa9..a327a99435ceb4dc24c205c111a4264e18e58852 100644 --- a/core/java/android/app/servertransaction/DestroyActivityItem.java +++ b/core/java/android/app/servertransaction/DestroyActivityItem.java @@ -36,13 +36,13 @@ public class DestroyActivityItem extends ActivityLifecycleItem { private int mConfigChanges; @Override - public void preExecute(ClientTransactionHandler client, IBinder token) { - client.getActivitiesToBeDestroyed().put(token, this); + public void preExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token) { + client.getActivitiesToBeDestroyed().put(getActivityToken(), this); } @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityDestroy"); client.handleDestroyActivity(r, mFinished, mConfigChanges, false /* getNonConfigInstance */, "DestroyActivityItem"); @@ -54,17 +54,19 @@ public class DestroyActivityItem extends ActivityLifecycleItem { return ON_DESTROY; } - // ObjectPoolItem implementation private DestroyActivityItem() {} /** Obtain an instance initialized with provided params. */ - public static DestroyActivityItem obtain(boolean finished, int configChanges) { + @NonNull + public static DestroyActivityItem obtain(@NonNull IBinder activityToken, boolean finished, + int configChanges) { DestroyActivityItem instance = ObjectPool.obtain(DestroyActivityItem.class); if (instance == null) { instance = new DestroyActivityItem(); } + instance.setActivityToken(activityToken); instance.mFinished = finished; instance.mConfigChanges = configChanges; @@ -79,25 +81,25 @@ public class DestroyActivityItem extends ActivityLifecycleItem { ObjectPool.recycle(this); } - // Parcelable implementation /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeBoolean(mFinished); dest.writeInt(mConfigChanges); } /** Read from Parcel. */ - private DestroyActivityItem(Parcel in) { + private DestroyActivityItem(@NonNull Parcel in) { + super(in); mFinished = in.readBoolean(); mConfigChanges = in.readInt(); } - public static final @NonNull Creator CREATOR = - new Creator() { - public DestroyActivityItem createFromParcel(Parcel in) { + public static final @NonNull Creator CREATOR = new Creator<>() { + public DestroyActivityItem createFromParcel(@NonNull Parcel in) { return new DestroyActivityItem(in); } @@ -111,7 +113,7 @@ public class DestroyActivityItem extends ActivityLifecycleItem { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final DestroyActivityItem other = (DestroyActivityItem) o; @@ -121,6 +123,7 @@ public class DestroyActivityItem extends ActivityLifecycleItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + (mFinished ? 1 : 0); result = 31 * result + mConfigChanges; return result; @@ -128,7 +131,8 @@ public class DestroyActivityItem extends ActivityLifecycleItem { @Override public String toString() { - return "DestroyActivityItem{finished=" + mFinished + ",mConfigChanges=" - + mConfigChanges + "}"; + return "DestroyActivityItem{" + super.toString() + + ",finished=" + mFinished + + ",mConfigChanges=" + mConfigChanges + "}"; } } diff --git a/core/java/android/app/servertransaction/EnterPipRequestedItem.java b/core/java/android/app/servertransaction/EnterPipRequestedItem.java index 7dcae654e1d0cb0251fa9e70c5701c3e9db442a6..743653f4896e1d22ffe21a927d3abc02d94f998a 100644 --- a/core/java/android/app/servertransaction/EnterPipRequestedItem.java +++ b/core/java/android/app/servertransaction/EnterPipRequestedItem.java @@ -16,9 +16,10 @@ package android.app.servertransaction; -import android.annotation.Nullable; +import android.annotation.NonNull; import android.app.ActivityThread.ActivityClientRecord; import android.app.ClientTransactionHandler; +import android.os.IBinder; import android.os.Parcel; /** @@ -28,8 +29,8 @@ import android.os.Parcel; public final class EnterPipRequestedItem extends ActivityTransactionItem { @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { client.handlePictureInPictureRequested(r); } @@ -38,28 +39,32 @@ public final class EnterPipRequestedItem extends ActivityTransactionItem { private EnterPipRequestedItem() {} /** Obtain an instance initialized with provided params. */ - public static EnterPipRequestedItem obtain() { + @NonNull + public static EnterPipRequestedItem obtain(@NonNull IBinder activityToken) { EnterPipRequestedItem instance = ObjectPool.obtain(EnterPipRequestedItem.class); if (instance == null) { instance = new EnterPipRequestedItem(); } + instance.setActivityToken(activityToken); return instance; } @Override public void recycle() { + super.recycle(); ObjectPool.recycle(this); } // Parcelable implementation - @Override - public void writeToParcel(Parcel dest, int flags) { } + private EnterPipRequestedItem(@NonNull Parcel in) { + super(in); + } - public static final @android.annotation.NonNull Creator CREATOR = - new Creator() { - public EnterPipRequestedItem createFromParcel(Parcel in) { - return new EnterPipRequestedItem(); + public static final @NonNull Creator CREATOR = + new Creator<>() { + public EnterPipRequestedItem createFromParcel(@NonNull Parcel in) { + return new EnterPipRequestedItem(in); } public EnterPipRequestedItem[] newArray(int size) { @@ -67,13 +72,8 @@ public final class EnterPipRequestedItem extends ActivityTransactionItem { } }; - @Override - public boolean equals(@Nullable Object o) { - return this == o; - } - @Override public String toString() { - return "EnterPipRequestedItem{}"; + return "EnterPipRequestedItem{" + super.toString() + "}"; } } diff --git a/core/java/android/app/servertransaction/LaunchActivityItem.java b/core/java/android/app/servertransaction/LaunchActivityItem.java index 5833f1b872548011029d785e9b61affd4ea76340..9b37a35cdb8fc047fc5d65c01e38968bb03f77aa 100644 --- a/core/java/android/app/servertransaction/LaunchActivityItem.java +++ b/core/java/android/app/servertransaction/LaunchActivityItem.java @@ -18,6 +18,8 @@ package android.app.servertransaction; import static android.os.Trace.TRACE_TAG_ACTIVITY_MANAGER; +import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE; + import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityClient; @@ -39,6 +41,7 @@ import android.os.Parcel; import android.os.PersistableBundle; import android.os.Trace; +import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IVoiceInteractor; import com.android.internal.content.ReferrerIntent; @@ -51,6 +54,7 @@ import java.util.Objects; */ public class LaunchActivityItem extends ClientTransactionItem { + private IBinder mActivityToken; @UnsupportedAppUsage private Intent mIntent; private int mIdent; @@ -80,7 +84,7 @@ public class LaunchActivityItem extends ClientTransactionItem { private IActivityClientController mActivityClientController; @Override - public void preExecute(ClientTransactionHandler client, IBinder token) { + public void preExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token) { client.countLaunchingActivities(1); client.updateProcessState(mProcState, false); CompatibilityInfo.applyOverrideScaleIfNeeded(mCurConfig); @@ -92,10 +96,10 @@ public class LaunchActivityItem extends ClientTransactionItem { } @Override - public void execute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityStart"); - ActivityClientRecord r = new ActivityClientRecord(token, mIntent, mIdent, mInfo, + ActivityClientRecord r = new ActivityClientRecord(mActivityToken, mIntent, mIdent, mInfo, mOverrideConfig, mReferrer, mVoiceInteractor, mState, mPersistentState, mPendingResults, mPendingNewIntents, mActivityOptions, mIsForward, mProfilerInfo, client, mAssistToken, mShareableActivityToken, mLaunchedFromBubble, @@ -105,31 +109,34 @@ public class LaunchActivityItem extends ClientTransactionItem { } @Override - public void postExecute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { + public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, + @NonNull PendingTransactionActions pendingActions) { client.countLaunchingActivities(-1); } - // ObjectPoolItem implementation private LaunchActivityItem() {} /** Obtain an instance initialized with provided params. */ - public static LaunchActivityItem obtain(Intent intent, int ident, ActivityInfo info, - Configuration curConfig, Configuration overrideConfig, int deviceId, - String referrer, IVoiceInteractor voiceInteractor, int procState, Bundle state, - PersistableBundle persistentState, List pendingResults, - List pendingNewIntents, ActivityOptions activityOptions, - boolean isForward, ProfilerInfo profilerInfo, IBinder assistToken, - IActivityClientController activityClientController, IBinder shareableActivityToken, - boolean launchedFromBubble, IBinder taskFragmentToken) { + @NonNull + public static LaunchActivityItem obtain(@NonNull IBinder activityToken, @NonNull Intent intent, + int ident, @NonNull ActivityInfo info, @NonNull Configuration curConfig, + @NonNull Configuration overrideConfig, int deviceId, @Nullable String referrer, + @Nullable IVoiceInteractor voiceInteractor, int procState, @Nullable Bundle state, + @Nullable PersistableBundle persistentState, @Nullable List pendingResults, + @Nullable List pendingNewIntents, + @Nullable ActivityOptions activityOptions, + boolean isForward, @Nullable ProfilerInfo profilerInfo, @NonNull IBinder assistToken, + @Nullable IActivityClientController activityClientController, + @NonNull IBinder shareableActivityToken, boolean launchedFromBubble, + @Nullable IBinder taskFragmentToken) { LaunchActivityItem instance = ObjectPool.obtain(LaunchActivityItem.class); if (instance == null) { instance = new LaunchActivityItem(); } - setValues(instance, intent, ident, info, curConfig, overrideConfig, deviceId, referrer, - voiceInteractor, procState, state, persistentState, pendingResults, + setValues(instance, activityToken, intent, ident, info, curConfig, overrideConfig, deviceId, + referrer, voiceInteractor, procState, state, persistentState, pendingResults, pendingNewIntents, activityOptions, isForward, profilerInfo, assistToken, activityClientController, shareableActivityToken, launchedFromBubble, taskFragmentToken); @@ -137,19 +144,26 @@ public class LaunchActivityItem extends ClientTransactionItem { return instance; } + @VisibleForTesting(visibility = PACKAGE) + @NonNull + @Override + public IBinder getActivityToken() { + return mActivityToken; + } + @Override public void recycle() { - setValues(this, null, 0, null, null, null, 0, null, null, 0, null, null, null, null, + setValues(this, null, null, 0, null, null, null, 0, null, null, 0, null, null, null, null, null, false, null, null, null, null, false, null); ObjectPool.recycle(this); } - // Parcelable implementation /** Write from Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeStrongBinder(mActivityToken); dest.writeTypedObject(mIntent, flags); dest.writeInt(mIdent); dest.writeTypedObject(mInfo, flags); @@ -174,8 +188,8 @@ public class LaunchActivityItem extends ClientTransactionItem { } /** Read from Parcel. */ - private LaunchActivityItem(Parcel in) { - setValues(this, in.readTypedObject(Intent.CREATOR), in.readInt(), + private LaunchActivityItem(@NonNull Parcel in) { + setValues(this, in.readStrongBinder(), in.readTypedObject(Intent.CREATOR), in.readInt(), in.readTypedObject(ActivityInfo.CREATOR), in.readTypedObject(Configuration.CREATOR), in.readTypedObject(Configuration.CREATOR), in.readInt(), in.readString(), IVoiceInteractor.Stub.asInterface(in.readStrongBinder()), in.readInt(), @@ -192,9 +206,8 @@ public class LaunchActivityItem extends ClientTransactionItem { in.readStrongBinder()); } - public static final @NonNull Creator CREATOR = - new Creator() { - public LaunchActivityItem createFromParcel(Parcel in) { + public static final @NonNull Creator CREATOR = new Creator<>() { + public LaunchActivityItem createFromParcel(@NonNull Parcel in) { return new LaunchActivityItem(in); } @@ -214,7 +227,8 @@ public class LaunchActivityItem extends ClientTransactionItem { final LaunchActivityItem other = (LaunchActivityItem) o; final boolean intentsEqual = (mIntent == null && other.mIntent == null) || (mIntent != null && mIntent.filterEquals(other.mIntent)); - return intentsEqual && mIdent == other.mIdent + return intentsEqual + && Objects.equals(mActivityToken, other.mActivityToken) && mIdent == other.mIdent && activityInfoEqual(other.mInfo) && Objects.equals(mCurConfig, other.mCurConfig) && Objects.equals(mOverrideConfig, other.mOverrideConfig) && mDeviceId == other.mDeviceId @@ -234,6 +248,7 @@ public class LaunchActivityItem extends ClientTransactionItem { @Override public int hashCode() { int result = 17; + result = 31 * result + Objects.hashCode(mActivityToken); result = 31 * result + mIntent.filterHashCode(); result = 31 * result + mIdent; result = 31 * result + Objects.hashCode(mCurConfig); @@ -254,7 +269,7 @@ public class LaunchActivityItem extends ClientTransactionItem { return result; } - private boolean activityInfoEqual(ActivityInfo other) { + private boolean activityInfoEqual(@Nullable ActivityInfo other) { if (mInfo == null) { return other == null; } @@ -270,36 +285,51 @@ public class LaunchActivityItem extends ClientTransactionItem { * unparceling if a customized class loader is not set to the bundle. So the hash code is * simply determined by the bundle is empty or not. */ - private static int getRoughBundleHashCode(BaseBundle bundle) { + private static int getRoughBundleHashCode(@Nullable BaseBundle bundle) { return (bundle == null || bundle.isDefinitelyEmpty()) ? 0 : 1; } /** Compares the bundles without unparceling them (avoid BadParcelableException). */ - private static boolean areBundlesEqualRoughly(BaseBundle a, BaseBundle b) { + private static boolean areBundlesEqualRoughly(@Nullable BaseBundle a, @Nullable BaseBundle b) { return getRoughBundleHashCode(a) == getRoughBundleHashCode(b); } @Override public String toString() { - return "LaunchActivityItem{intent=" + mIntent + ",ident=" + mIdent + ",info=" + mInfo - + ",curConfig=" + mCurConfig + ",overrideConfig=" + mOverrideConfig - + ",deviceId=" + mDeviceId + ",referrer=" + mReferrer + ",procState=" + mProcState - + ",state=" + mState + ",persistentState=" + mPersistentState - + ",pendingResults=" + mPendingResults + ",pendingNewIntents=" + mPendingNewIntents - + ",options=" + mActivityOptions + ",profilerInfo=" + mProfilerInfo - + ",assistToken=" + mAssistToken + ",shareableActivityToken=" - + mShareableActivityToken + "}"; + return "LaunchActivityItem{activityToken=" + mActivityToken + + ",intent=" + mIntent + + ",ident=" + mIdent + + ",info=" + mInfo + + ",curConfig=" + mCurConfig + + ",overrideConfig=" + mOverrideConfig + + ",deviceId=" + mDeviceId + + ",referrer=" + mReferrer + + ",procState=" + mProcState + + ",state=" + mState + + ",persistentState=" + mPersistentState + + ",pendingResults=" + mPendingResults + + ",pendingNewIntents=" + mPendingNewIntents + + ",options=" + mActivityOptions + + ",profilerInfo=" + mProfilerInfo + + ",assistToken=" + mAssistToken + + ",shareableActivityToken=" + mShareableActivityToken + "}"; } // Using the same method to set and clear values to make sure we don't forget anything - private static void setValues(LaunchActivityItem instance, Intent intent, int ident, - ActivityInfo info, Configuration curConfig, Configuration overrideConfig, int deviceId, - String referrer, IVoiceInteractor voiceInteractor, - int procState, Bundle state, PersistableBundle persistentState, - List pendingResults, List pendingNewIntents, - ActivityOptions activityOptions, boolean isForward, ProfilerInfo profilerInfo, - IBinder assistToken, IActivityClientController activityClientController, - IBinder shareableActivityToken, boolean launchedFromBubble, IBinder taskFragmentToken) { + private static void setValues(@Nullable LaunchActivityItem instance, + @Nullable IBinder activityToken, @Nullable Intent intent, int ident, + @Nullable ActivityInfo info, @Nullable Configuration curConfig, + @Nullable Configuration overrideConfig, int deviceId, + @Nullable String referrer, @Nullable IVoiceInteractor voiceInteractor, + int procState, @Nullable Bundle state, @Nullable PersistableBundle persistentState, + @Nullable List pendingResults, + @Nullable List pendingNewIntents, + @Nullable ActivityOptions activityOptions, boolean isForward, + @Nullable ProfilerInfo profilerInfo, @Nullable IBinder assistToken, + @Nullable IActivityClientController activityClientController, + @Nullable IBinder shareableActivityToken, boolean launchedFromBubble, + @Nullable IBinder taskFragmentToken) { + instance.mActivityToken = activityToken; instance.mIntent = intent; instance.mIdent = ident; instance.mInfo = info; diff --git a/core/java/android/app/servertransaction/MoveToDisplayItem.java b/core/java/android/app/servertransaction/MoveToDisplayItem.java index f13bd748f4864ee1d049f6159fceb83055df1f0b..fb57bed94160a3dbba6bacab653018bb63179f70 100644 --- a/core/java/android/app/servertransaction/MoveToDisplayItem.java +++ b/core/java/android/app/servertransaction/MoveToDisplayItem.java @@ -40,37 +40,34 @@ public class MoveToDisplayItem extends ActivityTransactionItem { private Configuration mConfiguration; @Override - public void preExecute(ClientTransactionHandler client, IBinder token) { + public void preExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token) { CompatibilityInfo.applyOverrideScaleIfNeeded(mConfiguration); // Notify the client of an upcoming change in the token configuration. This ensures that // batches of config change items only process the newest configuration. - client.updatePendingActivityConfiguration(token, mConfiguration); + client.updatePendingActivityConfiguration(getActivityToken(), mConfiguration); } @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityMovedToDisplay"); client.handleActivityConfigurationChanged(r, mConfiguration, mTargetDisplayId); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } - // ObjectPoolItem implementation private MoveToDisplayItem() {} /** Obtain an instance initialized with provided params. */ - public static MoveToDisplayItem obtain(int targetDisplayId, + @NonNull + public static MoveToDisplayItem obtain(@NonNull IBinder activityToken, int targetDisplayId, @NonNull Configuration configuration) { - if (configuration == null) { - throw new IllegalArgumentException("Configuration must not be null"); - } - MoveToDisplayItem instance = ObjectPool.obtain(MoveToDisplayItem.class); if (instance == null) { instance = new MoveToDisplayItem(); } + instance.setActivityToken(activityToken); instance.mTargetDisplayId = targetDisplayId; instance.mConfiguration = configuration; @@ -79,30 +76,31 @@ public class MoveToDisplayItem extends ActivityTransactionItem { @Override public void recycle() { + super.recycle(); mTargetDisplayId = 0; mConfiguration = Configuration.EMPTY; ObjectPool.recycle(this); } - // Parcelable implementation /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeInt(mTargetDisplayId); dest.writeTypedObject(mConfiguration, flags); } /** Read from Parcel. */ - private MoveToDisplayItem(Parcel in) { + private MoveToDisplayItem(@NonNull Parcel in) { + super(in); mTargetDisplayId = in.readInt(); mConfiguration = in.readTypedObject(Configuration.CREATOR); } - public static final @NonNull Creator CREATOR = - new Creator() { - public MoveToDisplayItem createFromParcel(Parcel in) { + public static final @NonNull Creator CREATOR = new Creator<>() { + public MoveToDisplayItem createFromParcel(@NonNull Parcel in) { return new MoveToDisplayItem(in); } @@ -116,7 +114,7 @@ public class MoveToDisplayItem extends ActivityTransactionItem { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final MoveToDisplayItem other = (MoveToDisplayItem) o; @@ -127,6 +125,7 @@ public class MoveToDisplayItem extends ActivityTransactionItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + mTargetDisplayId; result = 31 * result + mConfiguration.hashCode(); return result; @@ -134,7 +133,8 @@ public class MoveToDisplayItem extends ActivityTransactionItem { @Override public String toString() { - return "MoveToDisplayItem{targetDisplayId=" + mTargetDisplayId + return "MoveToDisplayItem{" + super.toString() + + ",targetDisplayId=" + mTargetDisplayId + ",configuration=" + mConfiguration + "}"; } } diff --git a/core/java/android/app/servertransaction/NewIntentItem.java b/core/java/android/app/servertransaction/NewIntentItem.java index 723fa012c90280d993ab1046c4deed2f32a1b6df..8e995aa05a48cbc2820a322df64302fb56a65f8b 100644 --- a/core/java/android/app/servertransaction/NewIntentItem.java +++ b/core/java/android/app/servertransaction/NewIntentItem.java @@ -25,6 +25,7 @@ import android.app.ActivityThread.ActivityClientRecord; import android.app.ClientTransactionHandler; import android.compat.annotation.UnsupportedAppUsage; import android.os.Build; +import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.os.Trace; @@ -50,24 +51,26 @@ public class NewIntentItem extends ActivityTransactionItem { } @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "activityNewIntent"); client.handleNewIntent(r, mIntents); Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER); } - // ObjectPoolItem implementation private NewIntentItem() {} /** Obtain an instance initialized with provided params. */ - public static NewIntentItem obtain(List intents, boolean resume) { + @NonNull + public static NewIntentItem obtain(@NonNull IBinder activityToken, + @NonNull List intents, boolean resume) { NewIntentItem instance = ObjectPool.obtain(NewIntentItem.class); if (instance == null) { instance = new NewIntentItem(); } + instance.setActivityToken(activityToken); instance.mIntents = intents; instance.mResume = resume; @@ -76,44 +79,46 @@ public class NewIntentItem extends ActivityTransactionItem { @Override public void recycle() { + super.recycle(); mIntents = null; mResume = false; ObjectPool.recycle(this); } - // Parcelable implementation /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeBoolean(mResume); dest.writeTypedList(mIntents, flags); } /** Read from Parcel. */ - private NewIntentItem(Parcel in) { + private NewIntentItem(@NonNull Parcel in) { + super(in); mResume = in.readBoolean(); mIntents = in.createTypedArrayList(ReferrerIntent.CREATOR); } public static final @NonNull Parcelable.Creator CREATOR = - new Parcelable.Creator() { - public NewIntentItem createFromParcel(Parcel in) { - return new NewIntentItem(in); - } + new Parcelable.Creator<>() { + public NewIntentItem createFromParcel(@NonNull Parcel in) { + return new NewIntentItem(in); + } - public NewIntentItem[] newArray(int size) { - return new NewIntentItem[size]; - } - }; + public NewIntentItem[] newArray(int size) { + return new NewIntentItem[size]; + } + }; @Override public boolean equals(@Nullable Object o) { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final NewIntentItem other = (NewIntentItem) o; @@ -123,6 +128,7 @@ public class NewIntentItem extends ActivityTransactionItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + (mResume ? 1 : 0); result = 31 * result + mIntents.hashCode(); return result; @@ -130,6 +136,8 @@ public class NewIntentItem extends ActivityTransactionItem { @Override public String toString() { - return "NewIntentItem{intents=" + mIntents + ",resume=" + mResume + "}"; + return "NewIntentItem{" + super.toString() + + ",intents=" + mIntents + + ",resume=" + mResume + "}"; } } diff --git a/core/java/android/app/servertransaction/PauseActivityItem.java b/core/java/android/app/servertransaction/PauseActivityItem.java index 965e761ebfb3b69d3c64fdc9650717132c615ee2..a8e6772b4e32211a29a8ee19ea086b379c153d65 100644 --- a/core/java/android/app/servertransaction/PauseActivityItem.java +++ b/core/java/android/app/servertransaction/PauseActivityItem.java @@ -42,8 +42,8 @@ public class PauseActivityItem extends ActivityLifecycleItem { private boolean mAutoEnteringPip; @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityPause"); client.handlePauseActivity(r, mFinished, mUserLeaving, mConfigChanges, mAutoEnteringPip, pendingActions, "PAUSE_ACTIVITY_ITEM"); @@ -56,27 +56,28 @@ public class PauseActivityItem extends ActivityLifecycleItem { } @Override - public void postExecute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { + public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, + @NonNull PendingTransactionActions pendingActions) { if (mDontReport) { return; } // TODO(lifecycler): Use interface callback instead of actual implementation. - ActivityClient.getInstance().activityPaused(token); + ActivityClient.getInstance().activityPaused(getActivityToken()); } - // ObjectPoolItem implementation private PauseActivityItem() {} /** Obtain an instance initialized with provided params. */ - public static PauseActivityItem obtain(boolean finished, boolean userLeaving, int configChanges, - boolean dontReport, boolean autoEnteringPip) { + @NonNull + public static PauseActivityItem obtain(@NonNull IBinder activityToken, boolean finished, + boolean userLeaving, int configChanges, boolean dontReport, boolean autoEnteringPip) { PauseActivityItem instance = ObjectPool.obtain(PauseActivityItem.class); if (instance == null) { instance = new PauseActivityItem(); } + instance.setActivityToken(activityToken); instance.mFinished = finished; instance.mUserLeaving = userLeaving; instance.mConfigChanges = configChanges; @@ -87,18 +88,10 @@ public class PauseActivityItem extends ActivityLifecycleItem { } /** Obtain an instance initialized with default params. */ - public static PauseActivityItem obtain() { - PauseActivityItem instance = ObjectPool.obtain(PauseActivityItem.class); - if (instance == null) { - instance = new PauseActivityItem(); - } - instance.mFinished = false; - instance.mUserLeaving = false; - instance.mConfigChanges = 0; - instance.mDontReport = true; - instance.mAutoEnteringPip = false; - - return instance; + @NonNull + public static PauseActivityItem obtain(@NonNull IBinder activityToken) { + return obtain(activityToken, false /* finished */, false /* userLeaving */, + 0 /* configChanges */, true /* dontReport */, false /* autoEnteringPip*/); } @Override @@ -116,7 +109,8 @@ public class PauseActivityItem extends ActivityLifecycleItem { /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeBoolean(mFinished); dest.writeBoolean(mUserLeaving); dest.writeInt(mConfigChanges); @@ -125,7 +119,8 @@ public class PauseActivityItem extends ActivityLifecycleItem { } /** Read from Parcel. */ - private PauseActivityItem(Parcel in) { + private PauseActivityItem(@NonNull Parcel in) { + super(in); mFinished = in.readBoolean(); mUserLeaving = in.readBoolean(); mConfigChanges = in.readInt(); @@ -133,9 +128,8 @@ public class PauseActivityItem extends ActivityLifecycleItem { mAutoEnteringPip = in.readBoolean(); } - public static final @NonNull Creator CREATOR = - new Creator() { - public PauseActivityItem createFromParcel(Parcel in) { + public static final @NonNull Creator CREATOR = new Creator<>() { + public PauseActivityItem createFromParcel(@NonNull Parcel in) { return new PauseActivityItem(in); } @@ -149,7 +143,7 @@ public class PauseActivityItem extends ActivityLifecycleItem { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final PauseActivityItem other = (PauseActivityItem) o; @@ -161,6 +155,7 @@ public class PauseActivityItem extends ActivityLifecycleItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + (mFinished ? 1 : 0); result = 31 * result + (mUserLeaving ? 1 : 0); result = 31 * result + mConfigChanges; @@ -171,8 +166,11 @@ public class PauseActivityItem extends ActivityLifecycleItem { @Override public String toString() { - return "PauseActivityItem{finished=" + mFinished + ",userLeaving=" + mUserLeaving - + ",configChanges=" + mConfigChanges + ",dontReport=" + mDontReport + return "PauseActivityItem{" + super.toString() + + ",finished=" + mFinished + + ",userLeaving=" + mUserLeaving + + ",configChanges=" + mConfigChanges + + ",dontReport=" + mDontReport + ",autoEnteringPip=" + mAutoEnteringPip + "}"; } } diff --git a/core/java/android/app/servertransaction/PipStateTransactionItem.java b/core/java/android/app/servertransaction/PipStateTransactionItem.java index 167f5a43b1b1ebee182e0178cdf983b83cbe976b..30289ef9f7944a473f32d43b83efab6eca250515 100644 --- a/core/java/android/app/servertransaction/PipStateTransactionItem.java +++ b/core/java/android/app/servertransaction/PipStateTransactionItem.java @@ -16,12 +16,16 @@ package android.app.servertransaction; +import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityThread.ActivityClientRecord; import android.app.ClientTransactionHandler; import android.app.PictureInPictureUiState; +import android.os.IBinder; import android.os.Parcel; +import java.util.Objects; + /** * Request an activity to enter picture-in-picture mode. * @hide @@ -31,8 +35,8 @@ public final class PipStateTransactionItem extends ActivityTransactionItem { private PictureInPictureUiState mPipState; @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { client.handlePictureInPictureStateChanged(r, mPipState); } @@ -41,11 +45,14 @@ public final class PipStateTransactionItem extends ActivityTransactionItem { private PipStateTransactionItem() {} /** Obtain an instance initialized with provided params. */ - public static PipStateTransactionItem obtain(PictureInPictureUiState pipState) { + @NonNull + public static PipStateTransactionItem obtain(@NonNull IBinder activityToken, + @NonNull PictureInPictureUiState pipState) { PipStateTransactionItem instance = ObjectPool.obtain(PipStateTransactionItem.class); if (instance == null) { instance = new PipStateTransactionItem(); } + instance.setActivityToken(activityToken); instance.mPipState = pipState; return instance; @@ -53,6 +60,7 @@ public final class PipStateTransactionItem extends ActivityTransactionItem { @Override public void recycle() { + super.recycle(); mPipState = null; ObjectPool.recycle(this); } @@ -61,33 +69,49 @@ public final class PipStateTransactionItem extends ActivityTransactionItem { /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); mPipState.writeToParcel(dest, flags); } /** Read from Parcel. */ - private PipStateTransactionItem(Parcel in) { + private PipStateTransactionItem(@NonNull Parcel in) { + super(in); mPipState = PictureInPictureUiState.CREATOR.createFromParcel(in); } - public static final @android.annotation.NonNull Creator CREATOR = - new Creator() { - public PipStateTransactionItem createFromParcel(Parcel in) { - return new PipStateTransactionItem(in); - } + public static final @NonNull Creator CREATOR = new Creator<>() { + public PipStateTransactionItem createFromParcel(@NonNull Parcel in) { + return new PipStateTransactionItem(in); + } - public PipStateTransactionItem[] newArray(int size) { - return new PipStateTransactionItem[size]; - } - }; + public PipStateTransactionItem[] newArray(int size) { + return new PipStateTransactionItem[size]; + } + }; @Override public boolean equals(@Nullable Object o) { - return this == o; + if (this == o) { + return true; + } + if (!super.equals(o)) { + return false; + } + final PipStateTransactionItem other = (PipStateTransactionItem) o; + return Objects.equals(mPipState, other.mPipState); + } + + @Override + public int hashCode() { + int result = 17; + result = 31 * result + super.hashCode(); + result = 31 * result + Objects.hashCode(mPipState); + return result; } @Override public String toString() { - return "PipStateTransactionItem{}"; + return "PipStateTransactionItem{" + super.toString() + "}"; } } diff --git a/core/java/android/app/servertransaction/RefreshCallbackItem.java b/core/java/android/app/servertransaction/RefreshCallbackItem.java index 74abab22b0a6ae08363e95eb502198301bf713d3..00128f0d298f05d93d9d1a36768e65a7f57bea7a 100644 --- a/core/java/android/app/servertransaction/RefreshCallbackItem.java +++ b/core/java/android/app/servertransaction/RefreshCallbackItem.java @@ -48,12 +48,12 @@ public class RefreshCallbackItem extends ActivityTransactionItem { @Override public void execute(@NonNull ClientTransactionHandler client, - @NonNull ActivityClientRecord r, PendingTransactionActions pendingActions) {} + @NonNull ActivityClientRecord r, @NonNull PendingTransactionActions pendingActions) {} @Override - public void postExecute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { - final ActivityClientRecord r = getActivityClientRecord(client, token); + public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, + @NonNull PendingTransactionActions pendingActions) { + final ActivityClientRecord r = getActivityClientRecord(client); client.reportRefresh(r); } @@ -71,6 +71,7 @@ public class RefreshCallbackItem extends ActivityTransactionItem { @Override public void recycle() { + super.recycle(); ObjectPool.recycle(this); } @@ -79,7 +80,9 @@ public class RefreshCallbackItem extends ActivityTransactionItem { * @param postExecutionState indicating whether refresh should happen using the * "stopped -> resumed" cycle or "paused -> resumed" cycle. */ - public static RefreshCallbackItem obtain(@LifecycleState int postExecutionState) { + @NonNull + public static RefreshCallbackItem obtain(@NonNull IBinder activityToken, + @LifecycleState int postExecutionState) { if (postExecutionState != ON_STOP && postExecutionState != ON_PAUSE) { throw new IllegalArgumentException( "Only ON_STOP or ON_PAUSE are allowed as a post execution state for " @@ -90,6 +93,7 @@ public class RefreshCallbackItem extends ActivityTransactionItem { if (instance == null) { instance = new RefreshCallbackItem(); } + instance.setActivityToken(activityToken); instance.mPostExecutionState = postExecutionState; return instance; } @@ -99,7 +103,8 @@ public class RefreshCallbackItem extends ActivityTransactionItem { // Parcelable implementation @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeInt(mPostExecutionState); } @@ -108,7 +113,7 @@ public class RefreshCallbackItem extends ActivityTransactionItem { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final RefreshCallbackItem other = (RefreshCallbackItem) o; @@ -118,23 +123,25 @@ public class RefreshCallbackItem extends ActivityTransactionItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + mPostExecutionState; return result; } @Override public String toString() { - return "RefreshCallbackItem{mPostExecutionState=" + mPostExecutionState + "}"; + return "RefreshCallbackItem{" + super.toString() + + ",mPostExecutionState=" + mPostExecutionState + "}"; } - private RefreshCallbackItem(Parcel in) { + private RefreshCallbackItem(@NonNull Parcel in) { + super(in); mPostExecutionState = in.readInt(); } - public static final @NonNull Creator CREATOR = - new Creator() { + public static final @NonNull Creator CREATOR = new Creator<>() { - public RefreshCallbackItem createFromParcel(Parcel in) { + public RefreshCallbackItem createFromParcel(@NonNull Parcel in) { return new RefreshCallbackItem(in); } diff --git a/core/java/android/app/servertransaction/ResumeActivityItem.java b/core/java/android/app/servertransaction/ResumeActivityItem.java index 222f8ca61e098d8f4a2e65a4db698205477b33c6..b11e73cbef96a4fcd89a206f8cdb9d8f4d222532 100644 --- a/core/java/android/app/servertransaction/ResumeActivityItem.java +++ b/core/java/android/app/servertransaction/ResumeActivityItem.java @@ -44,15 +44,15 @@ public class ResumeActivityItem extends ActivityLifecycleItem { private boolean mShouldSendCompatFakeFocus; @Override - public void preExecute(ClientTransactionHandler client, IBinder token) { + public void preExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token) { if (mUpdateProcState) { client.updateProcessState(mProcState, false); } } @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityResume"); client.handleResumeActivity(r, true /* finalStateRequest */, mIsForward, mShouldSendCompatFakeFocus, "RESUME_ACTIVITY"); @@ -60,10 +60,11 @@ public class ResumeActivityItem extends ActivityLifecycleItem { } @Override - public void postExecute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { + public void postExecute(@NonNull ClientTransactionHandler client, IBinder token, + @NonNull PendingTransactionActions pendingActions) { // TODO(lifecycler): Use interface callback instead of actual implementation. - ActivityClient.getInstance().activityResumed(token, client.isHandleSplashScreenExit(token)); + ActivityClient.getInstance().activityResumed(getActivityToken(), + client.isHandleSplashScreenExit(getActivityToken())); } @Override @@ -71,18 +72,19 @@ public class ResumeActivityItem extends ActivityLifecycleItem { return ON_RESUME; } - // ObjectPoolItem implementation private ResumeActivityItem() {} /** Obtain an instance initialized with provided params. */ - public static ResumeActivityItem obtain(int procState, boolean isForward, - boolean shouldSendCompatFakeFocus) { + @NonNull + public static ResumeActivityItem obtain(@NonNull IBinder activityToken, int procState, + boolean isForward, boolean shouldSendCompatFakeFocus) { ResumeActivityItem instance = ObjectPool.obtain(ResumeActivityItem.class); if (instance == null) { instance = new ResumeActivityItem(); } + instance.setActivityToken(activityToken); instance.mProcState = procState; instance.mUpdateProcState = true; instance.mIsForward = isForward; @@ -92,11 +94,14 @@ public class ResumeActivityItem extends ActivityLifecycleItem { } /** Obtain an instance initialized with provided params. */ - public static ResumeActivityItem obtain(boolean isForward, boolean shouldSendCompatFakeFocus) { + @NonNull + public static ResumeActivityItem obtain(@NonNull IBinder activityToken, boolean isForward, + boolean shouldSendCompatFakeFocus) { ResumeActivityItem instance = ObjectPool.obtain(ResumeActivityItem.class); if (instance == null) { instance = new ResumeActivityItem(); } + instance.setActivityToken(activityToken); instance.mProcState = ActivityManager.PROCESS_STATE_UNKNOWN; instance.mUpdateProcState = false; instance.mIsForward = isForward; @@ -115,12 +120,12 @@ public class ResumeActivityItem extends ActivityLifecycleItem { ObjectPool.recycle(this); } - // Parcelable implementation /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeInt(mProcState); dest.writeBoolean(mUpdateProcState); dest.writeBoolean(mIsForward); @@ -128,15 +133,15 @@ public class ResumeActivityItem extends ActivityLifecycleItem { } /** Read from Parcel. */ - private ResumeActivityItem(Parcel in) { + private ResumeActivityItem(@NonNull Parcel in) { + super(in); mProcState = in.readInt(); mUpdateProcState = in.readBoolean(); mIsForward = in.readBoolean(); mShouldSendCompatFakeFocus = in.readBoolean(); } - public static final @NonNull Creator CREATOR = - new Creator() { + public static final @NonNull Creator CREATOR = new Creator<>() { public ResumeActivityItem createFromParcel(Parcel in) { return new ResumeActivityItem(in); } @@ -151,7 +156,7 @@ public class ResumeActivityItem extends ActivityLifecycleItem { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final ResumeActivityItem other = (ResumeActivityItem) o; @@ -163,6 +168,7 @@ public class ResumeActivityItem extends ActivityLifecycleItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + mProcState; result = 31 * result + (mUpdateProcState ? 1 : 0); result = 31 * result + (mIsForward ? 1 : 0); @@ -172,8 +178,10 @@ public class ResumeActivityItem extends ActivityLifecycleItem { @Override public String toString() { - return "ResumeActivityItem{procState=" + mProcState - + ",updateProcState=" + mUpdateProcState + ",isForward=" + mIsForward + return "ResumeActivityItem{" + super.toString() + + ",procState=" + mProcState + + ",updateProcState=" + mUpdateProcState + + ",isForward=" + mIsForward + ",shouldSendCompatFakeFocus=" + mShouldSendCompatFakeFocus + "}"; } } diff --git a/core/java/android/app/servertransaction/StartActivityItem.java b/core/java/android/app/servertransaction/StartActivityItem.java index 15f65f6d9d26b3c8504bb39f8e2a7d753da76d12..8b98b218404302162eaf3c2d55a239e4927b7dd5 100644 --- a/core/java/android/app/servertransaction/StartActivityItem.java +++ b/core/java/android/app/servertransaction/StartActivityItem.java @@ -23,6 +23,7 @@ import android.annotation.Nullable; import android.app.ActivityOptions; import android.app.ActivityThread.ActivityClientRecord; import android.app.ClientTransactionHandler; +import android.os.IBinder; import android.os.Parcel; import android.os.Trace; @@ -37,8 +38,8 @@ public class StartActivityItem extends ActivityLifecycleItem { private ActivityOptions mActivityOptions; @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "startActivityItem"); client.handleStartActivity(r, pendingActions, mActivityOptions); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); @@ -49,17 +50,19 @@ public class StartActivityItem extends ActivityLifecycleItem { return ON_START; } - // ObjectPoolItem implementation private StartActivityItem() {} /** Obtain an instance initialized with provided params. */ - public static StartActivityItem obtain(ActivityOptions activityOptions) { + @NonNull + public static StartActivityItem obtain(@NonNull IBinder activityToken, + @Nullable ActivityOptions activityOptions) { StartActivityItem instance = ObjectPool.obtain(StartActivityItem.class); if (instance == null) { instance = new StartActivityItem(); } + instance.setActivityToken(activityToken); instance.mActivityOptions = activityOptions; return instance; @@ -72,37 +75,37 @@ public class StartActivityItem extends ActivityLifecycleItem { ObjectPool.recycle(this); } - // Parcelable implementation /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeBundle(mActivityOptions != null ? mActivityOptions.toBundle() : null); } /** Read from Parcel. */ - private StartActivityItem(Parcel in) { + private StartActivityItem(@NonNull Parcel in) { + super(in); mActivityOptions = ActivityOptions.fromBundle(in.readBundle()); } - public static final @NonNull Creator CREATOR = - new Creator() { - public StartActivityItem createFromParcel(Parcel in) { - return new StartActivityItem(in); - } + public static final @NonNull Creator CREATOR = new Creator<>() { + public StartActivityItem createFromParcel(@NonNull Parcel in) { + return new StartActivityItem(in); + } - public StartActivityItem[] newArray(int size) { - return new StartActivityItem[size]; - } - }; + public StartActivityItem[] newArray(int size) { + return new StartActivityItem[size]; + } + }; @Override public boolean equals(@Nullable Object o) { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final StartActivityItem other = (StartActivityItem) o; @@ -112,13 +115,15 @@ public class StartActivityItem extends ActivityLifecycleItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + (mActivityOptions != null ? 1 : 0); return result; } @Override public String toString() { - return "StartActivityItem{options=" + mActivityOptions + "}"; + return "StartActivityItem{" + super.toString() + + ",options=" + mActivityOptions + "}"; } } diff --git a/core/java/android/app/servertransaction/StopActivityItem.java b/core/java/android/app/servertransaction/StopActivityItem.java index 7e9116dfdfc7b870f047d90033000f570d1ecc63..f4325670c4fc530fd797505cc37494f41ffa2c5b 100644 --- a/core/java/android/app/servertransaction/StopActivityItem.java +++ b/core/java/android/app/servertransaction/StopActivityItem.java @@ -37,8 +37,8 @@ public class StopActivityItem extends ActivityLifecycleItem { private int mConfigChanges; @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityStop"); client.handleStopActivity(r, mConfigChanges, pendingActions, true /* finalStateRequest */, "STOP_ACTIVITY_ITEM"); @@ -46,8 +46,8 @@ public class StopActivityItem extends ActivityLifecycleItem { } @Override - public void postExecute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { + public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, + @NonNull PendingTransactionActions pendingActions) { client.reportStop(pendingActions); } @@ -56,20 +56,22 @@ public class StopActivityItem extends ActivityLifecycleItem { return ON_STOP; } - // ObjectPoolItem implementation private StopActivityItem() {} /** * Obtain an instance initialized with provided params. + * @param activityToken the activity that stops. * @param configChanges Configuration pieces that changed. */ - public static StopActivityItem obtain(int configChanges) { + @NonNull + public static StopActivityItem obtain(@NonNull IBinder activityToken, int configChanges) { StopActivityItem instance = ObjectPool.obtain(StopActivityItem.class); if (instance == null) { instance = new StopActivityItem(); } + instance.setActivityToken(activityToken); instance.mConfigChanges = configChanges; return instance; @@ -82,23 +84,23 @@ public class StopActivityItem extends ActivityLifecycleItem { ObjectPool.recycle(this); } - // Parcelable implementation /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeInt(mConfigChanges); } /** Read from Parcel. */ - private StopActivityItem(Parcel in) { + private StopActivityItem(@NonNull Parcel in) { + super(in); mConfigChanges = in.readInt(); } - public static final @NonNull Creator CREATOR = - new Creator() { - public StopActivityItem createFromParcel(Parcel in) { + public static final @NonNull Creator CREATOR = new Creator<>() { + public StopActivityItem createFromParcel(@NonNull Parcel in) { return new StopActivityItem(in); } @@ -112,7 +114,7 @@ public class StopActivityItem extends ActivityLifecycleItem { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final StopActivityItem other = (StopActivityItem) o; @@ -122,12 +124,14 @@ public class StopActivityItem extends ActivityLifecycleItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + mConfigChanges; return result; } @Override public String toString() { - return "StopActivityItem{configChanges=" + mConfigChanges + "}"; + return "StopActivityItem{" + super.toString() + + ",configChanges=" + mConfigChanges + "}"; } } diff --git a/core/java/android/app/servertransaction/TopResumedActivityChangeItem.java b/core/java/android/app/servertransaction/TopResumedActivityChangeItem.java index 5cd3d68f03269731fd140c4a9a42c1fc0965539f..693599fa229c981206aade65ffd4c05fe2d0aaa7 100644 --- a/core/java/android/app/servertransaction/TopResumedActivityChangeItem.java +++ b/core/java/android/app/servertransaction/TopResumedActivityChangeItem.java @@ -35,16 +35,16 @@ public class TopResumedActivityChangeItem extends ActivityTransactionItem { private boolean mOnTop; @Override - public void execute(ClientTransactionHandler client, ActivityClientRecord r, - PendingTransactionActions pendingActions) { + public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityClientRecord r, + @NonNull PendingTransactionActions pendingActions) { Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "topResumedActivityChangeItem"); client.handleTopResumedActivityChanged(r, mOnTop, "topResumedActivityChangeItem"); Trace.traceEnd(TRACE_TAG_ACTIVITY_MANAGER); } @Override - public void postExecute(ClientTransactionHandler client, IBinder token, - PendingTransactionActions pendingActions) { + public void postExecute(@NonNull ClientTransactionHandler client, @NonNull IBinder token, + @NonNull PendingTransactionActions pendingActions) { if (mOnTop) { return; } @@ -58,18 +58,20 @@ public class TopResumedActivityChangeItem extends ActivityTransactionItem { ActivityClient.getInstance().activityTopResumedStateLost(); } - // ObjectPoolItem implementation private TopResumedActivityChangeItem() {} /** Obtain an instance initialized with provided params. */ - public static TopResumedActivityChangeItem obtain(boolean onTop) { + @NonNull + public static TopResumedActivityChangeItem obtain(@NonNull IBinder activityToken, + boolean onTop) { TopResumedActivityChangeItem instance = ObjectPool.obtain(TopResumedActivityChangeItem.class); if (instance == null) { instance = new TopResumedActivityChangeItem(); } + instance.setActivityToken(activityToken); instance.mOnTop = onTop; return instance; @@ -77,27 +79,28 @@ public class TopResumedActivityChangeItem extends ActivityTransactionItem { @Override public void recycle() { + super.recycle(); mOnTop = false; ObjectPool.recycle(this); } - // Parcelable implementation /** Write to Parcel. */ @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeBoolean(mOnTop); } /** Read from Parcel. */ - private TopResumedActivityChangeItem(Parcel in) { + private TopResumedActivityChangeItem(@NonNull Parcel in) { + super(in); mOnTop = in.readBoolean(); } - public static final @NonNull Creator CREATOR = - new Creator() { - public TopResumedActivityChangeItem createFromParcel(Parcel in) { + public static final @NonNull Creator CREATOR = new Creator<>() { + public TopResumedActivityChangeItem createFromParcel(@NonNull Parcel in) { return new TopResumedActivityChangeItem(in); } @@ -111,7 +114,7 @@ public class TopResumedActivityChangeItem extends ActivityTransactionItem { if (this == o) { return true; } - if (o == null || getClass() != o.getClass()) { + if (!super.equals(o)) { return false; } final TopResumedActivityChangeItem other = (TopResumedActivityChangeItem) o; @@ -121,12 +124,14 @@ public class TopResumedActivityChangeItem extends ActivityTransactionItem { @Override public int hashCode() { int result = 17; + result = 31 * result + super.hashCode(); result = 31 * result + (mOnTop ? 1 : 0); return result; } @Override public String toString() { - return "TopResumedActivityChangeItem{onTop=" + mOnTop + "}"; + return "TopResumedActivityChangeItem{" + super.toString() + + ",onTop=" + mOnTop + "}"; } } diff --git a/core/java/android/app/servertransaction/TransactionExecutor.java b/core/java/android/app/servertransaction/TransactionExecutor.java index bfab61f3ae90f02ee281af2c100f359b4c50fede..d080162e4b8c8598ab3cb7b33c0a3526ae91be87 100644 --- a/core/java/android/app/servertransaction/TransactionExecutor.java +++ b/core/java/android/app/servertransaction/TransactionExecutor.java @@ -16,6 +16,7 @@ package android.app.servertransaction; +import static android.app.WindowConfiguration.areConfigurationsEqualForDisplay; import static android.app.servertransaction.ActivityLifecycleItem.ON_CREATE; import static android.app.servertransaction.ActivityLifecycleItem.ON_DESTROY; import static android.app.servertransaction.ActivityLifecycleItem.ON_PAUSE; @@ -30,10 +31,16 @@ import static android.app.servertransaction.TransactionExecutorHelper.lastCallba import static android.app.servertransaction.TransactionExecutorHelper.tId; import static android.app.servertransaction.TransactionExecutorHelper.transactionToString; +import static com.android.window.flags.Flags.syncWindowConfigUpdateFlag; + +import android.annotation.NonNull; import android.app.ActivityThread.ActivityClientRecord; import android.app.ClientTransactionHandler; import android.content.Context; +import android.content.res.Configuration; import android.os.IBinder; +import android.os.Process; +import android.util.ArraySet; import android.util.IntArray; import android.util.Slog; @@ -51,12 +58,12 @@ public class TransactionExecutor { private static final boolean DEBUG_RESOLVER = false; private static final String TAG = "TransactionExecutor"; - private ClientTransactionHandler mTransactionHandler; - private PendingTransactionActions mPendingActions = new PendingTransactionActions(); - private TransactionExecutorHelper mHelper = new TransactionExecutorHelper(); + private final ClientTransactionHandler mTransactionHandler; + private final PendingTransactionActions mPendingActions = new PendingTransactionActions(); + private final TransactionExecutorHelper mHelper = new TransactionExecutorHelper(); /** Initialize an instance with transaction handler, that will execute all requested actions. */ - public TransactionExecutor(ClientTransactionHandler clientTransactionHandler) { + public TransactionExecutor(@NonNull ClientTransactionHandler clientTransactionHandler) { mTransactionHandler = clientTransactionHandler; } @@ -122,6 +129,9 @@ public class TransactionExecutor { // Index of the last callback that requests some post-execution state. final int lastCallbackRequestingState = lastCallbackRequestingState(transaction); + // Keep track of display ids whose Configuration got updated with this transaction. + ArraySet configUpdatedDisplays = null; + final int size = callbacks.size(); for (int i = 0; i < size; ++i) { final ClientTransactionItem item = callbacks.get(i); @@ -136,7 +146,29 @@ public class TransactionExecutor { } } + // Can't read flag from isolated process. + final boolean isSyncWindowConfigUpdateFlagEnabled = !Process.isIsolated() + && syncWindowConfigUpdateFlag(); + final Context configUpdatedContext = isSyncWindowConfigUpdateFlagEnabled + ? item.getContextToUpdate(mTransactionHandler, token) + : null; + final Configuration preExecutedConfig = configUpdatedContext != null + ? new Configuration(configUpdatedContext.getResources().getConfiguration()) + : null; + item.execute(mTransactionHandler, token, mPendingActions); + + if (configUpdatedContext != null) { + final Configuration postExecutedConfig = configUpdatedContext.getResources() + .getConfiguration(); + if (!areConfigurationsEqualForDisplay(postExecutedConfig, preExecutedConfig)) { + if (configUpdatedDisplays == null) { + configUpdatedDisplays = new ArraySet<>(); + } + configUpdatedDisplays.add(configUpdatedContext.getDisplayId()); + } + } + item.postExecute(mTransactionHandler, token, mPendingActions); if (r == null) { // Launch activity request will create an activity record. @@ -150,6 +182,16 @@ public class TransactionExecutor { cycleToPath(r, postExecutionState, shouldExcludeLastTransition, transaction); } } + + if (configUpdatedDisplays != null) { + final ClientTransactionListenerController controller = + ClientTransactionListenerController.getInstance(); + final int displayCount = configUpdatedDisplays.size(); + for (int i = 0; i < displayCount; i++) { + final int displayId = configUpdatedDisplays.valueAt(i); + controller.onDisplayChanged(displayId); + } + } } /** Transition to the final state if requested by the transaction. */ diff --git a/core/java/android/app/servertransaction/TransactionExecutorHelper.java b/core/java/android/app/servertransaction/TransactionExecutorHelper.java index baf2a4722dffab889cf89d755312b8cfb94ce039..0f9c517e291631e21abcd90fc0d80e52af3a2401 100644 --- a/core/java/android/app/servertransaction/TransactionExecutorHelper.java +++ b/core/java/android/app/servertransaction/TransactionExecutorHelper.java @@ -196,13 +196,13 @@ public class TransactionExecutorHelper { // Fall through to return the PAUSE item to ensure the activity is properly // resumed while relaunching. case ON_PAUSE: - lifecycleItem = PauseActivityItem.obtain(); + lifecycleItem = PauseActivityItem.obtain(r.token); break; case ON_STOP: - lifecycleItem = StopActivityItem.obtain(0 /* configChanges */); + lifecycleItem = StopActivityItem.obtain(r.token, 0 /* configChanges */); break; default: - lifecycleItem = ResumeActivityItem.obtain(false /* isForward */, + lifecycleItem = ResumeActivityItem.obtain(r.token, false /* isForward */, false /* shouldSendCompatFakeFocus */); break; } diff --git a/core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java b/core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java index 767fd28b8a2a9a28417c6b6e5c39affe0d0463ea..11947e9b11d8da0746b1c749f870c38541813a6b 100644 --- a/core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java +++ b/core/java/android/app/servertransaction/TransferSplashScreenViewStateItem.java @@ -20,10 +20,13 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityThread; import android.app.ClientTransactionHandler; +import android.os.IBinder; import android.os.Parcel; import android.view.SurfaceControl; import android.window.SplashScreenView.SplashScreenViewParcelable; +import java.util.Objects; + /** * Transfer a splash screen view to an Activity. * @hide @@ -36,36 +39,44 @@ public class TransferSplashScreenViewStateItem extends ActivityTransactionItem { @Override public void execute(@NonNull ClientTransactionHandler client, @NonNull ActivityThread.ActivityClientRecord r, - PendingTransactionActions pendingActions) { + @NonNull PendingTransactionActions pendingActions) { client.handleAttachSplashScreenView(r, mSplashScreenViewParcelable, mStartingWindowLeash); } @Override public void recycle() { + super.recycle(); + mSplashScreenViewParcelable = null; + mStartingWindowLeash = null; ObjectPool.recycle(this); } @Override - public void writeToParcel(Parcel dest, int flags) { + public void writeToParcel(@NonNull Parcel dest, int flags) { + super.writeToParcel(dest, flags); dest.writeTypedObject(mSplashScreenViewParcelable, flags); dest.writeTypedObject(mStartingWindowLeash, flags); } private TransferSplashScreenViewStateItem() {} - private TransferSplashScreenViewStateItem(Parcel in) { + + private TransferSplashScreenViewStateItem(@NonNull Parcel in) { + super(in); mSplashScreenViewParcelable = in.readTypedObject(SplashScreenViewParcelable.CREATOR); mStartingWindowLeash = in.readTypedObject(SurfaceControl.CREATOR); } /** Obtain an instance initialized with provided params. */ + @NonNull public static TransferSplashScreenViewStateItem obtain( - @Nullable SplashScreenViewParcelable parcelable, + @NonNull IBinder activityToken, @Nullable SplashScreenViewParcelable parcelable, @Nullable SurfaceControl startingWindowLeash) { TransferSplashScreenViewStateItem instance = ObjectPool.obtain(TransferSplashScreenViewStateItem.class); if (instance == null) { instance = new TransferSplashScreenViewStateItem(); } + instance.setActivityToken(activityToken); instance.mSplashScreenViewParcelable = parcelable; instance.mStartingWindowLeash = startingWindowLeash; @@ -73,8 +84,8 @@ public class TransferSplashScreenViewStateItem extends ActivityTransactionItem { } public static final @NonNull Creator CREATOR = - new Creator() { - public TransferSplashScreenViewStateItem createFromParcel(Parcel in) { + new Creator<>() { + public TransferSplashScreenViewStateItem createFromParcel(@NonNull Parcel in) { return new TransferSplashScreenViewStateItem(in); } @@ -82,4 +93,33 @@ public class TransferSplashScreenViewStateItem extends ActivityTransactionItem { return new TransferSplashScreenViewStateItem[size]; } }; + + @Override + public boolean equals(@Nullable Object o) { + if (this == o) { + return true; + } + if (!super.equals(o)) { + return false; + } + final TransferSplashScreenViewStateItem other = (TransferSplashScreenViewStateItem) o; + return Objects.equals(mSplashScreenViewParcelable, other.mSplashScreenViewParcelable) + && Objects.equals(mStartingWindowLeash, other.mStartingWindowLeash); + } + + @Override + public int hashCode() { + int result = 17; + result = 31 * result + super.hashCode(); + result = 31 * result + Objects.hashCode(mSplashScreenViewParcelable); + result = 31 * result + Objects.hashCode(mStartingWindowLeash); + return result; + } + + @Override + public String toString() { + return "TransferSplashScreenViewStateItem{" + super.toString() + + ",splashScreenViewParcelable=" + mSplashScreenViewParcelable + + ",startingWindowLeash=" + mStartingWindowLeash + "}"; + } } diff --git a/core/java/android/app/servertransaction/WindowContextInfoChangeItem.java b/core/java/android/app/servertransaction/WindowContextInfoChangeItem.java index 74721d5550811c1c7711f72ee98ca0d6b00d3b49..99824b000b70fb026549f593ca29a3e80e73e0d1 100644 --- a/core/java/android/app/servertransaction/WindowContextInfoChangeItem.java +++ b/core/java/android/app/servertransaction/WindowContextInfoChangeItem.java @@ -21,6 +21,7 @@ import static java.util.Objects.requireNonNull; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ClientTransactionHandler; +import android.content.Context; import android.content.res.Configuration; import android.os.IBinder; import android.os.Parcel; @@ -45,6 +46,13 @@ public class WindowContextInfoChangeItem extends ClientTransactionItem { client.handleWindowContextInfoChanged(mClientToken, mInfo); } + @Nullable + @Override + public Context getContextToUpdate(@NonNull ClientTransactionHandler client, + @Nullable IBinder token) { + return client.getWindowContext(mClientToken); + } + // ObjectPoolItem implementation private WindowContextInfoChangeItem() {} diff --git a/core/java/android/app/usage/UsageStatsManager.java b/core/java/android/app/usage/UsageStatsManager.java index ecf164394c315f2969af458e514d1363107ad659..2a10ed181576a1fa64d618f028134482d2028d70 100644 --- a/core/java/android/app/usage/UsageStatsManager.java +++ b/core/java/android/app/usage/UsageStatsManager.java @@ -1106,6 +1106,7 @@ public final class UsageStatsManager { *

This method is only for use by the system * @hide */ + @RequiresPermission(android.Manifest.permission.REPORT_USAGE_STATS) public void reportUserInteraction(@NonNull String packageName, int userId) { try { mService.reportUserInteraction(packageName, userId); @@ -1396,6 +1397,7 @@ public final class UsageStatsManager { * {@link UsageEvents} * @hide */ + @RequiresPermission(android.Manifest.permission.REPORT_USAGE_STATS) public void reportChooserSelection(String packageName, int userId, String contentType, String[] annotations, String action) { try { diff --git a/core/java/android/app/usage/flags.aconfig b/core/java/android/app/usage/flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..afe87de1dbf5f8c0072e0712d864815a3560513d --- /dev/null +++ b/core/java/android/app/usage/flags.aconfig @@ -0,0 +1,9 @@ +package: "android.app.usage" + +flag { + name: "user_interaction_type_api" + namespace: "power_optimization" + description: "Feature flag for user interaction event report/query API" + bug: "296061232" +} + diff --git a/core/java/android/appwidget/AppWidgetManager.java b/core/java/android/appwidget/AppWidgetManager.java index 3927b40fdc74ea16a2cb88cd07e752961d8f2444..3abe1d9494f03d5a2cb4b49a2941972008720723 100644 --- a/core/java/android/appwidget/AppWidgetManager.java +++ b/core/java/android/appwidget/AppWidgetManager.java @@ -24,6 +24,7 @@ import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.SystemService; import android.annotation.TestApi; +import android.annotation.UiThread; import android.annotation.UserIdInt; import android.app.IServiceConnection; import android.app.PendingIntent; @@ -39,6 +40,10 @@ import android.content.pm.ShortcutInfo; import android.os.Build; import android.os.Bundle; import android.os.Handler; +import android.os.HandlerExecutor; +import android.os.HandlerThread; +import android.os.Looper; +import android.os.Process; import android.os.RemoteException; import android.os.UserHandle; import android.util.DisplayMetrics; @@ -53,6 +58,7 @@ import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; /** * Updates AppWidget state; gets information about installed AppWidget providers and other @@ -475,6 +481,8 @@ public class AppWidgetManager { private static final String TAG = "AppWidgetManager"; + private static Executor sUpdateExecutor; + /** * An intent extra that contains multiple appWidgetIds. These are id values as * they were provided to the application during a recent restore from backup. It is @@ -510,6 +518,8 @@ public class AppWidgetManager { private final IAppWidgetService mService; private final DisplayMetrics mDisplayMetrics; + private boolean mHasPostedLegacyLists = false; + /** * Get the AppWidgetManager instance to use for the supplied {@link android.content.Context * Context} object. @@ -552,6 +562,13 @@ public class AppWidgetManager { }); } + private boolean isPostingTaskToBackground(@Nullable RemoteViews views) { + return Looper.myLooper() == Looper.getMainLooper() + && RemoteViews.isAdapterConversionEnabled() + && (mHasPostedLegacyLists = mHasPostedLegacyLists + || (views != null && views.hasLegacyLists())); + } + /** * Set the RemoteViews to use for the specified appWidgetIds. *

@@ -575,6 +592,19 @@ public class AppWidgetManager { if (mService == null) { return; } + + if (isPostingTaskToBackground(views)) { + createUpdateExecutorIfNull().execute(() -> { + try { + mService.updateAppWidgetIds(mPackageName, appWidgetIds, views); + } catch (RemoteException e) { + Log.e(TAG, "Error updating app widget views in background", e); + } + }); + + return; + } + try { mService.updateAppWidgetIds(mPackageName, appWidgetIds, views); } catch (RemoteException e) { @@ -683,6 +713,19 @@ public class AppWidgetManager { if (mService == null) { return; } + + if (isPostingTaskToBackground(views)) { + createUpdateExecutorIfNull().execute(() -> { + try { + mService.partiallyUpdateAppWidgetIds(mPackageName, appWidgetIds, views); + } catch (RemoteException e) { + Log.e(TAG, "Error partially updating app widget views in background", e); + } + }); + + return; + } + try { mService.partiallyUpdateAppWidgetIds(mPackageName, appWidgetIds, views); } catch (RemoteException e) { @@ -738,6 +781,19 @@ public class AppWidgetManager { if (mService == null) { return; } + + if (isPostingTaskToBackground(views)) { + createUpdateExecutorIfNull().execute(() -> { + try { + mService.updateAppWidgetProvider(provider, views); + } catch (RemoteException e) { + Log.e(TAG, "Error updating app widget view using provider in background", e); + } + }); + + return; + } + try { mService.updateAppWidgetProvider(provider, views); } catch (RemoteException e) { @@ -797,28 +853,45 @@ public class AppWidgetManager { if (mService == null) { return; } + + if (!RemoteViews.isAdapterConversionEnabled()) { + try { + mService.notifyAppWidgetViewDataChanged(mPackageName, appWidgetIds, viewId); + } catch (RemoteException re) { + throw re.rethrowFromSystemServer(); + } + + return; + } + + if (Looper.myLooper() == Looper.getMainLooper()) { + mHasPostedLegacyLists = true; + createUpdateExecutorIfNull().execute(() -> notifyCollectionWidgetChange(appWidgetIds, + viewId)); + } else { + notifyCollectionWidgetChange(appWidgetIds, viewId); + } + } + + private void notifyCollectionWidgetChange(int[] appWidgetIds, int viewId) { try { - if (RemoteViews.isAdapterConversionEnabled()) { - List> updateFutures = new ArrayList<>(); - for (int i = 0; i < appWidgetIds.length; i++) { - final int widgetId = appWidgetIds[i]; - updateFutures.add(CompletableFuture.runAsync(() -> { - try { - RemoteViews views = mService.getAppWidgetViews(mPackageName, widgetId); - if (views.replaceRemoteCollections(viewId)) { - updateAppWidget(widgetId, views); - } - } catch (Exception e) { - Log.e(TAG, "Error notifying changes in RemoteViews", e); + List> updateFutures = new ArrayList<>(); + for (int i = 0; i < appWidgetIds.length; i++) { + final int widgetId = appWidgetIds[i]; + updateFutures.add(CompletableFuture.runAsync(() -> { + try { + RemoteViews views = mService.getAppWidgetViews(mPackageName, widgetId); + if (views.replaceRemoteCollections(viewId)) { + updateAppWidget(widgetId, views); } - })); - } - CompletableFuture.allOf(updateFutures.toArray(CompletableFuture[]::new)).join(); - } else { - mService.notifyAppWidgetViewDataChanged(mPackageName, appWidgetIds, viewId); + } catch (Exception e) { + Log.e(TAG, "Error notifying changes in RemoteViews", e); + } + })); } - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); + CompletableFuture.allOf(updateFutures.toArray(CompletableFuture[]::new)).join(); + } catch (Exception e) { + Log.e(TAG, "Error notifying changes for all widgets", e); } } @@ -1360,4 +1433,20 @@ public class AppWidgetManager { throw e.rethrowFromSystemServer(); } } + + @UiThread + private static @NonNull Executor createUpdateExecutorIfNull() { + if (sUpdateExecutor == null) { + sUpdateExecutor = new HandlerExecutor(createAndStartNewHandler( + "widget_manager_update_helper_thread", Process.THREAD_PRIORITY_FOREGROUND)); + } + + return sUpdateExecutor; + } + + private static @NonNull Handler createAndStartNewHandler(@NonNull String name, int priority) { + HandlerThread thread = new HandlerThread(name, priority); + thread.start(); + return thread.getThreadHandler(); + } } diff --git a/core/java/android/companion/AssociationInfo.java b/core/java/android/companion/AssociationInfo.java index 7d62c79e7519a62b41300b61d52b84e4e7a8ec90..083fa0041b26ba4ba6052025c682ae1870d9f38c 100644 --- a/core/java/android/companion/AssociationInfo.java +++ b/core/java/android/companion/AssociationInfo.java @@ -17,7 +17,9 @@ package android.companion; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SuppressLint; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.annotation.UserIdInt; import android.net.MacAddress; import android.os.Parcel; @@ -41,24 +43,26 @@ public final class AssociationInfo implements Parcelable { private static final String LAST_TIME_CONNECTED_NONE = "None"; /** * A unique ID of this Association record. - * Disclosed to the clients (ie. companion applications) for referring to this record (eg. in + * Disclosed to the clients (i.e. companion applications) for referring to this record (e.g. in * {@code disassociate()} API call). */ private final int mId; - - private final @UserIdInt int mUserId; - private final @NonNull String mPackageName; - - private final @Nullable MacAddress mDeviceMacAddress; - private final @Nullable CharSequence mDisplayName; - private final @Nullable String mDeviceProfile; - private final @Nullable AssociatedDevice mAssociatedDevice; - + @UserIdInt + private final int mUserId; + @NonNull + private final String mPackageName; + @Nullable + private final String mTag; + @Nullable + private final MacAddress mDeviceMacAddress; + @Nullable + private final CharSequence mDisplayName; + @Nullable + private final String mDeviceProfile; + @Nullable + private final AssociatedDevice mAssociatedDevice; private final boolean mSelfManaged; private final boolean mNotifyOnDeviceNearby; - private final int mSystemDataSyncFlags; - private final String mTag; - /** * Indicates that the association has been revoked (removed), but we keep the association * record for final clean up (e.g. removing the app from the list of the role holders). @@ -72,6 +76,7 @@ public final class AssociationInfo implements Parcelable { * Default value is Long.MAX_VALUE. */ private final long mLastTimeConnectedMs; + private final int mSystemDataSyncFlags; /** * Creates a new Association. @@ -93,16 +98,13 @@ public final class AssociationInfo implements Parcelable { } mId = id; - mUserId = userId; mPackageName = packageName; - mDeviceMacAddress = macAddress; mDisplayName = displayName; mTag = tag; mDeviceProfile = deviceProfile; mAssociatedDevice = associatedDevice; - mSelfManaged = selfManaged; mNotifyOnDeviceNearby = notifyOnDeviceNearby; mRevoked = revoked; @@ -118,19 +120,12 @@ public final class AssociationInfo implements Parcelable { return mId; } - /** - * @return the tag of this association. - * @see CompanionDeviceManager#setAssociationTag(int, String) - */ - public @Nullable String getTag() { - return mTag; - } - /** * @return the ID of the user who "owns" this association. * @hide */ - public @UserIdInt int getUserId() { + @UserIdInt + public int getUserId() { return mUserId; } @@ -139,19 +134,31 @@ public final class AssociationInfo implements Parcelable { * @hide */ @SystemApi - public @NonNull String getPackageName() { + @NonNull + public String getPackageName() { return mPackageName; } + /** + * @return the tag of this association. + * @see CompanionDeviceManager#setAssociationTag(int, String) + */ + @Nullable + public String getTag() { + return mTag; + } + /** * @return the MAC address of the device. */ - public @Nullable MacAddress getDeviceMacAddress() { + @Nullable + public MacAddress getDeviceMacAddress() { return mDeviceMacAddress; } /** @hide */ - public @Nullable String getDeviceMacAddressAsString() { + @Nullable + public String getDeviceMacAddressAsString() { return mDeviceMacAddress != null ? mDeviceMacAddress.toString().toUpperCase() : null; } @@ -161,7 +168,8 @@ public final class AssociationInfo implements Parcelable { * * @see AssociationRequest.Builder#setDisplayName(CharSequence) */ - public @Nullable CharSequence getDisplayName() { + @Nullable + public CharSequence getDisplayName() { return mDisplayName; } @@ -170,7 +178,8 @@ public final class AssociationInfo implements Parcelable { * association, or {@code null} if no specific profile was used. * @see AssociationRequest.Builder#setDeviceProfile(String) */ - public @Nullable String getDeviceProfile() { + @Nullable + public String getDeviceProfile() { return mDeviceProfile; } @@ -187,7 +196,8 @@ public final class AssociationInfo implements Parcelable { * @return the companion device that was associated, or {@code null} if the device is * self-managed or this association info was retrieved from persistent storage. */ - public @Nullable AssociatedDevice getAssociatedDevice() { + @Nullable + public AssociatedDevice getAssociatedDevice() { return mAssociatedDevice; } @@ -228,14 +238,14 @@ public final class AssociationInfo implements Parcelable { * @return the last time self reported disconnected for selfManaged only. * @hide */ - public Long getLastTimeConnectedMs() { + public long getLastTimeConnectedMs() { return mLastTimeConnectedMs; } /** * @return Enabled system data sync flags set via - * {@link CompanionDeviceManager#enableSystemDataSync(int, int)} and - * {@link CompanionDeviceManager#disableSystemDataSync(int, int)}. + * {@link CompanionDeviceManager#enableSystemDataSyncForTypes(int, int)} (int, int)} and + * {@link CompanionDeviceManager#disableSystemDataSyncForTypes(int, int)} (int, int)}. * Or by default all flags are 1 (enabled). */ public int getSystemDataSyncFlags() { @@ -279,7 +289,8 @@ public final class AssociationInfo implements Parcelable { } /** @hide */ - public @NonNull String toShortString() { + @NonNull + public String toShortString() { final StringBuilder sb = new StringBuilder(); sb.append("id=").append(mId); if (mDeviceMacAddress != null) { @@ -350,16 +361,13 @@ public final class AssociationInfo implements Parcelable { @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(mId); - dest.writeInt(mUserId); dest.writeString(mPackageName); dest.writeString(mTag); - dest.writeTypedObject(mDeviceMacAddress, 0); dest.writeCharSequence(mDisplayName); dest.writeString(mDeviceProfile); dest.writeTypedObject(mAssociatedDevice, 0); - dest.writeBoolean(mSelfManaged); dest.writeBoolean(mNotifyOnDeviceNearby); dest.writeBoolean(mRevoked); @@ -370,16 +378,13 @@ public final class AssociationInfo implements Parcelable { private AssociationInfo(@NonNull Parcel in) { mId = in.readInt(); - mUserId = in.readInt(); mPackageName = in.readString(); mTag = in.readString(); - mDeviceMacAddress = in.readTypedObject(MacAddress.CREATOR); mDisplayName = in.readCharSequence(); mDeviceProfile = in.readString(); mAssociatedDevice = in.readTypedObject(AssociatedDevice.CREATOR); - mSelfManaged = in.readBoolean(); mNotifyOnDeviceNearby = in.readBoolean(); mRevoked = in.readBoolean(); @@ -403,139 +408,182 @@ public final class AssociationInfo implements Parcelable { }; /** - * Use this method to obtain a builder that you can use to create a copy of the - * given {@link AssociationInfo} with modified values of {@code mLastTimeConnected} - * or {@code mNotifyOnDeviceNearby}. - *

- * Note that you must call either {@link Builder#setLastTimeConnected(long) - * setLastTimeConnected} or {@link Builder#setNotifyOnDeviceNearby(boolean) - * setNotifyOnDeviceNearby} before you will be able to call {@link Builder#build() build}. - * - * This is ensured statically at compile time. + * Builder for {@link AssociationInfo} * * @hide */ - @NonNull - public static NonActionableBuilder builder(@NonNull AssociationInfo info) { - return new Builder(info); - } - - /** @hide */ - public static final class Builder implements NonActionableBuilder { - @NonNull - private final AssociationInfo mOriginalInfo; + @TestApi + public static final class Builder { + private final int mId; + private final int mUserId; + private final String mPackageName; + private String mTag; + private MacAddress mDeviceMacAddress; + private CharSequence mDisplayName; + private String mDeviceProfile; + private AssociatedDevice mAssociatedDevice; + private boolean mSelfManaged; private boolean mNotifyOnDeviceNearby; private boolean mRevoked; + private long mTimeApprovedMs; private long mLastTimeConnectedMs; private int mSystemDataSyncFlags; - private String mTag; - private Builder(@NonNull AssociationInfo info) { - mOriginalInfo = info; + /** @hide */ + @TestApi + public Builder(int id, int userId, @NonNull String packageName) { + mId = id; + mUserId = userId; + mPackageName = packageName; + } + + /** @hide */ + @TestApi + public Builder(@NonNull AssociationInfo info) { + mId = info.mId; + mUserId = info.mUserId; + mPackageName = info.mPackageName; mTag = info.mTag; + mDeviceMacAddress = info.mDeviceMacAddress; + mDisplayName = info.mDisplayName; + mDeviceProfile = info.mDeviceProfile; + mAssociatedDevice = info.mAssociatedDevice; + mSelfManaged = info.mSelfManaged; mNotifyOnDeviceNearby = info.mNotifyOnDeviceNearby; mRevoked = info.mRevoked; + mTimeApprovedMs = info.mTimeApprovedMs; mLastTimeConnectedMs = info.mLastTimeConnectedMs; mSystemDataSyncFlags = info.mSystemDataSyncFlags; } /** @hide */ - @Override + @TestApi @NonNull - public Builder setLastTimeConnected(long lastTimeConnectedMs) { - if (lastTimeConnectedMs < 0) { - throw new IllegalArgumentException( - "lastTimeConnectedMs must not be negative! (Given " + lastTimeConnectedMs - + " )"); - } - mLastTimeConnectedMs = lastTimeConnectedMs; + public Builder setTag(@Nullable String tag) { + mTag = tag; return this; } /** @hide */ - @Override + @TestApi @NonNull - public Builder setNotifyOnDeviceNearby(boolean notifyOnDeviceNearby) { - mNotifyOnDeviceNearby = notifyOnDeviceNearby; + public Builder setDeviceMacAddress(@Nullable MacAddress deviceMacAddress) { + mDeviceMacAddress = deviceMacAddress; return this; } /** @hide */ - @Override + @TestApi @NonNull - public Builder setRevoked(boolean revoked) { - mRevoked = revoked; + public Builder setDisplayName(@Nullable CharSequence displayName) { + mDisplayName = displayName; return this; } /** @hide */ - @Override + @TestApi @NonNull - public Builder setSystemDataSyncFlags(int flags) { - mSystemDataSyncFlags = flags; + public Builder setDeviceProfile(@Nullable String deviceProfile) { + mDeviceProfile = deviceProfile; return this; } /** @hide */ - @Override + @TestApi @NonNull - public Builder setTag(String tag) { - mTag = tag; + public Builder setAssociatedDevice(@Nullable AssociatedDevice associatedDevice) { + mAssociatedDevice = associatedDevice; return this; } /** @hide */ + @TestApi @NonNull - public AssociationInfo build() { - return new AssociationInfo( - mOriginalInfo.mId, - mOriginalInfo.mUserId, - mOriginalInfo.mPackageName, - mTag, - mOriginalInfo.mDeviceMacAddress, - mOriginalInfo.mDisplayName, - mOriginalInfo.mDeviceProfile, - mOriginalInfo.mAssociatedDevice, - mOriginalInfo.mSelfManaged, - mNotifyOnDeviceNearby, - mRevoked, - mOriginalInfo.mTimeApprovedMs, - mLastTimeConnectedMs, - mSystemDataSyncFlags - ); + public Builder setSelfManaged(boolean selfManaged) { + mSelfManaged = selfManaged; + return this; } - } - /** - * This interface is returned from the - * {@link AssociationInfo#builder(android.companion.AssociationInfo) builder} entry point - * to indicate that this builder is not yet in a state that can produce a meaningful - * {@link AssociationInfo} object that is different from the one originally passed in. - * - *

- * Only by calling one of the setter methods is this builder turned into one where calling - * {@link Builder#build() build()} makes sense. - * - * @hide - */ - public interface NonActionableBuilder { /** @hide */ + @TestApi @NonNull - Builder setNotifyOnDeviceNearby(boolean notifyOnDeviceNearby); + @SuppressLint("MissingGetterMatchingBuilder") + public Builder setNotifyOnDeviceNearby(boolean notifyOnDeviceNearby) { + mNotifyOnDeviceNearby = notifyOnDeviceNearby; + return this; + } + + /** @hide */ + @TestApi + @NonNull + @SuppressLint("MissingGetterMatchingBuilder") + public Builder setRevoked(boolean revoked) { + mRevoked = revoked; + return this; + } /** @hide */ + @TestApi @NonNull - Builder setLastTimeConnected(long lastTimeConnectedMs); + @SuppressLint("MissingGetterMatchingBuilder") + public Builder setTimeApproved(long timeApprovedMs) { + if (timeApprovedMs < 0) { + throw new IllegalArgumentException("timeApprovedMs must be positive. Was given (" + + timeApprovedMs + ")"); + } + mTimeApprovedMs = timeApprovedMs; + return this; + } /** @hide */ + @TestApi @NonNull - Builder setRevoked(boolean revoked); + @SuppressLint("MissingGetterMatchingBuilder") + public Builder setLastTimeConnected(long lastTimeConnectedMs) { + if (lastTimeConnectedMs < 0) { + throw new IllegalArgumentException( + "lastTimeConnectedMs must not be negative! (Given " + lastTimeConnectedMs + + " )"); + } + mLastTimeConnectedMs = lastTimeConnectedMs; + return this; + } /** @hide */ + @TestApi @NonNull - Builder setSystemDataSyncFlags(int flags); + public Builder setSystemDataSyncFlags(int flags) { + mSystemDataSyncFlags = flags; + return this; + } /** @hide */ - Builder setTag(String tag); + @TestApi + @NonNull + public AssociationInfo build() { + if (mId <= 0) { + throw new IllegalArgumentException("Association ID should be greater than 0"); + } + if (mDeviceMacAddress == null && mDisplayName == null) { + throw new IllegalArgumentException("MAC address and the display name must NOT be " + + "null at the same time"); + } + return new AssociationInfo( + mId, + mUserId, + mPackageName, + mTag, + mDeviceMacAddress, + mDisplayName, + mDeviceProfile, + mAssociatedDevice, + mSelfManaged, + mNotifyOnDeviceNearby, + mRevoked, + mTimeApprovedMs, + mLastTimeConnectedMs, + mSystemDataSyncFlags + ); + } } } diff --git a/core/java/android/companion/CompanionDeviceManager.java b/core/java/android/companion/CompanionDeviceManager.java index 3aa28772426306ab35d87149a4ad40f1ebad6a00..2fb428b3e0b47421cd0f7d5fa76d2e595886daae 100644 --- a/core/java/android/companion/CompanionDeviceManager.java +++ b/core/java/android/companion/CompanionDeviceManager.java @@ -39,6 +39,7 @@ import android.app.NotificationManager; import android.app.PendingIntent; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; +import android.companion.datatransfer.PermissionSyncRequest; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -180,7 +181,7 @@ public final class CompanionDeviceManager { public @interface DataSyncTypes {} /** - * Used by {@link #enableSystemDataSync(int, int)}}. + * Used by {@link #enableSystemDataSyncForTypes(int, int)}}. * Sync call metadata like muting, ending and silencing a call. * */ @@ -551,6 +552,39 @@ public final class CompanionDeviceManager { } } + /** + * @hide + */ + public void enablePermissionsSync(int associationId) { + try { + mService.enablePermissionsSync(associationId); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * @hide + */ + public void disablePermissionsSync(int associationId) { + try { + mService.disablePermissionsSync(associationId); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * @hide + */ + public PermissionSyncRequest getPermissionSyncRequest(int associationId) { + try { + return mService.getPermissionSyncRequest(associationId); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** *

Calling this API requires a uses-feature * {@link PackageManager#FEATURE_COMPANION_DEVICE_SETUP} declaration in the manifest

diff --git a/core/java/android/companion/ICompanionDeviceManager.aidl b/core/java/android/companion/ICompanionDeviceManager.aidl index a3b202aa738dc12b51a2f538953304f412761673..c5a19888205c57ebbc7d14a5d7445ac6bb93e195 100644 --- a/core/java/android/companion/ICompanionDeviceManager.aidl +++ b/core/java/android/companion/ICompanionDeviceManager.aidl @@ -24,6 +24,7 @@ import android.companion.IOnTransportsChangedListener; import android.companion.ISystemDataTransferCallback; import android.companion.AssociationInfo; import android.companion.AssociationRequest; +import android.companion.datatransfer.PermissionSyncRequest; import android.content.ComponentName; /** @@ -113,6 +114,12 @@ interface ICompanionDeviceManager { void disableSystemDataSync(int associationId, int flags); + void enablePermissionsSync(int associationId); + + void disablePermissionsSync(int associationId); + + PermissionSyncRequest getPermissionSyncRequest(int associationId); + @EnforcePermission("MANAGE_COMPANION_DEVICES") void enableSecureTransport(boolean enabled); diff --git a/core/java/android/companion/virtual/IVirtualDevice.aidl b/core/java/android/companion/virtual/IVirtualDevice.aidl index 4801d155eb33c9e099bc3a54ae9b07f7bd219a40..bf00a5afd6ea97d252f38de85a6259ca1cc8a841 100644 --- a/core/java/android/companion/virtual/IVirtualDevice.aidl +++ b/core/java/android/companion/virtual/IVirtualDevice.aidl @@ -23,6 +23,7 @@ import android.companion.virtual.audio.IAudioRoutingCallback; import android.companion.virtual.sensor.VirtualSensor; import android.companion.virtual.sensor.VirtualSensorConfig; import android.companion.virtual.sensor.VirtualSensorEvent; +import android.content.ComponentName; import android.content.IntentFilter; import android.graphics.Point; import android.graphics.PointF; @@ -63,12 +64,40 @@ interface IVirtualDevice { */ String getPersistentDeviceId(); + /** + * Returns the IDs of all virtual displays of this device. + */ + int[] getDisplayIds(); + + /** + * Returns the device policy for the given policy type. + */ + int getDevicePolicy(int policyType); + /** * Closes the virtual device and frees all associated resources. */ @EnforcePermission("CREATE_VIRTUAL_DEVICE") void close(); + /** + * Specifies a policy for this virtual device. + */ + @EnforcePermission("CREATE_VIRTUAL_DEVICE") + void setDevicePolicy(int policyType, int devicePolicy); + + /** + * Adds an exemption to the default activity launch policy. + */ + @EnforcePermission("CREATE_VIRTUAL_DEVICE") + void addActivityPolicyExemption(in ComponentName exemption); + + /** + * Removes an exemption to the default activity launch policy. + */ + @EnforcePermission("CREATE_VIRTUAL_DEVICE") + void removeActivityPolicyExemption(in ComponentName exemption); + /** * Notifies that an audio session being started. */ diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest2.kt b/core/java/android/companion/virtual/IVirtualDeviceListener.aidl similarity index 58% rename from packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest2.kt rename to core/java/android/companion/virtual/IVirtualDeviceListener.aidl index b56d055372155f642ffcc56ad245ec11ba53260c..c6dd227fe7825050a5b1d23363fe4140b2b4efbd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest2.kt +++ b/core/java/android/companion/virtual/IVirtualDeviceListener.aidl @@ -14,17 +14,22 @@ * limitations under the License. */ -package com.android.systemui.biometrics +package android.companion.virtual; -import android.testing.TestableLooper -import androidx.test.ext.junit.runners.AndroidJUnit4 -import androidx.test.filters.SmallTest -import org.junit.runner.RunWith +/** + * Interface to listen for changes in the available virtual devices. + * + * @hide + */ +oneway interface IVirtualDeviceListener { + + /** + * Called whenever a new virtual device has been added to the system. + */ + void onVirtualDeviceCreated(int deviceId); -// TODO(b/278622168): remove with flag -@RunWith(AndroidJUnit4::class) -@TestableLooper.RunWithLooper(setAsMainLooper = true) -@SmallTest -class AuthContainerViewTest2 : AuthContainerViewTest() { - override val useNewBiometricPrompt = true + /** + * Called whenever a virtual device has been removed from the system. + */ + void onVirtualDeviceClosed(int deviceId); } diff --git a/core/java/android/companion/virtual/IVirtualDeviceManager.aidl b/core/java/android/companion/virtual/IVirtualDeviceManager.aidl index ee7836f0f7f04b99655f20f41b3eeafe67ee0abf..b665036c202f298d0e63ff9ed777cb503c372deb 100644 --- a/core/java/android/companion/virtual/IVirtualDeviceManager.aidl +++ b/core/java/android/companion/virtual/IVirtualDeviceManager.aidl @@ -18,9 +18,11 @@ package android.companion.virtual; import android.companion.virtual.IVirtualDevice; import android.companion.virtual.IVirtualDeviceActivityListener; +import android.companion.virtual.IVirtualDeviceListener; import android.companion.virtual.IVirtualDeviceSoundEffectListener; import android.companion.virtual.VirtualDevice; import android.companion.virtual.VirtualDeviceParams; +import android.content.AttributionSource; import android.hardware.display.IVirtualDisplayCallback; import android.hardware.display.VirtualDisplayConfig; @@ -46,7 +48,7 @@ interface IVirtualDeviceManager { */ @EnforcePermission("CREATE_VIRTUAL_DEVICE") IVirtualDevice createVirtualDevice( - in IBinder token, String packageName, int associationId, + in IBinder token, in AttributionSource attributionSource, int associationId, in VirtualDeviceParams params, in IVirtualDeviceActivityListener activityListener, in IVirtualDeviceSoundEffectListener soundEffectListener); @@ -55,12 +57,27 @@ interface IVirtualDeviceManager { */ List getVirtualDevices(); - /** + /** + * Returns the details of the virtual device with the given ID, if any. + */ + VirtualDevice getVirtualDevice(int deviceId); + + /** + * Registers a virtual device listener to receive notifications for virtual device events. + */ + void registerVirtualDeviceListener(in IVirtualDeviceListener listener); + + /** + * Unregisters a previously registered virtual device listener. + */ + void unregisterVirtualDeviceListener(in IVirtualDeviceListener listener); + + /** * Returns the ID of the device which owns the display with the given ID. */ int getDeviceIdForDisplayId(int displayId); - /** + /** * Checks whether the passed {@code deviceId} is a valid virtual device ID or not. * {@link VirtualDeviceManager#DEVICE_ID_DEFAULT} is not valid as it is the ID of the default * device which is not a virtual device. {@code deviceId} must correspond to a virtual device diff --git a/core/java/android/companion/virtual/VirtualDevice.java b/core/java/android/companion/virtual/VirtualDevice.java index ceaf7e4f8317e2cd05b40233740a5851820d4aa6..4692f921beb2dd0b0924e3ceceed9037509ef475 100644 --- a/core/java/android/companion/virtual/VirtualDevice.java +++ b/core/java/android/companion/virtual/VirtualDevice.java @@ -16,13 +16,17 @@ package android.companion.virtual; +import static android.companion.virtual.VirtualDeviceParams.DEVICE_POLICY_CUSTOM; +import static android.companion.virtual.VirtualDeviceParams.POLICY_TYPE_SENSORS; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; +import android.companion.virtual.flags.Flags; import android.content.Context; import android.os.Parcel; import android.os.Parcelable; - -import java.util.Objects; +import android.os.RemoteException; /** * Details of a particular virtual device. @@ -31,9 +35,12 @@ import java.util.Objects; * *

Not to be confused with {@link VirtualDeviceManager.VirtualDevice}, which is used * by the virtual device creator and allows them to manage the device. + * + * @see VirtualDeviceManager#registerVirtualDeviceListener */ public final class VirtualDevice implements Parcelable { + private final @NonNull IVirtualDevice mVirtualDevice; private final int mId; private final @Nullable String mPersistentId; private final @Nullable String mName; @@ -44,17 +51,20 @@ public final class VirtualDevice implements Parcelable { * * @hide */ - public VirtualDevice(int id, @Nullable String persistentId, @Nullable String name) { + public VirtualDevice(@NonNull IVirtualDevice virtualDevice, int id, + @Nullable String persistentId, @Nullable String name) { if (id <= Context.DEVICE_ID_DEFAULT) { throw new IllegalArgumentException("VirtualDevice ID must be greater than " + Context.DEVICE_ID_DEFAULT); } + mVirtualDevice = virtualDevice; mId = id; mPersistentId = persistentId; mName = name; } private VirtualDevice(@NonNull Parcel parcel) { + mVirtualDevice = IVirtualDevice.Stub.asInterface(parcel.readStrongBinder()); mId = parcel.readInt(); mPersistentId = parcel.readString8(); mName = parcel.readString8(); @@ -101,6 +111,40 @@ public final class VirtualDevice implements Parcelable { return mName; } + /** + * Returns the IDs of all virtual displays that belong to this device, if any. + * + *

The actual {@link android.view.Display} objects can be obtained by passing the returned + * IDs to {@link android.hardware.display.DisplayManager#getDisplay(int)}.

+ */ + @FlaggedApi(Flags.FLAG_VDM_PUBLIC_APIS) + public @NonNull int[] getDisplayIds() { + try { + return mVirtualDevice.getDisplayIds(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Returns whether this device may have custom sensors. + * + *

Returning {@code true} does not necessarily mean that this device has sensors, it only + * means that a {@link android.hardware.SensorManager} instance created from a {@link Context} + * associated with this device will return this device's sensors, if any.

+ * + * @see Context#getDeviceId() + * @see Context#createDeviceContext(int) + */ + @FlaggedApi(Flags.FLAG_VDM_PUBLIC_APIS) + public boolean hasCustomSensorSupport() { + try { + return mVirtualDevice.getDevicePolicy(POLICY_TYPE_SENSORS) == DEVICE_POLICY_CUSTOM; + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + @Override public int describeContents() { return 0; @@ -108,30 +152,12 @@ public final class VirtualDevice implements Parcelable { @Override public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeStrongBinder(mVirtualDevice.asBinder()); dest.writeInt(mId); dest.writeString8(mPersistentId); dest.writeString8(mName); } - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof VirtualDevice)) { - return false; - } - VirtualDevice that = (VirtualDevice) o; - return mId == that.mId - && Objects.equals(mPersistentId, that.mPersistentId) - && Objects.equals(mName, that.mName); - } - - @Override - public int hashCode() { - return Objects.hash(mId, mPersistentId, mName); - } - @Override @NonNull public String toString() { diff --git a/core/java/android/companion/virtual/VirtualDeviceInternal.java b/core/java/android/companion/virtual/VirtualDeviceInternal.java index f68cfff1c053b7d6d16e1b898169f8ed87e10648..7bf2e91b422df55f13dc49ad2cafc28b2f4c2060 100644 --- a/core/java/android/companion/virtual/VirtualDeviceInternal.java +++ b/core/java/android/companion/virtual/VirtualDeviceInternal.java @@ -145,7 +145,7 @@ public class VirtualDeviceInternal { mContext = context.getApplicationContext(); mVirtualDevice = service.createVirtualDevice( new Binder(), - mContext.getPackageName(), + mContext.getAttributionSource(), associationId, params, mActivityListenerBinder, @@ -238,6 +238,31 @@ public class VirtualDeviceInternal { } } + void setDevicePolicy(@VirtualDeviceParams.DynamicPolicyType int policyType, + @VirtualDeviceParams.DevicePolicy int devicePolicy) { + try { + mVirtualDevice.setDevicePolicy(policyType, devicePolicy); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + void addActivityPolicyExemption(@NonNull ComponentName componentName) { + try { + mVirtualDevice.addActivityPolicyExemption(componentName); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + void removeActivityPolicyExemption(@NonNull ComponentName componentName) { + try { + mVirtualDevice.removeActivityPolicyExemption(componentName); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + @NonNull VirtualDpad createVirtualDpad(@NonNull VirtualDpadConfig config) { try { diff --git a/core/java/android/companion/virtual/VirtualDeviceManager.java b/core/java/android/companion/virtual/VirtualDeviceManager.java index 060a5c85a713b757d203850361f9f4862cfb0a00..d338d17791ed9e0af15d398613e225b743f8dbdb 100644 --- a/core/java/android/companion/virtual/VirtualDeviceManager.java +++ b/core/java/android/companion/virtual/VirtualDeviceManager.java @@ -19,6 +19,7 @@ package android.companion.virtual; import static android.media.AudioManager.AUDIO_SESSION_ID_GENERATE; import android.annotation.CallbackExecutor; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; @@ -32,6 +33,7 @@ import android.app.PendingIntent; import android.companion.AssociationInfo; import android.companion.virtual.audio.VirtualAudioDevice; import android.companion.virtual.audio.VirtualAudioDevice.AudioConfigurationChangeCallback; +import android.companion.virtual.flags.Flags; import android.companion.virtual.sensor.VirtualSensor; import android.content.ComponentName; import android.content.Context; @@ -53,16 +55,20 @@ import android.hardware.input.VirtualNavigationTouchpadConfig; import android.hardware.input.VirtualTouchscreen; import android.hardware.input.VirtualTouchscreenConfig; import android.media.AudioManager; +import android.os.Binder; import android.os.Looper; import android.os.RemoteException; import android.util.Log; import android.view.Surface; +import com.android.internal.annotations.GuardedBy; + import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Objects; import java.util.concurrent.Executor; @@ -143,6 +149,9 @@ public final class VirtualDeviceManager { private final IVirtualDeviceManager mService; private final Context mContext; + @GuardedBy("mVirtualDeviceListeners") + private final List mVirtualDeviceListeners = new ArrayList<>(); + /** @hide */ public VirtualDeviceManager( @Nullable IVirtualDeviceManager service, @NonNull Context context) { @@ -173,6 +182,9 @@ public final class VirtualDeviceManager { int associationId, @NonNull VirtualDeviceParams params) { Objects.requireNonNull(params, "params must not be null"); + if (Flags.moreLogs()) { + Log.i(TAG, "Creating VirtualDevice"); + } try { return new VirtualDevice(mService, mContext, associationId, params); } catch (RemoteException e) { @@ -184,7 +196,11 @@ public final class VirtualDeviceManager { * Returns the details of all available virtual devices. * *

The returned objects are read-only representations that expose the properties of all - * existing virtual devices. + * existing virtual devices.

+ * + *

Note that if a virtual device is closed and becomes invalid, the returned objects will + * not be updated and may contain stale values. Use a {@link VirtualDeviceListener} for real + * time updates of the availability of virtual devices.

*/ @NonNull public List getVirtualDevices() { @@ -199,6 +215,95 @@ public final class VirtualDeviceManager { } } + /** + * Returns the details of the virtual device with the given ID, if any. + * + *

The returned object is a read-only representation of the virtual device that expose its + * properties.

+ * + *

Note that if the virtual device is closed and becomes invalid, the returned object will + * not be updated and may contain stale values. Use a {@link VirtualDeviceListener} for real + * time updates of the availability of virtual devices.

+ * + * @return the virtual device with the requested ID, or {@code null} if no such device exists or + * it has already been closed. + */ + @FlaggedApi(Flags.FLAG_VDM_PUBLIC_APIS) + @Nullable + public android.companion.virtual.VirtualDevice getVirtualDevice(int deviceId) { + if (mService == null) { + Log.w(TAG, "Failed to retrieve virtual devices; no virtual device manager service."); + return null; + } + if (deviceId == Context.DEVICE_ID_INVALID || deviceId == Context.DEVICE_ID_DEFAULT) { + return null; // Don't even bother making a Binder call. + } + try { + return mService.getVirtualDevice(deviceId); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Registers a virtual device listener to receive notifications when virtual devices are created + * or closed. + * + * @param executor The executor where the listener is executed on. + * @param listener The listener to add. + * @see #unregisterVirtualDeviceListener + */ + @FlaggedApi(Flags.FLAG_VDM_PUBLIC_APIS) + public void registerVirtualDeviceListener( + @NonNull @CallbackExecutor Executor executor, + @NonNull VirtualDeviceListener listener) { + if (mService == null) { + Log.w(TAG, "Failed to register listener; no virtual device manager service."); + return; + } + final VirtualDeviceListenerDelegate delegate = + new VirtualDeviceListenerDelegate(Objects.requireNonNull(executor), + Objects.requireNonNull(listener)); + synchronized (mVirtualDeviceListeners) { + try { + mService.registerVirtualDeviceListener(delegate); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + mVirtualDeviceListeners.add(delegate); + } + } + + /** + * Unregisters a virtual device listener previously registered with + * {@link #registerVirtualDeviceListener}. + * + * @param listener The listener to unregister. + * @see #registerVirtualDeviceListener + */ + @FlaggedApi(Flags.FLAG_VDM_PUBLIC_APIS) + public void unregisterVirtualDeviceListener(@NonNull VirtualDeviceListener listener) { + if (mService == null) { + Log.w(TAG, "Failed to unregister listener; no virtual device manager service."); + return; + } + Objects.requireNonNull(listener); + synchronized (mVirtualDeviceListeners) { + final Iterator it = mVirtualDeviceListeners.iterator(); + while (it.hasNext()) { + final VirtualDeviceListenerDelegate delegate = it.next(); + if (delegate.mListener == listener) { + try { + mService.unregisterVirtualDeviceListener(delegate); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + it.remove(); + } + } + } + } + /** * Returns the device policy for the given virtual device and policy type. * @@ -508,6 +613,71 @@ public final class VirtualDeviceManager { mVirtualDeviceInternal.close(); } + /** + * Specifies a policy for this virtual device. + * + *

Policies define the system behavior that may be specific for this virtual device. The + * given policy must be able to be changed dynamically during the lifetime of the device. + * + * @param policyType the type of policy, i.e. which behavior to specify a policy for. + * @param devicePolicy the value of the policy, i.e. how to interpret the device behavior. + * + * @see VirtualDeviceParams#POLICY_TYPE_RECENTS + * @see VirtualDeviceParams#POLICY_TYPE_ACTIVITY + */ + @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) + @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) + public void setDevicePolicy(@VirtualDeviceParams.DynamicPolicyType int policyType, + @VirtualDeviceParams.DevicePolicy int devicePolicy) { + mVirtualDeviceInternal.setDevicePolicy(policyType, devicePolicy); + } + + /** + * Specifies a component name to be exempt from the current activity launch policy. + * + *

If the current {@link VirtualDeviceParams#POLICY_TYPE_ACTIVIY} allows activity + * launches by default, (i.e. it is {@link VirtualDeviceParams#DEVICE_POLICY_DEFAULT}, + * then the specified component will be blocked from launching. + * If the current {@link VirtualDeviceParams#POLICY_TYPE_ACTIVITY} blocks activity + * launches by default, (i.e. it is {@link VirtualDeviceParams#DEVICE_POLICY_CUSTOM}, then + * the specified component will be allowed to launch.

+ * + *

Note that changing the activity launch policy will not affect current set of exempt + * components and it needs to be updated separately.

+ * + * @see #removeActivityPolicyExemption + * @see #setDevicePolicy + */ + @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) + @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) + public void addActivityPolicyExemption(@NonNull ComponentName componentName) { + mVirtualDeviceInternal.addActivityPolicyExemption( + Objects.requireNonNull(componentName)); + } + + /** + * Makes the specified component name to adhere to the default activity launch policy. + * + *

If the current {@link VirtualDeviceParams#POLICY_TYPE_ACTIVIY} allows activity + * launches by default, (i.e. it is {@link VirtualDeviceParams#DEVICE_POLICY_DEFAULT}, + * then the specified component will be allowed to launch. + * If the current {@link VirtualDeviceParams#POLICY_TYPE_ACTIVITY} blocks activity + * launches by default, (i.e. it is {@link VirtualDeviceParams#DEVICE_POLICY_CUSTOM}, then + * the specified component will be blocked from launching.

+ * + *

Note that changing the activity launch policy will not affect current set of exempt + * components and it needs to be updated separately.

+ * + * @see #addActivityPolicyExemption + * @see #setDevicePolicy + */ + @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) + @RequiresPermission(android.Manifest.permission.CREATE_VIRTUAL_DEVICE) + public void removeActivityPolicyExemption(@NonNull ComponentName componentName) { + mVirtualDeviceInternal.removeActivityPolicyExemption( + Objects.requireNonNull(componentName)); + } + /** * Creates a virtual dpad. * @@ -719,7 +889,7 @@ public final class VirtualDeviceManager { * * @param executor The executor where the listener is executed on. * @param soundEffectListener The listener to add. - * @see #removeActivityListener(ActivityListener) + * @see #removeSoundEffectListener(SoundEffectListener) */ public void addSoundEffectListener(@CallbackExecutor @NonNull Executor executor, @NonNull SoundEffectListener soundEffectListener) { @@ -848,4 +1018,61 @@ public final class VirtualDeviceManager { */ void onPlaySoundEffect(@AudioManager.SystemSoundEffect int effectType); } + + /** + * Listener for changes in the available virtual devices. + * + * @see #registerVirtualDeviceListener + */ + @FlaggedApi(Flags.FLAG_VDM_PUBLIC_APIS) + public interface VirtualDeviceListener { + /** + * Called whenever a new virtual device has been added to the system. + * Use {@link VirtualDeviceManager#getVirtualDevice(int)} to get more information about + * the device. + * + * @param deviceId The id of the virtual device that was added. + */ + default void onVirtualDeviceCreated(int deviceId) {} + + /** + * Called whenever a virtual device has been removed from the system. + * + * @param deviceId The id of the virtual device that was removed. + */ + default void onVirtualDeviceClosed(int deviceId) {} + } + + /** + * A wrapper for {@link VirtualDeviceListener} that executes callbacks on the given executor. + */ + private static class VirtualDeviceListenerDelegate extends IVirtualDeviceListener.Stub { + private final VirtualDeviceListener mListener; + private final Executor mExecutor; + + private VirtualDeviceListenerDelegate(Executor executor, VirtualDeviceListener listener) { + mExecutor = executor; + mListener = listener; + } + + @Override + public void onVirtualDeviceCreated(int deviceId) { + final long token = Binder.clearCallingIdentity(); + try { + mExecutor.execute(() -> mListener.onVirtualDeviceCreated(deviceId)); + } finally { + Binder.restoreCallingIdentity(token); + } + } + + @Override + public void onVirtualDeviceClosed(int deviceId) { + final long token = Binder.clearCallingIdentity(); + try { + mExecutor.execute(() -> mListener.onVirtualDeviceClosed(deviceId)); + } finally { + Binder.restoreCallingIdentity(token); + } + } + } } diff --git a/core/java/android/companion/virtual/VirtualDeviceParams.java b/core/java/android/companion/virtual/VirtualDeviceParams.java index 45d6dc62bfe8c76c8ab809dea0e57a9731cef6da..b4c740ec55995bc6b5fae371f3ca512dd963f2f6 100644 --- a/core/java/android/companion/virtual/VirtualDeviceParams.java +++ b/core/java/android/companion/virtual/VirtualDeviceParams.java @@ -22,12 +22,14 @@ import static android.media.AudioManager.AUDIO_SESSION_ID_GENERATE; import static java.util.concurrent.TimeUnit.MICROSECONDS; import android.annotation.CallbackExecutor; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.SystemApi; +import android.companion.virtual.flags.Flags; import android.companion.virtual.sensor.IVirtualSensorCallback; import android.companion.virtual.sensor.VirtualSensor; import android.companion.virtual.sensor.VirtualSensorCallback; @@ -43,6 +45,7 @@ import android.util.ArraySet; import android.util.SparseArray; import android.util.SparseIntArray; +import java.io.PrintWriter; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -143,11 +146,22 @@ public final class VirtualDeviceParams implements Parcelable { * @hide */ @IntDef(prefix = "POLICY_TYPE_", value = {POLICY_TYPE_SENSORS, POLICY_TYPE_AUDIO, - POLICY_TYPE_RECENTS}) + POLICY_TYPE_RECENTS, POLICY_TYPE_ACTIVITY}) @Retention(RetentionPolicy.SOURCE) @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) public @interface PolicyType {} + /** + * Policy types that can be dynamically changed during the virtual device's lifetime. + * + * @see VirtualDeviceManager.VirtualDevice#setDevicePolicy + * @hide + */ + @IntDef(prefix = "POLICY_TYPE_", value = {POLICY_TYPE_RECENTS, POLICY_TYPE_ACTIVITY}) + @Retention(RetentionPolicy.SOURCE) + @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) + public @interface DynamicPolicyType {} + /** * Tells the sensor framework how to handle sensor requests from contexts associated with this * virtual device, namely the sensors returned by @@ -183,21 +197,35 @@ public final class VirtualDeviceParams implements Parcelable { *
  • {@link #DEVICE_POLICY_DEFAULT}: Activities launched on VirtualDisplays owned by this * device will appear in the host device recents. *
  • {@link #DEVICE_POLICY_CUSTOM}: Activities launched on VirtualDisplays owned by this - * * device will not appear in recents. + * device will not appear in recents. * */ public static final int POLICY_TYPE_RECENTS = 2; + /** + * Tells the activity manager what the default launch behavior for activities on this device is. + * + *
      + *
    • {@link #DEVICE_POLICY_DEFAULT}: Activities are allowed to be launched on displays + * owned by this device, unless explicitly blocked by the device. + *
    • {@link #DEVICE_POLICY_CUSTOM}: Activities are blocked from launching on displays + * owned by this device, unless explicitly allowed by the device. + *
    + * + * @see VirtualDeviceManager.VirtualDevice#addActivityPolicyExemption + * @see VirtualDeviceManager.VirtualDevice#removeActivityPolicyExemption + */ + @FlaggedApi(Flags.FLAG_DYNAMIC_POLICY) + public static final int POLICY_TYPE_ACTIVITY = 3; + private final int mLockState; @NonNull private final ArraySet mUsersWithMatchingAccounts; - @NonNull private final ArraySet mAllowedCrossTaskNavigations; - @NonNull private final ArraySet mBlockedCrossTaskNavigations; @NavigationPolicy private final int mDefaultNavigationPolicy; - @NonNull private final ArraySet mAllowedActivities; - @NonNull private final ArraySet mBlockedActivities; + @NonNull private final ArraySet mCrossTaskNavigationExemptions; @ActivityPolicy private final int mDefaultActivityPolicy; + @NonNull private final ArraySet mActivityPolicyExemptions; @Nullable private final String mName; // Mapping of @PolicyType to @DevicePolicy @NonNull private final SparseIntArray mDevicePolicies; @@ -209,12 +237,10 @@ public final class VirtualDeviceParams implements Parcelable { private VirtualDeviceParams( @LockState int lockState, @NonNull Set usersWithMatchingAccounts, - @NonNull Set allowedCrossTaskNavigations, - @NonNull Set blockedCrossTaskNavigations, @NavigationPolicy int defaultNavigationPolicy, - @NonNull Set allowedActivities, - @NonNull Set blockedActivities, + @NonNull Set crossTaskNavigationExemptions, @ActivityPolicy int defaultActivityPolicy, + @NonNull Set activityPolicyExemptions, @Nullable String name, @NonNull SparseIntArray devicePolicies, @NonNull List virtualSensorConfigs, @@ -224,14 +250,12 @@ public final class VirtualDeviceParams implements Parcelable { mLockState = lockState; mUsersWithMatchingAccounts = new ArraySet<>(Objects.requireNonNull(usersWithMatchingAccounts)); - mAllowedCrossTaskNavigations = - new ArraySet<>(Objects.requireNonNull(allowedCrossTaskNavigations)); - mBlockedCrossTaskNavigations = - new ArraySet<>(Objects.requireNonNull(blockedCrossTaskNavigations)); mDefaultNavigationPolicy = defaultNavigationPolicy; - mAllowedActivities = new ArraySet<>(Objects.requireNonNull(allowedActivities)); - mBlockedActivities = new ArraySet<>(Objects.requireNonNull(blockedActivities)); + mCrossTaskNavigationExemptions = + new ArraySet<>(Objects.requireNonNull(crossTaskNavigationExemptions)); mDefaultActivityPolicy = defaultActivityPolicy; + mActivityPolicyExemptions = + new ArraySet<>(Objects.requireNonNull(activityPolicyExemptions)); mName = name; mDevicePolicies = Objects.requireNonNull(devicePolicies); mVirtualSensorConfigs = Objects.requireNonNull(virtualSensorConfigs); @@ -244,12 +268,10 @@ public final class VirtualDeviceParams implements Parcelable { private VirtualDeviceParams(Parcel parcel) { mLockState = parcel.readInt(); mUsersWithMatchingAccounts = (ArraySet) parcel.readArraySet(null); - mAllowedCrossTaskNavigations = (ArraySet) parcel.readArraySet(null); - mBlockedCrossTaskNavigations = (ArraySet) parcel.readArraySet(null); mDefaultNavigationPolicy = parcel.readInt(); - mAllowedActivities = (ArraySet) parcel.readArraySet(null); - mBlockedActivities = (ArraySet) parcel.readArraySet(null); + mCrossTaskNavigationExemptions = (ArraySet) parcel.readArraySet(null); mDefaultActivityPolicy = parcel.readInt(); + mActivityPolicyExemptions = (ArraySet) parcel.readArraySet(null); mName = parcel.readString8(); mDevicePolicies = parcel.readSparseIntArray(); mVirtualSensorConfigs = new ArrayList<>(); @@ -289,7 +311,9 @@ public final class VirtualDeviceParams implements Parcelable { */ @NonNull public Set getAllowedCrossTaskNavigations() { - return Collections.unmodifiableSet(mAllowedCrossTaskNavigations); + return mDefaultNavigationPolicy == NAVIGATION_POLICY_DEFAULT_ALLOWED + ? Collections.emptySet() + : Collections.unmodifiableSet(mCrossTaskNavigationExemptions); } /** @@ -302,7 +326,9 @@ public final class VirtualDeviceParams implements Parcelable { */ @NonNull public Set getBlockedCrossTaskNavigations() { - return Collections.unmodifiableSet(mBlockedCrossTaskNavigations); + return mDefaultNavigationPolicy == NAVIGATION_POLICY_DEFAULT_BLOCKED + ? Collections.emptySet() + : Collections.unmodifiableSet(mCrossTaskNavigationExemptions); } /** @@ -326,7 +352,9 @@ public final class VirtualDeviceParams implements Parcelable { */ @NonNull public Set getAllowedActivities() { - return Collections.unmodifiableSet(mAllowedActivities); + return mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_ALLOWED + ? Collections.emptySet() + : Collections.unmodifiableSet(mActivityPolicyExemptions); } /** @@ -337,7 +365,9 @@ public final class VirtualDeviceParams implements Parcelable { */ @NonNull public Set getBlockedActivities() { - return Collections.unmodifiableSet(mBlockedActivities); + return mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_BLOCKED + ? Collections.emptySet() + : Collections.unmodifiableSet(mActivityPolicyExemptions); } /** @@ -373,6 +403,14 @@ public final class VirtualDeviceParams implements Parcelable { return mDevicePolicies.get(policyType, DEVICE_POLICY_DEFAULT); } + /** + * Returns all device policies. + * @hide + */ + public @NonNull SparseIntArray getDevicePolicies() { + return mDevicePolicies; + } + /** * Returns the configurations for all sensors that should be created for this device. * @@ -419,12 +457,10 @@ public final class VirtualDeviceParams implements Parcelable { public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeInt(mLockState); dest.writeArraySet(mUsersWithMatchingAccounts); - dest.writeArraySet(mAllowedCrossTaskNavigations); - dest.writeArraySet(mBlockedCrossTaskNavigations); dest.writeInt(mDefaultNavigationPolicy); - dest.writeArraySet(mAllowedActivities); - dest.writeArraySet(mBlockedActivities); + dest.writeArraySet(mCrossTaskNavigationExemptions); dest.writeInt(mDefaultActivityPolicy); + dest.writeArraySet(mActivityPolicyExemptions); dest.writeString8(mName); dest.writeSparseIntArray(mDevicePolicies); dest.writeTypedList(mVirtualSensorConfigs); @@ -457,11 +493,10 @@ public final class VirtualDeviceParams implements Parcelable { } return mLockState == that.mLockState && mUsersWithMatchingAccounts.equals(that.mUsersWithMatchingAccounts) - && Objects.equals(mAllowedCrossTaskNavigations, that.mAllowedCrossTaskNavigations) - && Objects.equals(mBlockedCrossTaskNavigations, that.mBlockedCrossTaskNavigations) + && Objects.equals( + mCrossTaskNavigationExemptions, that.mCrossTaskNavigationExemptions) && mDefaultNavigationPolicy == that.mDefaultNavigationPolicy - && Objects.equals(mAllowedActivities, that.mAllowedActivities) - && Objects.equals(mBlockedActivities, that.mBlockedActivities) + && Objects.equals(mActivityPolicyExemptions, that.mActivityPolicyExemptions) && mDefaultActivityPolicy == that.mDefaultActivityPolicy && Objects.equals(mName, that.mName) && mAudioPlaybackSessionId == that.mAudioPlaybackSessionId @@ -471,10 +506,9 @@ public final class VirtualDeviceParams implements Parcelable { @Override public int hashCode() { int hashCode = Objects.hash( - mLockState, mUsersWithMatchingAccounts, mAllowedCrossTaskNavigations, - mBlockedCrossTaskNavigations, mDefaultNavigationPolicy, mAllowedActivities, - mBlockedActivities, mDefaultActivityPolicy, mName, mDevicePolicies, - mAudioPlaybackSessionId, mAudioRecordingSessionId); + mLockState, mUsersWithMatchingAccounts, mCrossTaskNavigationExemptions, + mDefaultNavigationPolicy, mActivityPolicyExemptions, mDefaultActivityPolicy, mName, + mDevicePolicies, mAudioPlaybackSessionId, mAudioRecordingSessionId); for (int i = 0; i < mDevicePolicies.size(); i++) { hashCode = 31 * hashCode + mDevicePolicies.keyAt(i); hashCode = 31 * hashCode + mDevicePolicies.valueAt(i); @@ -488,12 +522,10 @@ public final class VirtualDeviceParams implements Parcelable { return "VirtualDeviceParams(" + " mLockState=" + mLockState + " mUsersWithMatchingAccounts=" + mUsersWithMatchingAccounts - + " mAllowedCrossTaskNavigations=" + mAllowedCrossTaskNavigations - + " mBlockedCrossTaskNavigations=" + mBlockedCrossTaskNavigations + " mDefaultNavigationPolicy=" + mDefaultNavigationPolicy - + " mAllowedActivities=" + mAllowedActivities - + " mBlockedActivities=" + mBlockedActivities + + " mCrossTaskNavigationExemptions=" + mCrossTaskNavigationExemptions + " mDefaultActivityPolicy=" + mDefaultActivityPolicy + + " mActivityPolicyExemptions=" + mActivityPolicyExemptions + " mName=" + mName + " mDevicePolicies=" + mDevicePolicies + " mAudioPlaybackSessionId=" + mAudioPlaybackSessionId @@ -501,6 +533,24 @@ public final class VirtualDeviceParams implements Parcelable { + ")"; } + /** + * Dumps debugging information about the VirtualDeviceParams + * @hide + */ + public void dump(PrintWriter pw, String prefix) { + pw.println(prefix + "mName=" + mName); + pw.println(prefix + "mLockState=" + mLockState); + pw.println(prefix + "mUsersWithMatchingAccounts=" + mUsersWithMatchingAccounts); + pw.println(prefix + "mDefaultNavigationPolicy=" + mDefaultNavigationPolicy); + pw.println(prefix + "mCrossTaskNavigationExemptions=" + mCrossTaskNavigationExemptions); + pw.println(prefix + "mDefaultActivityPolicy=" + mDefaultActivityPolicy); + pw.println(prefix + "mActivityPolicyExemptions=" + mActivityPolicyExemptions); + pw.println(prefix + "mDevicePolicies=" + mDevicePolicies); + pw.println(prefix + "mVirtualSensorConfigs=" + mVirtualSensorConfigs); + pw.println(prefix + "mAudioPlaybackSessionId=" + mAudioPlaybackSessionId); + pw.println(prefix + "mAudioRecordingSessionId=" + mAudioRecordingSessionId); + } + @NonNull public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { @@ -520,13 +570,11 @@ public final class VirtualDeviceParams implements Parcelable { private @LockState int mLockState = LOCK_STATE_DEFAULT; @NonNull private Set mUsersWithMatchingAccounts = Collections.emptySet(); - @NonNull private Set mAllowedCrossTaskNavigations = Collections.emptySet(); - @NonNull private Set mBlockedCrossTaskNavigations = Collections.emptySet(); + @NonNull private Set mCrossTaskNavigationExemptions = Collections.emptySet(); @NavigationPolicy private int mDefaultNavigationPolicy = NAVIGATION_POLICY_DEFAULT_ALLOWED; private boolean mDefaultNavigationPolicyConfigured = false; - @NonNull private Set mBlockedActivities = Collections.emptySet(); - @NonNull private Set mAllowedActivities = Collections.emptySet(); + @NonNull private Set mActivityPolicyExemptions = Collections.emptySet(); @ActivityPolicy private int mDefaultActivityPolicy = ACTIVITY_POLICY_DEFAULT_ALLOWED; private boolean mDefaultActivityPolicyConfigured = false; @@ -665,12 +713,12 @@ public final class VirtualDeviceParams implements Parcelable { if (mDefaultNavigationPolicyConfigured && mDefaultNavigationPolicy != NAVIGATION_POLICY_DEFAULT_BLOCKED) { throw new IllegalArgumentException( - "Allowed cross task navigation and blocked task navigation cannot " + "Allowed cross task navigations and blocked cross task navigations cannot " + " both be set."); } mDefaultNavigationPolicy = NAVIGATION_POLICY_DEFAULT_BLOCKED; mDefaultNavigationPolicyConfigured = true; - mAllowedCrossTaskNavigations = Objects.requireNonNull(allowedCrossTaskNavigations); + mCrossTaskNavigationExemptions = Objects.requireNonNull(allowedCrossTaskNavigations); return this; } @@ -701,7 +749,7 @@ public final class VirtualDeviceParams implements Parcelable { } mDefaultNavigationPolicy = NAVIGATION_POLICY_DEFAULT_ALLOWED; mDefaultNavigationPolicyConfigured = true; - mBlockedCrossTaskNavigations = Objects.requireNonNull(blockedCrossTaskNavigations); + mCrossTaskNavigationExemptions = Objects.requireNonNull(blockedCrossTaskNavigations); return this; } @@ -727,7 +775,7 @@ public final class VirtualDeviceParams implements Parcelable { } mDefaultActivityPolicy = ACTIVITY_POLICY_DEFAULT_BLOCKED; mDefaultActivityPolicyConfigured = true; - mAllowedActivities = Objects.requireNonNull(allowedActivities); + mActivityPolicyExemptions = Objects.requireNonNull(allowedActivities); return this; } @@ -753,7 +801,7 @@ public final class VirtualDeviceParams implements Parcelable { } mDefaultActivityPolicy = ACTIVITY_POLICY_DEFAULT_ALLOWED; mDefaultActivityPolicyConfigured = true; - mBlockedActivities = Objects.requireNonNull(blockedActivities); + mActivityPolicyExemptions = Objects.requireNonNull(blockedActivities); return this; } @@ -926,6 +974,35 @@ public final class VirtualDeviceParams implements Parcelable { mVirtualSensorDirectChannelCallback); } + if (Flags.dynamicPolicy()) { + switch (mDevicePolicies.get(POLICY_TYPE_ACTIVITY, -1)) { + case DEVICE_POLICY_DEFAULT: + if (mDefaultActivityPolicyConfigured + && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_BLOCKED) { + throw new IllegalArgumentException( + "DEVICE_POLICY_DEFAULT is explicitly configured for " + + "POLICY_TYPE_ACTIVITY, which is exclusive with " + + "setAllowedActivities."); + } + break; + case DEVICE_POLICY_CUSTOM: + if (mDefaultActivityPolicyConfigured + && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_ALLOWED) { + throw new IllegalArgumentException( + "DEVICE_POLICY_CUSTOM is explicitly configured for " + + "POLICY_TYPE_ACTIVITY, which is exclusive with " + + "setBlockedActivities."); + } + break; + default: + if (mDefaultActivityPolicyConfigured + && mDefaultActivityPolicy == ACTIVITY_POLICY_DEFAULT_BLOCKED) { + mDevicePolicies.put(POLICY_TYPE_ACTIVITY, DEVICE_POLICY_CUSTOM); + } + break; + } + } + if ((mAudioPlaybackSessionId != AUDIO_SESSION_ID_GENERATE || mAudioRecordingSessionId != AUDIO_SESSION_ID_GENERATE) && mDevicePolicies.get(POLICY_TYPE_AUDIO, DEVICE_POLICY_DEFAULT) @@ -934,7 +1011,7 @@ public final class VirtualDeviceParams implements Parcelable { + "required for configuration of device-specific audio session ids."); } - SparseArray> sensorNameByType = new SparseArray(); + SparseArray> sensorNameByType = new SparseArray<>(); for (int i = 0; i < mVirtualSensorConfigs.size(); ++i) { VirtualSensorConfig config = mVirtualSensorConfigs.get(i); Set sensorNames = sensorNameByType.get(config.getType(), new ArraySet<>()); @@ -948,12 +1025,10 @@ public final class VirtualDeviceParams implements Parcelable { return new VirtualDeviceParams( mLockState, mUsersWithMatchingAccounts, - mAllowedCrossTaskNavigations, - mBlockedCrossTaskNavigations, mDefaultNavigationPolicy, - mAllowedActivities, - mBlockedActivities, + mCrossTaskNavigationExemptions, mDefaultActivityPolicy, + mActivityPolicyExemptions, mName, mDevicePolicies, mVirtualSensorConfigs, diff --git a/core/java/android/companion/virtual/flags.aconfig b/core/java/android/companion/virtual/flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..ee36f187b729d301d6ee554638f9d4e61b309fa4 --- /dev/null +++ b/core/java/android/companion/virtual/flags.aconfig @@ -0,0 +1,29 @@ +package: "android.companion.virtual.flags" + +flag { + name: "more_logs" + namespace: "virtual_devices" + description: "More logs to test flags with" + bug: "291725823" +} + +flag { + name: "dynamic_policy" + namespace: "virtual_devices" + description: "Enable dynamic policy API" + bug: "298401780" +} + +flag { + name: "vdm_public_apis" + namespace: "virtual_devices" + description: "Enable public VDM API for device capabilities" + bug: "297253526" +} + +flag { + name: "virtual_camera" + namespace: "virtual_devices" + description: "Enable Virtual Camera" + bug: "270352264" +} diff --git a/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java b/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java index 3bdf9aa8015b325915343b45e86d674a5a4f554c..0dbe411a400ec5a21e06fc22f94db50cee3409f0 100644 --- a/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java +++ b/core/java/android/companion/virtual/sensor/VirtualSensorConfig.java @@ -104,6 +104,11 @@ public final class VirtualSensorConfig implements Parcelable { parcel.writeInt(mFlags); } + @Override + public String toString() { + return "VirtualSensorConfig{" + "mType=" + mType + ", mName='" + mName + '\'' + '}'; + } + /** * Returns the type of the sensor. * diff --git a/core/java/android/content/AttributionSource.java b/core/java/android/content/AttributionSource.java index 8f35ca25ab22bd0700133d256a1389b961e91c62..15678a772ef4662631db928c982eae4ddf580742 100644 --- a/core/java/android/content/AttributionSource.java +++ b/core/java/android/content/AttributionSource.java @@ -225,6 +225,11 @@ public final class AttributionSource implements Parcelable { token, mAttributionSourceState.renouncedPermissions, getDeviceId(), getNext()); } + /** @hide */ + public AttributionSource withDefaultToken() { + return withToken(sDefaultToken); + } + /** @hide */ public AttributionSource withPid(int pid) { return new AttributionSource(getUid(), pid, getPackageName(), getAttributionTag(), @@ -552,16 +557,28 @@ public final class AttributionSource implements Parcelable { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; AttributionSource that = (AttributionSource) o; - return mAttributionSourceState.uid == that.mAttributionSourceState.uid + return equalsExceptToken(that) && Objects.equals( + mAttributionSourceState.token, that.mAttributionSourceState.token); + } + + /** + * We store trusted attribution sources without their token (the token is the key to the map) + * to avoid having a strong reference to the token. This means, when checking the equality of a + * supplied AttributionSource in PermissionManagerService.isTrustedAttributionSource, we want to + * compare everything except the token. + * + * @hide + */ + public boolean equalsExceptToken(@Nullable AttributionSource o) { + if (o == null) return false; + return mAttributionSourceState.uid == o.mAttributionSourceState.uid && Objects.equals(mAttributionSourceState.packageName, - that.mAttributionSourceState.packageName) + o.mAttributionSourceState.packageName) && Objects.equals(mAttributionSourceState.attributionTag, - that.mAttributionSourceState.attributionTag) - && Objects.equals(mAttributionSourceState.token, - that.mAttributionSourceState.token) + o.mAttributionSourceState.attributionTag) && Arrays.equals(mAttributionSourceState.renouncedPermissions, - that.mAttributionSourceState.renouncedPermissions) - && Objects.equals(getNext(), that.getNext()); + o.mAttributionSourceState.renouncedPermissions) + && Objects.equals(getNext(), o.getNext()); } @Override diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java index 5ef7b117d86e209084d4797a3b4190989d1b12d7..b6a98a5b8f835aec1d73c227a7a102536335bf68 100644 --- a/core/java/android/content/Context.java +++ b/core/java/android/content/Context.java @@ -593,7 +593,7 @@ public abstract class Context { public static final int BIND_IMPORTANT_BACKGROUND = 0x00800000; /** - * @hide Flag for {@link #bindService}: allows application hosting service to manage whitelists + * @hide Flag for {@link #bindService}: allows application hosting service to manage allowlists * such as temporary allowing a {@code PendingIntent} to bypass Power Save mode. */ public static final int BIND_ALLOW_WHITELIST_MANAGEMENT = 0x01000000; @@ -4089,6 +4089,7 @@ public abstract class Context { VIBRATOR_MANAGER_SERVICE, VIBRATOR_SERVICE, //@hide: STATUS_BAR_SERVICE, + THREAD_NETWORK_SERVICE, CONNECTIVITY_SERVICE, PAC_PROXY_SERVICE, VCN_MANAGEMENT_SERVICE, @@ -4762,6 +4763,20 @@ public abstract class Context { @SystemApi public static final String TETHERING_SERVICE = "tethering"; + /** + * Use with {@link #getSystemService(String)} to retrieve a + * {@link android.net.thread.ThreadNetworkManager}. + * + *

    On devices without {@link PackageManager#FEATURE_THREAD_NETWORK} system feature + * the {@link #getSystemService(String)} will return {@code null}. + * + * @see #getSystemService(String) + * @see android.net.thread.ThreadNetworkManager + * @hide + */ + @SystemApi + public static final String THREAD_NETWORK_SERVICE = "thread_network"; + /** * Use with {@link #getSystemService(String)} to retrieve a * {@link android.net.IpSecManager} for encrypting Sockets or Networks with diff --git a/core/java/android/content/ContextParams.java b/core/java/android/content/ContextParams.java index 5cc3a2420811ed6bb32a36df3337451966705e41..988a9c0ab9b381d509f843b1010663ac7c34b8c9 100644 --- a/core/java/android/content/ContextParams.java +++ b/core/java/android/content/ContextParams.java @@ -50,17 +50,20 @@ public final class ContextParams { private final @Nullable String mAttributionTag; private final @Nullable AttributionSource mNext; private final @NonNull Set mRenouncedPermissions; + private final boolean mShouldRegisterAttributionSource; /** {@hide} */ public static final ContextParams EMPTY = new ContextParams.Builder().build(); private ContextParams(@Nullable String attributionTag, @Nullable AttributionSource next, - @Nullable Set renouncedPermissions) { + @Nullable Set renouncedPermissions, + boolean shouldRegister) { mAttributionTag = attributionTag; mNext = next; mRenouncedPermissions = (renouncedPermissions != null) ? renouncedPermissions : Collections.emptySet(); + mShouldRegisterAttributionSource = shouldRegister; } /** @@ -94,6 +97,15 @@ public final class ContextParams { return mNext; } + /** + * @return Whether the attribution source associated with the Context being created should be + * registered. + */ + @NonNull + public boolean shouldRegisterAttributionSource() { + return mShouldRegisterAttributionSource; + } + /** * Builder for creating a {@link ContextParams}. */ @@ -101,6 +113,7 @@ public final class ContextParams { private @Nullable String mAttributionTag; private @NonNull Set mRenouncedPermissions = Collections.emptySet(); private @Nullable AttributionSource mNext; + private boolean mShouldRegisterAttributionSource; /** * Create a new builder. @@ -158,6 +171,19 @@ public final class ContextParams { return this; } + /** + * Sets whether the attribution source associated with the context created from these params + * should be registered. + * + * @param shouldRegister Whether the attribution source associated with the Context being + * created should be registered. + */ + @NonNull + public Builder setShouldRegisterAttributionSource(boolean shouldRegister) { + mShouldRegisterAttributionSource = shouldRegister; + return this; + } + /** * Sets permissions which have been voluntarily "renounced" by the * calling app. @@ -205,7 +231,7 @@ public final class ContextParams { @NonNull public ContextParams build() { return new ContextParams(mAttributionTag, mNext, - mRenouncedPermissions); + mRenouncedPermissions, mShouldRegisterAttributionSource); } } } diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index afeb3d295a7c7222ed619bdccce68edaac19f8d6..7579d99f4927dd60af4c3369f9cc1f5e9a16a327 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -5270,6 +5270,16 @@ public class Intent implements Parcelable, Cloneable { public static final String ACTION_SHOW_FOREGROUND_SERVICE_MANAGER = "android.intent.action.SHOW_FOREGROUND_SERVICE_MANAGER"; + /** + * Broadcast Action: Sent to the responsible installer of an archived package when unarchival + * is requested. + * + * @see android.content.pm.PackageInstaller#requestUnarchive(String) + * @hide + */ + @SystemApi + public static final String ACTION_UNARCHIVE_PACKAGE = "android.intent.action.UNARCHIVE_PACKAGE"; + // --------------------------------------------------------------------- // --------------------------------------------------------------------- // Standard intent categories (see addCategory()). @@ -6259,6 +6269,14 @@ public class Intent implements Parcelable, Cloneable { */ public static final String EXTRA_REPLACING = "android.intent.extra.REPLACING"; + /** + * Used as a boolean extra field in {@link android.content.Intent#ACTION_PACKAGE_ADDED} and + * {@link android.content.Intent#ACTION_PACKAGE_REMOVED} intents to indicate that + * the package is being archived. Either by removing the existing APK, or by installing + * a package without an APK. + */ + public static final String EXTRA_ARCHIVAL = "android.intent.extra.ARCHIVAL"; + /** * Used as a boolean extra field in {@link android.content.Intent#ACTION_PACKAGE_REMOVED} * intents to indicate that this is a system update uninstall. @@ -6705,6 +6723,15 @@ public class Intent implements Parcelable, Cloneable { public static final String EXTRA_VISIBILITY_ALLOW_LIST = "android.intent.extra.VISIBILITY_ALLOW_LIST"; + /** + * A boolean extra used with {@link #ACTION_PACKAGE_DATA_CLEARED} which indicates if the intent + * is broadcast as part of a restore operation. + * + * @hide + */ + public static final String EXTRA_IS_RESTORE = + "android.intent.extra.IS_RESTORE"; + // --------------------------------------------------------------------- // --------------------------------------------------------------------- // Intent flags (see mFlags variable). @@ -12489,6 +12516,7 @@ public class Intent implements Parcelable, Cloneable { return (mFlags & FLAG_ACTIVITY_NEW_DOCUMENT) == FLAG_ACTIVITY_NEW_DOCUMENT; } + // TODO(b/299109198): Refactor into the {@link SdkSandboxManagerLocal} /** @hide */ public boolean isSandboxActivity(@NonNull Context context) { if (mAction != null && mAction.equals(ACTION_START_SANDBOXED_ACTIVITY)) { diff --git a/core/java/android/content/IntentSender.java b/core/java/android/content/IntentSender.java index 3686898575aacdc0a96767a67b31281e9d52753f..b074e8b0c31b66dda2909e623d03f7d1b98d66b1 100644 --- a/core/java/android/content/IntentSender.java +++ b/core/java/android/content/IntentSender.java @@ -396,9 +396,9 @@ public class IntentSender implements Parcelable { } /** @hide */ - public IntentSender(IIntentSender target, IBinder whitelistToken) { + public IntentSender(IIntentSender target, IBinder allowlistToken) { mTarget = target; - mWhitelistToken = whitelistToken; + mWhitelistToken = allowlistToken; } /** @hide */ diff --git a/core/java/android/content/om/OWNERS b/core/java/android/content/om/OWNERS index 3669817e98443229d007b58f86a9a1d762a4417b..72aed2d3fdafac2fb7f86c8311285f1039022e56 100644 --- a/core/java/android/content/om/OWNERS +++ b/core/java/android/content/om/OWNERS @@ -1,6 +1,5 @@ # Bug component: 568631 -toddke@android.com -toddke@google.com patb@google.com zyy@google.com +jakmcbane@google.com \ No newline at end of file diff --git a/core/java/android/content/pm/ArchivedActivityParcel.aidl b/core/java/android/content/pm/ArchivedActivityParcel.aidl new file mode 100644 index 0000000000000000000000000000000000000000..7ab7ed1cc5df571edfb55c99cf112d1cbd4a357b --- /dev/null +++ b/core/java/android/content/pm/ArchivedActivityParcel.aidl @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2023 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.content.pm; + +/** @hide */ +parcelable ArchivedActivityParcel { + String title; + // PNG compressed bitmaps. + byte[] iconBitmap; + byte[] monochromeIconBitmap; +} diff --git a/core/java/android/content/pm/ArchivedPackageParcel.aidl b/core/java/android/content/pm/ArchivedPackageParcel.aidl new file mode 100644 index 0000000000000000000000000000000000000000..d3cd79efc3b533799886a14095d380d6579c943e --- /dev/null +++ b/core/java/android/content/pm/ArchivedPackageParcel.aidl @@ -0,0 +1,37 @@ +/* + * Copyright (C) 2023 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.content.pm; + +import android.content.pm.ArchivedActivityParcel; +import android.content.pm.SigningDetails; + +/** + * Contains fields required for archived package installation, + * i.e. installation without an APK. + * @hide + */ +parcelable ArchivedPackageParcel { + String packageName; + SigningDetails signingDetails; + int versionCode; + int versionCodeMajor; + int targetSdkVersion; + String defaultToDeviceProtectedStorage; + String requestLegacyExternalStorage; + String userDataFragile; + ArchivedActivityParcel[] archivedActivities; +} diff --git a/core/java/android/content/pm/CrossProfileApps.java b/core/java/android/content/pm/CrossProfileApps.java index c3df17d4b53e3fbdd19879b2d02ca46e69eb8707..529363f828bb889c3d69525a7a753be84f74b7d7 100644 --- a/core/java/android/content/pm/CrossProfileApps.java +++ b/core/java/android/content/pm/CrossProfileApps.java @@ -344,15 +344,22 @@ public class CrossProfileApps { // If there is a label for the launcher intent, then use that as it is typically shorter. // Otherwise, just use the top-level application name. Intent launchIntent = pm.getLaunchIntentForPackage(mContext.getPackageName()); + if (launchIntent == null) { + return getDefaultCallingApplicationLabel(); + } List infos = pm.queryIntentActivities( launchIntent, PackageManager.ResolveInfoFlags.of(MATCH_DEFAULT_ONLY)); if (infos.size() > 0) { return infos.get(0).loadLabel(pm); } + return getDefaultCallingApplicationLabel(); + } + + private CharSequence getDefaultCallingApplicationLabel() { return mContext.getApplicationInfo() .loadSafeLabel( - pm, + mContext.getPackageManager(), /* ellipsizeDip= */ 0, TextUtils.SAFE_STRING_FLAG_SINGLE_LINE | TextUtils.SAFE_STRING_FLAG_TRIM); diff --git a/core/java/android/content/pm/IPackageInstaller.aidl b/core/java/android/content/pm/IPackageInstaller.aidl index ebe2aa3e3aa00e0051ba60c887b44b57cced942a..edb07ce423c10a2db6b81ce18001c7625dbf1499 100644 --- a/core/java/android/content/pm/IPackageInstaller.aidl +++ b/core/java/android/content/pm/IPackageInstaller.aidl @@ -24,6 +24,7 @@ import android.content.pm.ParceledListSlice; import android.content.pm.VersionedPackage; import android.content.IntentSender; import android.os.RemoteCallback; +import android.os.UserHandle; import android.graphics.Bitmap; @@ -75,4 +76,10 @@ interface IPackageInstaller { void waitForInstallConstraints(String installerPackageName, in List packageNames, in PackageInstaller.InstallConstraints constraints, in IntentSender callback, long timeout); + + @JavaPassthrough(annotation="@android.annotation.RequiresPermission(anyOf={android.Manifest.permission.DELETE_PACKAGES,android.Manifest.permission.REQUEST_DELETE_PACKAGES})") + void requestArchive(String packageName, String callerPackageName, in IntentSender statusReceiver, in UserHandle userHandle); + + @JavaPassthrough(annotation="@android.annotation.RequiresPermission(anyOf={android.Manifest.permission.INSTALL_PACKAGES,android.Manifest.permission.REQUEST_INSTALL_PACKAGES})") + void requestUnarchive(String packageName, String callerPackageName, in UserHandle userHandle); } diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index c5585afb143a1590a305c8b3e62d8df22d20de9e..aca88d6af033aff5807b144d052d246ec6ca7131 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -20,8 +20,10 @@ package android.content.pm; import android.content.ComponentName; import android.content.Intent; import android.content.IntentFilter; +import android.content.IntentSender; import android.content.pm.ActivityInfo; import android.content.pm.ApplicationInfo; +import android.content.pm.ArchivedPackageParcel; import android.content.pm.ChangedPackages; import android.content.pm.InstantAppInfo; import android.content.pm.FeatureInfo; @@ -58,7 +60,7 @@ import android.os.Bundle; import android.os.IRemoteCallback; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; -import android.content.IntentSender; +import android.os.UserHandle; import java.util.Map; @@ -304,6 +306,8 @@ interface IPackageManager { boolean isPackageSuspendedForUser(String packageName, int userId); + boolean isPackageQuarantinedForUser(String packageName, int userId); + Bundle getSuspendedPackageAppExtras(String packageName, int userId); /** @@ -828,4 +832,8 @@ interface IPackageManager { void registerPackageMonitorCallback(IRemoteCallback callback, int userId); void unregisterPackageMonitorCallback(IRemoteCallback callback); + + ArchivedPackageParcel getArchivedPackage(in String packageName, int userId); + + Bitmap getArchivedAppIcon(String packageName, in UserHandle user); } diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index 8cb96ba0974870ec813547735150e4208862605f..3a9e9bf01f0472027c9e209c2df4fd5376a1e298 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -34,6 +34,7 @@ import android.Manifest; import android.annotation.CallbackExecutor; import android.annotation.CurrentTimeMillisLong; import android.annotation.DurationMillisLong; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -347,6 +348,35 @@ public class PackageInstaller { public static final String EXTRA_RESOLVED_BASE_PATH = "android.content.pm.extra.RESOLVED_BASE_PATH"; + /** + * Extra field for the package name of a package that is requested to be unarchived. Sent as + * part of the {@link android.content.Intent#ACTION_UNARCHIVE_PACKAGE} intent. + * + * @hide + */ + @SystemApi + @FlaggedApi(Flags.FLAG_ARCHIVING) + public static final String EXTRA_UNARCHIVE_PACKAGE_NAME = + "android.content.pm.extra.UNARCHIVE_PACKAGE_NAME"; + + /** + * If true, the requestor of the unarchival has specified that the app should be unarchived + * for {@link android.os.UserHandle#ALL}. + * + * @hide + */ + @SystemApi + @FlaggedApi(Flags.FLAG_ARCHIVING) + public static final String EXTRA_UNARCHIVE_ALL_USERS = + "android.content.pm.extra.UNARCHIVE_ALL_USERS"; + + /** + * A list of warnings that occurred during installation. + * + * @hide + */ + public static final String EXTRA_WARNINGS = "android.content.pm.extra.WARNINGS"; + /** * Streaming installation pending. * Caller should make sure DataLoader is able to prepare image and reinitiate the operation. @@ -1495,8 +1525,7 @@ public class PackageInstaller { * This returns all names which have been previously written through * {@link #openWrite(String, long, long)} as part of this session. * - * @throws SecurityException if called after the session has been - * committed or abandoned. + * @throws SecurityException if called after the session has been abandoned. */ public @NonNull String[] getNames() throws IOException { try { @@ -2158,6 +2187,72 @@ public class PackageInstaller { return new InstallInfo(result); } + /** + * Requests to archive a package which is currently installed. + * + *

    During the archival process, the apps APKs and cache are removed from the device while + * the user data is kept. Through the {@link #requestUnarchive(String)} call, apps can be + * restored again through their responsible installer. + * + *

    Archived apps are returned as displayable apps through the {@link LauncherApps} APIs and + * will be displayed to users with UI treatment to highlight that said apps are archived. If + * a user taps on an archived app, the app will be unarchived and the restoration process is + * communicated. + * + * @param statusReceiver Callback used to notify when the operation is completed. + * @throws PackageManager.NameNotFoundException If {@code packageName} isn't found or not + * available to the caller or isn't archived. + * @hide + */ + @RequiresPermission(anyOf = { + Manifest.permission.DELETE_PACKAGES, + Manifest.permission.REQUEST_DELETE_PACKAGES}) + @SystemApi + @FlaggedApi(Flags.FLAG_ARCHIVING) + public void requestArchive(@NonNull String packageName, @NonNull IntentSender statusReceiver) + throws PackageManager.NameNotFoundException { + try { + mInstaller.requestArchive(packageName, mInstallerPackageName, statusReceiver, + new UserHandle(mUserId)); + } catch (ParcelableException e) { + e.maybeRethrow(PackageManager.NameNotFoundException.class); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Requests to unarchive a currently archived package. + * + *

    Sends a request to unarchive an app to the responsible installer. The installer is + * determined by {@link InstallSourceInfo#getUpdateOwnerPackageName()}, or + * {@link InstallSourceInfo#getInstallingPackageName()} if the former value is null. + * + *

    The installation will happen asynchronously and can be observed through + * {@link android.content.Intent#ACTION_PACKAGE_ADDED}. + * + * @throws PackageManager.NameNotFoundException If {@code packageName} isn't found or not + * visible to the caller or if the package has no + * installer on the device anymore to unarchive it. + * @hide + */ + @RequiresPermission(anyOf = { + Manifest.permission.INSTALL_PACKAGES, + Manifest.permission.REQUEST_INSTALL_PACKAGES}) + @SystemApi + @FlaggedApi(Flags.FLAG_ARCHIVING) + public void requestUnarchive(@NonNull String packageName) + throws PackageManager.NameNotFoundException { + try { + mInstaller.requestUnarchive(packageName, mInstallerPackageName, + new UserHandle(mUserId)); + } catch (ParcelableException e) { + e.maybeRethrow(PackageManager.NameNotFoundException.class); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + // (b/239722738) This class serves as a bridge between the PackageLite class, which // is a hidden class, and the consumers of this class. (e.g. InstallInstalling.java) // This is a part of an effort to remove dependency on hidden APIs and use SystemAPIs or @@ -2929,7 +3024,13 @@ public class PackageInstaller { * * By default this is the app that created the {@link PackageInstaller} object. * - * @param installerPackageName name of the installer package + * Note: Only applications with {@link android.Manifest.permission#INSTALL_PACKAGES} + * permission are allowed to set an installer that is not the caller's own installer + * package name, otherwise it will cause a {@link SecurityException} when creating the + * install session. + * + * @param installerPackageName The name of the installer package, its length must be less + * than {@code 255}, otherwise it will be invalid. */ public void setInstallerPackageName(@Nullable String installerPackageName) { this.installerPackageName = installerPackageName; diff --git a/core/java/android/content/pm/PackageItemInfo.java b/core/java/android/content/pm/PackageItemInfo.java index bb978e05dd169a7c442a82124ea43285f9e3eadd..c7091ad991990bb49e664ab783636656da824bb7 100644 --- a/core/java/android/content/pm/PackageItemInfo.java +++ b/core/java/android/content/pm/PackageItemInfo.java @@ -21,6 +21,7 @@ import static android.text.TextUtils.SAFE_STRING_FLAG_SINGLE_LINE; import static android.text.TextUtils.SAFE_STRING_FLAG_TRIM; import static android.text.TextUtils.makeSafeForPresentation; +import android.annotation.FlaggedApi; import android.annotation.FloatRange; import android.annotation.NonNull; import android.annotation.SystemApi; @@ -173,6 +174,18 @@ public class PackageItemInfo { */ public int showUserIcon; + /** + * Whether the package is currently in an archived state. + * + *

    Packages can be archived through {@link PackageArchiver} and do not have any APKs stored + * on the device, but do keep the data directory. + * @hide + */ + // TODO(b/278553670) Unhide and update @links before launch. + @SystemApi + @FlaggedApi(Flags.FLAG_ARCHIVING) + public boolean isArchived; + public PackageItemInfo() { showUserIcon = UserHandle.USER_NULL; } @@ -189,6 +202,7 @@ public class PackageItemInfo { logo = orig.logo; metaData = orig.metaData; showUserIcon = orig.showUserIcon; + isArchived = orig.isArchived; } /** @@ -442,6 +456,7 @@ public class PackageItemInfo { dest.writeBundle(metaData); dest.writeInt(banner); dest.writeInt(showUserIcon); + dest.writeBoolean(isArchived); } /** @@ -459,6 +474,7 @@ public class PackageItemInfo { } proto.write(PackageItemInfoProto.ICON, icon); proto.write(PackageItemInfoProto.BANNER, banner); + proto.write(PackageItemInfoProto.IS_ARCHIVED, isArchived); proto.end(token); } @@ -473,6 +489,7 @@ public class PackageItemInfo { metaData = source.readBundle(); banner = source.readInt(); showUserIcon = source.readInt(); + isArchived = source.readBoolean(); } /** diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 885e67e1a8c883784d7effbd75449b677eb6254d..3bd6a099ba2f1e9b52587718e680af7728b8df39 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -20,6 +20,7 @@ import android.Manifest; import android.annotation.CallbackExecutor; import android.annotation.CheckResult; import android.annotation.DrawableRes; +import android.annotation.FlaggedApi; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.LongDef; @@ -29,6 +30,7 @@ import android.annotation.RequiresPermission; import android.annotation.SdkConstant; import android.annotation.SdkConstant.SdkConstantType; import android.annotation.StringRes; +import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.TestApi; import android.annotation.UserIdInt; @@ -787,6 +789,7 @@ public abstract class PackageManager { MATCH_DEBUG_TRIAGED_MISSING, MATCH_INSTANT, MATCH_APEX, + MATCH_ARCHIVED_PACKAGES, GET_DISABLED_COMPONENTS, GET_DISABLED_UNTIL_USED_COMPONENTS, GET_UNINSTALLED_PACKAGES, @@ -811,6 +814,7 @@ public abstract class PackageManager { GET_UNINSTALLED_PACKAGES, MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS, MATCH_APEX, + MATCH_ARCHIVED_PACKAGES, }) @Retention(RetentionPolicy.SOURCE) public @interface ApplicationInfoFlagsBits {} @@ -1234,6 +1238,22 @@ public abstract class PackageManager { */ public static final long GET_ATTRIBUTIONS_LONG = 0x80000000L; + /** + * Flag parameter to also retrieve some information about archived packages. + * Packages can be archived through + * {@link PackageInstaller#requestArchive(String, IntentSender)} and do not have any APKs stored + * on the device, but do keep the data directory. + *

    Note: Archived apps are a subset of apps returned by {@link #MATCH_UNINSTALLED_PACKAGES}. + *

    Note: this flag may cause less information about currently installed + * applications to be returned. + *

    Note: use of this flag requires the android.permission.QUERY_ALL_PACKAGES + * permission to see uninstalled packages. + * @hide + */ + // TODO(b/278553670) Unhide and update @links before launch. + @SystemApi + public static final long MATCH_ARCHIVED_PACKAGES = 1L << 32; + /** * @hide */ @@ -1681,6 +1701,13 @@ public abstract class PackageManager { */ public static final int INSTALL_FROM_MANAGED_USER_OR_PROFILE = 1 << 26; + /** + * Flag parameter for {@link PackageInstaller.SessionParams} to indicate that this + * session is for archived package installation. + * @hide + */ + public static final int INSTALL_ARCHIVED = 1 << 27; + /** * Flag parameter for {@link #installPackage} to force a non-staged update of an APEX. This is * a development-only feature and should not be used on end user devices. @@ -1730,6 +1757,8 @@ public abstract class PackageManager { * * @hide */ + @SystemApi + @FlaggedApi(android.content.pm.Flags.FLAG_QUARANTINED_ENABLED) public static final int FLAG_SUSPEND_QUARANTINED = 0x00000001; /** @hide */ @@ -2519,6 +2548,15 @@ public abstract class PackageManager { */ public static final int DELETE_DONT_KILL_APP = 0x00000008; + /** + * Flag parameter for {@link #deletePackage} to indicate that the deletion is an archival. This + * flag is only for internal usage as part of + * {@link PackageInstaller#requestArchive(String, IntentSender)}. + * + * @hide + */ + public static final int DELETE_ARCHIVE = 0x00000010; + /** * Flag parameter for {@link #deletePackage} to indicate that package deletion * should be chatty. @@ -9727,7 +9765,10 @@ public abstract class PackageManager { * * @hide */ + @SystemApi + @FlaggedApi(android.content.pm.Flags.FLAG_QUARANTINED_ENABLED) @RequiresPermission(value=Manifest.permission.SUSPEND_APPS, conditional=true) + @SuppressLint("NullableCollection") @Nullable public String[] setPackagesSuspended(@Nullable String[] packageNames, boolean suspended, @Nullable PersistableBundle appExtras, @Nullable PersistableBundle launcherExtras, diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 9387ae1d6ac8ad5be56de904ee3bedc7227cebc1..4b579e7db9f840f8e5cd25d8e7131b8f5480426e 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -1445,7 +1445,7 @@ public class PackageParser { verified.getPublicKeys(), verified.getPastSigningCertificates()); } else { - if (!Signature.areExactMatch(pkg.mSigningDetails.signatures, + if (!Signature.areExactArraysMatch(pkg.mSigningDetails.signatures, verified.getSignatures())) { throw new PackageParserException( INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES, @@ -1456,8 +1456,8 @@ public class PackageParser { private static AssetManager newConfiguredAssetManager() { AssetManager assetManager = new AssetManager(); - assetManager.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - Build.VERSION.RESOURCES_SDK_INT); + assetManager.setConfiguration(0, 0, null, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, Build.VERSION.RESOURCES_SDK_INT); return assetManager; } @@ -6468,7 +6468,7 @@ public class PackageParser { } } } else { - return Signature.areEffectiveMatch(oldDetails.signatures, signatures); + return Signature.areEffectiveArraysMatch(oldDetails.signatures, signatures); } return false; } @@ -6616,7 +6616,7 @@ public class PackageParser { /** Returns true if the signatures in this and other match exactly. */ public boolean signaturesMatchExactly(SigningDetails other) { - return Signature.areExactMatch(this.signatures, other.signatures); + return Signature.areExactArraysMatch(this.signatures, other.signatures); } @Override @@ -6668,7 +6668,7 @@ public class PackageParser { SigningDetails that = (SigningDetails) o; if (signatureSchemeVersion != that.signatureSchemeVersion) return false; - if (!Signature.areExactMatch(signatures, that.signatures)) return false; + if (!Signature.areExactArraysMatch(signatures, that.signatures)) return false; if (publicKeys != null) { if (!publicKeys.equals((that.publicKeys))) { return false; @@ -6677,7 +6677,8 @@ public class PackageParser { return false; } - // can't use Signature.areExactMatch() because order matters with the past signing certs + // can't use Signature.areExactArraysMatch() because order matters with the past + // signing certs if (!Arrays.equals(pastSigningCertificates, that.pastSigningCertificates)) { return false; } @@ -9011,8 +9012,8 @@ public class PackageParser { } AssetManager assets = new AssetManager(); - assets.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - Build.VERSION.RESOURCES_SDK_INT); + assets.setConfiguration(0, 0, null, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, Build.VERSION.RESOURCES_SDK_INT); assets.setApkAssets(apkAssets, false /*invalidateCaches*/); mCachedAssetManager = assets; @@ -9086,8 +9087,8 @@ public class PackageParser { private static AssetManager createAssetManagerWithAssets(ApkAssets[] apkAssets) { final AssetManager assets = new AssetManager(); - assets.setConfiguration(0, 0, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - Build.VERSION.RESOURCES_SDK_INT); + assets.setConfiguration(0, 0, null, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, Build.VERSION.RESOURCES_SDK_INT); assets.setApkAssets(apkAssets, false /*invalidateCaches*/); return assets; } diff --git a/core/java/android/content/pm/RegisteredServicesCache.java b/core/java/android/content/pm/RegisteredServicesCache.java index 149de7efc861d13f97a029f8451848d8997e9c82..0333942b7f3efccdc48ad2084ea3861a6e2a225d 100644 --- a/core/java/android/content/pm/RegisteredServicesCache.java +++ b/core/java/android/content/pm/RegisteredServicesCache.java @@ -834,4 +834,11 @@ public abstract class RegisteredServicesCache { public abstract V parseServiceAttributes(Resources res, String packageName, AttributeSet attrs); + + @VisibleForTesting + public void unregisterReceivers() { + mContext.unregisterReceiver(mPackageReceiver); + mContext.unregisterReceiver(mExternalReceiver); + mContext.unregisterReceiver(mUserRemovedReceiver); + } } diff --git a/core/java/android/content/pm/ServiceInfo.java b/core/java/android/content/pm/ServiceInfo.java index be8b2a20cfb1d98005273fab7c4d6790c1356807..65f56f68ed3f071ddfacceb17adfc155106d1a08 100644 --- a/core/java/android/content/pm/ServiceInfo.java +++ b/core/java/android/content/pm/ServiceInfo.java @@ -486,7 +486,7 @@ public class ServiceInfo extends ComponentInfo * Here is an example: *

          *  <uses-permission
    -     *      android:name="android.permissions.FOREGROUND_SERVICE_SPECIAL_USE"
    +     *      android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"
          *  />
          *  <service
          *      android:name=".MySpecialForegroundService"
    @@ -506,7 +506,7 @@ public class ServiceInfo extends ComponentInfo
          * in both platforms.
          * 
          *  <uses-permission
    -     *      android:name="android.permissions.FOREGROUND_SERVICE_SPECIAL_USE"
    +     *      android:name="android.permission.FOREGROUND_SERVICE_SPECIAL_USE"
          *      android:maxSdkVersion="last_sdk_version_without_type_foo"
          *  />
          *  <service
    diff --git a/core/java/android/content/pm/Signature.java b/core/java/android/content/pm/Signature.java
    index b049880504295aed36acf72b9b8dd798fbc2ac1b..a69eee7991fa809fa3860a5c2335f98475770014 100644
    --- a/core/java/android/content/pm/Signature.java
    +++ b/core/java/android/content/pm/Signature.java
    @@ -306,12 +306,28 @@ public class Signature implements Parcelable {
             mSignature = source.createByteArray();
         }
     
    +    /**
    +     * Test if given {@link SigningDetails} are exactly equal.
    +     * @hide
    +     */
    +    public static boolean areExactMatch(SigningDetails ad, SigningDetails bd) {
    +        return areExactArraysMatch(ad.getSignatures(), bd.getSignatures());
    +    }
    +
    +    /**
    +     * Test if given {@link SigningDetails} and {@link Signature} set are exactly equal.
    +     * @hide
    +     */
    +    public static boolean areExactMatch(SigningDetails ad, Signature[] b) {
    +        return areExactArraysMatch(ad.getSignatures(), b);
    +    }
    +
    +
         /**
          * Test if given {@link Signature} sets are exactly equal.
    -     *
          * @hide
          */
    -    public static boolean areExactMatch(Signature[] a, Signature[] b) {
    +    static boolean areExactArraysMatch(Signature[] a, Signature[] b) {
             return (ArrayUtils.size(a) == ArrayUtils.size(b)) && ArrayUtils.containsAll(a, b)
                     && ArrayUtils.containsAll(b, a);
         }
    @@ -329,7 +345,12 @@ public class Signature implements Parcelable {
          *             substantially, usually a signal of something fishy going on.
          * @hide
          */
    -    public static boolean areEffectiveMatch(Signature[] a, Signature[] b)
    +    public static boolean areEffectiveMatch(SigningDetails a, SigningDetails b)
    +            throws CertificateException {
    +        return areEffectiveArraysMatch(a.getSignatures(), b.getSignatures());
    +    }
    +
    +    static boolean areEffectiveArraysMatch(Signature[] a, Signature[] b)
                 throws CertificateException {
             final CertificateFactory cf = CertificateFactory.getInstance("X.509");
     
    @@ -342,7 +363,7 @@ public class Signature implements Parcelable {
                 bPrime[i] = bounce(cf, b[i]);
             }
     
    -        return areExactMatch(aPrime, bPrime);
    +        return areExactArraysMatch(aPrime, bPrime);
         }
     
         /**
    diff --git a/core/java/android/content/pm/SigningDetails.aidl b/core/java/android/content/pm/SigningDetails.aidl
    new file mode 100644
    index 0000000000000000000000000000000000000000..95f3ca786c03e4e4551bafe5c670ba4549b83c63
    --- /dev/null
    +++ b/core/java/android/content/pm/SigningDetails.aidl
    @@ -0,0 +1,18 @@
    +/*
    + * Copyright (C) 2023 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.content.pm;
    +
    +parcelable SigningDetails;
    diff --git a/core/java/android/content/pm/SigningDetails.java b/core/java/android/content/pm/SigningDetails.java
    index af2649f3e4dfca46688b669e038b5d24cf48a599..8c2197470a8b9766d91c1fb05f33f5e42fec4c18 100644
    --- a/core/java/android/content/pm/SigningDetails.java
    +++ b/core/java/android/content/pm/SigningDetails.java
    @@ -656,7 +656,7 @@ public final class SigningDetails implements Parcelable {
                     }
                 }
             } else {
    -            return Signature.areEffectiveMatch(oldDetails.mSignatures, mSignatures);
    +            return Signature.areEffectiveMatch(oldDetails, this);
             }
             return false;
         }
    @@ -800,7 +800,7 @@ public final class SigningDetails implements Parcelable {
     
         /** Returns true if the signatures in this and other match exactly. */
         public boolean signaturesMatchExactly(@NonNull SigningDetails other) {
    -        return Signature.areExactMatch(mSignatures, other.mSignatures);
    +        return Signature.areExactMatch(this, other);
         }
     
         @Override
    @@ -853,7 +853,7 @@ public final class SigningDetails implements Parcelable {
             final SigningDetails that = (SigningDetails) o;
     
             if (mSignatureSchemeVersion != that.mSignatureSchemeVersion) return false;
    -        if (!Signature.areExactMatch(mSignatures, that.mSignatures)) return false;
    +        if (!Signature.areExactMatch(this, that)) return false;
             if (mPublicKeys != null) {
                 if (!mPublicKeys.equals((that.mPublicKeys))) {
                     return false;
    diff --git a/core/java/android/content/pm/TEST_MAPPING b/core/java/android/content/pm/TEST_MAPPING
    index ea21d51b0e9ecad8d1a8b9af3a47ea1b7fa166d7..ab669cc141f1abe4660cb90c306b40dfa1d302b5 100644
    --- a/core/java/android/content/pm/TEST_MAPPING
    +++ b/core/java/android/content/pm/TEST_MAPPING
    @@ -47,9 +47,6 @@
             {
                 "name":"CarrierAppIntegrationTestCases"
             },
    -        {
    -            "name":"ApkVerityTest"
    -        },
             {
                 "name":"CtsSilentUpdateHostTestCases"
             },
    diff --git a/core/java/android/content/pm/flags.aconfig b/core/java/android/content/pm/flags.aconfig
    new file mode 100644
    index 0000000000000000000000000000000000000000..0c8eb02e96810fd20b67470a55ee1e33222f5a81
    --- /dev/null
    +++ b/core/java/android/content/pm/flags.aconfig
    @@ -0,0 +1,15 @@
    +package: "android.content.pm"
    +
    +flag {
    +    name: "quarantined_enabled"
    +    namespace: "package_manager_service"
    +    description: "Feature flag for Quarantined state"
    +    bug: "269127435"
    +}
    +
    +flag {
    +    name: "archiving"
    +    namespace: "package_manager_service"
    +    description: "Feature flag to enable the archiving feature."
    +    bug: "278553670"
    +}
    diff --git a/core/java/android/content/pm/parsing/ApkLite.java b/core/java/android/content/pm/parsing/ApkLite.java
    index 269bec2562820a8f25161678fe4471eeb1df3635..f3194be81b0d6ef9a4bf51dccfc4bc0ce8c5e7a1 100644
    --- a/core/java/android/content/pm/parsing/ApkLite.java
    +++ b/core/java/android/content/pm/parsing/ApkLite.java
    @@ -18,6 +18,7 @@ package android.content.pm.parsing;
     
     import android.annotation.NonNull;
     import android.annotation.Nullable;
    +import android.content.pm.ArchivedPackageParcel;
     import android.content.pm.PackageInfo;
     import android.content.pm.PackageManager;
     import android.content.pm.SigningDetails;
    @@ -138,6 +139,11 @@ public class ApkLite {
          */
         private final boolean mIsSdkLibrary;
     
    +    /**
    +     * Archival install info.
    +     */
    +    private final @Nullable ArchivedPackageParcel mArchivedPackage;
    +
         public ApkLite(String path, String packageName, String splitName, boolean isFeatureSplit,
                 String configForSplit, String usesSplitName, boolean isSplitRequired, int versionCode,
                 int versionCodeMajor, int revisionCode, int installLocation,
    @@ -182,6 +188,44 @@ public class ApkLite {
             mRollbackDataPolicy = rollbackDataPolicy;
             mHasDeviceAdminReceiver = hasDeviceAdminReceiver;
             mIsSdkLibrary = isSdkLibrary;
    +        mArchivedPackage = null;
    +    }
    +
    +    public ApkLite(String path, ArchivedPackageParcel archivedPackage) {
    +        mPath = path;
    +        mPackageName = archivedPackage.packageName;
    +        mSplitName = null; // base.apk
    +        mSplitTypes = null;
    +        mFeatureSplit = false;
    +        mConfigForSplit = null;
    +        mUsesSplitName = null;
    +        mRequiredSplitTypes = null;
    +        mSplitRequired = hasAnyRequiredSplitTypes();
    +        mVersionCode = archivedPackage.versionCode;
    +        mVersionCodeMajor = archivedPackage.versionCodeMajor;
    +        mRevisionCode = 0;
    +        mInstallLocation = PackageInfo.INSTALL_LOCATION_UNSPECIFIED;
    +        mVerifiers = new VerifierInfo[]{};
    +        mSigningDetails = archivedPackage.signingDetails;
    +        mCoreApp = false;
    +        mDebuggable = false;
    +        mProfileableByShell = false;
    +        mMultiArch = false;
    +        mUse32bitAbi = false;
    +        mUseEmbeddedDex = false;
    +        mExtractNativeLibs = false;
    +        mIsolatedSplits = false;
    +        mTargetPackageName = null;
    +        mOverlayIsStatic = false;
    +        mOverlayPriority = 0;
    +        mRequiredSystemPropertyName = null;
    +        mRequiredSystemPropertyValue = null;
    +        mMinSdkVersion = ApkLiteParseUtils.DEFAULT_MIN_SDK_VERSION;
    +        mTargetSdkVersion = archivedPackage.targetSdkVersion;
    +        mRollbackDataPolicy = 0;
    +        mHasDeviceAdminReceiver = false;
    +        mIsSdkLibrary = false;
    +        mArchivedPackage = archivedPackage;
         }
     
         /**
    @@ -474,6 +518,9 @@ public class ApkLite {
             return mRollbackDataPolicy;
         }
     
    +    /**
    +     * Indicates if this app contains a {@link android.app.admin.DeviceAdminReceiver}.
    +     */
         @DataClass.Generated.Member
         public boolean isHasDeviceAdminReceiver() {
             return mHasDeviceAdminReceiver;
    @@ -487,11 +534,19 @@ public class ApkLite {
             return mIsSdkLibrary;
         }
     
    +    /**
    +     * Archival install info.
    +     */
    +    @DataClass.Generated.Member
    +    public @Nullable ArchivedPackageParcel getArchivedPackage() {
    +        return mArchivedPackage;
    +    }
    +
         @DataClass.Generated(
    -            time = 1643063342990L,
    +            time = 1694792109463L,
                 codegenVersion = "1.0.23",
                 sourceFile = "frameworks/base/core/java/android/content/pm/parsing/ApkLite.java",
    -            inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.NonNull java.lang.String mPath\nprivate final @android.annotation.Nullable java.lang.String mSplitName\nprivate final @android.annotation.Nullable java.lang.String mUsesSplitName\nprivate final @android.annotation.Nullable java.lang.String mConfigForSplit\nprivate final @android.annotation.Nullable java.util.Set mRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set mSplitTypes\nprivate final  int mVersionCodeMajor\nprivate final  int mVersionCode\nprivate final  int mRevisionCode\nprivate final  int mInstallLocation\nprivate final  int mMinSdkVersion\nprivate final  int mTargetSdkVersion\nprivate final @android.annotation.NonNull android.content.pm.VerifierInfo[] mVerifiers\nprivate final @android.annotation.NonNull android.content.pm.SigningDetails mSigningDetails\nprivate final  boolean mFeatureSplit\nprivate final  boolean mIsolatedSplits\nprivate final  boolean mSplitRequired\nprivate final  boolean mCoreApp\nprivate final  boolean mDebuggable\nprivate final  boolean mProfileableByShell\nprivate final  boolean mMultiArch\nprivate final  boolean mUse32bitAbi\nprivate final  boolean mExtractNativeLibs\nprivate final  boolean mUseEmbeddedDex\nprivate final @android.annotation.Nullable java.lang.String mTargetPackageName\nprivate final  boolean mOverlayIsStatic\nprivate final  int mOverlayPriority\nprivate final @android.annotation.Nullable java.lang.String mRequiredSystemPropertyName\nprivate final @android.annotation.Nullable java.lang.String mRequiredSystemPropertyValue\nprivate final  int mRollbackDataPolicy\nprivate final  boolean mHasDeviceAdminReceiver\nprivate final  boolean mIsSdkLibrary\npublic  long getLongVersionCode()\nprivate  boolean hasAnyRequiredSplitTypes()\nclass ApkLite extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genConstDefs=false)")
    +            inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.NonNull java.lang.String mPath\nprivate final @android.annotation.Nullable java.lang.String mSplitName\nprivate final @android.annotation.Nullable java.lang.String mUsesSplitName\nprivate final @android.annotation.Nullable java.lang.String mConfigForSplit\nprivate final @android.annotation.Nullable java.util.Set mRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set mSplitTypes\nprivate final  int mVersionCodeMajor\nprivate final  int mVersionCode\nprivate final  int mRevisionCode\nprivate final  int mInstallLocation\nprivate final  int mMinSdkVersion\nprivate final  int mTargetSdkVersion\nprivate final @android.annotation.NonNull android.content.pm.VerifierInfo[] mVerifiers\nprivate final @android.annotation.NonNull android.content.pm.SigningDetails mSigningDetails\nprivate final  boolean mFeatureSplit\nprivate final  boolean mIsolatedSplits\nprivate final  boolean mSplitRequired\nprivate final  boolean mCoreApp\nprivate final  boolean mDebuggable\nprivate final  boolean mProfileableByShell\nprivate final  boolean mMultiArch\nprivate final  boolean mUse32bitAbi\nprivate final  boolean mExtractNativeLibs\nprivate final  boolean mUseEmbeddedDex\nprivate final @android.annotation.Nullable java.lang.String mTargetPackageName\nprivate final  boolean mOverlayIsStatic\nprivate final  int mOverlayPriority\nprivate final @android.annotation.Nullable java.lang.String mRequiredSystemPropertyName\nprivate final @android.annotation.Nullable java.lang.String mRequiredSystemPropertyValue\nprivate final  int mRollbackDataPolicy\nprivate final  boolean mHasDeviceAdminReceiver\nprivate final  boolean mIsSdkLibrary\nprivate final @android.annotation.Nullable android.content.pm.ArchivedPackageParcel mArchivedPackage\npublic  long getLongVersionCode()\nprivate  boolean hasAnyRequiredSplitTypes()\nclass ApkLite extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genConstDefs=false)")
         @Deprecated
         private void __metadata() {}
     
    diff --git a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
    index 4f6bcb6f0be5b10fb4bbf4aacd0bcf66d4cd9919..5f86742fc5621e992a101d55e03f2eadb744cc66 100644
    --- a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
    +++ b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
    @@ -73,7 +73,7 @@ public class ApkLiteParseUtils {
         // Constants copied from services.jar side since they're not accessible
         private static final String ANDROID_RES_NAMESPACE =
                 "http://schemas.android.com/apk/res/android";
    -    private static final int DEFAULT_MIN_SDK_VERSION = 1;
    +    public static final int DEFAULT_MIN_SDK_VERSION = 1;
         private static final int DEFAULT_TARGET_SDK_VERSION = 0;
         public static final String ANDROID_MANIFEST_FILENAME = "AndroidManifest.xml";
         private static final int PARSE_IS_SYSTEM_DIR = 1 << 4;
    @@ -484,6 +484,7 @@ public class ApkLiteParseUtils {
                             "extractNativeLibs", true);
                     useEmbeddedDex = parser.getAttributeBooleanValue(ANDROID_RES_NAMESPACE,
                             "useEmbeddedDex", false);
    +
                     rollbackDataPolicy = parser.getAttributeIntValue(ANDROID_RES_NAMESPACE,
                             "rollbackDataPolicy", 0);
                     String permission = parser.getAttributeValue(ANDROID_RES_NAMESPACE,
    diff --git a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
    index 3e1c5bb3d7ec170a47f61f222851d0aa2e773541..153dd9a934901236c8ba757b16ff741da87bd57e 100644
    --- a/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
    +++ b/core/java/android/content/pm/parsing/FrameworkParsingPackageUtils.java
    @@ -253,8 +253,8 @@ public class FrameworkParsingPackageUtils {
             if (existingSigningDetails == SigningDetails.UNKNOWN) {
                 return verified;
             } else {
    -            if (!Signature.areExactMatch(existingSigningDetails.getSignatures(),
    -                    verified.getResult().getSignatures())) {
    +            if (!Signature.areExactMatch(existingSigningDetails,
    +                    verified.getResult())) {
                     return input.error(INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES,
                             baseCodePath + " has mismatched certificates");
                 }
    diff --git a/core/java/android/content/pm/parsing/PackageLite.java b/core/java/android/content/pm/parsing/PackageLite.java
    index e2789c93516fb5e190db576a53fe2c00de15d43d..116dd1fc9a4285c0365e1e883e8f4df897258095 100644
    --- a/core/java/android/content/pm/parsing/PackageLite.java
    +++ b/core/java/android/content/pm/parsing/PackageLite.java
    @@ -18,7 +18,9 @@ package android.content.pm.parsing;
     
     import android.annotation.NonNull;
     import android.annotation.Nullable;
    +import android.content.pm.ArchivedPackageParcel;
     import android.content.pm.PackageInfo;
    +import android.content.pm.SigningDetails;
     import android.content.pm.VerifierInfo;
     
     import com.android.internal.util.ArrayUtils;
    @@ -78,6 +80,8 @@ public class PackageLite {
         private final int mInstallLocation;
         /** Information about a package verifiers as used during package verification */
         private final @NonNull VerifierInfo[] mVerifiers;
    +    /** Signing-related data of an application package */
    +    private final @NonNull SigningDetails mSigningDetails;
     
         /** Indicate whether any split APKs that are features. Ordered by splitName */
         private final @Nullable boolean[] mIsFeatureSplits;
    @@ -110,6 +114,11 @@ public class PackageLite {
          */
         private final boolean mIsSdkLibrary;
     
    +    /**
    +     * Archival install info.
    +     */
    +    private final @Nullable ArchivedPackageParcel mArchivedPackage;
    +
         public PackageLite(String path, String baseApkPath, ApkLite baseApk,
                 String[] splitNames, boolean[] isFeatureSplits, String[] usesSplitNames,
                 String[] configForSplit, String[] splitApkPaths, int[] splitRevisionCodes,
    @@ -123,6 +132,7 @@ public class PackageLite {
             mVersionCodeMajor = baseApk.getVersionCodeMajor();
             mInstallLocation = baseApk.getInstallLocation();
             mVerifiers = baseApk.getVerifiers();
    +        mSigningDetails = baseApk.getSigningDetails();
             mBaseRevisionCode = baseApk.getRevisionCode();
             mCoreApp = baseApk.isCoreApp();
             mDebuggable = baseApk.isDebuggable();
    @@ -144,6 +154,7 @@ public class PackageLite {
             mSplitApkPaths = splitApkPaths;
             mSplitRevisionCodes = splitRevisionCodes;
             mTargetSdk = targetSdk;
    +        mArchivedPackage = baseApk.getArchivedPackage();
         }
     
         /**
    @@ -324,6 +335,14 @@ public class PackageLite {
             return mVerifiers;
         }
     
    +    /**
    +     * Signing-related data of an application package
    +     */
    +    @DataClass.Generated.Member
    +    public @NonNull SigningDetails getSigningDetails() {
    +        return mSigningDetails;
    +    }
    +
         /**
          * Indicate whether any split APKs that are features. Ordered by splitName
          */
    @@ -414,12 +433,19 @@ public class PackageLite {
             return mIsSdkLibrary;
         }
     
    +    /**
    +     * Archival install info.
    +     */
    +    @DataClass.Generated.Member
    +    public @Nullable ArchivedPackageParcel getArchivedPackage() {
    +        return mArchivedPackage;
    +    }
    +
         @DataClass.Generated(
    -            time = 1643132127068L,
    +            time = 1694792176268L,
                 codegenVersion = "1.0.23",
                 sourceFile = "frameworks/base/core/java/android/content/pm/parsing/PackageLite.java",
    -            inputSignatures =
    -                    "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.NonNull java.lang.String mPath\nprivate final @android.annotation.NonNull java.lang.String mBaseApkPath\nprivate final @android.annotation.Nullable java.lang.String[] mSplitApkPaths\nprivate final @android.annotation.Nullable java.lang.String[] mSplitNames\nprivate final @android.annotation.Nullable java.lang.String[] mUsesSplitNames\nprivate final @android.annotation.Nullable java.lang.String[] mConfigForSplit\nprivate final @android.annotation.Nullable java.util.Set mBaseRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set[] mRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set[] mSplitTypes\nprivate final  int mVersionCodeMajor\nprivate final  int mVersionCode\nprivate final  int mTargetSdk\nprivate final  int mBaseRevisionCode\nprivate final @android.annotation.Nullable int[] mSplitRevisionCodes\nprivate final  int mInstallLocation\nprivate final @android.annotation.NonNull android.content.pm.VerifierInfo[] mVerifiers\nprivate final @android.annotation.Nullable boolean[] mIsFeatureSplits\nprivate final  boolean mIsolatedSplits\nprivate final  boolean mSplitRequired\nprivate final  boolean mCoreApp\nprivate final  boolean mDebuggable\nprivate final  boolean mMultiArch\nprivate final  boolean mUse32bitAbi\nprivate final  boolean mExtractNativeLibs\nprivate final  boolean mProfileableByShell\nprivate final  boolean mUseEmbeddedDex\nprivate final  boolean mIsSdkLibrary\npublic  java.util.List getAllApkPaths()\npublic  long getLongVersionCode()\nprivate  boolean hasAnyRequiredSplitTypes()\nclass PackageLite extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genConstDefs=false)")
    +            inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.annotation.NonNull java.lang.String mPath\nprivate final @android.annotation.NonNull java.lang.String mBaseApkPath\nprivate final @android.annotation.Nullable java.lang.String[] mSplitApkPaths\nprivate final @android.annotation.Nullable java.lang.String[] mSplitNames\nprivate final @android.annotation.Nullable java.lang.String[] mUsesSplitNames\nprivate final @android.annotation.Nullable java.lang.String[] mConfigForSplit\nprivate final @android.annotation.Nullable java.util.Set mBaseRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set[] mRequiredSplitTypes\nprivate final @android.annotation.Nullable java.util.Set[] mSplitTypes\nprivate final  int mVersionCodeMajor\nprivate final  int mVersionCode\nprivate final  int mTargetSdk\nprivate final  int mBaseRevisionCode\nprivate final @android.annotation.Nullable int[] mSplitRevisionCodes\nprivate final  int mInstallLocation\nprivate final @android.annotation.NonNull android.content.pm.VerifierInfo[] mVerifiers\nprivate final @android.annotation.NonNull android.content.pm.SigningDetails mSigningDetails\nprivate final @android.annotation.Nullable boolean[] mIsFeatureSplits\nprivate final  boolean mIsolatedSplits\nprivate final  boolean mSplitRequired\nprivate final  boolean mCoreApp\nprivate final  boolean mDebuggable\nprivate final  boolean mMultiArch\nprivate final  boolean mUse32bitAbi\nprivate final  boolean mExtractNativeLibs\nprivate final  boolean mProfileableByShell\nprivate final  boolean mUseEmbeddedDex\nprivate final  boolean mIsSdkLibrary\nprivate final @android.annotation.Nullable android.content.pm.ArchivedPackageParcel mArchivedPackage\npublic  java.util.List getAllApkPaths()\npublic  long getLongVersionCode()\nprivate  boolean hasAnyRequiredSplitTypes()\nclass PackageLite extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genConstDefs=false)")
         @Deprecated
         private void __metadata() {}
     
    diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
    index b225de402f17dc7278db4fa35390cd1e3f488827..23b9d0b7c9a74b6e4cfaa967309a99846fc1afc5 100644
    --- a/core/java/android/content/res/AssetManager.java
    +++ b/core/java/android/content/res/AssetManager.java
    @@ -1480,15 +1480,38 @@ public final class AssetManager implements AutoCloseable {
                 int screenWidth, int screenHeight, int smallestScreenWidthDp, int screenWidthDp,
                 int screenHeightDp, int screenLayout, int uiMode, int colorMode, int grammaticalGender,
                 int majorVersion) {
    -        synchronized (this) {
    -            ensureValidLocked();
    -            nativeSetConfiguration(mObject, mcc, mnc, locale, orientation, touchscreen, density,
    +        if (locale != null) {
    +            setConfiguration(mcc, mnc, null, new String[]{locale}, orientation, touchscreen,
    +                    density, keyboard, keyboardHidden, navigation, screenWidth, screenHeight,
    +                    smallestScreenWidthDp, screenWidthDp, screenHeightDp, screenLayout, uiMode,
    +                    colorMode, grammaticalGender, majorVersion);
    +        } else {
    +            setConfiguration(mcc, mnc, null, null, orientation, touchscreen, density,
                         keyboard, keyboardHidden, navigation, screenWidth, screenHeight,
                         smallestScreenWidthDp, screenWidthDp, screenHeightDp, screenLayout, uiMode,
                         colorMode, grammaticalGender, majorVersion);
             }
         }
     
    +    /**
    +     * Change the configuration used when retrieving resources.  Not for use by
    +     * applications.
    +     * @hide
    +     */
    +    public void setConfiguration(int mcc, int mnc, String defaultLocale, String[] locales,
    +            int orientation, int touchscreen, int density, int keyboard, int keyboardHidden,
    +            int navigation, int screenWidth, int screenHeight, int smallestScreenWidthDp,
    +            int screenWidthDp, int screenHeightDp, int screenLayout, int uiMode, int colorMode,
    +            int grammaticalGender, int majorVersion) {
    +        synchronized (this) {
    +            ensureValidLocked();
    +            nativeSetConfiguration(mObject, mcc, mnc, defaultLocale, locales, orientation,
    +                    touchscreen, density, keyboard, keyboardHidden, navigation, screenWidth,
    +                    screenHeight, smallestScreenWidthDp, screenWidthDp, screenHeightDp,
    +                    screenLayout, uiMode, colorMode, grammaticalGender, majorVersion);
    +        }
    +    }
    +
         /**
          * @hide
          */
    @@ -1572,10 +1595,11 @@ public final class AssetManager implements AutoCloseable {
         private static native void nativeSetApkAssets(long ptr, @NonNull ApkAssets[] apkAssets,
                 boolean invalidateCaches);
         private static native void nativeSetConfiguration(long ptr, int mcc, int mnc,
    -            @Nullable String locale, int orientation, int touchscreen, int density, int keyboard,
    -            int keyboardHidden, int navigation, int screenWidth, int screenHeight,
    -            int smallestScreenWidthDp, int screenWidthDp, int screenHeightDp, int screenLayout,
    -            int uiMode, int colorMode, int grammaticalGender, int majorVersion);
    +            @Nullable String defaultLocale, @NonNull String[] locales, int orientation,
    +            int touchscreen, int density, int keyboard, int keyboardHidden, int navigation,
    +            int screenWidth, int screenHeight, int smallestScreenWidthDp, int screenWidthDp,
    +            int screenHeightDp, int screenLayout, int uiMode, int colorMode, int grammaticalGender,
    +            int majorVersion);
         private static native @NonNull SparseArray nativeGetAssignedPackageIdentifiers(
                 long ptr, boolean includeOverlays, boolean includeLoaders);
     
    diff --git a/core/java/android/content/res/CompatibilityInfo.java b/core/java/android/content/res/CompatibilityInfo.java
    index 08ba5b6c268c851a5b3c67ec04d9a4cbf76baef2..f929c1f03c87eab85dc87d4740403699e6240e59 100644
    --- a/core/java/android/content/res/CompatibilityInfo.java
    +++ b/core/java/android/content/res/CompatibilityInfo.java
    @@ -100,7 +100,7 @@ public class CompatibilityInfo implements Parcelable {
          * The effective screen density we have selected for this application.
          */
         public final int applicationDensity;
    -    
    +
         /**
          * Application's scale.
          */
    @@ -112,9 +112,27 @@ public class CompatibilityInfo implements Parcelable {
          */
         public final float applicationInvertedScale;
     
    +    /**
    +     * Application's density scale.
    +     *
    +     * 

    In most cases this is equal to {@link #applicationScale}, but in some cases e.g. + * Automotive the requirement is to just scale the density and keep the resolution the same. + * This is used for artificially making apps look zoomed in to compensate for the user distance + * from the screen. + */ + public final float applicationDensityScale; + + /** + * Application's density inverted scale. + */ + public final float applicationDensityInvertedScale; + /** The process level override inverted scale. See {@link #HAS_OVERRIDE_SCALING}. */ private static float sOverrideInvertedScale = 1f; + /** The process level override inverted density scale. See {@link #HAS_OVERRIDE_SCALING}. */ + private static float sOverrideDensityInvertScale = 1f; + @UnsupportedAppUsage @Deprecated public CompatibilityInfo(ApplicationInfo appInfo, int screenLayout, int sw, @@ -123,17 +141,24 @@ public class CompatibilityInfo implements Parcelable { } public CompatibilityInfo(ApplicationInfo appInfo, int screenLayout, int sw, - boolean forceCompat, float overrideScale) { + boolean forceCompat, float scaleFactor) { + this(appInfo, screenLayout, sw, forceCompat, scaleFactor, scaleFactor); + } + + public CompatibilityInfo(ApplicationInfo appInfo, int screenLayout, int sw, + boolean forceCompat, float scaleFactor, float densityScaleFactor) { int compatFlags = 0; if (appInfo.targetSdkVersion < VERSION_CODES.O) { compatFlags |= NEEDS_COMPAT_RES; } - if (overrideScale != 1.0f) { - applicationScale = overrideScale; - applicationInvertedScale = 1.0f / overrideScale; + if (scaleFactor != 1f || densityScaleFactor != 1f) { + applicationScale = scaleFactor; + applicationInvertedScale = 1f / scaleFactor; + applicationDensityScale = densityScaleFactor; + applicationDensityInvertedScale = 1f / densityScaleFactor; applicationDensity = (int) ((DisplayMetrics.DENSITY_DEVICE_STABLE - * applicationInvertedScale) + .5f); + * applicationDensityInvertedScale) + .5f); mCompatibilityFlags = NEVER_NEEDS_COMPAT | HAS_OVERRIDE_SCALING; // Override scale has the highest priority. So ignore other compatibility attributes. return; @@ -181,7 +206,8 @@ public class CompatibilityInfo implements Parcelable { applicationDensity = DisplayMetrics.DENSITY_DEVICE; applicationScale = 1.0f; applicationInvertedScale = 1.0f; - + applicationDensityScale = 1.0f; + applicationDensityInvertedScale = 1.0f; } else { /** * Has the application said that its UI is expandable? Based on the @@ -271,11 +297,16 @@ public class CompatibilityInfo implements Parcelable { applicationDensity = DisplayMetrics.DENSITY_DEVICE; applicationScale = 1.0f; applicationInvertedScale = 1.0f; + applicationDensityScale = 1.0f; + applicationDensityInvertedScale = 1.0f; } else { applicationDensity = DisplayMetrics.DENSITY_DEFAULT; applicationScale = DisplayMetrics.DENSITY_DEVICE / (float) DisplayMetrics.DENSITY_DEFAULT; applicationInvertedScale = 1.0f / applicationScale; + applicationDensityScale = DisplayMetrics.DENSITY_DEVICE + / (float) DisplayMetrics.DENSITY_DEFAULT; + applicationDensityInvertedScale = 1f / applicationDensityScale; compatFlags |= SCALING_REQUIRED; } } @@ -289,6 +320,8 @@ public class CompatibilityInfo implements Parcelable { applicationDensity = dens; applicationScale = scale; applicationInvertedScale = invertedScale; + applicationDensityScale = (float) DisplayMetrics.DENSITY_DEVICE_STABLE / dens; + applicationDensityInvertedScale = 1f / applicationDensityScale; } @UnsupportedAppUsage @@ -528,7 +561,8 @@ public class CompatibilityInfo implements Parcelable { /** Applies the compatibility adjustment to the display metrics. */ public void applyDisplayMetricsIfNeeded(DisplayMetrics inoutDm, boolean applyToSize) { if (hasOverrideScale()) { - scaleDisplayMetrics(sOverrideInvertedScale, inoutDm, applyToSize); + scaleDisplayMetrics(sOverrideInvertedScale, sOverrideDensityInvertScale, inoutDm, + applyToSize); return; } if (!equals(DEFAULT_COMPATIBILITY_INFO)) { @@ -548,15 +582,17 @@ public class CompatibilityInfo implements Parcelable { } if (isScalingRequired()) { - scaleDisplayMetrics(applicationInvertedScale, inoutDm, true /* applyToSize */); + scaleDisplayMetrics(applicationInvertedScale, applicationDensityInvertedScale, inoutDm, + true /* applyToSize */); } } /** Scales the density of the given display metrics. */ - private static void scaleDisplayMetrics(float invertedRatio, DisplayMetrics inoutDm, - boolean applyToSize) { - inoutDm.density = inoutDm.noncompatDensity * invertedRatio; - inoutDm.densityDpi = (int) ((inoutDm.noncompatDensityDpi * invertedRatio) + .5f); + private static void scaleDisplayMetrics(float invertScale, float densityInvertScale, + DisplayMetrics inoutDm, boolean applyToSize) { + inoutDm.density = inoutDm.noncompatDensity * densityInvertScale; + inoutDm.densityDpi = (int) ((inoutDm.noncompatDensityDpi + * densityInvertScale) + .5f); // Note: since this is changing the scaledDensity, you might think we also need to change // inoutDm.fontScaleConverter to accurately calculate non-linear font scaling. But we're not // going to do that, for a couple of reasons (see b/265695259 for details): @@ -570,12 +606,12 @@ public class CompatibilityInfo implements Parcelable { // b. Sometime later by WindowManager in onResume or other windowing events. In this case // the DisplayMetrics object is never used by the app/resources, so it's ok if // fontScaleConverter is null because it's not being used to scale fonts anyway. - inoutDm.scaledDensity = inoutDm.noncompatScaledDensity * invertedRatio; - inoutDm.xdpi = inoutDm.noncompatXdpi * invertedRatio; - inoutDm.ydpi = inoutDm.noncompatYdpi * invertedRatio; + inoutDm.scaledDensity = inoutDm.noncompatScaledDensity * densityInvertScale; + inoutDm.xdpi = inoutDm.noncompatXdpi * densityInvertScale; + inoutDm.ydpi = inoutDm.noncompatYdpi * densityInvertScale; if (applyToSize) { - inoutDm.widthPixels = (int) (inoutDm.widthPixels * invertedRatio + 0.5f); - inoutDm.heightPixels = (int) (inoutDm.heightPixels * invertedRatio + 0.5f); + inoutDm.widthPixels = (int) (inoutDm.widthPixels * invertScale + 0.5f); + inoutDm.heightPixels = (int) (inoutDm.heightPixels * invertScale + 0.5f); } } @@ -594,38 +630,55 @@ public class CompatibilityInfo implements Parcelable { } inoutConfig.densityDpi = displayDensity; if (isScalingRequired()) { - scaleConfiguration(applicationInvertedScale, inoutConfig); + scaleConfiguration(applicationInvertedScale, applicationDensityInvertedScale, + inoutConfig); } } /** Scales the density and bounds of the given configuration. */ - public static void scaleConfiguration(float invertedRatio, Configuration inoutConfig) { - inoutConfig.densityDpi = (int) ((inoutConfig.densityDpi * invertedRatio) + .5f); - inoutConfig.windowConfiguration.scale(invertedRatio); + public static void scaleConfiguration(float invertScale, Configuration inoutConfig) { + scaleConfiguration(invertScale, invertScale, inoutConfig); + } + + /** Scales the density and bounds of the given configuration. */ + public static void scaleConfiguration(float invertScale, float densityInvertScale, + Configuration inoutConfig) { + inoutConfig.densityDpi = (int) ((inoutConfig.densityDpi + * densityInvertScale) + .5f); + inoutConfig.windowConfiguration.scale(invertScale); } /** @see #sOverrideInvertedScale */ public static void applyOverrideScaleIfNeeded(Configuration config) { if (!hasOverrideScale()) return; - scaleConfiguration(sOverrideInvertedScale, config); + scaleConfiguration(sOverrideInvertedScale, sOverrideDensityInvertScale, config); } /** @see #sOverrideInvertedScale */ public static void applyOverrideScaleIfNeeded(MergedConfiguration mergedConfig) { if (!hasOverrideScale()) return; - scaleConfiguration(sOverrideInvertedScale, mergedConfig.getGlobalConfiguration()); - scaleConfiguration(sOverrideInvertedScale, mergedConfig.getOverrideConfiguration()); - scaleConfiguration(sOverrideInvertedScale, mergedConfig.getMergedConfiguration()); + scaleConfiguration(sOverrideInvertedScale, sOverrideDensityInvertScale, + mergedConfig.getGlobalConfiguration()); + scaleConfiguration(sOverrideInvertedScale, sOverrideDensityInvertScale, + mergedConfig.getOverrideConfiguration()); + scaleConfiguration(sOverrideInvertedScale, sOverrideDensityInvertScale, + mergedConfig.getMergedConfiguration()); } /** Returns {@code true} if this process is in a environment with override scale. */ private static boolean hasOverrideScale() { - return sOverrideInvertedScale != 1f; + return sOverrideInvertedScale != 1f || sOverrideDensityInvertScale != 1f; } /** @see #sOverrideInvertedScale */ - public static void setOverrideInvertedScale(float invertedRatio) { - sOverrideInvertedScale = invertedRatio; + public static void setOverrideInvertedScale(float invertScale) { + setOverrideInvertedScale(invertScale, invertScale); + } + + /** @see #sOverrideInvertedScale */ + public static void setOverrideInvertedScale(float invertScale, float densityInvertScale) { + sOverrideInvertedScale = invertScale; + sOverrideDensityInvertScale = densityInvertScale; } /** @see #sOverrideInvertedScale */ @@ -633,6 +686,11 @@ public class CompatibilityInfo implements Parcelable { return sOverrideInvertedScale; } + /** @see #sOverrideDensityInvertScale */ + public static float getOverrideDensityInvertedScale() { + return sOverrideDensityInvertScale; + } + /** * Compute the frame Rect for applications runs under compatibility mode. * @@ -693,6 +751,8 @@ public class CompatibilityInfo implements Parcelable { if (applicationDensity != oc.applicationDensity) return false; if (applicationScale != oc.applicationScale) return false; if (applicationInvertedScale != oc.applicationInvertedScale) return false; + if (applicationDensityScale != oc.applicationDensityScale) return false; + if (applicationDensityInvertedScale != oc.applicationDensityInvertedScale) return false; return true; } catch (ClassCastException e) { return false; @@ -713,6 +773,8 @@ public class CompatibilityInfo implements Parcelable { if (hasOverrideScaling()) { sb.append(" overrideInvScale="); sb.append(applicationInvertedScale); + sb.append(" overrideDensityInvScale="); + sb.append(applicationDensityInvertedScale); } if (!supportsScreen()) { sb.append(" resizing"); @@ -734,6 +796,8 @@ public class CompatibilityInfo implements Parcelable { result = 31 * result + applicationDensity; result = 31 * result + Float.floatToIntBits(applicationScale); result = 31 * result + Float.floatToIntBits(applicationInvertedScale); + result = 31 * result + Float.floatToIntBits(applicationDensityScale); + result = 31 * result + Float.floatToIntBits(applicationDensityInvertedScale); return result; } @@ -748,6 +812,8 @@ public class CompatibilityInfo implements Parcelable { dest.writeInt(applicationDensity); dest.writeFloat(applicationScale); dest.writeFloat(applicationInvertedScale); + dest.writeFloat(applicationDensityScale); + dest.writeFloat(applicationDensityInvertedScale); } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) @@ -769,5 +835,61 @@ public class CompatibilityInfo implements Parcelable { applicationDensity = source.readInt(); applicationScale = source.readFloat(); applicationInvertedScale = source.readFloat(); + applicationDensityScale = source.readFloat(); + applicationDensityInvertedScale = source.readFloat(); + } + + /** + * A data class for holding scale factor for width, height, and density. + */ + public static final class CompatScale { + + public final float mScaleFactor; + public final float mDensityScaleFactor; + + public CompatScale(float scaleFactor) { + this(scaleFactor, scaleFactor); + } + + public CompatScale(float scaleFactor, float densityScaleFactor) { + mScaleFactor = scaleFactor; + mDensityScaleFactor = densityScaleFactor; + } + + @Override + public boolean equals(@Nullable Object o) { + if (this == o) { + return true; + } + if (!(o instanceof CompatScale)) { + return false; + } + try { + CompatScale oc = (CompatScale) o; + if (mScaleFactor != oc.mScaleFactor) return false; + if (mDensityScaleFactor != oc.mDensityScaleFactor) return false; + return true; + } catch (ClassCastException e) { + return false; + } + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(128); + sb.append("mScaleFactor= "); + sb.append(mScaleFactor); + sb.append(" mDensityScaleFactor= "); + sb.append(mDensityScaleFactor); + return sb.toString(); + } + + @Override + public int hashCode() { + int result = 17; + result = 31 * result + Float.floatToIntBits(mScaleFactor); + result = 31 * result + Float.floatToIntBits(mDensityScaleFactor); + return result; + } } } diff --git a/core/java/android/content/res/Element.java b/core/java/android/content/res/Element.java index e931fe8526f11b171932e3d2826957813a2ecbac..1ef3d273fcb8511cb3c9fc92a820374e17ac9027 100644 --- a/core/java/android/content/res/Element.java +++ b/core/java/android/content/res/Element.java @@ -42,7 +42,7 @@ public class Element { public static final int MAX_ATTR_LEN_PATH = 4000; public static final int MAX_ATTR_LEN_DATA_VALUE = 4000; - private static final String BAD_COMPONENT_NAME_CHARS = ";,[](){}:?-%^*|/\\"; + private static final String BAD_COMPONENT_NAME_CHARS = ";,[](){}:?%^*|/\\"; private static final String TAG = "PackageParsing"; protected static final String TAG_ACTION = "action"; diff --git a/core/java/android/content/res/OWNERS b/core/java/android/content/res/OWNERS index a7bce122eb35a6252eac8ae5fa0a30aa4e1ec410..141d58d5135372a5542ab3b9d7ab18dbb65118cb 100644 --- a/core/java/android/content/res/OWNERS +++ b/core/java/android/content/res/OWNERS @@ -1,8 +1,7 @@ # Bug component: 568761 -toddke@android.com -toddke@google.com patb@google.com zyy@google.com +branliu@google.com per-file FontScaleConverter*=fuego@google.com \ No newline at end of file diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java index 395fef2d3a68180c1d5db607801782d99602c226..5cc3b92da3056baa05014a2784bc99e3e84cb332 100644 --- a/core/java/android/content/res/ResourcesImpl.java +++ b/core/java/android/content/res/ResourcesImpl.java @@ -27,7 +27,6 @@ import android.annotation.PluralsRes; import android.annotation.RawRes; import android.annotation.StyleRes; import android.annotation.StyleableRes; -import android.app.ResourcesManager; import android.compat.annotation.UnsupportedAppUsage; import android.content.pm.ActivityInfo; import android.content.pm.ActivityInfo.Config; @@ -425,35 +424,41 @@ public class ResourcesImpl { mConfiguration.setLocales(locales); } + String[] selectedLocales = null; + String defaultLocale = null; if ((configChanges & ActivityInfo.CONFIG_LOCALE) != 0) { if (locales.size() > 1) { String[] availableLocales; - - LocaleList localeList = ResourcesManager.getInstance().getLocaleList(); - if (!localeList.isEmpty()) { - availableLocales = localeList.toLanguageTags().split(","); - } else { - // The LocaleList has changed. We must query the AssetManager's - // available Locales and figure out the best matching Locale in the new - // LocaleList. - availableLocales = mAssets.getNonSystemLocales(); + // The LocaleList has changed. We must query the AssetManager's + // available Locales and figure out the best matching Locale in the new + // LocaleList. + availableLocales = mAssets.getNonSystemLocales(); + if (LocaleList.isPseudoLocalesOnly(availableLocales)) { + // No app defined locales, so grab the system locales. + availableLocales = mAssets.getLocales(); if (LocaleList.isPseudoLocalesOnly(availableLocales)) { - // No app defined locales, so grab the system locales. - availableLocales = mAssets.getLocales(); - if (LocaleList.isPseudoLocalesOnly(availableLocales)) { - availableLocales = null; - } + availableLocales = null; } } + if (availableLocales != null) { final Locale bestLocale = locales.getFirstMatchWithEnglishSupported( availableLocales); - if (bestLocale != null && bestLocale != locales.get(0)) { - mConfiguration.setLocales(new LocaleList(bestLocale, locales)); + if (bestLocale != null) { + selectedLocales = new String[]{ + adjustLanguageTag(bestLocale.toLanguageTag())}; + if (!bestLocale.equals(locales.get(0))) { + mConfiguration.setLocales( + new LocaleList(bestLocale, locales)); + } } } } } + if (selectedLocales == null) { + selectedLocales = new String[]{ + adjustLanguageTag(locales.get(0).toLanguageTag())}; + } if (mConfiguration.densityDpi != Configuration.DENSITY_DPI_UNDEFINED) { mMetrics.densityDpi = mConfiguration.densityDpi; @@ -488,7 +493,8 @@ public class ResourcesImpl { } mAssets.setConfiguration(mConfiguration.mcc, mConfiguration.mnc, - adjustLanguageTag(mConfiguration.getLocales().get(0).toLanguageTag()), + defaultLocale, + selectedLocales, mConfiguration.orientation, mConfiguration.touchscreen, mConfiguration.densityDpi, mConfiguration.keyboard, diff --git a/core/java/android/credentials/CredentialManager.java b/core/java/android/credentials/CredentialManager.java index c2a0062b43e878f98cb0e19e7637e9397a239b1a..20771af7d26d6f135ab9279ae709bffc97b92b25 100644 --- a/core/java/android/credentials/CredentialManager.java +++ b/core/java/android/credentials/CredentialManager.java @@ -19,6 +19,7 @@ package android.credentials; import static java.util.Objects.requireNonNull; import android.annotation.CallbackExecutor; +import android.annotation.Hide; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -116,6 +117,52 @@ public final class CredentialManager { mService = service; } + /** + * Returns a list of candidate credentials returned from credential manager providers + * + * @param request the request specifying type(s) of credentials to get from the + * credential providers + * @param cancellationSignal an optional signal that allows for cancelling this call + * @param executor the callback will take place on this {@link Executor} + * @param callback the callback invoked when the request succeeds or fails + * + * @hide + */ + @Hide + public void getCandidateCredentials( + @NonNull GetCredentialRequest request, + @NonNull String callingPackage, + @Nullable CancellationSignal cancellationSignal, + @CallbackExecutor @NonNull Executor executor, + @NonNull OutcomeReceiver callback + ) { + requireNonNull(request, "request must not be null"); + requireNonNull(callingPackage, "callingPackage must not be null"); + requireNonNull(executor, "executor must not be null"); + requireNonNull(callback, "callback must not be null"); + + if (cancellationSignal != null && cancellationSignal.isCanceled()) { + Log.w(TAG, "getCandidateCredentials already canceled"); + return; + } + + ICancellationSignal cancelRemote = null; + try { + cancelRemote = + mService.getCandidateCredentials( + request, + new GetCandidateCredentialsTransport(executor, callback), + mContext.getOpPackageName()); + } catch (RemoteException e) { + e.rethrowFromSystemServer(); + } + + if (cancellationSignal != null && cancelRemote != null) { + cancellationSignal.setRemote(cancelRemote); + } + } + /** * Launches the necessary flows to retrieve an app credential from the user. * @@ -123,7 +170,7 @@ public final class CredentialManager { * credential, display a picker when multiple credentials exist, etc. * Callers (e.g. browsers) may optionally set origin in {@link GetCredentialRequest} for an * app different from their own, to be able to get credentials on behalf of that app. They would - * need additional permission {@link CREDENTIAL_MANAGER_SET_ORIGIN} + * need additional permission {@code CREDENTIAL_MANAGER_SET_ORIGIN} * to use this functionality * * @param context the context used to launch any UI needed; use an activity context to make sure @@ -209,9 +256,9 @@ public final class CredentialManager { * *

    This API doesn't invoke any UI. It only performs the preparation work so that you can * later launch the remaining get-credential operation (involves UIs) through the {@link - * #getCredential(PrepareGetCredentialResponse.PendingGetCredentialHandle, Context, + * #getCredential(Context, PrepareGetCredentialResponse.PendingGetCredentialHandle, * CancellationSignal, Executor, OutcomeReceiver)} API which incurs less latency compared to - * the {@link #getCredential(GetCredentialRequest, Context, CancellationSignal, Executor, + * the {@link #getCredential(Context, GetCredentialRequest, CancellationSignal, Executor, * OutcomeReceiver)} API that executes the whole operation in one call. * * @param request the request specifying type(s) of credentials to get from the user @@ -261,7 +308,7 @@ public final class CredentialManager { * storing the new credential, etc. * Callers (e.g. browsers) may optionally set origin in {@link CreateCredentialRequest} for an * app different from their own, to be able to get credentials on behalf of that app. They would - * need additional permission {@link CREDENTIAL_MANAGER_SET_ORIGIN} + * need additional permission {@code CREDENTIAL_MANAGER_SET_ORIGIN} * to use this functionality * * @param context the context used to launch any UI needed; use an activity context to make sure @@ -641,6 +688,44 @@ public final class CredentialManager { } } + private static class GetCandidateCredentialsTransport + extends IGetCandidateCredentialsCallback.Stub { + + private final Executor mExecutor; + private final OutcomeReceiver mCallback; + + private GetCandidateCredentialsTransport( + Executor executor, + OutcomeReceiver callback) { + mExecutor = executor; + mCallback = callback; + } + + @Override + public void onResponse(GetCandidateCredentialsResponse response) { + final long identity = Binder.clearCallingIdentity(); + try { + mExecutor.execute(() -> mCallback.onResult(response)); + } finally { + Binder.restoreCallingIdentity(identity); + } + } + + @Override + public void onError(String errorType, String message) { + final long identity = Binder.clearCallingIdentity(); + try { + mExecutor.execute( + () -> mCallback.onError(new GetCandidateCredentialsException( + errorType, message))); + } finally { + Binder.restoreCallingIdentity(identity); + } + } + } + private static class GetCredentialTransport extends IGetCredentialCallback.Stub { // TODO: listen for cancellation to release callback. diff --git a/core/java/android/credentials/CredentialProviderInfo.java b/core/java/android/credentials/CredentialProviderInfo.java index a0cb36da231cd83fe195480b2cc99ec919d2f8c8..95ca0112b8b3e3799fbd0e3182fd9d3563f19489 100644 --- a/core/java/android/credentials/CredentialProviderInfo.java +++ b/core/java/android/credentials/CredentialProviderInfo.java @@ -107,7 +107,6 @@ public final class CredentialProviderInfo implements Parcelable { /** * Returns whether the provider is set as primary by the user. * - * @hide */ public boolean isPrimary() { return mIsPrimary; diff --git a/core/java/android/credentials/GetCandidateCredentialsException.java b/core/java/android/credentials/GetCandidateCredentialsException.java new file mode 100644 index 0000000000000000000000000000000000000000..40650d02a93efe358d941090c6d4f50d5578845a --- /dev/null +++ b/core/java/android/credentials/GetCandidateCredentialsException.java @@ -0,0 +1,95 @@ +/* + * Copyright 2022 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.credentials; + +import android.annotation.Hide; +import android.annotation.NonNull; +import android.annotation.Nullable; + +import com.android.internal.util.Preconditions; + +/** + * Represents an error encountered during the + * {@link CredentialManager#getCandidateCredentials} operation. + * + * @hide + */ +@Hide +public class GetCandidateCredentialsException extends Exception { + /** + * The error type value for when the given operation failed due to an unknown reason. + */ + @NonNull + public static final String TYPE_UNKNOWN = + "android.credentials.GetCandidateCredentialsException.TYPE_UNKNOWN"; + + /** + * The error type value for when no credential is found available for the given {@link + * CredentialManager#getCandidateCredentials} request. + */ + @NonNull + public static final String TYPE_NO_CREDENTIAL = + "android.credentials.GetCandidateCredentialsException.TYPE_NO_CREDENTIAL"; + + @NonNull + private final String mType; + + /** Returns the specific exception type. */ + @NonNull + public String getType() { + return mType; + } + + /** + * Constructs a {@link GetCandidateCredentialsException}. + * + * @throws IllegalArgumentException If type is empty. + */ + public GetCandidateCredentialsException(@NonNull String type, @Nullable String message) { + this(type, message, null); + } + + /** + * Constructs a {@link GetCandidateCredentialsException}. + * + * @throws IllegalArgumentException If type is empty. + */ + public GetCandidateCredentialsException( + @NonNull String type, @Nullable String message, @Nullable Throwable cause) { + super(message, cause); + this.mType = Preconditions.checkStringNotEmpty(type, + "type must not be empty"); + } + + /** + * Constructs a {@link GetCandidateCredentialsException}. + * + * @throws IllegalArgumentException If type is empty. + */ + public GetCandidateCredentialsException(@NonNull String type, @Nullable Throwable cause) { + this(type, null, cause); + } + + /** + * Constructs a {@link GetCandidateCredentialsException}. + * + * @throws IllegalArgumentException If type is empty. + */ + public GetCandidateCredentialsException(@NonNull String type) { + this(type, null, null); + } +} diff --git a/core/java/android/credentials/GetCandidateCredentialsRequest.aidl b/core/java/android/credentials/GetCandidateCredentialsRequest.aidl new file mode 100644 index 0000000000000000000000000000000000000000..d3610894b418761bc7091fb98f0f113950581e92 --- /dev/null +++ b/core/java/android/credentials/GetCandidateCredentialsRequest.aidl @@ -0,0 +1,19 @@ +/* + * Copyright 2022 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.credentials; + +parcelable GetCandidateCredentialsRequest; \ No newline at end of file diff --git a/core/java/android/credentials/GetCandidateCredentialsRequest.java b/core/java/android/credentials/GetCandidateCredentialsRequest.java new file mode 100644 index 0000000000000000000000000000000000000000..7f0dcaf060b84ee1c556c1e010b1e1d2276c4f98 --- /dev/null +++ b/core/java/android/credentials/GetCandidateCredentialsRequest.java @@ -0,0 +1,147 @@ +/* + * Copyright 2022 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.credentials; + +import static java.util.Objects.requireNonNull; + +import android.annotation.Hide; +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.Bundle; +import android.os.Parcel; +import android.os.Parcelable; + +import com.android.internal.util.AnnotationValidations; +import com.android.internal.util.Preconditions; + +import java.util.ArrayList; +import java.util.List; + +/** + * A request to retrieve a list of candidate credentials against the list of credential + * options + * + * @hide + */ +@Hide +public final class GetCandidateCredentialsRequest implements Parcelable { + + /** + * The list of credential requests. + */ + @NonNull + private final List mCredentialOptions; + + /** + * The top request level data. + */ + @NonNull + private final Bundle mData; + + /** + * The origin of the calling app. Callers of this special API (e.g. browsers) + * can set this origin for an app different from their own, to be able to get credentials + * on behalf of that app. + */ + @Nullable + private String mOrigin; + + /** + * Returns the list of credential options to be requested. + */ + @NonNull + public List getCredentialOptions() { + return mCredentialOptions; + } + + /** + * Returns the top request level data. + */ + @NonNull + public Bundle getData() { + return mData; + } + + /** + * Returns the origin of the calling app if set otherwise returns null. + */ + @Nullable + public String getOrigin() { + return mOrigin; + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeTypedList(mCredentialOptions, flags); + dest.writeBundle(mData); + dest.writeString8(mOrigin); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public String toString() { + return "GetCandidateCredentialsRequest {credentialOption=" + mCredentialOptions + + ", data=" + mData + + ", origin=" + mOrigin + + "}"; + } + + private GetCandidateCredentialsRequest(@NonNull List credentialOptions, + @NonNull Bundle data, String origin) { + Preconditions.checkCollectionNotEmpty( + credentialOptions, + /*valueName=*/ "credentialOptions"); + Preconditions.checkCollectionElementsNotNull( + credentialOptions, + /*valueName=*/ "credentialOptions"); + mCredentialOptions = credentialOptions; + mData = requireNonNull(data, + "data must not be null"); + mOrigin = origin; + } + + private GetCandidateCredentialsRequest(@NonNull Parcel in) { + List credentialOptions = new ArrayList(); + in.readTypedList(credentialOptions, CredentialOption.CREATOR); + mCredentialOptions = credentialOptions; + AnnotationValidations.validate(NonNull.class, null, mCredentialOptions); + + Bundle data = in.readBundle(); + mData = data; + AnnotationValidations.validate(NonNull.class, null, mData); + + mOrigin = in.readString8(); + } + + @NonNull + public static final Creator CREATOR = + new Creator<>() { + @Override + public GetCandidateCredentialsRequest[] newArray(int size) { + return new GetCandidateCredentialsRequest[size]; + } + + @Override + public GetCandidateCredentialsRequest createFromParcel(@NonNull Parcel in) { + return new GetCandidateCredentialsRequest(in); + } + }; +} diff --git a/core/java/android/credentials/GetCandidateCredentialsResponse.aidl b/core/java/android/credentials/GetCandidateCredentialsResponse.aidl new file mode 100644 index 0000000000000000000000000000000000000000..ffcd3e7078e83fbef544659a234e8f32b8ecffde --- /dev/null +++ b/core/java/android/credentials/GetCandidateCredentialsResponse.aidl @@ -0,0 +1,19 @@ +/* + * Copyright 2022 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.credentials; + +parcelable GetCandidateCredentialsResponse; \ No newline at end of file diff --git a/core/java/android/credentials/GetCandidateCredentialsResponse.java b/core/java/android/credentials/GetCandidateCredentialsResponse.java new file mode 100644 index 0000000000000000000000000000000000000000..231e4bc4ac7593ed4874ce777e3c4411ca1262e3 --- /dev/null +++ b/core/java/android/credentials/GetCandidateCredentialsResponse.java @@ -0,0 +1,86 @@ +/* + * Copyright 2022 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.credentials; + +import android.annotation.Hide; +import android.annotation.NonNull; +import android.credentials.ui.GetCredentialProviderData; +import android.os.Parcel; +import android.os.Parcelable; + +import com.android.internal.util.AnnotationValidations; +import com.android.internal.util.Preconditions; + +import java.util.ArrayList; +import java.util.List; + +/** + * A list of candidate credentials. + * + * @hide + */ +@Hide +public final class GetCandidateCredentialsResponse implements Parcelable { + // TODO(b/299321990): Add members + + @NonNull + private final List mCandidateProviderDataList; + + /** + * @hide + */ + @Hide + public GetCandidateCredentialsResponse( + List candidateProviderDataList + ) { + Preconditions.checkCollectionNotEmpty( + candidateProviderDataList, + /*valueName=*/ "candidateProviderDataList"); + mCandidateProviderDataList = new ArrayList<>(candidateProviderDataList); + } + + protected GetCandidateCredentialsResponse(Parcel in) { + List candidateProviderDataList = new ArrayList<>(); + in.readTypedList(candidateProviderDataList, GetCredentialProviderData.CREATOR); + mCandidateProviderDataList = candidateProviderDataList; + + AnnotationValidations.validate(NonNull.class, null, mCandidateProviderDataList); + } + + @Override + public void writeToParcel(Parcel dest, int flags) { + dest.writeTypedList(mCandidateProviderDataList); + } + + @Override + public int describeContents() { + return 0; + } + + public static final Creator CREATOR = + new Creator<>() { + @Override + public GetCandidateCredentialsResponse createFromParcel(Parcel in) { + return new GetCandidateCredentialsResponse(in); + } + + @Override + public GetCandidateCredentialsResponse[] newArray(int size) { + return new GetCandidateCredentialsResponse[size]; + } + }; +} diff --git a/core/java/android/credentials/ICredentialManager.aidl b/core/java/android/credentials/ICredentialManager.aidl index dec729f4a19f1ae8d6ba8dcb3f3c32cec38a28d9..d0815766024ad7695dd2467fb475bfc1d1a7fe7a 100644 --- a/core/java/android/credentials/ICredentialManager.aidl +++ b/core/java/android/credentials/ICredentialManager.aidl @@ -21,12 +21,14 @@ import java.util.List; import android.credentials.CredentialProviderInfo; import android.credentials.ClearCredentialStateRequest; import android.credentials.CreateCredentialRequest; +import android.credentials.GetCandidateCredentialsRequest; import android.credentials.GetCredentialRequest; import android.credentials.RegisterCredentialDescriptionRequest; import android.credentials.UnregisterCredentialDescriptionRequest; import android.credentials.IClearCredentialStateCallback; import android.credentials.ICreateCredentialCallback; import android.credentials.IGetCredentialCallback; +import android.credentials.IGetCandidateCredentialsCallback; import android.credentials.IPrepareGetCredentialCallback; import android.credentials.ISetEnabledProvidersCallback; import android.content.ComponentName; @@ -45,6 +47,8 @@ interface ICredentialManager { @nullable ICancellationSignal executeCreateCredential(in CreateCredentialRequest request, in ICreateCredentialCallback callback, String callingPackage); + @nullable ICancellationSignal getCandidateCredentials(in GetCredentialRequest request, in IGetCandidateCredentialsCallback callback, String callingPackage); + @nullable ICancellationSignal clearCredentialState(in ClearCredentialStateRequest request, in IClearCredentialStateCallback callback, String callingPackage); void setEnabledProviders(in List primaryProviders, in List providers, in int userId, in ISetEnabledProvidersCallback callback); diff --git a/packages/SettingsLib/Spa/testutils/src/com/android/settingslib/spa/testutils/MockitoHelper.kt b/core/java/android/credentials/IGetCandidateCredentialsCallback.aidl similarity index 58% rename from packages/SettingsLib/Spa/testutils/src/com/android/settingslib/spa/testutils/MockitoHelper.kt rename to core/java/android/credentials/IGetCandidateCredentialsCallback.aidl index 5ba54c12b0d05ae6b67153773038cd0b62516631..729176a9919d5930d4ed1241a272bb62443725dd 100644 --- a/packages/SettingsLib/Spa/testutils/src/com/android/settingslib/spa/testutils/MockitoHelper.kt +++ b/core/java/android/credentials/IGetCandidateCredentialsCallback.aidl @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 The Android Open Source Project + * Copyright 2022 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,16 +14,17 @@ * limitations under the License. */ -package com.android.settingslib.spa.testutils +package android.credentials; -import org.mockito.Mockito +import android.app.PendingIntent; +import android.credentials.GetCandidateCredentialsResponse; /** - * Returns Mockito.any() as nullable type to avoid java.lang.IllegalStateException when null is - * returned. + * Listener for a getCandidateCredentials request. * - * Generic T is nullable because implicitly bounded by Any?. + * @hide */ -fun any(type: Class): T = Mockito.any(type) - -inline fun any(): T = any(T::class.java) +interface IGetCandidateCredentialsCallback { + oneway void onResponse(in GetCandidateCredentialsResponse response); + oneway void onError(String errorType, String message); +} \ No newline at end of file diff --git a/core/java/android/credentials/ui/BaseDialogResult.java b/core/java/android/credentials/ui/BaseDialogResult.java index f0442de74e9ebb08ef7c328032eceb3f2fd31806..e8cf5abd5239124394656ddb138c0469b5010235 100644 --- a/core/java/android/credentials/ui/BaseDialogResult.java +++ b/core/java/android/credentials/ui/BaseDialogResult.java @@ -85,15 +85,15 @@ public class BaseDialogResult implements Parcelable { */ public static final int RESULT_CODE_DATA_PARSING_FAILURE = 3; - @NonNull + @Nullable private final IBinder mRequestToken; - public BaseDialogResult(@NonNull IBinder requestToken) { + public BaseDialogResult(@Nullable IBinder requestToken) { mRequestToken = requestToken; } /** Returns the unique identifier for the request that launched the operation. */ - @NonNull + @Nullable public IBinder getRequestToken() { return mRequestToken; } @@ -101,7 +101,6 @@ public class BaseDialogResult implements Parcelable { protected BaseDialogResult(@NonNull Parcel in) { IBinder requestToken = in.readStrongBinder(); mRequestToken = requestToken; - AnnotationValidations.validate(NonNull.class, null, mRequestToken); } @Override diff --git a/core/java/android/credentials/ui/UserSelectionDialogResult.java b/core/java/android/credentials/ui/UserSelectionDialogResult.java index 44b3b36844c28d40fb44aa0d181e8f51f24ba40e..3089bf674b95cbe406d2747ee5f8f04c9dd9bea0 100644 --- a/core/java/android/credentials/ui/UserSelectionDialogResult.java +++ b/core/java/android/credentials/ui/UserSelectionDialogResult.java @@ -60,7 +60,7 @@ public final class UserSelectionDialogResult extends BaseDialogResult implements @Nullable private ProviderPendingIntentResponse mProviderPendingIntentResponse; public UserSelectionDialogResult( - @NonNull IBinder requestToken, @NonNull String providerId, + @Nullable IBinder requestToken, @NonNull String providerId, @NonNull String entryKey, @NonNull String entrySubkey) { super(requestToken); mProviderId = providerId; @@ -69,7 +69,7 @@ public final class UserSelectionDialogResult extends BaseDialogResult implements } public UserSelectionDialogResult( - @NonNull IBinder requestToken, @NonNull String providerId, + @Nullable IBinder requestToken, @NonNull String providerId, @NonNull String entryKey, @NonNull String entrySubkey, @Nullable ProviderPendingIntentResponse providerPendingIntentResponse) { super(requestToken); diff --git a/core/java/android/database/DatabaseUtils.java b/core/java/android/database/DatabaseUtils.java index d41df4f49d48fd3d2bf7274644fc96e67352022b..7b874cc251bb002323637e3d34be18f2383dea87 100644 --- a/core/java/android/database/DatabaseUtils.java +++ b/core/java/android/database/DatabaseUtils.java @@ -77,6 +77,16 @@ public class DatabaseUtils { /** One of the values returned by {@link #getSqlStatementType(String)}. */ public static final int STATEMENT_OTHER = 99; + // The following statement types are "extended" and are for internal use only. These types + // are not public and are never returned by {@link #getSqlStatementType(String)}. + + /** An internal statement type @hide **/ + public static final int STATEMENT_WITH = 100; + /** An internal statement type @hide **/ + public static final int STATEMENT_CREATE = 101; + /** An internal statement type denoting a comment. @hide **/ + public static final int STATEMENT_COMMENT = 102; + /** * Special function for writing an exception result at the header of * a parcel, to be used when returning an exception from a transaction. @@ -1563,6 +1573,79 @@ public class DatabaseUtils { db.close(); } + /** + * The legacy prefix matcher. + */ + private static String getSqlStatementPrefixSimple(@NonNull String sql) { + sql = sql.trim(); + if (sql.length() < 3) { + return null; + } + return sql.substring(0, 3).toUpperCase(Locale.ROOT); + } + + /** + * Return the extended statement type for the SQL statement. This is not a public API and it + * can return values that are not publicly visible. + * @hide + */ + private static int categorizeStatement(@NonNull String prefix, @NonNull String sql) { + if (prefix == null) return STATEMENT_OTHER; + + switch (prefix) { + case "SEL": return STATEMENT_SELECT; + case "INS": + case "UPD": + case "REP": + case "DEL": return STATEMENT_UPDATE; + case "ATT": return STATEMENT_ATTACH; + case "COM": + case "END": return STATEMENT_COMMIT; + case "ROL": + if (sql.toUpperCase(Locale.ROOT).contains(" TO ")) { + // Rollback to savepoint. + return STATEMENT_OTHER; + } + return STATEMENT_ABORT; + case "BEG": return STATEMENT_BEGIN; + case "PRA": return STATEMENT_PRAGMA; + case "CRE": return STATEMENT_CREATE; + case "DRO": + case "ALT": return STATEMENT_DDL; + case "ANA": + case "DET": return STATEMENT_UNPREPARED; + case "WIT": return STATEMENT_WITH; + default: + if (prefix.startsWith("--") || prefix.startsWith("/*")) { + return STATEMENT_COMMENT; + } + return STATEMENT_OTHER; + } + } + + /** + * Return the extended statement type for the SQL statement. This is not a public API and it + * can return values that are not publicly visible. + * @hide + */ + public static int getSqlStatementTypeExtended(@NonNull String sql) { + int type = categorizeStatement(getSqlStatementPrefixSimple(sql), sql); + return type; + } + + /** + * Convert an extended statement type to a public SQL statement type value. + * @hide + */ + public static int getSqlStatementType(int extended) { + switch (extended) { + case STATEMENT_CREATE: return STATEMENT_DDL; + case STATEMENT_WITH: return STATEMENT_OTHER; + case STATEMENT_COMMENT: return STATEMENT_OTHER; + } + return extended; + } + /** * Returns one of the following which represent the type of the given SQL statement. *

      @@ -1572,49 +1655,16 @@ public class DatabaseUtils { *
    1. {@link #STATEMENT_BEGIN}
    2. *
    3. {@link #STATEMENT_COMMIT}
    4. *
    5. {@link #STATEMENT_ABORT}
    6. + *
    7. {@link #STATEMENT_PRAGMA}
    8. + *
    9. {@link #STATEMENT_DDL}
    10. + *
    11. {@link #STATEMENT_UNPREPARED}
    12. *
    13. {@link #STATEMENT_OTHER}
    14. *
    * @param sql the SQL statement whose type is returned by this method * @return one of the values listed above */ public static int getSqlStatementType(String sql) { - sql = sql.trim(); - if (sql.length() < 3) { - return STATEMENT_OTHER; - } - String prefixSql = sql.substring(0, 3).toUpperCase(Locale.ROOT); - if (prefixSql.equals("SEL")) { - return STATEMENT_SELECT; - } else if (prefixSql.equals("INS") || - prefixSql.equals("UPD") || - prefixSql.equals("REP") || - prefixSql.equals("DEL")) { - return STATEMENT_UPDATE; - } else if (prefixSql.equals("ATT")) { - return STATEMENT_ATTACH; - } else if (prefixSql.equals("COM")) { - return STATEMENT_COMMIT; - } else if (prefixSql.equals("END")) { - return STATEMENT_COMMIT; - } else if (prefixSql.equals("ROL")) { - boolean isRollbackToSavepoint = sql.toUpperCase(Locale.ROOT).contains(" TO "); - if (isRollbackToSavepoint) { - Log.w(TAG, "Statement '" + sql - + "' may not work on API levels 16-27, use ';" + sql + "' instead"); - return STATEMENT_OTHER; - } - return STATEMENT_ABORT; - } else if (prefixSql.equals("BEG")) { - return STATEMENT_BEGIN; - } else if (prefixSql.equals("PRA")) { - return STATEMENT_PRAGMA; - } else if (prefixSql.equals("CRE") || prefixSql.equals("DRO") || - prefixSql.equals("ALT")) { - return STATEMENT_DDL; - } else if (prefixSql.equals("ANA") || prefixSql.equals("DET")) { - return STATEMENT_UNPREPARED; - } - return STATEMENT_OTHER; + return getSqlStatementType(getSqlStatementTypeExtended(sql)); } /** diff --git a/core/java/android/database/sqlite/SQLiteConnection.java b/core/java/android/database/sqlite/SQLiteConnection.java index f2980f4a59c8415429ae1cc4731dc5633f199cbb..b96d8324759163fac555868d2199239cd343d1fa 100644 --- a/core/java/android/database/sqlite/SQLiteConnection.java +++ b/core/java/android/database/sqlite/SQLiteConnection.java @@ -1096,7 +1096,7 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen seqNum = mPreparedStatementCache.getLastSeqNum(); try { final int numParameters = nativeGetParameterCount(mConnectionPtr, statementPtr); - final int type = DatabaseUtils.getSqlStatementType(sql); + final int type = DatabaseUtils.getSqlStatementTypeExtended(sql); final boolean readOnly = nativeIsReadOnly(mConnectionPtr, statementPtr); statement = obtainPreparedStatement(sql, statementPtr, numParameters, type, readOnly, seqNum); @@ -1279,7 +1279,8 @@ public final class SQLiteConnection implements CancellationSignal.OnCancelListen private static boolean isCacheable(int statementType) { if (statementType == DatabaseUtils.STATEMENT_UPDATE - || statementType == DatabaseUtils.STATEMENT_SELECT) { + || statementType == DatabaseUtils.STATEMENT_SELECT + || statementType == DatabaseUtils.STATEMENT_WITH) { return true; } return false; diff --git a/core/java/android/database/sqlite/SQLiteDatabase.java b/core/java/android/database/sqlite/SQLiteDatabase.java index 5b80e6a0b1882301f4c4d5f93d9d0ef0cade07fa..746f2f23fd5c829078c2bb2312b528c5cca37dd8 100644 --- a/core/java/android/database/sqlite/SQLiteDatabase.java +++ b/core/java/android/database/sqlite/SQLiteDatabase.java @@ -44,10 +44,12 @@ import android.util.EventLog; import android.util.Log; import android.util.Pair; import android.util.Printer; + import com.android.internal.util.Preconditions; import dalvik.annotation.optimization.NeverCompile; import dalvik.system.CloseGuard; + import java.io.File; import java.io.FileFilter; import java.io.IOException; @@ -1473,8 +1475,10 @@ public final class SQLiteDatabase extends SQLiteClosable { * SQL WHERE clause (excluding the WHERE itself). Passing null * will return all rows for the given table. * @param selectionArgs You may include ?s in selection, which will be - * replaced by the values from selectionArgs, in order that they + * replaced by the values from selectionArgs, in the order that they * appear in the selection. The values will be bound as Strings. + * If selection is null or does not contain ?s then selectionArgs + * may be null. * @param groupBy A filter declaring how to group rows, formatted as an SQL * GROUP BY clause (excluding the GROUP BY itself). Passing null * will cause the rows to not be grouped. @@ -1492,9 +1496,11 @@ public final class SQLiteDatabase extends SQLiteClosable { * {@link Cursor}s are not synchronized, see the documentation for more details. * @see Cursor */ - public Cursor query(boolean distinct, String table, String[] columns, - String selection, String[] selectionArgs, String groupBy, - String having, String orderBy, String limit) { + @NonNull + public Cursor query(boolean distinct, @NonNull String table, + @Nullable String[] columns, @Nullable String selection, + @Nullable String[] selectionArgs, @Nullable String groupBy, @Nullable String having, + @Nullable String orderBy, @Nullable String limit) { return queryWithFactory(null, distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit, null); } @@ -1511,8 +1517,10 @@ public final class SQLiteDatabase extends SQLiteClosable { * SQL WHERE clause (excluding the WHERE itself). Passing null * will return all rows for the given table. * @param selectionArgs You may include ?s in selection, which will be - * replaced by the values from selectionArgs, in order that they + * replaced by the values from selectionArgs, in the order that they * appear in the selection. The values will be bound as Strings. + * If selection is null or does not contain ?s then selectionArgs + * may be null. * @param groupBy A filter declaring how to group rows, formatted as an SQL * GROUP BY clause (excluding the GROUP BY itself). Passing null * will cause the rows to not be grouped. @@ -1533,9 +1541,12 @@ public final class SQLiteDatabase extends SQLiteClosable { * {@link Cursor}s are not synchronized, see the documentation for more details. * @see Cursor */ - public Cursor query(boolean distinct, String table, String[] columns, - String selection, String[] selectionArgs, String groupBy, - String having, String orderBy, String limit, CancellationSignal cancellationSignal) { + @NonNull + public Cursor query(boolean distinct, @NonNull String table, + @Nullable String[] columns, @Nullable String selection, + @Nullable String[] selectionArgs, @Nullable String groupBy, @Nullable String having, + @Nullable String orderBy, @Nullable String limit, + @Nullable CancellationSignal cancellationSignal) { return queryWithFactory(null, distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit, cancellationSignal); } @@ -1553,8 +1564,10 @@ public final class SQLiteDatabase extends SQLiteClosable { * SQL WHERE clause (excluding the WHERE itself). Passing null * will return all rows for the given table. * @param selectionArgs You may include ?s in selection, which will be - * replaced by the values from selectionArgs, in order that they + * replaced by the values from selectionArgs, in the order that they * appear in the selection. The values will be bound as Strings. + * If selection is null or does not contain ?s then selectionArgs + * may be null. * @param groupBy A filter declaring how to group rows, formatted as an SQL * GROUP BY clause (excluding the GROUP BY itself). Passing null * will cause the rows to not be grouped. @@ -1572,10 +1585,12 @@ public final class SQLiteDatabase extends SQLiteClosable { * {@link Cursor}s are not synchronized, see the documentation for more details. * @see Cursor */ - public Cursor queryWithFactory(CursorFactory cursorFactory, - boolean distinct, String table, String[] columns, - String selection, String[] selectionArgs, String groupBy, - String having, String orderBy, String limit) { + @SuppressLint("SamShouldBeLast") + @NonNull + public Cursor queryWithFactory(@Nullable CursorFactory cursorFactory, + boolean distinct, @NonNull String table, @Nullable String[] columns, + @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String groupBy, + @Nullable String having, @Nullable String orderBy, @Nullable String limit) { return queryWithFactory(cursorFactory, distinct, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit, null); } @@ -1593,8 +1608,10 @@ public final class SQLiteDatabase extends SQLiteClosable { * SQL WHERE clause (excluding the WHERE itself). Passing null * will return all rows for the given table. * @param selectionArgs You may include ?s in selection, which will be - * replaced by the values from selectionArgs, in order that they + * replaced by the values from selectionArgs, in the order that they * appear in the selection. The values will be bound as Strings. + * If selection is null or does not contain ?s then selectionArgs + * may be null. * @param groupBy A filter declaring how to group rows, formatted as an SQL * GROUP BY clause (excluding the GROUP BY itself). Passing null * will cause the rows to not be grouped. @@ -1615,10 +1632,13 @@ public final class SQLiteDatabase extends SQLiteClosable { * {@link Cursor}s are not synchronized, see the documentation for more details. * @see Cursor */ - public Cursor queryWithFactory(CursorFactory cursorFactory, - boolean distinct, String table, String[] columns, - String selection, String[] selectionArgs, String groupBy, - String having, String orderBy, String limit, CancellationSignal cancellationSignal) { + @SuppressLint("SamShouldBeLast") + @NonNull + public Cursor queryWithFactory(@Nullable CursorFactory cursorFactory, + boolean distinct, @NonNull String table, @Nullable String[] columns, + @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String groupBy, + @Nullable String having, @Nullable String orderBy, @Nullable String limit, + @Nullable CancellationSignal cancellationSignal) { acquireReference(); try { String sql = SQLiteQueryBuilder.buildQueryString( @@ -1642,8 +1662,10 @@ public final class SQLiteDatabase extends SQLiteClosable { * SQL WHERE clause (excluding the WHERE itself). Passing null * will return all rows for the given table. * @param selectionArgs You may include ?s in selection, which will be - * replaced by the values from selectionArgs, in order that they + * replaced by the values from selectionArgs, in the order that they * appear in the selection. The values will be bound as Strings. + * If selection is null or does not contain ?s then selectionArgs + * may be null. * @param groupBy A filter declaring how to group rows, formatted as an SQL * GROUP BY clause (excluding the GROUP BY itself). Passing null * will cause the rows to not be grouped. @@ -1659,9 +1681,10 @@ public final class SQLiteDatabase extends SQLiteClosable { * {@link Cursor}s are not synchronized, see the documentation for more details. * @see Cursor */ - public Cursor query(String table, String[] columns, String selection, - String[] selectionArgs, String groupBy, String having, - String orderBy) { + @NonNull + public Cursor query(@NonNull String table, @Nullable String[] columns, + @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String groupBy, + @Nullable String having, @Nullable String orderBy) { return query(false, table, columns, selection, selectionArgs, groupBy, having, orderBy, null /* limit */); @@ -1678,8 +1701,10 @@ public final class SQLiteDatabase extends SQLiteClosable { * SQL WHERE clause (excluding the WHERE itself). Passing null * will return all rows for the given table. * @param selectionArgs You may include ?s in selection, which will be - * replaced by the values from selectionArgs, in order that they + * replaced by the values from selectionArgs, in the order that they * appear in the selection. The values will be bound as Strings. + * If selection is null or does not contain ?s then selectionArgs + * may be null. * @param groupBy A filter declaring how to group rows, formatted as an SQL * GROUP BY clause (excluding the GROUP BY itself). Passing null * will cause the rows to not be grouped. @@ -1697,9 +1722,10 @@ public final class SQLiteDatabase extends SQLiteClosable { * {@link Cursor}s are not synchronized, see the documentation for more details. * @see Cursor */ - public Cursor query(String table, String[] columns, String selection, - String[] selectionArgs, String groupBy, String having, - String orderBy, String limit) { + @NonNull + public Cursor query(@NonNull String table, @Nullable String[] columns, + @Nullable String selection, @Nullable String[] selectionArgs, @Nullable String groupBy, + @Nullable String having, @Nullable String orderBy, @Nullable String limit) { return query(false, table, columns, selection, selectionArgs, groupBy, having, orderBy, limit); @@ -1711,11 +1737,13 @@ public final class SQLiteDatabase extends SQLiteClosable { * @param sql the SQL query. The SQL string must not be ; terminated * @param selectionArgs You may include ?s in where clause in the query, * which will be replaced by the values from selectionArgs. The - * values will be bound as Strings. + * values will be bound as Strings. If selection is null or does not contain ?s then + * selectionArgs may be null. * @return A {@link Cursor} object, which is positioned before the first entry. Note that * {@link Cursor}s are not synchronized, see the documentation for more details. */ - public Cursor rawQuery(String sql, String[] selectionArgs) { + @NonNull + public Cursor rawQuery(@NonNull String sql, @Nullable String[] selectionArgs) { return rawQueryWithFactory(null, sql, selectionArgs, null, null); } @@ -1725,15 +1753,17 @@ public final class SQLiteDatabase extends SQLiteClosable { * @param sql the SQL query. The SQL string must not be ; terminated * @param selectionArgs You may include ?s in where clause in the query, * which will be replaced by the values from selectionArgs. The - * values will be bound as Strings. + * values will be bound as Strings. If selection is null or does not contain ?s then + * selectionArgs may be null. * @param cancellationSignal A signal to cancel the operation in progress, or null if none. * If the operation is canceled, then {@link OperationCanceledException} will be thrown * when the query is executed. * @return A {@link Cursor} object, which is positioned before the first entry. Note that * {@link Cursor}s are not synchronized, see the documentation for more details. */ - public Cursor rawQuery(String sql, String[] selectionArgs, - CancellationSignal cancellationSignal) { + @NonNull + public Cursor rawQuery(@NonNull String sql, @Nullable String[] selectionArgs, + @Nullable CancellationSignal cancellationSignal) { return rawQueryWithFactory(null, sql, selectionArgs, null, cancellationSignal); } @@ -1744,14 +1774,16 @@ public final class SQLiteDatabase extends SQLiteClosable { * @param sql the SQL query. The SQL string must not be ; terminated * @param selectionArgs You may include ?s in where clause in the query, * which will be replaced by the values from selectionArgs. The - * values will be bound as Strings. + * values will be bound as Strings. If selection is null or does not contain ?s then + * selectionArgs may be null. * @param editTable the name of the first table, which is editable * @return A {@link Cursor} object, which is positioned before the first entry. Note that * {@link Cursor}s are not synchronized, see the documentation for more details. */ + @NonNull public Cursor rawQueryWithFactory( - CursorFactory cursorFactory, String sql, String[] selectionArgs, - String editTable) { + @Nullable CursorFactory cursorFactory, @NonNull String sql, + @Nullable String[] selectionArgs, @NonNull String editTable) { return rawQueryWithFactory(cursorFactory, sql, selectionArgs, editTable, null); } @@ -1762,7 +1794,8 @@ public final class SQLiteDatabase extends SQLiteClosable { * @param sql the SQL query. The SQL string must not be ; terminated * @param selectionArgs You may include ?s in where clause in the query, * which will be replaced by the values from selectionArgs. The - * values will be bound as Strings. + * values will be bound as Strings. If selection is null or does not contain ?s then + * selectionArgs may be null. * @param editTable the name of the first table, which is editable * @param cancellationSignal A signal to cancel the operation in progress, or null if none. * If the operation is canceled, then {@link OperationCanceledException} will be thrown @@ -1770,9 +1803,11 @@ public final class SQLiteDatabase extends SQLiteClosable { * @return A {@link Cursor} object, which is positioned before the first entry. Note that * {@link Cursor}s are not synchronized, see the documentation for more details. */ + @NonNull public Cursor rawQueryWithFactory( - CursorFactory cursorFactory, String sql, String[] selectionArgs, - String editTable, CancellationSignal cancellationSignal) { + @Nullable CursorFactory cursorFactory, @NonNull String sql, + @Nullable String[] selectionArgs, @NonNull String editTable, + @Nullable CancellationSignal cancellationSignal) { acquireReference(); try { SQLiteCursorDriver driver = new SQLiteDirectCursorDriver(this, sql, editTable, @@ -1800,7 +1835,8 @@ public final class SQLiteDatabase extends SQLiteClosable { * column values * @return the row ID of the newly inserted row, or -1 if an error occurred */ - public long insert(String table, String nullColumnHack, ContentValues values) { + public long insert(@NonNull String table, @Nullable String nullColumnHack, + @Nullable ContentValues values) { try { return insertWithOnConflict(table, nullColumnHack, values, CONFLICT_NONE); } catch (SQLException e) { @@ -1826,8 +1862,8 @@ public final class SQLiteDatabase extends SQLiteClosable { * @throws SQLException * @return the row ID of the newly inserted row, or -1 if an error occurred */ - public long insertOrThrow(String table, String nullColumnHack, ContentValues values) - throws SQLException { + public long insertOrThrow(@NonNull String table, @Nullable String nullColumnHack, + @Nullable ContentValues values) throws SQLException { return insertWithOnConflict(table, nullColumnHack, values, CONFLICT_NONE); } @@ -1847,7 +1883,8 @@ public final class SQLiteDatabase extends SQLiteClosable { * the row. The keys should be the column names and the values the column values. * @return the row ID of the newly inserted row, or -1 if an error occurred */ - public long replace(String table, String nullColumnHack, ContentValues initialValues) { + public long replace(@NonNull String table, @Nullable String nullColumnHack, + @Nullable ContentValues initialValues) { try { return insertWithOnConflict(table, nullColumnHack, initialValues, CONFLICT_REPLACE); @@ -1874,8 +1911,8 @@ public final class SQLiteDatabase extends SQLiteClosable { * @throws SQLException * @return the row ID of the newly inserted row, or -1 if an error occurred */ - public long replaceOrThrow(String table, String nullColumnHack, - ContentValues initialValues) throws SQLException { + public long replaceOrThrow(@NonNull String table, @Nullable String nullColumnHack, + @Nullable ContentValues initialValues) throws SQLException { return insertWithOnConflict(table, nullColumnHack, initialValues, CONFLICT_REPLACE); } @@ -1899,8 +1936,8 @@ public final class SQLiteDatabase extends SQLiteClosable { * input parameter conflictAlgorithm = {@link #CONFLICT_IGNORE} * or an error occurred. */ - public long insertWithOnConflict(String table, String nullColumnHack, - ContentValues initialValues, int conflictAlgorithm) { + public long insertWithOnConflict(@NonNull String table, @Nullable String nullColumnHack, + @Nullable ContentValues initialValues, int conflictAlgorithm) { acquireReference(); try { StringBuilder sql = new StringBuilder(); @@ -1950,12 +1987,14 @@ public final class SQLiteDatabase extends SQLiteClosable { * Passing null will delete all rows. * @param whereArgs You may include ?s in the where clause, which * will be replaced by the values from whereArgs. The values - * will be bound as Strings. + * will be bound as Strings. If whereClause is null or does not + * contain ?s then whereArgs may be null. * @return the number of rows affected if a whereClause is passed in, 0 * otherwise. To remove all rows and get a count pass "1" as the * whereClause. */ - public int delete(String table, String whereClause, String[] whereArgs) { + public int delete(@NonNull String table, @Nullable String whereClause, + @Nullable String[] whereArgs) { acquireReference(); try { SQLiteStatement statement = new SQLiteStatement(this, "DELETE FROM " + table + @@ -1980,10 +2019,12 @@ public final class SQLiteDatabase extends SQLiteClosable { * Passing null will update all rows. * @param whereArgs You may include ?s in the where clause, which * will be replaced by the values from whereArgs. The values - * will be bound as Strings. + * will be bound as Strings. If whereClause is null or does not + * contain ?s then whereArgs may be null. * @return the number of rows affected */ - public int update(String table, ContentValues values, String whereClause, String[] whereArgs) { + public int update(@NonNull String table, @Nullable ContentValues values, + @Nullable String whereClause, @Nullable String[] whereArgs) { return updateWithOnConflict(table, values, whereClause, whereArgs, CONFLICT_NONE); } @@ -1997,12 +2038,13 @@ public final class SQLiteDatabase extends SQLiteClosable { * Passing null will update all rows. * @param whereArgs You may include ?s in the where clause, which * will be replaced by the values from whereArgs. The values - * will be bound as Strings. + * will be bound as Strings. If whereClause is null or does not + * contain ?s then whereArgs may be null. * @param conflictAlgorithm for update conflict resolver * @return the number of rows affected */ - public int updateWithOnConflict(String table, ContentValues values, - String whereClause, String[] whereArgs, int conflictAlgorithm) { + public int updateWithOnConflict(@NonNull String table, @Nullable ContentValues values, + @Nullable String whereClause, @Nullable String[] whereArgs, int conflictAlgorithm) { if (values == null || values.isEmpty()) { throw new IllegalArgumentException("Empty values"); } @@ -2125,7 +2167,8 @@ public final class SQLiteDatabase extends SQLiteClosable { * @param bindArgs only byte[], String, Long and Double are supported in bindArgs. * @throws SQLException if the SQL string is invalid */ - public void execSQL(String sql, Object[] bindArgs) throws SQLException { + public void execSQL(@NonNull String sql, @NonNull Object[] bindArgs) + throws SQLException { if (bindArgs == null) { throw new IllegalArgumentException("Empty bindArgs"); } @@ -2133,7 +2176,8 @@ public final class SQLiteDatabase extends SQLiteClosable { } /** {@hide} */ - public int executeSql(String sql, Object[] bindArgs) throws SQLException { + public int executeSql(@NonNull String sql, @NonNull Object[] bindArgs) + throws SQLException { acquireReference(); try { final int statementType = DatabaseUtils.getSqlStatementType(sql); diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index ccc39b6080d7b4198f60b8f6ad9e9be5725654f3..039644387715ad6e492c87996a391aea6361d1e6 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -41,11 +41,6 @@ import android.os.Message; import android.os.Process; import android.os.RemoteException; import android.os.ServiceManager; -import android.renderscript.Allocation; -import android.renderscript.Element; -import android.renderscript.RSIllegalArgumentException; -import android.renderscript.RenderScript; -import android.renderscript.Type; import android.text.TextUtils; import android.util.Log; import android.view.Surface; @@ -1007,132 +1002,6 @@ public class Camera { private native final void _addCallbackBuffer( byte[] callbackBuffer, int msgType); - /** - *

    Create a {@link android.renderscript RenderScript} - * {@link android.renderscript.Allocation Allocation} to use as a - * destination of preview callback frames. Use - * {@link #setPreviewCallbackAllocation setPreviewCallbackAllocation} to use - * the created Allocation as a destination for camera preview frames.

    - * - *

    The Allocation will be created with a YUV type, and its contents must - * be accessed within Renderscript with the {@code rsGetElementAtYuv_*} - * accessor methods. Its size will be based on the current - * {@link Parameters#getPreviewSize preview size} configured for this - * camera.

    - * - * @param rs the RenderScript context for this Allocation. - * @param usage additional usage flags to set for the Allocation. The usage - * flag {@link android.renderscript.Allocation#USAGE_IO_INPUT} will always - * be set on the created Allocation, but additional flags may be provided - * here. - * @return a new YUV-type Allocation with dimensions equal to the current - * preview size. - * @throws RSIllegalArgumentException if the usage flags are not compatible - * with an YUV Allocation. - * @see #setPreviewCallbackAllocation - * @hide - */ - public final Allocation createPreviewAllocation(RenderScript rs, int usage) - throws RSIllegalArgumentException { - Parameters p = getParameters(); - Size previewSize = p.getPreviewSize(); - Type.Builder yuvBuilder = new Type.Builder(rs, - Element.createPixel(rs, - Element.DataType.UNSIGNED_8, - Element.DataKind.PIXEL_YUV)); - // Use YV12 for wide compatibility. Changing this requires also - // adjusting camera service's format selection. - yuvBuilder.setYuvFormat(ImageFormat.YV12); - yuvBuilder.setX(previewSize.width); - yuvBuilder.setY(previewSize.height); - - Allocation a = Allocation.createTyped(rs, yuvBuilder.create(), - usage | Allocation.USAGE_IO_INPUT); - - return a; - } - - /** - *

    Set an {@link android.renderscript.Allocation Allocation} as the - * target of preview callback data. Use this method for efficient processing - * of camera preview data with RenderScript. The Allocation must be created - * with the {@link #createPreviewAllocation createPreviewAllocation } - * method.

    - * - *

    Setting a preview allocation will disable any active preview callbacks - * set by {@link #setPreviewCallback setPreviewCallback} or - * {@link #setPreviewCallbackWithBuffer setPreviewCallbackWithBuffer}, and - * vice versa. Using a preview allocation still requires an active standard - * preview target to be set, either with - * {@link #setPreviewTexture setPreviewTexture} or - * {@link #setPreviewDisplay setPreviewDisplay}.

    - * - *

    To be notified when new frames are available to the Allocation, use - * {@link android.renderscript.Allocation#setIoInputNotificationHandler Allocation.setIoInputNotificationHandler}. To - * update the frame currently accessible from the Allocation to the latest - * preview frame, call - * {@link android.renderscript.Allocation#ioReceive Allocation.ioReceive}.

    - * - *

    To disable preview into the Allocation, call this method with a - * {@code null} parameter.

    - * - *

    Once a preview allocation is set, the preview size set by - * {@link Parameters#setPreviewSize setPreviewSize} cannot be changed. If - * you wish to change the preview size, first remove the preview allocation - * by calling {@code setPreviewCallbackAllocation(null)}, then change the - * preview size, create a new preview Allocation with - * {@link #createPreviewAllocation createPreviewAllocation}, and set it as - * the new preview callback allocation target.

    - * - *

    If you are using the preview data to create video or still images, - * strongly consider using {@link android.media.MediaActionSound} to - * properly indicate image capture or recording start/stop to the user.

    - * - * @param previewAllocation the allocation to use as destination for preview - * @throws IOException if configuring the camera to use the Allocation for - * preview fails. - * @throws IllegalArgumentException if the Allocation's dimensions or other - * parameters don't meet the requirements. - * @see #createPreviewAllocation - * @see #setPreviewCallback - * @see #setPreviewCallbackWithBuffer - * @hide - */ - public final void setPreviewCallbackAllocation(Allocation previewAllocation) - throws IOException { - Surface previewSurface = null; - if (previewAllocation != null) { - Parameters p = getParameters(); - Size previewSize = p.getPreviewSize(); - if (previewSize.width != previewAllocation.getType().getX() || - previewSize.height != previewAllocation.getType().getY()) { - throw new IllegalArgumentException( - "Allocation dimensions don't match preview dimensions: " + - "Allocation is " + - previewAllocation.getType().getX() + - ", " + - previewAllocation.getType().getY() + - ". Preview is " + previewSize.width + ", " + - previewSize.height); - } - if ((previewAllocation.getUsage() & - Allocation.USAGE_IO_INPUT) == 0) { - throw new IllegalArgumentException( - "Allocation usage does not include USAGE_IO_INPUT"); - } - if (previewAllocation.getType().getElement().getDataKind() != - Element.DataKind.PIXEL_YUV) { - throw new IllegalArgumentException( - "Allocation is not of a YUV type"); - } - previewSurface = previewAllocation.getSurface(); - mUsingPreviewAllocation = true; - } else { - mUsingPreviewAllocation = false; - } - setPreviewCallbackSurface(previewSurface); - } - private native final void setPreviewCallbackSurface(Surface s); private class EventHandler extends Handler diff --git a/core/java/android/hardware/SensorAdditionalInfo.java b/core/java/android/hardware/SensorAdditionalInfo.java index 59def9fb3325f1828c8f688100b37cc498d15550..d1e101d563c47d28b5d9328fb50cf91aab7b5284 100644 --- a/core/java/android/hardware/SensorAdditionalInfo.java +++ b/core/java/android/hardware/SensorAdditionalInfo.java @@ -257,7 +257,7 @@ public class SensorAdditionalInfo { public static SensorAdditionalInfo createLocalGeomagneticField( float strength, float declination, float inclination) { if (strength < 10 || strength > 100 // much beyond extreme values on earth - || declination < 0 || declination > Math.PI + || declination < -Math.PI / 2 || declination > Math.PI / 2 || inclination < -Math.PI / 2 || inclination > Math.PI / 2) { throw new IllegalArgumentException("Geomagnetic field info out of range"); } diff --git a/core/java/android/hardware/SystemSensorManager.java b/core/java/android/hardware/SystemSensorManager.java index 0f6f6019c0f709618b15d15f1bb1e68bc7579200..dfd3802336622c65fe0d76f5177e112182179868 100644 --- a/core/java/android/hardware/SystemSensorManager.java +++ b/core/java/android/hardware/SystemSensorManager.java @@ -129,6 +129,7 @@ public class SystemSensorManager extends SensorManager { mDynamicSensorCallbacks = new HashMap<>(); private BroadcastReceiver mDynamicSensorBroadcastReceiver; private BroadcastReceiver mRuntimeSensorBroadcastReceiver; + private VirtualDeviceManager.VirtualDeviceListener mVirtualDeviceListener; // Looper associated with the context in which this instance was created. private final Looper mMainLooper; @@ -518,7 +519,11 @@ public class SystemSensorManager extends SensorManager { } private List createRuntimeSensorListLocked(int deviceId) { - setupRuntimeSensorBroadcastReceiver(); + if (android.companion.virtual.flags.Flags.vdmPublicApis()) { + setupVirtualDeviceListener(); + } else { + setupRuntimeSensorBroadcastReceiver(); + } List list = new ArrayList<>(); nativeGetRuntimeSensors(mNativeInstance, deviceId, list); mFullRuntimeSensorListByDevice.put(deviceId, list); @@ -558,6 +563,34 @@ public class SystemSensorManager extends SensorManager { } } + private void setupVirtualDeviceListener() { + if (mVirtualDeviceListener != null) { + return; + } + if (mVdm == null) { + mVdm = mContext.getSystemService(VirtualDeviceManager.class); + if (mVdm == null) { + return; + } + } + mVirtualDeviceListener = new VirtualDeviceManager.VirtualDeviceListener() { + @Override + public void onVirtualDeviceClosed(int deviceId) { + synchronized (mFullRuntimeSensorListByDevice) { + List removedSensors = + mFullRuntimeSensorListByDevice.removeReturnOld(deviceId); + if (removedSensors != null) { + for (Sensor s : removedSensors) { + cleanupSensorConnection(s); + } + } + mRuntimeSensorListByDeviceByType.remove(deviceId); + } + } + }; + mVdm.registerVirtualDeviceListener(mContext.getMainExecutor(), mVirtualDeviceListener); + } + private void setupDynamicSensorBroadcastReceiver() { if (mDynamicSensorBroadcastReceiver == null) { mDynamicSensorBroadcastReceiver = new BroadcastReceiver() { @@ -581,12 +614,6 @@ public class SystemSensorManager extends SensorManager { } } - private void teardownDynamicSensorBroadcastReceiver() { - mDynamicSensorCallbacks.clear(); - mContext.unregisterReceiver(mDynamicSensorBroadcastReceiver); - mDynamicSensorBroadcastReceiver = null; - } - /** @hide */ protected void registerDynamicSensorCallbackImpl( DynamicSensorCallback callback, Handler handler) { diff --git a/core/java/android/hardware/biometrics/BiometricPrompt.java b/core/java/android/hardware/biometrics/BiometricPrompt.java index 912e8df6bdc753fa81f01c324559a03ed4130386..af448f0c4917381b6010dbdb170a575680946c6e 100644 --- a/core/java/android/hardware/biometrics/BiometricPrompt.java +++ b/core/java/android/hardware/biometrics/BiometricPrompt.java @@ -465,6 +465,19 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan } // LINT.ThenChange(frameworks/base/core/java/android/hardware/biometrics/PromptInfo.java) + /** + * Set if emergency call button should show, for example if biometrics are + * required to access the dialer app + * @param showEmergencyCallButton if true, shows emergency call button + * @return This builder. + * @hide + */ + @NonNull + public Builder setShowEmergencyCallButton(boolean showEmergencyCallButton) { + mPromptInfo.setShowEmergencyCallButton(showEmergencyCallButton); + return this; + } + /** * Creates a {@link BiometricPrompt}. * diff --git a/core/java/android/hardware/biometrics/IBiometricAuthenticator.aidl b/core/java/android/hardware/biometrics/IBiometricAuthenticator.aidl index addd622eef356e1772cc33a00e8167124e5e3a8f..17cd18cc41825963782c1096d75bc08187c80fdf 100644 --- a/core/java/android/hardware/biometrics/IBiometricAuthenticator.aidl +++ b/core/java/android/hardware/biometrics/IBiometricAuthenticator.aidl @@ -48,7 +48,8 @@ interface IBiometricAuthenticator { // startPreparedClient(). void prepareForAuthentication(boolean requireConfirmation, IBinder token, long operationId, int userId, IBiometricSensorReceiver sensorReceiver, String opPackageName, - long requestId, int cookie, boolean allowBackgroundAuthentication); + long requestId, int cookie, boolean allowBackgroundAuthentication, + boolean isForLegacyFingerprintManager); // Starts authentication with the previously prepared client. void startPreparedClient(int cookie); diff --git a/core/java/android/hardware/biometrics/PromptInfo.java b/core/java/android/hardware/biometrics/PromptInfo.java index e275078741678c7c4602d977a67775bf0c5c3a61..24cfd1641410d68751567efb402badc65d325677 100644 --- a/core/java/android/hardware/biometrics/PromptInfo.java +++ b/core/java/android/hardware/biometrics/PromptInfo.java @@ -48,6 +48,7 @@ public class PromptInfo implements Parcelable { private boolean mAllowBackgroundAuthentication; private boolean mIgnoreEnrollmentState; private boolean mIsForLegacyFingerprintManager = false; + private boolean mShowEmergencyCallButton = false; public PromptInfo() { @@ -72,6 +73,7 @@ public class PromptInfo implements Parcelable { mAllowBackgroundAuthentication = in.readBoolean(); mIgnoreEnrollmentState = in.readBoolean(); mIsForLegacyFingerprintManager = in.readBoolean(); + mShowEmergencyCallButton = in.readBoolean(); } public static final Creator CREATOR = new Creator() { @@ -111,6 +113,7 @@ public class PromptInfo implements Parcelable { dest.writeBoolean(mAllowBackgroundAuthentication); dest.writeBoolean(mIgnoreEnrollmentState); dest.writeBoolean(mIsForLegacyFingerprintManager); + dest.writeBoolean(mShowEmergencyCallButton); } // LINT.IfChange @@ -228,6 +231,10 @@ public class PromptInfo implements Parcelable { mAllowedSensorIds.add(sensorId); } + public void setShowEmergencyCallButton(boolean showEmergencyCallButton) { + mShowEmergencyCallButton = showEmergencyCallButton; + } + // Getters public CharSequence getTitle() { @@ -309,4 +316,8 @@ public class PromptInfo implements Parcelable { public boolean isForLegacyFingerprintManager() { return mIsForLegacyFingerprintManager; } + + public boolean isShowEmergencyCallButton() { + return mShowEmergencyCallButton; + } } diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index d352be16ae0c8a4d1df1c7cb5a6dd09c13e6dd4d..943f0c4bba0a325db8014a873bf88c7c1d604826 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -16,6 +16,7 @@ package android.hardware.camera2; +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; @@ -31,6 +32,7 @@ import android.util.Log; import android.util.Rational; import com.android.internal.annotations.GuardedBy; +import com.android.internal.camera.flags.Flags; import java.util.ArrayList; import java.util.Collections; diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java index 0e45787c1340c50d73fc28cee1f7982cb0689461..f4d783a7c2b7187f0d863ec45e119ba45e83d821 100644 --- a/core/java/android/hardware/camera2/CameraDevice.java +++ b/core/java/android/hardware/camera2/CameraDevice.java @@ -541,14 +541,6 @@ public abstract class CameraDevice implements AutoCloseable { * or configuring it to use one of the supported * {@link android.media.CamcorderProfile CamcorderProfiles}.
  • * - *
  • For efficient YUV processing with {@link android.renderscript}: - * Create a RenderScript - * {@link android.renderscript.Allocation Allocation} with a supported YUV - * type, the IO_INPUT flag, and one of the sizes returned by - * {@link StreamConfigurationMap#getOutputSizes(Class) getOutputSizes(Allocation.class)}, - * Then obtain the Surface with - * {@link android.renderscript.Allocation#getSurface}.
  • - * *
  • For access to RAW, uncompressed YUV, or compressed JPEG data in the application: Create an * {@link android.media.ImageReader} object with one of the supported output formats given by * {@link StreamConfigurationMap#getOutputFormats()}, setting its size to one of the @@ -633,12 +625,13 @@ public abstract class CameraDevice implements AutoCloseable { * + * + *
    LEGACY-level guaranteed configurations
    + * *

    Legacy devices ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL} * {@code == }{@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY LEGACY}) support at * least the following stream combinations: * - *

    LEGACY-level guaranteed configurations
    - * * * * @@ -653,13 +646,13 @@ public abstract class CameraDevice implements AutoCloseable { *
    Target 1 Target 2 Target 3 Sample use case(s)
    TypeMax size TypeMax size TypeMax size

    *

    * + *
    LIMITED-level additional guaranteed configurations
    + * *

    Limited-level ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL} * {@code == }{@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED LIMITED}) devices * support at least the following stream combinations in addition to those for * {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY LEGACY} devices: * - *

    LIMITED-level additional guaranteed configurations
    - * * * * @@ -672,13 +665,13 @@ public abstract class CameraDevice implements AutoCloseable { *
    Target 1Target 2Target 3 Sample use case(s)
    TypeMax sizeTypeMax sizeTypeMax size

    *

    * + *
    FULL-level additional guaranteed configurations
    + * *

    FULL-level ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL} * {@code == }{@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_FULL FULL}) devices * support at least the following stream combinations in addition to those for * {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED LIMITED} devices: * - *

    FULL-level additional guaranteed configurations
    - * * * * @@ -691,14 +684,14 @@ public abstract class CameraDevice implements AutoCloseable { *
    Target 1Target 2Target 3 Sample use case(s)
    TypeMax sizeTypeMax sizeTypeMax size

    *

    * + *
    RAW-capability additional guaranteed configurations
    + * *

    RAW-capability ({@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES} includes * {@link CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW RAW}) devices additionally support * at least the following stream combinations on both * {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_FULL FULL} and * {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED LIMITED} devices: * - *

    RAW-capability additional guaranteed configurations
    - * * * * @@ -713,6 +706,8 @@ public abstract class CameraDevice implements AutoCloseable { *
    Target 1Target 2Target 3 Sample use case(s)
    TypeMax sizeTypeMax sizeTypeMax size

    *

    * + *
    BURST-capability additional guaranteed configurations
    + * *

    BURST-capability ({@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES} includes * {@link CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_BURST_CAPTURE BURST_CAPTURE}) devices * support at least the below stream combinations in addition to those for @@ -721,8 +716,6 @@ public abstract class CameraDevice implements AutoCloseable { * list for FULL-level devices, so this table is only relevant for LIMITED-level devices that * support the BURST_CAPTURE capability. * - *

    BURST-capability additional guaranteed configurations
    - * * * * @@ -732,6 +725,8 @@ public abstract class CameraDevice implements AutoCloseable { *
    Target 1Target 2Sample use case(s)
    TypeMax sizeTypeMax size

    *

    * + *
    LEVEL-3 additional guaranteed configurations
    + * *

    LEVEL-3 ({@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL} * {@code == }{@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_3 LEVEL_3}) * support at least the following stream combinations in addition to the combinations for @@ -739,8 +734,6 @@ public abstract class CameraDevice implements AutoCloseable { * RAW capability ({@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES} includes * {@link CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_RAW RAW}): * - *

    LEVEL-3 additional guaranteed configurations
    - * * * * @@ -749,14 +742,16 @@ public abstract class CameraDevice implements AutoCloseable { *
    Target 1Target 2Target 3Target 4Sample use case(s)
    TypeMax sizeTypeMax sizeTypeMax sizeTypeMax size

    *

    * - *

    BACKWARD_COMPATIBLE devices capable of streaming concurrently with other devices as described by - * {@link android.hardware.camera2.CameraManager#getConcurrentCameraIds} have the + *

    Concurrent stream guaranteed configurations
    + * + *

    BACKWARD_COMPATIBLE devices capable of streaming concurrently with other devices as + * described by {@link android.hardware.camera2.CameraManager#getConcurrentCameraIds} have the * following guaranteed streams (when streaming concurrently with other devices)

    + * *

    Note: The sizes mentioned for these concurrent streams are the maximum sizes guaranteed * to be supported. Sizes smaller than these, obtained by {@link StreamConfigurationMap#getOutputSizes} for a particular format, are supported as well.

    * - *
    Concurrent stream guaranteed configurations
    - * + *

    * * * @@ -792,6 +787,8 @@ public abstract class CameraDevice implements AutoCloseable { * level and capabilities. Calling createCaptureSession with both JPEG and HEIC outputs is not * supported.

    * + *
    LEGACY-level additional guaranteed combinations with multi-resolution outputs
    + * *

    Devices capable of multi-resolution output for a particular format ( * {@link android.hardware.camera2.params.MultiResolutionStreamConfigurationMap#getOutputInfo} * returns a non-empty list) support using {@link MultiResolutionImageReader} for MAXIMUM @@ -802,8 +799,6 @@ public abstract class CameraDevice implements AutoCloseable { * stream combinations ({@code MULTI_RES} in the Max size column refers to a {@link * MultiResolutionImageReader} created based on the variable max resolutions supported): * - *

    LEGACY-level additional guaranteed combinations with MultiResolutionoutputs
    - * *
    Target 1Target 2Sample use case(s)
    TypeMax sizeTypeMax size
    * * @@ -812,8 +807,12 @@ public abstract class CameraDevice implements AutoCloseable { * * *
    Target 1 Target 2 Target 3 Sample use case(s)
    TypeMax size TypeMax size TypeMax size
    {@code PRIV}{@code PREVIEW} {@code JPEG}{@code MULTI_RES} Standard still imaging.
    {@code PRIV}{@code PREVIEW} {@code YUV }{@code PREVIEW} {@code JPEG}{@code MULTI_RES} Still capture plus in-app processing.

    + *

    + * + *
    LIMITED-level additional guaranteed configurations with multi-resolution outputs
    + * + *

    * - * * * * @@ -821,11 +820,11 @@ public abstract class CameraDevice implements AutoCloseable { * The same logic applies to other hardware levels and capabilities. *

    * - *

    Devices with the ULTRA_HIGH_RESOLUTION_SENSOR capability have some additional guarantees - * which clients can take advantage of :

    - * *
    Additional guaranteed combinations for ULTRA_HIGH_RESOLUTION sensors
    * + *

    Devices with the ULTRA_HIGH_RESOLUTION_SENSOR capability have some additional guarantees + * which clients can take advantage of: + * *

    LIMITED-level additional guaranteed configurations with MultiResolutionoutputs
    Target 1Target 2Target 3 Sample use case(s)
    TypeMax sizeTypeMax sizeTypeMax size
    {@code YUV }{@code PREVIEW} {@code YUV }{@code PREVIEW} {@code JPEG}{@code MULTI_RES} Two-input in-app processing with still capture.
    * * @@ -833,6 +832,7 @@ public abstract class CameraDevice implements AutoCloseable { * * *
    Target 1 Target 2 Target 3 Sample use case(s)
    Type SC MapMax size Type SC MapMax size Type SC MapMax size
    {@code YUV / JPEG / RAW}{@code MAX_RES}{@code MAX}{@code PRIV}{@code DEFAULT}{@code PREVIEW}{@code PRIV / YUV}{@code DEFAULT}{@code RECORD} Ultra high res still capture with preview + app based RECORD size analysis
    {@code YUV / JPEG / RAW}{@code MAX_RES}{@code MAX}{@code PRIV}{@code DEFAULT}{@code PREVIEW}{@code JPEG / YUV / RAW}{@code DEFAULT}{@code MAX} Ultra high res still image capture with preview + default sensor pixel mode analysis stream

    + *

    * *

    Here, SC Map, refers to the {@link StreamConfigurationMap}, the target stream sizes must * be chosen from. {@code DEFAULT} refers to the default sensor pixel mode {@link @@ -842,17 +842,17 @@ public abstract class CameraDevice implements AutoCloseable { * Note: The same capture request must not mix targets from * {@link StreamConfigurationMap}s corresponding to different sensor pixel modes.

    * - *

    10-bit output capable - * {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT} - * devices support at least the following stream combinations:

    - * *
    10-bit output additional guaranteed configurations
    * + *

    10-bit output capable + * {@link CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT} + * devices support at least the following stream combinations: + * * * * - * } - * } + * + * * * * @@ -860,6 +860,8 @@ public abstract class CameraDevice implements AutoCloseable { * * *
    Target 1Target 2Target 3 Sample use case(s)
    TypeMax sizeTypeMax sizeTypeMax size
    {@code PRIV}{@code MAXIMUM} Simple preview, GPU video processing, or no-preview video recording.
    {@code YUV}{@code MAXIMUM} In-application video/image processing.
    {@code PRIV}{@code MAXIMUM} Simple preview, GPU video processing, or no-preview video recording.
    {@code YUV}{@code MAXIMUM} In-application video/image processing.
    {@code PRIV}{@code PREVIEW} {@code JPEG}{@code MAXIMUM } Standard still imaging.
    {@code PRIV}{@code PREVIEW} {@code YUV }{@code MAXIMUM } Maximum-resolution in-app processing with preview.
    {@code YUV}{@code PREVIEW} {@code YUV}{@code MAXIMUM } Maximum-resolution two-input in-app processing.
    {@code PRIV}{@code PREVIEW} {@code PRIV}{@code RECORD } {@code YUV}{@code RECORD } High-resolution recording with in-app snapshot.
    {@code PRIV}{@code PREVIEW} {@code PRIV }{@code RECORD } {@code JPEG}{@code RECORD } High-resolution recording with video snapshot.

    + *

    + * *

    Here PRIV can be either 8 or 10-bit {@link android.graphics.ImageFormat#PRIVATE} pixel * format. YUV can be either {@link android.graphics.ImageFormat#YUV_420_888} or * {@link android.graphics.ImageFormat#YCBCR_P010}. @@ -895,13 +897,13 @@ public abstract class CameraDevice implements AutoCloseable { * {@link CameraDevice#isSessionConfigurationSupported} to ensure that this particular * configuration is supported.

    * + *
    STREAM_USE_CASE capability additional guaranteed configurations
    + * *

    Devices with the STREAM_USE_CASE capability ({@link * CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES} includes {@link * CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE}) support below additional * stream combinations: * - *

    STREAM_USE_CASE capability additional guaranteed configurations
    - * * * * @@ -921,12 +923,12 @@ public abstract class CameraDevice implements AutoCloseable { *
    Target 1Target 2Target 3 Sample use case(s)
    TypeMax sizeUsecaseTypeMax sizeUsecaseTypeMax sizeUsecase

    *

    * + *
    STREAM_USE_CASE_CROPPED_RAW capability additional guaranteed configurations
    + * *

    Devices that include the {@link CameraMetadata#SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW} * stream use-case in {@link CameraCharacteristics#SCALER_AVAILABLE_STREAM_USE_CASES}, * support the additional stream combinations below: * - *

    STREAM_USE_CASE_CROPPED_RAW capability additional guaranteed configurations
    - * * * * @@ -934,15 +936,17 @@ public abstract class CameraDevice implements AutoCloseable { * * * + *
    Target 1Target 2Target 3 Sample use case(s)
    TypeMax sizeUsecaseTypeMax sizeUsecaseTypeMax sizeUsecase
    {@code PRIV / YUV}{@code PREVIEW}{@code PREVIEW} {@code RAW}{@code MAXIMUM}{@code CROPPED_RAW} Preview with cropped RAW still capture
    {@code PRIV / YUV}{@code PREVIEW}{@code PREVIEW} {@code YUV / JPEG}{@code MAXIMUM}{@code STILL_CAPTURE} {@code RAW}{@code MAXIMUM}{@code CROPPED_RAW} Preview with YUV / JPEG and cropped RAW still capture
    {@code PRIV / YUV}{@code PREVIEW}{@code PREVIEW} {@code PRIV / YUV}{@code PREVIEW}{@code VIDEO_RECORD / PREVIEW} {@code RAW}{@code MAXIMUM}{@code CROPPED_RAW} Video recording with preview and cropped RAW still capture

    + *

    * + *
    Preview stabilization guaranteed stream configurations
    * - *

    For devices where {@link CameraCharacteristics#CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES} - * includes {@link CameraMetadata#CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION}, + *

    For devices where + * {@link CameraCharacteristics#CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES} includes + * {@link CameraMetadata#CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION}, * the following stream combinations are guaranteed, * for CaptureRequests where {@link CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE} is set to - * {@link CameraMetadata#CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION}

    - * - *

    Preview stabilization guaranteed stream configurations
    + * {@link CameraMetadata#CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION} * * * @@ -951,6 +955,8 @@ public abstract class CameraDevice implements AutoCloseable { * * *
    Target 1Target 2Sample use case(s)
    {@code PRIV / YUV}{@code s1440p} {@code JPEG / YUV}{@code MAXIMUM }Standard still imaging with stabilized preview.
    {@code PRIV / YUV}{@code PREVIEW} {@code PRIV / YUV}{@code s1440p }High-resolution recording with stabilized preview and recording stream.

    + *

    + * *

    * For the maximum size column, PREVIEW refers to the best size match to the device's screen * resolution, or to 1080p (1920x1080), whichever is smaller. RECORD refers to the camera diff --git a/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java b/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java index 6baf91d720c3d1cbaf0129b0594946870787c597..ea951a55bfca20038e1c9ad8cfa5abc02d31391f 100644 --- a/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraExtensionCharacteristics.java @@ -236,9 +236,10 @@ public final class CameraExtensionCharacteristics { private static final CameraExtensionManagerGlobal GLOBAL_CAMERA_MANAGER = new CameraExtensionManagerGlobal(); private final Object mLock = new Object(); - private final int PROXY_SERVICE_DELAY_MS = 1000; + private final int PROXY_SERVICE_DELAY_MS = 2000; private InitializerFuture mInitFuture = null; private ServiceConnection mConnection = null; + private int mConnectionCount = 0; private ICameraExtensionsProxyService mProxy = null; private boolean mSupportsAdvancedExtensions = false; @@ -249,6 +250,15 @@ public final class CameraExtensionCharacteristics { return GLOBAL_CAMERA_MANAGER; } + private void releaseProxyConnectionLocked(Context ctx) { + if (mConnection != null ) { + ctx.unbindService(mConnection); + mConnection = null; + mProxy = null; + mConnectionCount = 0; + } + } + private void connectToProxyLocked(Context ctx) { if (mConnection == null) { Intent intent = new Intent(); @@ -270,7 +280,6 @@ public final class CameraExtensionCharacteristics { mConnection = new ServiceConnection() { @Override public void onServiceDisconnected(ComponentName component) { - mInitFuture.setStatus(false); mConnection = null; mProxy = null; } @@ -348,23 +357,32 @@ public final class CameraExtensionCharacteristics { public boolean registerClient(Context ctx, IBinder token) { synchronized (mLock) { + boolean ret = false; connectToProxyLocked(ctx); if (mProxy == null) { return false; } + mConnectionCount++; try { - return mProxy.registerClient(token); + ret = mProxy.registerClient(token); } catch (RemoteException e) { Log.e(TAG, "Failed to initialize extension! Extension service does " + " not respond!"); } + if (!ret) { + mConnectionCount--; + } - return false; + if (mConnectionCount <= 0) { + releaseProxyConnectionLocked(ctx); + } + + return ret; } } - public void unregisterClient(IBinder token) { + public void unregisterClient(Context ctx, IBinder token) { synchronized (mLock) { if (mProxy != null) { try { @@ -372,6 +390,11 @@ public final class CameraExtensionCharacteristics { } catch (RemoteException e) { Log.e(TAG, "Failed to de-initialize extension! Extension service does" + " not respond!"); + } finally { + mConnectionCount--; + if (mConnectionCount <= 0) { + releaseProxyConnectionLocked(ctx); + } } } } @@ -446,8 +469,8 @@ public final class CameraExtensionCharacteristics { /** * @hide */ - public static void unregisterClient(IBinder token) { - CameraExtensionManagerGlobal.get().unregisterClient(token); + public static void unregisterClient(Context ctx, IBinder token) { + CameraExtensionManagerGlobal.get().unregisterClient(ctx, token); } /** @@ -578,7 +601,7 @@ public final class CameraExtensionCharacteristics { } } } finally { - unregisterClient(token); + unregisterClient(mContext, token); } return Collections.unmodifiableList(ret); @@ -626,7 +649,7 @@ public final class CameraExtensionCharacteristics { Log.e(TAG, "Failed to query the extension for postview availability! Extension " + "service does not respond!"); } finally { - unregisterClient(token); + unregisterClient(mContext, token); } return false; @@ -722,7 +745,7 @@ public final class CameraExtensionCharacteristics { + "service does not respond!"); return Collections.emptyList(); } finally { - unregisterClient(token); + unregisterClient(mContext, token); } } @@ -791,7 +814,7 @@ public final class CameraExtensionCharacteristics { + " not respond!"); return new ArrayList<>(); } finally { - unregisterClient(token); + unregisterClient(mContext, token); } } @@ -872,7 +895,7 @@ public final class CameraExtensionCharacteristics { } } } finally { - unregisterClient(token); + unregisterClient(mContext, token); } } catch (RemoteException e) { Log.e(TAG, "Failed to query the extension supported sizes! Extension service does" @@ -957,7 +980,7 @@ public final class CameraExtensionCharacteristics { Log.e(TAG, "Failed to query the extension capture latency! Extension service does" + " not respond!"); } finally { - unregisterClient(token); + unregisterClient(mContext, token); } return null; @@ -998,7 +1021,7 @@ public final class CameraExtensionCharacteristics { Log.e(TAG, "Failed to query the extension progress callbacks! Extension service does" + " not respond!"); } finally { - unregisterClient(token); + unregisterClient(mContext, token); } return false; @@ -1075,7 +1098,7 @@ public final class CameraExtensionCharacteristics { } catch (RemoteException e) { throw new IllegalStateException("Failed to query the available capture request keys!"); } finally { - unregisterClient(token); + unregisterClient(mContext, token); } return Collections.unmodifiableSet(ret); @@ -1155,7 +1178,7 @@ public final class CameraExtensionCharacteristics { } catch (RemoteException e) { throw new IllegalStateException("Failed to query the available capture result keys!"); } finally { - unregisterClient(token); + unregisterClient(mContext, token); } return Collections.unmodifiableSet(ret); diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index 59408191cdf50896ed750df97a96b3f619dc8da5..dd323841403009deb48d39d63cc17405763b9776 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -16,6 +16,7 @@ package android.hardware.camera2; +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; @@ -34,6 +35,8 @@ import android.util.Log; import android.util.SparseArray; import android.view.Surface; +import com.android.internal.camera.flags.Flags; + import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -1468,6 +1471,13 @@ public final class CaptureRequest extends CameraMetadata> *

    Only constrains auto-exposure (AE) algorithm, not * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime} and * {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration}.

    + *

    To start a CaptureSession with a target FPS range different from the + * capture request template's default value, the application + * is strongly recommended to call + * {@link SessionConfiguration#setSessionParameters } + * with the target fps range before creating the capture session. The aeTargetFpsRange is + * typically a session parameter. Specifying it at session creation time helps avoid + * session reconfiguration delays in cases like 60fps or high speed recording.

    *

    Units: Frames per second (FPS)

    *

    Range of valid values:
    * Any of the entries in {@link CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES android.control.aeAvailableTargetFpsRanges}

    @@ -2140,6 +2150,12 @@ public final class CaptureRequest extends CameraMetadata> * {@link CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE android.control.videoStabilizationMode} field will return * OFF if the recording output is not stabilized, or if there are no output * Surface types that can be stabilized.

    + *

    The application is strongly recommended to call + * {@link SessionConfiguration#setSessionParameters } + * with the desired video stabilization mode before creating the capture session. + * Video stabilization mode is a session parameter on many devices. Specifying + * it at session creation time helps avoid reconfiguration delay caused by difference + * between the default value and the first CaptureRequest.

    *

    If a camera device supports both this mode and OIS * ({@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}), turning both modes on may * produce undesirable interaction, so it is recommended not to enable diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index 905f98de75ffd778cd61eaa4f93cb08c028938a4..9a800150ef270add018e26862726fa0f157b911e 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -16,6 +16,7 @@ package android.hardware.camera2; +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; @@ -28,6 +29,8 @@ import android.os.Build; import android.util.Log; import android.util.Rational; +import com.android.internal.camera.flags.Flags; + import java.util.List; /** @@ -887,6 +890,13 @@ public class CaptureResult extends CameraMetadata> { *

    Only constrains auto-exposure (AE) algorithm, not * manual control of {@link CaptureRequest#SENSOR_EXPOSURE_TIME android.sensor.exposureTime} and * {@link CaptureRequest#SENSOR_FRAME_DURATION android.sensor.frameDuration}.

    + *

    To start a CaptureSession with a target FPS range different from the + * capture request template's default value, the application + * is strongly recommended to call + * {@link SessionConfiguration#setSessionParameters } + * with the target fps range before creating the capture session. The aeTargetFpsRange is + * typically a session parameter. Specifying it at session creation time helps avoid + * session reconfiguration delays in cases like 60fps or high speed recording.

    *

    Units: Frames per second (FPS)

    *

    Range of valid values:
    * Any of the entries in {@link CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES android.control.aeAvailableTargetFpsRanges}

    @@ -2365,6 +2375,12 @@ public class CaptureResult extends CameraMetadata> { * {@link CaptureRequest#CONTROL_VIDEO_STABILIZATION_MODE android.control.videoStabilizationMode} field will return * OFF if the recording output is not stabilized, or if there are no output * Surface types that can be stabilized.

    + *

    The application is strongly recommended to call + * {@link SessionConfiguration#setSessionParameters } + * with the desired video stabilization mode before creating the capture session. + * Video stabilization mode is a session parameter on many devices. Specifying + * it at session creation time helps avoid reconfiguration delay caused by difference + * between the default value and the first CaptureRequest.

    *

    If a camera device supports both this mode and OIS * ({@link CaptureRequest#LENS_OPTICAL_STABILIZATION_MODE android.lens.opticalStabilizationMode}), turning both modes on may * produce undesirable interaction, so it is recommended not to enable diff --git a/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java index e06699bbbd86a58d27ec6546d0cc292ded68fd81..4ef45726e7a9f6fd9fefa75758b6689faafc35e3 100644 --- a/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraAdvancedExtensionSessionImpl.java @@ -90,7 +90,7 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes private final HashMap mReaderMap = new HashMap<>(); private RequestProcessor mRequestProcessor = new RequestProcessor(); private final int mSessionId; - private final IBinder mToken; + private IBinder mToken = null; private Surface mClientRepeatingRequestSurface; private Surface mClientCaptureSurface; @@ -103,6 +103,8 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes private boolean mInitialized; private boolean mSessionClosed; + private final Context mContext; + // Lock to synchronize cross-thread access to device public interface final Object mInterfaceLock; @@ -113,14 +115,9 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes public static CameraAdvancedExtensionSessionImpl createCameraAdvancedExtensionSession( @NonNull android.hardware.camera2.impl.CameraDeviceImpl cameraDevice, @NonNull Map characteristicsMap, - @NonNull Context ctx, @NonNull ExtensionSessionConfiguration config, int sessionId) + @NonNull Context ctx, @NonNull ExtensionSessionConfiguration config, int sessionId, + @NonNull IBinder token) throws CameraAccessException, RemoteException { - final IBinder token = new Binder(TAG + " : " + sessionId); - boolean success = CameraExtensionCharacteristics.registerClient(ctx, token); - if (!success) { - throw new UnsupportedOperationException("Unsupported extension!"); - } - String cameraId = cameraDevice.getId(); CameraExtensionCharacteristics extensionChars = new CameraExtensionCharacteristics(ctx, cameraId, characteristicsMap); @@ -204,8 +201,9 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes IAdvancedExtenderImpl extender = CameraExtensionCharacteristics.initializeAdvancedExtension( config.getExtension()); extender.init(cameraId, characteristicsMapNative); - CameraAdvancedExtensionSessionImpl ret = new CameraAdvancedExtensionSessionImpl(extender, - cameraDevice, characteristicsMapNative, repeatingRequestSurface, + + CameraAdvancedExtensionSessionImpl ret = new CameraAdvancedExtensionSessionImpl(ctx, + extender, cameraDevice, characteristicsMapNative, repeatingRequestSurface, burstCaptureSurface, postviewSurface, config.getStateCallback(), config.getExecutor(), sessionId, token); @@ -217,13 +215,16 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes return ret; } - private CameraAdvancedExtensionSessionImpl(@NonNull IAdvancedExtenderImpl extender, + private CameraAdvancedExtensionSessionImpl(Context ctx, + @NonNull IAdvancedExtenderImpl extender, @NonNull CameraDeviceImpl cameraDevice, Map characteristicsMap, @Nullable Surface repeatingRequestSurface, @Nullable Surface burstCaptureSurface, @Nullable Surface postviewSurface, @NonNull StateCallback callback, @NonNull Executor executor, - int sessionId, @NonNull IBinder token) { + int sessionId, + @NonNull IBinder token) { + mContext = ctx; mAdvancedExtender = extender; mCameraDevice = cameraDevice; mCharacteristicsMap = characteristicsMap; @@ -578,12 +579,16 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes mSessionProcessor = null; } - CameraExtensionCharacteristics.unregisterClient(mToken); - if (mInitialized || (mCaptureSession != null)) { - notifyClose = true; - CameraExtensionCharacteristics.releaseSession(); + + if (mToken != null) { + if (mInitialized || (mCaptureSession != null)) { + notifyClose = true; + CameraExtensionCharacteristics.releaseSession(); + } + CameraExtensionCharacteristics.unregisterClient(mContext, mToken); } mInitialized = false; + mToken = null; for (ImageReader reader : mReaderMap.values()) { reader.close(); @@ -668,8 +673,8 @@ public final class CameraAdvancedExtensionSessionImpl extends CameraExtensionSes synchronized (mInterfaceLock) { try { if (mSessionProcessor != null) { - mSessionProcessor.onCaptureSessionStart(mRequestProcessor); mInitialized = true; + mSessionProcessor.onCaptureSessionStart(mRequestProcessor); } else { Log.v(TAG, "Failed to start capture session, session " + " released before extension start!"); diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java index d3bde4b4b8a86ae9b85a03148422de05cf6e7391..994037b2fc7d36d007abb4297c9986ef206fbaaf 100644 --- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java @@ -1149,11 +1149,7 @@ public class CameraDeviceImpl extends CameraDevice "remove holder for requestId %d, " + "because lastFrame is %d.", requestId, lastFrameNumber)); - } - } - if (holder != null) { - if (DEBUG) { Log.v(TAG, "immediately trigger onCaptureSequenceAborted because" + " request did not reach HAL"); } @@ -2180,11 +2176,9 @@ public class CameraDeviceImpl extends CameraDevice final CaptureCallbackHolder holder = CameraDeviceImpl.this.mCaptureCallbackMap.get(requestId); - final CaptureRequest request = holder.getRequest(resultExtras.getSubsequenceId()); boolean isPartialResult = (resultExtras.getPartialResultCount() < mTotalPartialCount); - int requestType = request.getRequestType(); // Check if we have a callback for this if (holder == null) { @@ -2194,12 +2188,11 @@ public class CameraDeviceImpl extends CameraDevice + frameNumber); } - updateTracker(requestId, frameNumber, requestType, /*result*/null, - isPartialResult); - return; } + final CaptureRequest request = holder.getRequest(resultExtras.getSubsequenceId()); + int requestType = request.getRequestType(); if (isClosed()) { if (DEBUG) { Log.d(TAG, @@ -2550,19 +2543,32 @@ public class CameraDeviceImpl extends CameraDevice HashMap characteristicsMap = new HashMap<>( mPhysicalIdsToChars); characteristicsMap.put(mCameraId, mCharacteristics); + boolean initializationFailed = true; + IBinder token = new Binder(TAG + " : " + mNextSessionId++); try { + boolean ret = CameraExtensionCharacteristics.registerClient(mContext, token); + if (!ret) { + token = null; + throw new UnsupportedOperationException("Unsupported extension!"); + } + if (CameraExtensionCharacteristics.areAdvancedExtensionsSupported()) { mCurrentAdvancedExtensionSession = CameraAdvancedExtensionSessionImpl.createCameraAdvancedExtensionSession( this, characteristicsMap, mContext, extensionConfiguration, - mNextSessionId++); + mNextSessionId, token); } else { mCurrentExtensionSession = CameraExtensionSessionImpl.createCameraExtensionSession( this, characteristicsMap, mContext, extensionConfiguration, - mNextSessionId++); + mNextSessionId, token); } + initializationFailed = false; } catch (RemoteException e) { throw new CameraAccessException(CameraAccessException.CAMERA_ERROR); + } finally { + if (initializationFailed && (token != null)) { + CameraExtensionCharacteristics.unregisterClient(mContext, token); + } } } } diff --git a/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java index 5d256813ffb661cd081054cfa48e359dda6fd5a2..bf77681bbbbd6cea1134cf3d5a1a93a8200716fd 100644 --- a/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java +++ b/core/java/android/hardware/camera2/impl/CameraExtensionSessionImpl.java @@ -91,7 +91,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { private final Set mSupportedRequestKeys; private final Set mSupportedResultKeys; private final ExtensionSessionStatsAggregator mStatsAggregator; - private final IBinder mToken; + private IBinder mToken = null; private boolean mCaptureResultsSupported; private CameraCaptureSession mCaptureSession = null; @@ -119,6 +119,8 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { // will do so internally. private boolean mInternalRepeatingRequestEnabled = true; + private final Context mContext; + // Lock to synchronize cross-thread access to device public interface final Object mInterfaceLock; @@ -135,14 +137,9 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { @NonNull Map characteristicsMap, @NonNull Context ctx, @NonNull ExtensionSessionConfiguration config, - int sessionId) + int sessionId, + @NonNull IBinder token) throws CameraAccessException, RemoteException { - final IBinder token = new Binder(TAG + " : " + sessionId); - boolean success = CameraExtensionCharacteristics.registerClient(ctx, token); - if (!success) { - throw new UnsupportedOperationException("Unsupported extension!"); - } - String cameraId = cameraDevice.getId(); CameraExtensionCharacteristics extensionChars = new CameraExtensionCharacteristics(ctx, cameraId, characteristicsMap); @@ -234,6 +231,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { characteristicsMap.get(cameraId).getNativeMetadata()); CameraExtensionSessionImpl session = new CameraExtensionSessionImpl( + ctx, extenders.second, extenders.first, supportedPreviewSizes, @@ -256,7 +254,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { return session; } - public CameraExtensionSessionImpl(@NonNull IImageCaptureExtenderImpl imageExtender, + public CameraExtensionSessionImpl(Context ctx, @NonNull IImageCaptureExtenderImpl imageExtender, @NonNull IPreviewExtenderImpl previewExtender, @NonNull List previewSizes, @NonNull android.hardware.camera2.impl.CameraDeviceImpl cameraDevice, @@ -269,6 +267,7 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { @NonNull IBinder token, @NonNull Set requestKeys, @Nullable Set resultKeys) { + mContext = ctx; mImageExtender = imageExtender; mPreviewExtender = previewExtender; mCameraDevice = cameraDevice; @@ -878,12 +877,15 @@ public final class CameraExtensionSessionImpl extends CameraExtensionSession { + " respond!"); } - CameraExtensionCharacteristics.unregisterClient(mToken); - if (mInitialized || (mCaptureSession != null)) { - notifyClose = true; - CameraExtensionCharacteristics.releaseSession(); + if (mToken != null) { + if (mInitialized || (mCaptureSession != null)) { + notifyClose = true; + CameraExtensionCharacteristics.releaseSession(); + } + CameraExtensionCharacteristics.unregisterClient(mContext, mToken); } mInitialized = false; + mToken = null; if (mRepeatingRequestImageCallback != null) { mRepeatingRequestImageCallback.close(); diff --git a/core/java/android/hardware/camera2/params/OutputConfiguration.java b/core/java/android/hardware/camera2/params/OutputConfiguration.java index 21540bf1a18b4a2486f1dfa8556e9eb8fecb9f97..5e5337337864d4ed42a5f738981809ff61775555 100644 --- a/core/java/android/hardware/camera2/params/OutputConfiguration.java +++ b/core/java/android/hardware/camera2/params/OutputConfiguration.java @@ -1193,12 +1193,12 @@ public final class OutputConfiguration implements Parcelable { String physicalCameraId = source.readString(); boolean isMultiResolutionOutput = source.readInt() == 1; int[] sensorPixelModesUsed = source.createIntArray(); - long streamUseCase = source.readLong(); checkArgumentInRange(rotation, ROTATION_0, ROTATION_270, "Rotation constant"); long dynamicRangeProfile = source.readLong(); DynamicRangeProfiles.checkProfileValue(dynamicRangeProfile); int colorSpace = source.readInt(); + long streamUseCase = source.readLong(); int timestampBase = source.readInt(); int mirrorMode = source.readInt(); diff --git a/core/java/android/hardware/camera2/params/StreamConfigurationMap.java b/core/java/android/hardware/camera2/params/StreamConfigurationMap.java index ef0db7f8a41cc298ea51a72b99d90bb2afb3c05f..b85d6869a1ff2da8e46aa41c6e0ebae56b72e000 100644 --- a/core/java/android/hardware/camera2/params/StreamConfigurationMap.java +++ b/core/java/android/hardware/camera2/params/StreamConfigurationMap.java @@ -509,8 +509,6 @@ public final class StreamConfigurationMap { * Recommended for recording video (simple to use) *

  • {@link android.media.MediaCodec} - * Recommended for recording video (more complicated to use, with more flexibility) - *
  • {@link android.renderscript.Allocation} - - * Recommended for image processing with {@link android.renderscript RenderScript} *
  • {@link android.view.SurfaceHolder} - * Recommended for low-power camera preview with {@link android.view.SurfaceView} *
  • {@link android.graphics.SurfaceTexture} - diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java index 4323bf8af5fa119a632269a8e22fbd80a68aec2a..f0c87a138a982b4e7d1fa57355d3556f6a4cc5d4 100644 --- a/core/java/android/hardware/display/DisplayManager.java +++ b/core/java/android/hardware/display/DisplayManager.java @@ -554,7 +554,8 @@ public final class DisplayManager { EVENT_FLAG_DISPLAY_CHANGED, EVENT_FLAG_DISPLAY_REMOVED, EVENT_FLAG_DISPLAY_BRIGHTNESS, - EVENT_FLAG_HDR_SDR_RATIO_CHANGED + EVENT_FLAG_HDR_SDR_RATIO_CHANGED, + EVENT_FLAG_DISPLAY_CONNECTION_CHANGED, }) @Retention(RetentionPolicy.SOURCE) public @interface EventsMask {} @@ -610,6 +611,13 @@ public final class DisplayManager { */ public static final long EVENT_FLAG_HDR_SDR_RATIO_CHANGED = 1L << 4; + /** + * Event flag to register for a display's connection changed. + * + * @hide + */ + public static final long EVENT_FLAG_DISPLAY_CONNECTION_CHANGED = 1L << 5; + /** @hide */ public DisplayManager(Context context) { mContext = context; @@ -890,6 +898,25 @@ public final class DisplayManager { return mGlobal.getWifiDisplayStatus(); } + /** + * Enable a connected display that is currently disabled. + * @hide + */ + @RequiresPermission("android.permission.MANAGE_DISPLAYS") + public void enableConnectedDisplay(int displayId) { + mGlobal.enableConnectedDisplay(displayId); + } + + + /** + * Disable a connected display that is currently enabled. + * @hide + */ + @RequiresPermission("android.permission.MANAGE_DISPLAYS") + public void disableConnectedDisplay(int displayId) { + mGlobal.disableConnectedDisplay(displayId); + } + /** * Set the level of color saturation to apply to the display. * @param level The amount of saturation to apply, between 0 and 1 inclusive. @@ -1633,6 +1660,24 @@ public final class DisplayManager { * @param displayId The id of the logical display that changed. */ void onDisplayChanged(int displayId); + + /** + * Called when a display is connected, but not necessarily used. + * + * A display is always connected before being added. + * @hide + */ + default void onDisplayConnected(int displayId) { } + + /** + * Called when a display is disconnected. + * + * If a display was added, a display is only disconnected after it has been removed. Note, + * however, that the display may have been disconnected by the time the removed event is + * received by the listener. + * @hide + */ + default void onDisplayDisconnected(int displayId) { } } /** diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java index 3be82bc2b4f9b98365d8d96c44f760e45b7ee2d3..6d6085b471d9bb2093d86d3aa4181fd62b5a2ab8 100644 --- a/core/java/android/hardware/display/DisplayManagerGlobal.java +++ b/core/java/android/hardware/display/DisplayManagerGlobal.java @@ -90,6 +90,8 @@ public final class DisplayManagerGlobal { EVENT_DISPLAY_REMOVED, EVENT_DISPLAY_BRIGHTNESS_CHANGED, EVENT_DISPLAY_HDR_SDR_RATIO_CHANGED, + EVENT_DISPLAY_CONNECTED, + EVENT_DISPLAY_DISCONNECTED, }) @Retention(RetentionPolicy.SOURCE) public @interface DisplayEvent {} @@ -99,6 +101,8 @@ public final class DisplayManagerGlobal { public static final int EVENT_DISPLAY_REMOVED = 3; public static final int EVENT_DISPLAY_BRIGHTNESS_CHANGED = 4; public static final int EVENT_DISPLAY_HDR_SDR_RATIO_CHANGED = 5; + public static final int EVENT_DISPLAY_CONNECTED = 6; + public static final int EVENT_DISPLAY_DISCONNECTED = 7; @UnsupportedAppUsage private static DisplayManagerGlobal sInstance; @@ -414,6 +418,9 @@ public final class DisplayManagerGlobal { private void updateCallbackIfNeededLocked() { int mask = calculateEventsMaskLocked(); + if (DEBUG) { + Log.d(TAG, "Mask for listener: " + mask); + } if (mask != mRegisteredEventsMask) { try { mDm.registerCallbackWithEventMask(mCallback, mask); @@ -459,6 +466,33 @@ public final class DisplayManagerGlobal { } } + /** + * Enable a connected display that is currently disabled. + * @hide + */ + @RequiresPermission("android.permission.MANAGE_DISPLAYS") + public void enableConnectedDisplay(int displayId) { + try { + mDm.enableConnectedDisplay(displayId); + } catch (RemoteException ex) { + Log.e(TAG, "Error trying to enable external display", ex); + } + } + + + /** + * Disable a connected display that is currently enabled. + * @hide + */ + @RequiresPermission("android.permission.MANAGE_DISPLAYS") + public void disableConnectedDisplay(int displayId) { + try { + mDm.disableConnectedDisplay(displayId); + } catch (RemoteException ex) { + Log.e(TAG, "Error trying to enable external display", ex); + } + } + public void startWifiDisplayScan() { synchronized (mLock) { if (mWifiDisplayScanNestCount++ == 0) { @@ -1179,6 +1213,16 @@ public final class DisplayManagerGlobal { mListener.onDisplayChanged(msg.arg1); } break; + case EVENT_DISPLAY_CONNECTED: + if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) { + mListener.onDisplayConnected(msg.arg1); + } + break; + case EVENT_DISPLAY_DISCONNECTED: + if ((mEventsMask & DisplayManager.EVENT_FLAG_DISPLAY_CONNECTION_CHANGED) != 0) { + mListener.onDisplayDisconnected(msg.arg1); + } + break; } if (DEBUG) { Trace.endSection(); @@ -1302,6 +1346,10 @@ public final class DisplayManagerGlobal { return "BRIGHTNESS_CHANGED"; case EVENT_DISPLAY_HDR_SDR_RATIO_CHANGED: return "HDR_SDR_RATIO_CHANGED"; + case EVENT_DISPLAY_CONNECTED: + return "EVENT_DISPLAY_CONNECTED"; + case EVENT_DISPLAY_DISCONNECTED: + return "EVENT_DISPLAY_DISCONNECTED"; } return "UNKNOWN"; } diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java index 94bff893b5a85e7b19179e8c53ec38480dc2ed7a..b1aa7deeb4ef03be143b211925c0af915c6edc11 100644 --- a/core/java/android/hardware/display/DisplayManagerInternal.java +++ b/core/java/android/hardware/display/DisplayManagerInternal.java @@ -32,7 +32,6 @@ import android.view.SurfaceControl; import android.view.SurfaceControl.RefreshRateRange; import android.view.SurfaceControl.Transaction; import android.window.DisplayWindowPolicyController; -import android.window.ScreenCapture; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -111,25 +110,6 @@ public abstract class DisplayManagerInternal { */ public abstract void unregisterDisplayGroupListener(DisplayGroupListener listener); - /** - * Screenshot for internal system-only use such as rotation, etc. This method includes - * secure layers and the result should never be exposed to non-system applications. - * This method does not apply any rotation and provides the output in natural orientation. - * - * @param displayId The display id to take the screenshot of. - * @return The buffer or null if we have failed. - */ - public abstract ScreenCapture.ScreenshotHardwareBuffer systemScreenshot(int displayId); - - /** - * General screenshot functionality that excludes secure layers and applies appropriate - * rotation that the device is currently in. - * - * @param displayId The display id to take the screenshot of. - * @return The buffer or null if we have failed. - */ - public abstract ScreenCapture.ScreenshotHardwareBuffer userScreenshot(int displayId); - /** * Returns information about the specified logical display. * @@ -370,8 +350,9 @@ public abstract class DisplayManagerInternal { /** * Returns the default size of the surface associated with the display, or null if the surface - * is not provided for layer mirroring by SurfaceFlinger. - * Only used for mirroring started from MediaProjection. + * is not provided for layer mirroring by SurfaceFlinger. Size is rotated to reflect the current + * display device orientation. + * Used for mirroring from MediaProjection, or a physical display based on display flags. */ public abstract Point getDisplaySurfaceDefaultSize(int displayId); diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl index 18edbdbd99b5928cd08bcc5d1a1ff28792b97866..83de4e45cf2fb912b51556135de856a8e7086f5d 100644 --- a/core/java/android/hardware/display/IDisplayManager.aidl +++ b/core/java/android/hardware/display/IDisplayManager.aidl @@ -227,4 +227,12 @@ interface IDisplayManager { // Query overlay properties of the device OverlayProperties getOverlaySupport(); + + // Enable a connected display that is disabled. + @EnforcePermission("MANAGE_DISPLAYS") + void enableConnectedDisplay(int displayId); + + // Disable a connected display that is enabled. + @EnforcePermission("MANAGE_DISPLAYS") + void disableConnectedDisplay(int displayId); } diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl index e2840ec20ff91cb2a2a20c70d94693a44f920cf5..0100660669e9361c8c670d2f28255432058fc9fc 100644 --- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl +++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl @@ -74,7 +74,8 @@ interface IFingerprintService { @EnforcePermission("MANAGE_BIOMETRIC") void prepareForAuthentication(IBinder token, long operationId, IBiometricSensorReceiver sensorReceiver, in FingerprintAuthenticateOptions options, long requestId, - int cookie, boolean allowBackgroundAuthentication); + int cookie, boolean allowBackgroundAuthentication, + boolean isForLegacyFingerprintManager); // Starts authentication with the previously prepared client. @EnforcePermission("MANAGE_BIOMETRIC") diff --git a/core/java/android/hardware/input/IInputManager.aidl b/core/java/android/hardware/input/IInputManager.aidl index c3fae55fd00cf8d0f19aa43da5569c595e55a175..88d7231bc7be23cb36c19e3dba8887892967a217 100644 --- a/core/java/android/hardware/input/IInputManager.aidl +++ b/core/java/android/hardware/input/IInputManager.aidl @@ -41,6 +41,7 @@ import android.view.InputDevice; import android.view.InputEvent; import android.view.InputMonitor; import android.view.PointerIcon; +import android.view.KeyCharacterMap; import android.view.VerifiedInputEvent; /** @hide */ @@ -63,6 +64,8 @@ interface IInputManager { // active keyboard layout. int getKeyCodeForKeyLocation(int deviceId, in int locationKeyCode); + KeyCharacterMap getKeyCharacterMap(String layoutDescriptor); + // Temporarily changes the pointer speed. void tryPointerSpeed(int speed); diff --git a/core/java/android/hardware/input/InputDeviceVibrator.java b/core/java/android/hardware/input/InputDeviceVibrator.java index 9c1826071822d9fae4f0980c34ba843f4d93d162..4577e1d7d4d3c57ec350b45530aa69aa43587ca3 100644 --- a/core/java/android/hardware/input/InputDeviceVibrator.java +++ b/core/java/android/hardware/input/InputDeviceVibrator.java @@ -82,7 +82,7 @@ final class InputDeviceVibrator extends Vibrator { } @Override - protected VibratorInfo getInfo() { + public VibratorInfo getInfo() { return mVibratorInfo; } diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index a0cceae98ba987acda379f39a3b00ba94f16c914..ff1a6acd8e4ec962e9f8cfe5fc5d783c2962a5af 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -16,6 +16,8 @@ package android.hardware.input; +import static com.android.hardware.input.Flags.keyboardLayoutPreviewFlag; + import android.Manifest; import android.annotation.FloatRange; import android.annotation.IntDef; @@ -31,6 +33,7 @@ import android.app.ActivityThread; import android.compat.annotation.ChangeId; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; +import android.graphics.drawable.Drawable; import android.hardware.BatteryState; import android.os.Build; import android.os.Handler; @@ -930,6 +933,31 @@ public final class InputManager { return mGlobal.getKeyCodeForKeyLocation(deviceId, locationKeyCode); } + /** + * Provides a Keyboard layout preview of a particular dimension. + * + * @param keyboardLayout Layout whose preview is requested. If null, will return preview of + * the default Keyboard layout defined by {@code Generic.kl}. + * @param width Expected width of the drawable + * @param height Expected height of the drawable + * + * NOTE: Width and height will auto-adjust to the width and height of the ImageView that + * shows the drawable but this allows the caller to provide an intrinsic width and height of + * the drawable allowing the ImageView to properly wrap the drawable content. + * + * @hide + */ + @Nullable + public Drawable getKeyboardLayoutPreview(@Nullable KeyboardLayout keyboardLayout, int width, + int height) { + if (!keyboardLayoutPreviewFlag()) { + return null; + } + PhysicalKeyLayout keyLayout = new PhysicalKeyLayout( + mGlobal.getKeyCharacterMap(keyboardLayout), keyboardLayout); + return new KeyboardLayoutPreviewDrawable(mContext, keyLayout, width, height); + } + /** * Injects an input event into the event system, targeting windows owned by the provided uid. * diff --git a/core/java/android/hardware/input/InputManagerGlobal.java b/core/java/android/hardware/input/InputManagerGlobal.java index e886f685263cbd6b9ffa588748bb7d99953a5927..8c598aeae67c6db15ba9d6babb430deba009ce9a 100644 --- a/core/java/android/hardware/input/InputManagerGlobal.java +++ b/core/java/android/hardware/input/InputManagerGlobal.java @@ -51,6 +51,7 @@ import android.view.Display; import android.view.InputDevice; import android.view.InputEvent; import android.view.InputMonitor; +import android.view.KeyCharacterMap; import android.view.PointerIcon; import com.android.internal.annotations.GuardedBy; @@ -1205,6 +1206,21 @@ public final class InputManagerGlobal { } } + /** + * Returns KeyCharacterMap for the provided Keyboard layout. If provided layout is null it will + * return KeyCharacter map for the default layout {@code Generic.kl}. + */ + public KeyCharacterMap getKeyCharacterMap(@Nullable KeyboardLayout keyboardLayout) { + if (keyboardLayout == null) { + return KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD); + } + try { + return mIm.getKeyCharacterMap(keyboardLayout.getDescriptor()); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** * @see InputManager#injectInputEvent(InputEvent, int, int) */ diff --git a/core/java/android/hardware/input/KeyboardLayout.java b/core/java/android/hardware/input/KeyboardLayout.java index 4403251e0488d31841fb6cfaa0bdc8f57ea5c961..bbfed24f9dc16b12fd243bc9e231270296fec4e6 100644 --- a/core/java/android/hardware/input/KeyboardLayout.java +++ b/core/java/android/hardware/input/KeyboardLayout.java @@ -22,6 +22,7 @@ import android.os.Parcel; import android.os.Parcelable; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import java.util.Objects; @@ -230,6 +231,33 @@ public final class KeyboardLayout implements Parcelable, Comparable mKeyDrawables = new ArrayList<>(); + + private final int mWidth; + private final int mHeight; + private final RectF mKeyboardBackground = new RectF(); + private final ResourceProvider mResourceProvider; + private final PhysicalKeyLayout mKeyLayout; + + public KeyboardLayoutPreviewDrawable(Context context, PhysicalKeyLayout keyLayout, int width, + int height) { + mWidth = width; + mHeight = height; + mResourceProvider = new ResourceProvider(context); + mKeyLayout = keyLayout; + } + + @Override + public int getIntrinsicWidth() { + return mWidth; + } + + @Override + public int getIntrinsicHeight() { + return mHeight; + } + + @Override + protected void onBoundsChange(@NonNull Rect bounds) { + super.onBoundsChange(bounds); + mKeyDrawables.clear(); + final PhysicalKeyLayout.LayoutKey[][] keys = mKeyLayout.getKeys(); + if (keys == null) { + return; + } + final PhysicalKeyLayout.EnterKey enterKey = mKeyLayout.getEnterKey(); + int width = bounds.width(); + int height = bounds.height(); + final int keyboardPadding = mResourceProvider.getKeyboardPadding(); + final int keyPadding = mResourceProvider.getKeyPadding(); + final float keyRadius = mResourceProvider.getKeyRadius(); + mKeyboardBackground.set(0, 0, width, height); + width -= keyboardPadding * 2; + height -= keyboardPadding * 2; + if (width <= 0 || height <= 0) { + Slog.e(TAG, "Invalid width and height to draw layout preview, width = " + width + + ", height = " + height); + return; + } + int rowCount = keys.length; + float keyHeight = (float) (height - rowCount * 2 * keyPadding) / rowCount; + float isoEnterKeyLeft = 0; + float isoEnterKeyTop = 0; + float isoEnterWidthUnit = 0; + for (int i = 0; i < rowCount; i++) { + PhysicalKeyLayout.LayoutKey[] row = keys[i]; + float totalRowWeight = 0; + int keysInRow = row.length; + for (PhysicalKeyLayout.LayoutKey layoutKey : row) { + totalRowWeight += layoutKey.keyWeight(); + } + float keyWidthInPx = (width - keysInRow * 2 * keyPadding) / totalRowWeight; + float rowWeightOnLeft = 0; + float top = keyboardPadding + keyPadding * (2 * i + 1) + i * keyHeight; + for (int j = 0; j < keysInRow; j++) { + float left = + keyboardPadding + keyPadding * (2 * j + 1) + rowWeightOnLeft * keyWidthInPx; + rowWeightOnLeft += row[j].keyWeight(); + RectF keyRect = new RectF(left, top, left + keyWidthInPx * row[j].keyWeight(), + top + keyHeight); + if (enterKey != null && row[j].keyCode() == KeyEvent.KEYCODE_ENTER) { + if (enterKey.row() == i && enterKey.column() == j) { + isoEnterKeyLeft = keyRect.left; + isoEnterKeyTop = keyRect.top; + isoEnterWidthUnit = keyWidthInPx; + } + continue; + } + if (PhysicalKeyLayout.isSpecialKey(row[j])) { + mKeyDrawables.add(new TypingKey(null, keyRect, keyRadius, + mResourceProvider.getSpecialKeyPaint(), + mResourceProvider.getSpecialKeyPaint(), + mResourceProvider.getSpecialKeyPaint())); + } else if (PhysicalKeyLayout.isKeyPositionUnsure(row[j])) { + mKeyDrawables.add(new UnsureTypingKey(row[j].glyph(), keyRect, + keyRadius, mResourceProvider.getTypingKeyPaint(), + mResourceProvider.getPrimaryGlyphPaint(), + mResourceProvider.getSecondaryGlyphPaint())); + } else { + mKeyDrawables.add(new TypingKey(row[j].glyph(), keyRect, keyRadius, + mResourceProvider.getTypingKeyPaint(), + mResourceProvider.getPrimaryGlyphPaint(), + mResourceProvider.getSecondaryGlyphPaint())); + } + } + } + if (enterKey != null) { + IsoEnterKey.Builder isoEnterKeyBuilder = new IsoEnterKey.Builder(keyRadius, + mResourceProvider.getSpecialKeyPaint()); + isoEnterKeyBuilder.setTopWidth(enterKey.topKeyWeight() * isoEnterWidthUnit) + .setStartPoint(isoEnterKeyLeft, isoEnterKeyTop) + .setVerticalEdges(keyHeight, 2 * (keyHeight + keyPadding)) + .setBottomWidth(enterKey.bottomKeyWeight() * isoEnterWidthUnit); + mKeyDrawables.add(isoEnterKeyBuilder.build()); + } + } + + @Override + public void draw(Canvas canvas) { + final float keyboardRadius = mResourceProvider.getBackgroundRadius(); + canvas.drawRoundRect(mKeyboardBackground, keyboardRadius, keyboardRadius, + mResourceProvider.getBackgroundPaint()); + for (KeyDrawable key : mKeyDrawables) { + key.draw(canvas); + } + } + + @Override + public void setAlpha(int alpha) { + // Do nothing + } + + @Override + public void setColorFilter(@Nullable ColorFilter colorFilter) { + // Do nothing + } + + @Override + public int getOpacity() { + return PixelFormat.OPAQUE; + } + + private static class TypingKey implements KeyDrawable { + + private final RectF mKeyRect; + private final float mKeyRadius; + private final Paint mKeyPaint; + private final Paint mBaseTextPaint; + private final Paint mModifierTextPaint; + private final List mGlyphDrawables = new ArrayList<>(); + + private TypingKey(@Nullable PhysicalKeyLayout.KeyGlyph glyphData, RectF keyRect, + float keyRadius, Paint keyPaint, Paint baseTextPaint, Paint modifierTextPaint) { + mKeyRect = keyRect; + mKeyRadius = keyRadius; + mKeyPaint = keyPaint; + mBaseTextPaint = baseTextPaint; + mModifierTextPaint = modifierTextPaint; + initGlyphs(glyphData); + } + + private void initGlyphs(@Nullable PhysicalKeyLayout.KeyGlyph glyphData) { + createGlyphs(glyphData); + measureGlyphs(); + } + + private void createGlyphs(@Nullable PhysicalKeyLayout.KeyGlyph glyphData) { + if (glyphData == null) { + return; + } + if (!glyphData.hasBaseText()) { + return; + } + if (glyphData.hasValidShiftText() && glyphData.hasValidAltGrText()) { + mGlyphDrawables.add(new GlyphDrawable(glyphData.getBaseText(), new RectF(), + GRAVITY_BOTTOM | GRAVITY_LEFT, mBaseTextPaint)); + mGlyphDrawables.add(new GlyphDrawable(glyphData.getShiftText(), new RectF(), + GRAVITY_TOP | GRAVITY_LEFT, mModifierTextPaint)); + mGlyphDrawables.add(new GlyphDrawable(glyphData.getAltGrText(), new RectF(), + GRAVITY_BOTTOM | GRAVITY_RIGHT, mModifierTextPaint)); + } else if (glyphData.hasValidShiftText()) { + mGlyphDrawables.add(new GlyphDrawable(glyphData.getBaseText(), new RectF(), + GRAVITY_BOTTOM | GRAVITY_CENTER_HORIZONTAL, mBaseTextPaint)); + mGlyphDrawables.add(new GlyphDrawable(glyphData.getShiftText(), new RectF(), + GRAVITY_TOP | GRAVITY_CENTER_HORIZONTAL, mModifierTextPaint)); + } else if (glyphData.hasValidAltGrText()) { + mGlyphDrawables.add(new GlyphDrawable(glyphData.getBaseText(), new RectF(), + GRAVITY_BOTTOM | GRAVITY_LEFT, mBaseTextPaint)); + mGlyphDrawables.add(new GlyphDrawable(glyphData.getAltGrText(), new RectF(), + GRAVITY_BOTTOM | GRAVITY_RIGHT, mModifierTextPaint)); + } else { + mGlyphDrawables.add(new GlyphDrawable(glyphData.getBaseText(), new RectF(), + GRAVITY_CENTER, mBaseTextPaint)); + } + } + + private void measureGlyphs() { + float keyWidth = mKeyRect.width(); + float keyHeight = mKeyRect.height(); + for (GlyphDrawable glyph : mGlyphDrawables) { + float centerX = keyWidth / 2; + float centerY = keyHeight / 2; + if ((glyph.gravity & GRAVITY_LEFT) != 0) { + centerX -= keyWidth / 4; + } + if ((glyph.gravity & GRAVITY_RIGHT) != 0) { + centerX += keyWidth / 4; + } + if ((glyph.gravity & GRAVITY_TOP) != 0) { + centerY -= keyHeight / 4; + } + if ((glyph.gravity & GRAVITY_BOTTOM) != 0) { + centerY += keyHeight / 4; + } + Rect textBounds = new Rect(); + glyph.paint.getTextBounds(glyph.text, 0, glyph.text.length(), textBounds); + float textWidth = textBounds.width(); + float textHeight = textBounds.height(); + glyph.rect.set(centerX - textWidth / 2, centerY - textHeight / 2 - textBounds.top, + centerX + textWidth / 2, centerY + textHeight / 2 - textBounds.top); + } + } + + @Override + public void draw(Canvas canvas) { + canvas.drawRoundRect(mKeyRect, mKeyRadius, mKeyRadius, mKeyPaint); + for (GlyphDrawable glyph : mGlyphDrawables) { + float textWidth = glyph.rect.width(); + float textHeight = glyph.rect.height(); + float keyWidth = mKeyRect.width(); + float keyHeight = mKeyRect.height(); + if (textWidth == 0 || textHeight == 0 || keyWidth == 0 || keyHeight == 0) { + return; + } + canvas.drawText(glyph.text, 0, glyph.text.length(), mKeyRect.left + glyph.rect.left, + mKeyRect.top + glyph.rect.top, glyph.paint); + } + } + } + + private static class UnsureTypingKey extends TypingKey { + + private UnsureTypingKey(@Nullable PhysicalKeyLayout.KeyGlyph glyphData, + RectF keyRect, float keyRadius, Paint keyPaint, Paint baseTextPaint, + Paint modifierTextPaint) { + super(glyphData, keyRect, keyRadius, createGreyedOutPaint(keyPaint), + createGreyedOutPaint(baseTextPaint), createGreyedOutPaint(modifierTextPaint)); + } + } + + private static class IsoEnterKey implements KeyDrawable { + + private final Paint mKeyPaint; + private final Path mPath; + + private IsoEnterKey(Paint keyPaint, @NonNull Path path) { + mKeyPaint = keyPaint; + mPath = path; + } + + @Override + public void draw(Canvas canvas) { + canvas.drawPath(mPath, mKeyPaint); + } + + private static class Builder { + private final float mKeyRadius; + private final Paint mKeyPaint; + private float mLeft; + private float mTop; + private float mTopWidth; + private float mBottomWidth; + private float mLeftHeight; + private float mRightHeight; + + private Builder(float keyRadius, Paint keyPaint) { + mKeyRadius = keyRadius; + mKeyPaint = keyPaint; + } + + private Builder setStartPoint(float left, float top) { + mLeft = left; + mTop = top; + return this; + } + + private Builder setTopWidth(float width) { + mTopWidth = width; + return this; + } + + private Builder setBottomWidth(float width) { + mBottomWidth = width; + return this; + } + + private Builder setVerticalEdges(float leftHeight, float rightHeight) { + mLeftHeight = leftHeight; + mRightHeight = rightHeight; + return this; + } + + private IsoEnterKey build() { + Path enterKey = new Path(); + RectF oval = new RectF(-mKeyRadius, -mKeyRadius, mKeyRadius, mKeyRadius); + // Horizontal top line + enterKey.moveTo(mLeft + mKeyRadius, mTop); + enterKey.lineTo(mLeft + mTopWidth - mKeyRadius, mTop); + // Rounded top right corner + oval.offsetTo(mLeft + mTopWidth - 2 * mKeyRadius, mTop); + enterKey.arcTo(oval, 270, 90); + // Vertical right line + enterKey.lineTo(mLeft + mTopWidth, mTop + mRightHeight - mKeyRadius); + // Rounded bottom right corner + oval.offsetTo(mLeft + mTopWidth - 2 * mKeyRadius, + mTop + mRightHeight - 2 * mKeyRadius); + enterKey.arcTo(oval, 0, 90); + // Horizontal bottom line + enterKey.lineTo(mLeft + mTopWidth - mBottomWidth + mKeyRadius, mTop + mRightHeight); + // Rounded bottom left corner + oval.offsetTo(mLeft + mTopWidth - mBottomWidth, + mTop + mRightHeight - 2 * mKeyRadius); + enterKey.arcTo(oval, 90, 90); + // Vertical left line (bottom half) + enterKey.lineTo(mLeft + mTopWidth - mBottomWidth, mTop + mLeftHeight - mKeyRadius); + // Rounded corner + oval.offsetTo(mLeft + mTopWidth - mBottomWidth - 2 * mKeyRadius, + mTop + mLeftHeight); + enterKey.arcTo(oval, 0, -90); + // Horizontal line in the mid part + enterKey.lineTo(mLeft + mKeyRadius, mTop + mLeftHeight); + // Rounded corner + oval.offsetTo(mLeft, mTop + mLeftHeight - 2 * mKeyRadius); + enterKey.arcTo(oval, 90, 90); + // Vertical left line (top half) + enterKey.lineTo(mLeft, mTop + mKeyRadius); + // Rounded top left corner + oval.offsetTo(mLeft, mTop); + enterKey.arcTo(oval, 180, 90); + enterKey.close(); + return new IsoEnterKey(mKeyPaint, enterKey); + } + } + } + + private record GlyphDrawable(String text, RectF rect, int gravity, Paint paint) {} + + private interface KeyDrawable { + void draw(Canvas canvas); + } + + private static class ResourceProvider { + // Resources + private final Paint mBackgroundPaint; + private final Paint mTypingKeyPaint; + private final Paint mSpecialKeyPaint; + private final Paint mPrimaryGlyphPaint; + private final Paint mSecondaryGlyphPaint; + private final int mKeyPadding; + private final int mKeyboardPadding; + private final float mKeyRadius; + private final float mBackgroundRadius; + + private ResourceProvider(Context context) { + mKeyPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, + KEY_PADDING_IN_DP, context.getResources().getDisplayMetrics()); + mKeyboardPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, + KEYBOARD_PADDING_IN_DP, context.getResources().getDisplayMetrics()); + mKeyRadius = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, + KEY_RADIUS_IN_DP, context.getResources().getDisplayMetrics()); + mBackgroundRadius = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, + KEYBOARD_RADIUS_IN_DP, context.getResources().getDisplayMetrics()); + int textSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, + GLYPH_TEXT_SIZE_IN_SP, context.getResources().getDisplayMetrics()); + boolean isDark = (context.getResources().getConfiguration().uiMode + & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES; + int typingKeyColor = context.getColor( + isDark ? android.R.color.system_outline_variant_dark + : android.R.color.system_surface_container_lowest_light); + int specialKeyColor = context.getColor(isDark ? android.R.color.system_neutral1_800 + : android.R.color.system_secondary_container_light); + int primaryGlyphColor = context.getColor(isDark ? android.R.color.system_on_surface_dark + : android.R.color.system_on_surface_light); + int secondaryGlyphColor = context.getColor(isDark ? android.R.color.system_outline_dark + : android.R.color.system_outline_light); + int backgroundColor = context.getColor( + isDark ? android.R.color.system_surface_container_dark + : android.R.color.system_surface_container_light); + mPrimaryGlyphPaint = createTextPaint(primaryGlyphColor, textSize, + Typeface.create(Typeface.SANS_SERIF, Typeface.BOLD)); + mSecondaryGlyphPaint = createTextPaint(secondaryGlyphColor, textSize, + Typeface.create(Typeface.SANS_SERIF, Typeface.NORMAL)); + mTypingKeyPaint = createFillPaint(typingKeyColor); + mSpecialKeyPaint = createFillPaint(specialKeyColor); + mBackgroundPaint = createFillPaint(backgroundColor); + } + + private Paint getBackgroundPaint() { + return mBackgroundPaint; + } + + private Paint getTypingKeyPaint() { + return mTypingKeyPaint; + } + + private Paint getSpecialKeyPaint() { + return mSpecialKeyPaint; + } + + private Paint getPrimaryGlyphPaint() { + return mPrimaryGlyphPaint; + } + + private Paint getSecondaryGlyphPaint() { + return mSecondaryGlyphPaint; + } + + private int getKeyPadding() { + return mKeyPadding; + } + + private int getKeyboardPadding() { + return mKeyboardPadding; + } + + private float getKeyRadius() { + return mKeyRadius; + } + + private float getBackgroundRadius() { + return mBackgroundRadius; + } + } + + private static Paint createTextPaint(@ColorInt int textColor, int textSize, Typeface typeface) { + Paint paint = new Paint(); + paint.setColor(textColor); + paint.setStyle(Paint.Style.FILL); + paint.setTextSize(textSize); + paint.setTypeface(typeface); + return paint; + } + + private static Paint createFillPaint(@ColorInt int color) { + Paint paint = new Paint(); + paint.setColor(color); + paint.setStyle(Paint.Style.FILL); + return paint; + } + + private static Paint createGreyedOutPaint(Paint paint) { + Paint result = new Paint(paint); + result.setAlpha(100); + return result; + } +} diff --git a/core/java/android/hardware/input/PhysicalKeyLayout.java b/core/java/android/hardware/input/PhysicalKeyLayout.java new file mode 100644 index 0000000000000000000000000000000000000000..241c452a75ebdf09ac6da698fd50170b79005d88 --- /dev/null +++ b/core/java/android/hardware/input/PhysicalKeyLayout.java @@ -0,0 +1,434 @@ +/* + * Copyright 2023 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.hardware.input; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.text.TextUtils; +import android.util.SparseIntArray; +import android.view.KeyCharacterMap; +import android.view.KeyEvent; + +import java.util.Locale; + +/** + * A complimentary class to {@link KeyboardLayoutPreviewDrawable} describing the physical key layout + * of a Physical keyboard and provides information regarding the scan codes produced by the physical + * keys. + */ +final class PhysicalKeyLayout { + + private static final String TAG = "KeyboardLayoutPreview"; + private static final int SCANCODE_1 = 2; + private static final int SCANCODE_2 = 3; + private static final int SCANCODE_3 = 4; + private static final int SCANCODE_4 = 5; + private static final int SCANCODE_5 = 6; + private static final int SCANCODE_6 = 7; + private static final int SCANCODE_7 = 8; + private static final int SCANCODE_8 = 9; + private static final int SCANCODE_9 = 10; + private static final int SCANCODE_0 = 11; + private static final int SCANCODE_MINUS = 12; + private static final int SCANCODE_EQUALS = 13; + private static final int SCANCODE_Q = 16; + private static final int SCANCODE_W = 17; + private static final int SCANCODE_E = 18; + private static final int SCANCODE_R = 19; + private static final int SCANCODE_T = 20; + private static final int SCANCODE_Y = 21; + private static final int SCANCODE_U = 22; + private static final int SCANCODE_I = 23; + private static final int SCANCODE_O = 24; + private static final int SCANCODE_P = 25; + private static final int SCANCODE_LEFT_BRACKET = 26; + private static final int SCANCODE_RIGHT_BRACKET = 27; + private static final int SCANCODE_A = 30; + private static final int SCANCODE_S = 31; + private static final int SCANCODE_D = 32; + private static final int SCANCODE_F = 33; + private static final int SCANCODE_G = 34; + private static final int SCANCODE_H = 35; + private static final int SCANCODE_J = 36; + private static final int SCANCODE_K = 37; + private static final int SCANCODE_L = 38; + private static final int SCANCODE_SEMICOLON = 39; + private static final int SCANCODE_APOSTROPHE = 40; + private static final int SCANCODE_GRAVE = 41; + private static final int SCANCODE_BACKSLASH1 = 43; + private static final int SCANCODE_Z = 44; + private static final int SCANCODE_X = 45; + private static final int SCANCODE_C = 46; + private static final int SCANCODE_V = 47; + private static final int SCANCODE_B = 48; + private static final int SCANCODE_N = 49; + private static final int SCANCODE_M = 50; + private static final int SCANCODE_COMMA = 51; + private static final int SCANCODE_PERIOD = 52; + private static final int SCANCODE_SLASH = 53; + private static final int SCANCODE_BACKSLASH2 = 86; + private static final int SCANCODE_YEN = 124; + + private static final SparseIntArray DEFAULT_KEYCODE_FOR_SCANCODE = new SparseIntArray(); + + static { + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_1, KeyEvent.KEYCODE_1); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_2, KeyEvent.KEYCODE_2); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_3, KeyEvent.KEYCODE_3); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_4, KeyEvent.KEYCODE_4); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_5, KeyEvent.KEYCODE_5); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_6, KeyEvent.KEYCODE_6); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_7, KeyEvent.KEYCODE_7); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_8, KeyEvent.KEYCODE_8); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_9, KeyEvent.KEYCODE_9); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_0, KeyEvent.KEYCODE_0); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_MINUS, KeyEvent.KEYCODE_MINUS); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_EQUALS, KeyEvent.KEYCODE_EQUALS); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_Q, KeyEvent.KEYCODE_Q); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_W, KeyEvent.KEYCODE_W); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_E, KeyEvent.KEYCODE_E); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_R, KeyEvent.KEYCODE_R); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_T, KeyEvent.KEYCODE_T); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_Y, KeyEvent.KEYCODE_Y); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_U, KeyEvent.KEYCODE_U); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_I, KeyEvent.KEYCODE_I); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_O, KeyEvent.KEYCODE_O); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_P, KeyEvent.KEYCODE_P); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_LEFT_BRACKET, KeyEvent.KEYCODE_LEFT_BRACKET); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_RIGHT_BRACKET, KeyEvent.KEYCODE_RIGHT_BRACKET); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_A, KeyEvent.KEYCODE_A); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_S, KeyEvent.KEYCODE_S); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_D, KeyEvent.KEYCODE_D); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_F, KeyEvent.KEYCODE_F); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_G, KeyEvent.KEYCODE_G); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_H, KeyEvent.KEYCODE_H); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_J, KeyEvent.KEYCODE_J); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_K, KeyEvent.KEYCODE_K); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_L, KeyEvent.KEYCODE_L); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_SEMICOLON, KeyEvent.KEYCODE_SEMICOLON); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_APOSTROPHE, KeyEvent.KEYCODE_APOSTROPHE); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_GRAVE, KeyEvent.KEYCODE_GRAVE); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_BACKSLASH1, KeyEvent.KEYCODE_BACKSLASH); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_Z, KeyEvent.KEYCODE_Z); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_X, KeyEvent.KEYCODE_X); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_C, KeyEvent.KEYCODE_C); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_V, KeyEvent.KEYCODE_V); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_B, KeyEvent.KEYCODE_B); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_N, KeyEvent.KEYCODE_N); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_M, KeyEvent.KEYCODE_M); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_COMMA, KeyEvent.KEYCODE_COMMA); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_PERIOD, KeyEvent.KEYCODE_PERIOD); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_SLASH, KeyEvent.KEYCODE_SLASH); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_BACKSLASH2, KeyEvent.KEYCODE_BACKSLASH); + DEFAULT_KEYCODE_FOR_SCANCODE.put(SCANCODE_YEN, KeyEvent.KEYCODE_YEN); + } + + private LayoutKey[][] mKeys = null; + private EnterKey mEnterKey = null; + + public PhysicalKeyLayout(@NonNull KeyCharacterMap kcm, @Nullable KeyboardLayout layout) { + initLayoutKeys(kcm, layout); + } + + private void initLayoutKeys(KeyCharacterMap kcm, KeyboardLayout layout) { + if (layout == null) { + createIsoLayout(kcm); + return; + } + if (layout.isAnsiLayout()) { + createAnsiLayout(kcm); + } else if (layout.isJisLayout()) { + createJisLayout(kcm); + } else { + createIsoLayout(kcm); + } + } + + public LayoutKey[][] getKeys() { + return mKeys; + } + + /** + * @return Special enter key (if required) that can span multiple rows like ISO enter key. + */ + @Nullable + public EnterKey getEnterKey() { + return mEnterKey; + } + + private void createAnsiLayout(KeyCharacterMap kcm) { + mKeys = new LayoutKey[][]{ + { + getKey(kcm, SCANCODE_GRAVE), getKey(kcm, SCANCODE_1), + getKey(kcm, SCANCODE_2), getKey(kcm, SCANCODE_3), getKey(kcm, SCANCODE_4), + getKey(kcm, SCANCODE_5), getKey(kcm, SCANCODE_6), getKey(kcm, SCANCODE_7), + getKey(kcm, SCANCODE_8), getKey(kcm, SCANCODE_9), getKey(kcm, SCANCODE_0), + getKey(kcm, SCANCODE_MINUS), getKey(kcm, SCANCODE_EQUALS), + getKey(KeyEvent.KEYCODE_DEL, 1.5F) + }, + { + getKey(KeyEvent.KEYCODE_TAB, 1.5F), getKey(kcm, SCANCODE_Q), + getKey(kcm, SCANCODE_W), getKey(kcm, SCANCODE_E), getKey(kcm, SCANCODE_R), + getKey(kcm, SCANCODE_T), getKey(kcm, SCANCODE_Y), getKey(kcm, SCANCODE_U), + getKey(kcm, SCANCODE_I), getKey(kcm, SCANCODE_O), getKey(kcm, SCANCODE_P), + getKey(kcm, SCANCODE_LEFT_BRACKET), getKey(kcm, SCANCODE_RIGHT_BRACKET), + getKey(kcm, SCANCODE_BACKSLASH1) + }, + { + getKey(KeyEvent.KEYCODE_CAPS_LOCK, 1.75F), + getKey(kcm, SCANCODE_A), getKey(kcm, SCANCODE_S), getKey(kcm, SCANCODE_D), + getKey(kcm, SCANCODE_F), getKey(kcm, SCANCODE_G), getKey(kcm, SCANCODE_H), + getKey(kcm, SCANCODE_J), getKey(kcm, SCANCODE_K), getKey(kcm, SCANCODE_L), + getKey(kcm, SCANCODE_SEMICOLON), getKey(kcm, SCANCODE_APOSTROPHE), + getKey(KeyEvent.KEYCODE_ENTER, 1.75F) + }, + { + getKey(KeyEvent.KEYCODE_SHIFT_LEFT, 2.5F), + getKey(kcm, SCANCODE_Z), getKey(kcm, SCANCODE_X), getKey(kcm, SCANCODE_C), + getKey(kcm, SCANCODE_V), getKey(kcm, SCANCODE_B), getKey(kcm, SCANCODE_N), + getKey(kcm, SCANCODE_M), getKey(kcm, SCANCODE_COMMA), + getKey(kcm, SCANCODE_PERIOD), getKey(kcm, SCANCODE_SLASH), + getKey(KeyEvent.KEYCODE_SHIFT_RIGHT, 2.5F), + }, + { + getKey(KeyEvent.KEYCODE_CTRL_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_FUNCTION, 1.0F), + getKey(KeyEvent.KEYCODE_META_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_ALT_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_SPACE, 6.5F), + getKey(KeyEvent.KEYCODE_ALT_RIGHT, 1.0F), + getKey(KeyEvent.KEYCODE_META_RIGHT, 1.0F), + getKey(KeyEvent.KEYCODE_MENU, 1.0F), + getKey(KeyEvent.KEYCODE_CTRL_RIGHT, 1.0F), + } + }; + } + + private void createIsoLayout(KeyCharacterMap kcm) { + mKeys = new LayoutKey[][]{ + { + getKey(kcm, SCANCODE_GRAVE), getKey(kcm, SCANCODE_1), + getKey(kcm, SCANCODE_2), getKey(kcm, SCANCODE_3), getKey(kcm, SCANCODE_4), + getKey(kcm, SCANCODE_5), getKey(kcm, SCANCODE_6), getKey(kcm, SCANCODE_7), + getKey(kcm, SCANCODE_8), getKey(kcm, SCANCODE_9), getKey(kcm, SCANCODE_0), + getKey(kcm, SCANCODE_MINUS), getKey(kcm, SCANCODE_EQUALS), + getKey(KeyEvent.KEYCODE_DEL, 1.5F) + }, + { + getKey(KeyEvent.KEYCODE_TAB, 1.15F), getKey(kcm, SCANCODE_Q), + getKey(kcm, SCANCODE_W), getKey(kcm, SCANCODE_E), getKey(kcm, SCANCODE_R), + getKey(kcm, SCANCODE_T), getKey(kcm, SCANCODE_Y), getKey(kcm, SCANCODE_U), + getKey(kcm, SCANCODE_I), getKey(kcm, SCANCODE_O), getKey(kcm, SCANCODE_P), + getKey(kcm, SCANCODE_LEFT_BRACKET), getKey(kcm, SCANCODE_RIGHT_BRACKET), + getKey(KeyEvent.KEYCODE_ENTER, 1.35F) + }, + { + getKey(KeyEvent.KEYCODE_TAB, 1.5F), getKey(kcm, SCANCODE_A), + getKey(kcm, SCANCODE_S), getKey(kcm, SCANCODE_D), getKey(kcm, SCANCODE_F), + getKey(kcm, SCANCODE_G), getKey(kcm, SCANCODE_H), getKey(kcm, SCANCODE_J), + getKey(kcm, SCANCODE_K), getKey(kcm, SCANCODE_L), + getKey(kcm, SCANCODE_SEMICOLON), getKey(kcm, SCANCODE_APOSTROPHE), + getKey(kcm, SCANCODE_BACKSLASH1), + getKey(KeyEvent.KEYCODE_ENTER, 1.0F) + }, + { + getKey(KeyEvent.KEYCODE_SHIFT_LEFT, 1.15F), + getKey(kcm, SCANCODE_BACKSLASH2), getKey(kcm, SCANCODE_Z), + getKey(kcm, SCANCODE_X), getKey(kcm, SCANCODE_C), getKey(kcm, SCANCODE_V), + getKey(kcm, SCANCODE_B), getKey(kcm, SCANCODE_N), getKey(kcm, SCANCODE_M), + getKey(kcm, SCANCODE_COMMA), getKey(kcm, SCANCODE_PERIOD), + getKey(kcm, SCANCODE_SLASH), + getKey(KeyEvent.KEYCODE_SHIFT_RIGHT, 2.35F) + }, + { + getKey(KeyEvent.KEYCODE_CTRL_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_FUNCTION, 1.0F), + getKey(KeyEvent.KEYCODE_META_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_ALT_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_SPACE, 6.5F), + getKey(KeyEvent.KEYCODE_ALT_RIGHT, 1.0F), + getKey(KeyEvent.KEYCODE_META_RIGHT, 1.0F), + getKey(KeyEvent.KEYCODE_MENU, 1.0F), + getKey(KeyEvent.KEYCODE_CTRL_RIGHT, 1.0F), + } + }; + mEnterKey = new EnterKey(1, 13, 1.35F, 1.0F); + } + + private void createJisLayout(KeyCharacterMap kcm) { + mKeys = new LayoutKey[][]{ + { + getKey(kcm, SCANCODE_GRAVE), getKey(kcm, SCANCODE_1), + getKey(kcm, SCANCODE_2), getKey(kcm, SCANCODE_3), getKey(kcm, SCANCODE_4), + getKey(kcm, SCANCODE_5), getKey(kcm, SCANCODE_6), getKey(kcm, SCANCODE_7), + getKey(kcm, SCANCODE_8), getKey(kcm, SCANCODE_9), getKey(kcm, SCANCODE_0), + getKey(kcm, SCANCODE_MINUS, 0.8F), getKey(kcm, SCANCODE_EQUALS, 0.8f), + getKey(kcm, SCANCODE_YEN, 0.8f), getKey(KeyEvent.KEYCODE_DEL, 1.1F) + }, + { + getKey(KeyEvent.KEYCODE_TAB, 1.15F), getKey(kcm, SCANCODE_Q), + getKey(kcm, SCANCODE_W), getKey(kcm, SCANCODE_E), getKey(kcm, SCANCODE_R), + getKey(kcm, SCANCODE_T), getKey(kcm, SCANCODE_Y), getKey(kcm, SCANCODE_U), + getKey(kcm, SCANCODE_I), getKey(kcm, SCANCODE_O), getKey(kcm, SCANCODE_P), + getKey(kcm, SCANCODE_LEFT_BRACKET), getKey(kcm, SCANCODE_RIGHT_BRACKET), + getKey(KeyEvent.KEYCODE_ENTER, 1.35F) + }, + { + getKey(KeyEvent.KEYCODE_TAB, 1.5F), getKey(kcm, SCANCODE_A), + getKey(kcm, SCANCODE_S), getKey(kcm, SCANCODE_D), getKey(kcm, SCANCODE_F), + getKey(kcm, SCANCODE_G), getKey(kcm, SCANCODE_H), getKey(kcm, SCANCODE_J), + getKey(kcm, SCANCODE_K), getKey(kcm, SCANCODE_L), + getKey(kcm, SCANCODE_SEMICOLON), getKey(kcm, SCANCODE_APOSTROPHE), + getKey(kcm, SCANCODE_BACKSLASH2), + getKey(KeyEvent.KEYCODE_ENTER, 1.0F) + }, + { + getKey(KeyEvent.KEYCODE_SHIFT_LEFT, 1.15F), + getKey(kcm, SCANCODE_Z), getKey(kcm, SCANCODE_X), getKey(kcm, SCANCODE_C), + getKey(kcm, SCANCODE_V), getKey(kcm, SCANCODE_B), getKey(kcm, SCANCODE_N), + getKey(kcm, SCANCODE_M), getKey(kcm, SCANCODE_COMMA), + getKey(kcm, SCANCODE_PERIOD), getKey(kcm, SCANCODE_SLASH), + getKey(kcm, SCANCODE_BACKSLASH1), + getKey(KeyEvent.KEYCODE_SHIFT_RIGHT, 2.35F) + }, + { + getKey(KeyEvent.KEYCODE_CTRL_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_FUNCTION, 1.0F), + getKey(KeyEvent.KEYCODE_META_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_ALT_LEFT, 1.0F), + getKey(KeyEvent.KEYCODE_UNKNOWN, 1.0F), + getKey(KeyEvent.KEYCODE_SPACE, 3.5F), + getKey(KeyEvent.KEYCODE_UNKNOWN, 1.0F), + getKey(KeyEvent.KEYCODE_UNKNOWN, 1.0F), + getKey(KeyEvent.KEYCODE_ALT_RIGHT, 1.0F), + getKey(KeyEvent.KEYCODE_META_RIGHT, 1.0F), + getKey(KeyEvent.KEYCODE_MENU, 1.0F), + getKey(KeyEvent.KEYCODE_CTRL_RIGHT, 1.0F), + } + }; + mEnterKey = new EnterKey(1, 13, 1.35F, 1.0F); + } + + private static LayoutKey getKey(KeyCharacterMap kcm, int scanCode, float keyWeight) { + int keyCode = kcm.getMappedKeyOrDefault(scanCode, + DEFAULT_KEYCODE_FOR_SCANCODE.get(scanCode, KeyEvent.KEYCODE_UNKNOWN)); + return new LayoutKey(keyCode, scanCode, keyWeight, new KeyGlyph(kcm, keyCode)); + } + + private static LayoutKey getKey(KeyCharacterMap kcm, int scanCode) { + return getKey(kcm, scanCode, 1.0F); + } + + private static String getKeyText(KeyCharacterMap kcm, int keyCode, int modifierState) { + if (isSpecialKey(keyCode)) { + return ""; + } + int utf8Char = (kcm.get(keyCode, modifierState) & KeyCharacterMap.COMBINING_ACCENT_MASK); + if (Character.isValidCodePoint(utf8Char)) { + return String.valueOf(Character.toChars(utf8Char)).toUpperCase(Locale.getDefault()); + } else { + return String.valueOf(kcm.getDisplayLabel(keyCode)).toUpperCase(Locale.getDefault()); + } + } + + private static LayoutKey getKey(int keyCode, float keyWeight) { + return new LayoutKey(keyCode, keyCode, keyWeight, null); + } + + /** + * Util function that tells if a key corresponds to a special key which are keys on a Physical + * layout that perform some special action like modifier keys, enter key, space key, character + * set changing keys, etc. + */ + private static boolean isSpecialKey(int keyCode) { + switch (keyCode) { + case KeyEvent.KEYCODE_DEL: + case KeyEvent.KEYCODE_TAB: + case KeyEvent.KEYCODE_CAPS_LOCK: + case KeyEvent.KEYCODE_ENTER: + case KeyEvent.KEYCODE_SHIFT_LEFT: + case KeyEvent.KEYCODE_SHIFT_RIGHT: + case KeyEvent.KEYCODE_CTRL_LEFT: + case KeyEvent.KEYCODE_CTRL_RIGHT: + case KeyEvent.KEYCODE_FUNCTION: + case KeyEvent.KEYCODE_ALT_LEFT: + case KeyEvent.KEYCODE_ALT_RIGHT: + case KeyEvent.KEYCODE_META_LEFT: + case KeyEvent.KEYCODE_META_RIGHT: + case KeyEvent.KEYCODE_SPACE: + case KeyEvent.KEYCODE_MENU: + case KeyEvent.KEYCODE_UNKNOWN: + return true; + } + return false; + } + + public static boolean isSpecialKey(LayoutKey key) { + return isSpecialKey(key.keyCode); + } + + public static boolean isKeyPositionUnsure(LayoutKey key) { + switch (key.scanCode) { + case SCANCODE_GRAVE: + case SCANCODE_BACKSLASH1: + case SCANCODE_BACKSLASH2: + return true; + } + return false; + } + + public record LayoutKey(int keyCode, int scanCode, float keyWeight, KeyGlyph glyph) {} + public record EnterKey(int row, int column, float topKeyWeight, float bottomKeyWeight) {} + + public static class KeyGlyph { + private final String mBaseText; + private final String mShiftText; + private final String mAltGrText; + + public KeyGlyph(KeyCharacterMap kcm, int keyCode) { + mBaseText = getKeyText(kcm, keyCode, 0); + mShiftText = getKeyText(kcm, keyCode, + KeyEvent.META_SHIFT_ON | KeyEvent.META_SHIFT_LEFT_ON); + mAltGrText = getKeyText(kcm, keyCode, + KeyEvent.META_ALT_ON | KeyEvent.META_ALT_RIGHT_ON); + } + + public String getBaseText() { + return mBaseText; + } + + public String getShiftText() { + return mShiftText; + } + + public String getAltGrText() { + return mAltGrText; + } + + public boolean hasBaseText() { + return !TextUtils.isEmpty(mBaseText); + } + + public boolean hasValidShiftText() { + return !TextUtils.isEmpty(mShiftText) && !TextUtils.equals(mBaseText, mShiftText); + } + + public boolean hasValidAltGrText() { + return !TextUtils.isEmpty(mAltGrText) && !TextUtils.equals(mBaseText, mAltGrText); + } + } +} diff --git a/core/java/android/hardware/input/input_framework.aconfig b/core/java/android/hardware/input/input_framework.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..ebfe66f51bbcdd7c9135642e7c0cfea8b33fbd11 --- /dev/null +++ b/core/java/android/hardware/input/input_framework.aconfig @@ -0,0 +1,19 @@ +package: "com.android.hardware.input" + +# Project link: https://gantry.corp.google.com/projects/android_platform_input_native/changes + +flag { + namespace: "input_native" + name: "keyboard_layout_preview_flag" + description: "Controls whether a preview will be shown in Settings when selecting a physical keyboard layout" + bug: "293579375" +} + + +flag { + namespace: "input_native" + name: "keyboard_a11y_sticky_keys_flag" + description: "Controls if the sticky keys accessibility feature for physical keyboard is available to the user" + bug: "294546335" +} + diff --git a/core/java/android/hardware/radio/ProgramList.java b/core/java/android/hardware/radio/ProgramList.java index b2dfd850177255a32130f01d51a304ade12ce4c6..4f07acf6961aa2110bf8d7f66982e830a7f63d59 100644 --- a/core/java/android/hardware/radio/ProgramList.java +++ b/core/java/android/hardware/radio/ProgramList.java @@ -23,6 +23,7 @@ import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; import android.util.ArrayMap; +import android.util.ArraySet; import com.android.internal.annotations.GuardedBy; @@ -34,7 +35,6 @@ import java.util.Map; import java.util.Objects; import java.util.Set; import java.util.concurrent.Executor; -import java.util.stream.Collectors; /** * @hide @@ -45,8 +45,8 @@ public final class ProgramList implements AutoCloseable { private final Object mLock = new Object(); @GuardedBy("mLock") - private final Map mPrograms = - new ArrayMap<>(); + private final Map> mPrograms = new ArrayMap<>(); @GuardedBy("mLock") private final List mListCallbacks = new ArrayList<>(); @@ -193,7 +193,7 @@ public final class ProgramList implements AutoCloseable { void apply(Chunk chunk) { List removedList = new ArrayList<>(); - List changedList = new ArrayList<>(); + Set changedSet = new ArraySet<>(); List listCallbacksCopied; List onCompleteListenersCopied = new ArrayList<>(); synchronized (mLock) { @@ -203,19 +203,27 @@ public final class ProgramList implements AutoCloseable { listCallbacksCopied = new ArrayList<>(mListCallbacks); if (chunk.isPurge()) { - Iterator> - programsIterator = mPrograms.entrySet().iterator(); + Iterator>> programsIterator = + mPrograms.entrySet().iterator(); while (programsIterator.hasNext()) { - RadioManager.ProgramInfo removed = programsIterator.next().getValue(); - if (removed != null) { - removedList.add(removed.getSelector().getPrimaryId()); + Map.Entry> removed = programsIterator.next(); + if (removed.getValue() != null) { + removedList.add(removed.getKey()); } programsIterator.remove(); } } - chunk.getRemoved().stream().forEach(id -> removeLocked(id, removedList)); - chunk.getModified().stream().forEach(info -> putLocked(info, changedList)); + Iterator removedIterator = chunk.getRemoved().iterator(); + while (removedIterator.hasNext()) { + removeLocked(removedIterator.next(), removedList); + } + Iterator modifiedIterator = chunk.getModified().iterator(); + while (modifiedIterator.hasNext()) { + putLocked(modifiedIterator.next(), changedSet); + } if (chunk.isComplete()) { mIsComplete = true; @@ -228,9 +236,11 @@ public final class ProgramList implements AutoCloseable { listCallbacksCopied.get(cbIndex).onItemRemoved(removedList.get(i)); } } - for (int i = 0; i < changedList.size(); i++) { + Iterator changedIterator = changedSet.iterator(); + while (changedIterator.hasNext()) { + ProgramSelector.Identifier changedId = changedIterator.next(); for (int cbIndex = 0; cbIndex < listCallbacksCopied.size(); cbIndex++) { - listCallbacksCopied.get(cbIndex).onItemChanged(changedList.get(i)); + listCallbacksCopied.get(cbIndex).onItemChanged(changedId); } } if (chunk.isComplete()) { @@ -242,20 +252,31 @@ public final class ProgramList implements AutoCloseable { @GuardedBy("mLock") private void putLocked(RadioManager.ProgramInfo value, - List changedIdentifierList) { - ProgramSelector.Identifier key = value.getSelector().getPrimaryId(); - mPrograms.put(Objects.requireNonNull(key), value); - ProgramSelector.Identifier sel = value.getSelector().getPrimaryId(); - changedIdentifierList.add(sel); + Set changedIdentifierSet) { + UniqueProgramIdentifier key = new UniqueProgramIdentifier( + value.getSelector()); + ProgramSelector.Identifier primaryKey = Objects.requireNonNull(key.getPrimaryId()); + if (!mPrograms.containsKey(primaryKey)) { + mPrograms.put(primaryKey, new ArrayMap<>()); + } + mPrograms.get(primaryKey).put(key, value); + changedIdentifierSet.add(primaryKey); } @GuardedBy("mLock") - private void removeLocked(ProgramSelector.Identifier key, + private void removeLocked(UniqueProgramIdentifier key, List removedIdentifierList) { - RadioManager.ProgramInfo removed = mPrograms.remove(Objects.requireNonNull(key)); + ProgramSelector.Identifier primaryKey = Objects.requireNonNull(key.getPrimaryId()); + if (!mPrograms.containsKey(primaryKey)) { + return; + } + Map entries = mPrograms + .get(primaryKey); + RadioManager.ProgramInfo removed = entries.remove(Objects.requireNonNull(key)); if (removed == null) return; - ProgramSelector.Identifier sel = removed.getSelector().getPrimaryId(); - removedIdentifierList.add(sel); + if (entries.size() == 0) { + removedIdentifierList.add(primaryKey); + } } /** @@ -264,9 +285,20 @@ public final class ProgramList implements AutoCloseable { * @return the new List<> object; it won't receive any further updates */ public @NonNull List toList() { + List list = new ArrayList<>(); synchronized (mLock) { - return mPrograms.values().stream().collect(Collectors.toList()); + Iterator>> listIterator = mPrograms.entrySet().iterator(); + while (listIterator.hasNext()) { + Iterator> prorgramsIterator = listIterator.next() + .getValue().entrySet().iterator(); + while (prorgramsIterator.hasNext()) { + list.add(prorgramsIterator.next().getValue()); + } + } } + return list; } /** @@ -276,9 +308,15 @@ public final class ProgramList implements AutoCloseable { * @return the program info, or null if there is no such program on the list */ public @Nullable RadioManager.ProgramInfo get(@NonNull ProgramSelector.Identifier id) { + Map entries; synchronized (mLock) { - return mPrograms.get(Objects.requireNonNull(id)); + entries = mPrograms.get(Objects.requireNonNull(id, + "Primary identifier can not be null")); + } + if (entries == null) { + return null; } + return entries.entrySet().iterator().next().getValue(); } /** @@ -404,7 +442,7 @@ public final class ProgramList implements AutoCloseable { * Checks, if non-tunable entries that define tree structure on the * program list (i.e. DAB ensembles) should be included. * - * @see {@link ProgramSelector.Identifier#isCategory()} + * @see ProgramSelector.Identifier#isCategoryType() */ public boolean areCategoriesIncluded() { return mIncludeCategories; @@ -459,11 +497,11 @@ public final class ProgramList implements AutoCloseable { private final boolean mPurge; private final boolean mComplete; private final @NonNull Set mModified; - private final @NonNull Set mRemoved; + private final @NonNull Set mRemoved; public Chunk(boolean purge, boolean complete, @Nullable Set modified, - @Nullable Set removed) { + @Nullable Set removed) { mPurge = purge; mComplete = complete; mModified = (modified != null) ? modified : Collections.emptySet(); @@ -474,7 +512,7 @@ public final class ProgramList implements AutoCloseable { mPurge = in.readByte() != 0; mComplete = in.readByte() != 0; mModified = Utils.createSet(in, RadioManager.ProgramInfo.CREATOR); - mRemoved = Utils.createSet(in, ProgramSelector.Identifier.CREATOR); + mRemoved = Utils.createSet(in, UniqueProgramIdentifier.CREATOR); } @Override @@ -512,7 +550,7 @@ public final class ProgramList implements AutoCloseable { return mModified; } - public @NonNull Set getRemoved() { + public @NonNull Set getRemoved() { return mRemoved; } diff --git a/core/java/android/hardware/radio/UniqueProgramIdentifier.aidl b/core/java/android/hardware/radio/UniqueProgramIdentifier.aidl new file mode 100644 index 0000000000000000000000000000000000000000..2ed2bcc13790e07189dbbbc444af50ec9c81186d --- /dev/null +++ b/core/java/android/hardware/radio/UniqueProgramIdentifier.aidl @@ -0,0 +1,20 @@ +/** + * Copyright (C) 2023 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.hardware.radio; + +/** @hide */ +parcelable UniqueProgramIdentifier; diff --git a/core/java/android/hardware/radio/UniqueProgramIdentifier.java b/core/java/android/hardware/radio/UniqueProgramIdentifier.java new file mode 100644 index 0000000000000000000000000000000000000000..ea8948ea316d81faa8e51e05cebbc95a8431adc3 --- /dev/null +++ b/core/java/android/hardware/radio/UniqueProgramIdentifier.java @@ -0,0 +1,163 @@ +/** + * Copyright (C) 2023 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.hardware.radio; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.Arrays; +import java.util.List; +import java.util.Objects; +import java.util.stream.Stream; + +/** + * Identifier that can uniquely identifies a program. + * + * This is a transport class used for internal communication between + * Broadcast Radio Service and Radio Manager. Do not use it directly. + * + * @hide + */ +public final class UniqueProgramIdentifier implements Parcelable { + + @NonNull private final ProgramSelector.Identifier mPrimaryId; + @NonNull private final ProgramSelector.Identifier[] mCriticalSecondaryIds; + + /** + * Check whether some secondary identifier is needed to uniquely specify a program for + * a given primary identifier type + * + * @param type primary identifier type {@link ProgramSelector.IdentifierType} + * @return whether some secondary identifier is needed to uniquely specify a program. + */ + public static boolean requireCriticalSecondaryIds(@ProgramSelector.IdentifierType int type) { + return type == ProgramSelector.IDENTIFIER_TYPE_DAB_DMB_SID_EXT || type + == ProgramSelector.IDENTIFIER_TYPE_DAB_SID_EXT; + } + + public UniqueProgramIdentifier(ProgramSelector selector) { + Objects.requireNonNull(selector, "Program selector can not be null"); + mPrimaryId = selector.getPrimaryId(); + switch (mPrimaryId.getType()) { + case ProgramSelector.IDENTIFIER_TYPE_DAB_DMB_SID_EXT: + case ProgramSelector.IDENTIFIER_TYPE_DAB_SID_EXT: + ProgramSelector.Identifier ensembleId = null; + ProgramSelector.Identifier frequencyId = null; + ProgramSelector.Identifier[] secondaryIds = selector.getSecondaryIds(); + for (int i = 0; i < secondaryIds.length; i++) { + if (ensembleId == null && secondaryIds[i].getType() + == ProgramSelector.IDENTIFIER_TYPE_DAB_ENSEMBLE) { + ensembleId = selector.getSecondaryIds()[i]; + } else if (frequencyId == null && secondaryIds[i].getType() + == ProgramSelector.IDENTIFIER_TYPE_DAB_FREQUENCY) { + frequencyId = secondaryIds[i]; + } + if (ensembleId != null && frequencyId != null) { + break; + } + } + if (ensembleId == null) { + if (frequencyId == null) { + mCriticalSecondaryIds = new ProgramSelector.Identifier[]{}; + } else { + mCriticalSecondaryIds = new ProgramSelector.Identifier[]{frequencyId}; + } + } else if (frequencyId == null) { + mCriticalSecondaryIds = new ProgramSelector.Identifier[]{ensembleId}; + } else { + mCriticalSecondaryIds = new ProgramSelector.Identifier[]{ensembleId, + frequencyId}; + } + break; + default: + mCriticalSecondaryIds = new ProgramSelector.Identifier[]{}; + } + + } + + public UniqueProgramIdentifier(ProgramSelector.Identifier primaryId) { + mPrimaryId = primaryId; + mCriticalSecondaryIds = new ProgramSelector.Identifier[]{}; + } + + @NonNull + public ProgramSelector.Identifier getPrimaryId() { + return mPrimaryId; + } + + @NonNull + public List getCriticalSecondaryIds() { + return List.of(mCriticalSecondaryIds); + } + + @NonNull + @Override + public String toString() { + return new StringBuilder("UniqueProgramIdentifier(primary=").append(mPrimaryId) + .append(", criticalSecondary=") + .append(Arrays.toString(mCriticalSecondaryIds)).append(")") + .toString(); + } + + @Override + public int hashCode() { + return Objects.hash(mPrimaryId, Arrays.hashCode(mCriticalSecondaryIds)); + } + + @Override + public boolean equals(@Nullable Object obj) { + if (this == obj) return true; + if (!(obj instanceof UniqueProgramIdentifier)) return false; + UniqueProgramIdentifier other = (UniqueProgramIdentifier) obj; + return other.mPrimaryId.equals(mPrimaryId) + && Arrays.equals(other.mCriticalSecondaryIds, mCriticalSecondaryIds); + } + + @Override + public int describeContents() { + return 0; + } + + private UniqueProgramIdentifier(Parcel in) { + mPrimaryId = in.readTypedObject(ProgramSelector.Identifier.CREATOR); + mCriticalSecondaryIds = in.createTypedArray(ProgramSelector.Identifier.CREATOR); + } + + @Override + public void writeToParcel(@NonNull Parcel dest, int flags) { + dest.writeTypedObject(mPrimaryId, 0); + dest.writeTypedArray(mCriticalSecondaryIds, 0); + if (Stream.of(mCriticalSecondaryIds).anyMatch(Objects::isNull)) { + throw new IllegalArgumentException( + "criticalSecondaryIds list must not contain nulls"); + } + } + + @NonNull + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { + public UniqueProgramIdentifier createFromParcel(Parcel in) { + return new UniqueProgramIdentifier(in); + } + + public UniqueProgramIdentifier[] newArray(int size) { + return new UniqueProgramIdentifier[size]; + } + }; +} diff --git a/core/java/android/hardware/usb/DisplayPortAltModeInfo.java b/core/java/android/hardware/usb/DisplayPortAltModeInfo.java index 9da2f4c129778a0563262fa847c8b8c5aefa4d6f..36c4a2ac09e4fdb65cf22d5d1e9c0b81f2065800 100644 --- a/core/java/android/hardware/usb/DisplayPortAltModeInfo.java +++ b/core/java/android/hardware/usb/DisplayPortAltModeInfo.java @@ -200,19 +200,43 @@ public final class DisplayPortAltModeInfo implements Parcelable { dest.writeInt(mLinkTrainingStatus); } + private String displayPortAltModeStatusToString(@DisplayPortAltModeStatus int status) { + switch (status) { + case DISPLAYPORT_ALT_MODE_STATUS_NOT_CAPABLE: + return "not capable"; + case DISPLAYPORT_ALT_MODE_STATUS_CAPABLE_DISABLED: + return "capable disabled"; + case DISPLAYPORT_ALT_MODE_STATUS_ENABLED: + return "enabled"; + default: + return "unknown"; + } + } + + private String linkTrainingStatusToString(@LinkTrainingStatus int status) { + switch (status) { + case LINK_TRAINING_STATUS_SUCCESS: + return "success"; + case LINK_TRAINING_STATUS_FAILURE: + return "failure"; + default: + return "unknown"; + } + } + @NonNull @Override public String toString() { return "DisplayPortAltModeInfo{partnerSink=" - + mPartnerSinkStatus - + " cable=" - + mCableStatus - + " numLanes=" + + displayPortAltModeStatusToString(mPartnerSinkStatus) + + ", cable=" + + displayPortAltModeStatusToString(mCableStatus) + + ", numLanes=" + mNumLanes - + " hotPlugDetect=" + + ", hotPlugDetect=" + mHotPlugDetect - + " linkTrainingStatus=" - + mLinkTrainingStatus + + ", linkTrainingStatus=" + + linkTrainingStatusToString(mLinkTrainingStatus) + "}"; } diff --git a/core/java/android/inputmethodservice/InkWindow.java b/core/java/android/inputmethodservice/InkWindow.java index 24d1c9577f82db0982e36a95f48b2bd6134eb78f..1b8d925ec1cdd6b84097ac6d67b7c452b511d001 100644 --- a/core/java/android/inputmethodservice/InkWindow.java +++ b/core/java/android/inputmethodservice/InkWindow.java @@ -104,7 +104,11 @@ final class InkWindow extends PhoneWindow { */ void hide(boolean remove) { if (getDecorView() != null) { - getDecorView().setVisibility(remove ? View.GONE : View.INVISIBLE); + if (remove) { + mWindowManager.removeViewImmediate(getDecorView()); + } else { + getDecorView().setVisibility(View.INVISIBLE); + } } } diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 795eb4a737efb08d0d28c88619cbe03a47572482..582c5c0c4dd4a42536958fa86e2783cc5fa42efe 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -576,6 +576,12 @@ public class InputMethodService extends AbstractInputMethodService { @EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final long DISALLOW_INPUT_METHOD_INTERFACE_OVERRIDE = 148086656L; + /** + * Enable the logic to allow hiding the IME caption bar ("fake" IME navigation bar). + * @hide + */ + public static final boolean ENABLE_HIDE_IME_CAPTION_BAR = true; + LayoutInflater mInflater; TypedArray mThemeAttrs; @UnsupportedAppUsage @@ -644,8 +650,6 @@ public class InputMethodService extends AbstractInputMethodService { private InlineSuggestionSessionController mInlineSuggestionSessionController; - private boolean mHideNavBarForKeyboard; - private boolean mIsAutomotive; private @NonNull OptionalInt mHandwritingRequestId = OptionalInt.empty(); private InputEventReceiver mHandwritingEventReceiver; private Handler mHandler; @@ -886,10 +890,13 @@ public class InputMethodService extends AbstractInputMethodService { mSystemCallingHideSoftInput = true; mCurHideInputToken = hideInputToken; mCurStatsToken = statsToken; - hideSoftInput(flags, resultReceiver); - mCurStatsToken = null; - mCurHideInputToken = null; - mSystemCallingHideSoftInput = false; + try { + hideSoftInput(flags, resultReceiver); + } finally { + mCurStatsToken = null; + mCurHideInputToken = null; + mSystemCallingHideSoftInput = false; + } } /** @@ -1616,7 +1623,7 @@ public class InputMethodService extends AbstractInputMethodService { // shown the first time (cold start). mSettingsObserver.shouldShowImeWithHardKeyboard(); - mHideNavBarForKeyboard = getApplicationContext().getResources().getBoolean( + final boolean hideNavBarForKeyboard = getApplicationContext().getResources().getBoolean( com.android.internal.R.bool.config_hideNavBarForKeyboard); initConfigurationTracker(); @@ -1662,7 +1669,7 @@ public class InputMethodService extends AbstractInputMethodService { // screen real estate. When this happens, the IME window should animate from the // bottom of the screen to reduce the jank that happens from the lack of synchronization // between the bottom system window and the IME window. - if (mHideNavBarForKeyboard) { + if (hideNavBarForKeyboard) { window.setDecorFitsSystemWindows(false); } } @@ -2360,9 +2367,7 @@ public class InputMethodService extends AbstractInputMethodService { public void setExtractView(View view) { mExtractFrame.removeAllViews(); - mExtractFrame.addView(view, new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT)); + mExtractFrame.addView(view, new FrameLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT)); mExtractView = view; if (view != null) { mExtractEditText = view.findViewById( @@ -2381,7 +2386,7 @@ public class InputMethodService extends AbstractInputMethodService { mExtractAction = null; } } - + /** * Replaces the current candidates view with a new one. You only need to * call this when dynamically changing the view; normally, you should @@ -2390,11 +2395,9 @@ public class InputMethodService extends AbstractInputMethodService { */ public void setCandidatesView(View view) { mCandidatesFrame.removeAllViews(); - mCandidatesFrame.addView(view, new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT)); + mCandidatesFrame.addView(view, new FrameLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT)); } - + /** * Replaces the current input view with a new one. You only need to * call this when dynamically changing the view; normally, you should @@ -2403,12 +2406,10 @@ public class InputMethodService extends AbstractInputMethodService { */ public void setInputView(View view) { mInputFrame.removeAllViews(); - mInputFrame.addView(view, new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.WRAP_CONTENT)); + mInputFrame.addView(view, new FrameLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT)); mInputView = view; } - + /** * Called by the framework to create the layout for showing extracted text. * Only called when in fullscreen mode. The returned view hierarchy must @@ -3442,9 +3443,12 @@ public class InputMethodService extends AbstractInputMethodService { return false; } + /** + * Not implemented in this class. + */ public void onAppPrivateCommand(String action, Bundle data) { } - + /** * Handle a request by the system to toggle the soft input area. */ @@ -4086,11 +4090,6 @@ public class InputMethodService extends AbstractInputMethodService { | (isInputViewShown() ? IME_VISIBLE : 0); } - private boolean isAutomotive() { - return getApplicationContext().getPackageManager().hasSystemFeature( - PackageManager.FEATURE_AUTOMOTIVE); - } - /** * Performs a dump of the InputMethodService's internal state. Override * to add your own information to the dump. @@ -4140,13 +4139,13 @@ public class InputMethodService extends AbstractInputMethodService { p.println(" mExtractedToken=" + mExtractedToken); p.println(" mIsInputViewShown=" + mIsInputViewShown + " mStatusIcon=" + mStatusIcon); - p.println("Last computed insets:"); - p.println(" contentTopInsets=" + mTmpInsets.contentTopInsets + p.println(" Last computed insets:"); + p.println(" contentTopInsets=" + mTmpInsets.contentTopInsets + " visibleTopInsets=" + mTmpInsets.visibleTopInsets + " touchableInsets=" + mTmpInsets.touchableInsets + " touchableRegion=" + mTmpInsets.touchableRegion); - p.println(" mSettingsObserver=" + mSettingsObserver); - p.println(" mNavigationBarController=" + mNavigationBarController.toDebugString()); + p.println(" mSettingsObserver=" + mSettingsObserver); + p.println(" mNavigationBarController=" + mNavigationBarController.toDebugString()); } private final ImeTracing.ServiceDumper mDumper = new ImeTracing.ServiceDumper() { diff --git a/core/java/android/inputmethodservice/NavigationBarController.java b/core/java/android/inputmethodservice/NavigationBarController.java index 78388efe98c7a1970d42413a6287e59fdc31ee8c..8be4c5858694773e2f31a752c2271c3bcd0d8d07 100644 --- a/core/java/android/inputmethodservice/NavigationBarController.java +++ b/core/java/android/inputmethodservice/NavigationBarController.java @@ -16,6 +16,8 @@ package android.inputmethodservice; +import static android.inputmethodservice.InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR; +import static android.view.WindowInsets.Type.captionBar; import static android.view.WindowInsetsController.APPEARANCE_LIGHT_NAVIGATION_BARS; import android.animation.ValueAnimator; @@ -230,6 +232,16 @@ final class NavigationBarController { setIconTintInternal(calculateTargetDarkIntensity(mAppearance, mDrawLegacyNavigationBarBackground)); + + if (ENABLE_HIDE_IME_CAPTION_BAR) { + mNavigationBarFrame.setOnApplyWindowInsetsListener((view, insets) -> { + if (mNavigationBarFrame != null) { + boolean visible = insets.isVisible(captionBar()); + mNavigationBarFrame.setVisibility(visible ? View.VISIBLE : View.GONE); + } + return view.onApplyWindowInsets(insets); + }); + } } private void uninstallNavigationBarFrameIfNecessary() { @@ -240,6 +252,9 @@ final class NavigationBarController { if (parent instanceof ViewGroup) { ((ViewGroup) parent).removeView(mNavigationBarFrame); } + if (ENABLE_HIDE_IME_CAPTION_BAR) { + mNavigationBarFrame.setOnApplyWindowInsetsListener(null); + } mNavigationBarFrame = null; } @@ -414,7 +429,9 @@ final class NavigationBarController { decor.bringChildToFront(mNavigationBarFrame); } } - mNavigationBarFrame.setVisibility(View.VISIBLE); + if (!ENABLE_HIDE_IME_CAPTION_BAR) { + mNavigationBarFrame.setVisibility(View.VISIBLE); + } } } @@ -435,6 +452,11 @@ final class NavigationBarController { mShouldShowImeSwitcherWhenImeIsShown; mShouldShowImeSwitcherWhenImeIsShown = shouldShowImeSwitcherWhenImeIsShown; + if (ENABLE_HIDE_IME_CAPTION_BAR) { + mService.mWindow.getWindow().getDecorView().getWindowInsetsController() + .setImeCaptionBarInsetsHeight(getImeCaptionBarHeight()); + } + if (imeDrawsImeNavBar) { installNavigationBarFrameIfNecessary(); if (mNavigationBarFrame == null) { @@ -528,6 +550,16 @@ final class NavigationBarController { return drawLegacyNavigationBarBackground; } + /** + * Returns the height of the IME caption bar if this should be shown, or {@code 0} instead. + */ + private int getImeCaptionBarHeight() { + return mImeDrawsImeNavBar + ? mService.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.navigation_bar_frame_height) + : 0; + } + @Override public String toDebugString() { return "{mImeDrawsImeNavBar=" + mImeDrawsImeNavBar diff --git a/core/java/android/inputmethodservice/SoftInputWindow.java b/core/java/android/inputmethodservice/SoftInputWindow.java index 5704dac7a327c472bd78e7c7a200c5a896f4e1de..cf47786c8821bbb9324947917ec0104efbdb03d9 100644 --- a/core/java/android/inputmethodservice/SoftInputWindow.java +++ b/core/java/android/inputmethodservice/SoftInputWindow.java @@ -16,14 +16,12 @@ package android.inputmethodservice; -import static android.inputmethodservice.SoftInputWindowProto.BOUNDS; import static android.inputmethodservice.SoftInputWindowProto.WINDOW_STATE; import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.IntDef; import android.app.Dialog; -import android.graphics.Rect; import android.os.Debug; import android.os.IBinder; import android.util.Log; @@ -45,7 +43,6 @@ final class SoftInputWindow extends Dialog { private static final String TAG = "SoftInputWindow"; private final KeyEvent.DispatcherState mDispatcherState; - private final Rect mBounds = new Rect(); private final InputMethodService mService; @Retention(SOURCE) @@ -79,6 +76,13 @@ final class SoftInputWindow extends Dialog { @WindowState private int mWindowState = WindowState.TOKEN_PENDING; + @Override + protected boolean allowsRegisterDefaultOnBackInvokedCallback() { + // Do not register OnBackInvokedCallback from Dialog#onStart, InputMethodService will + // register CompatOnBackInvokedCallback for input method window. + return false; + } + /** * Set {@link IBinder} window token to the window. * @@ -142,22 +146,6 @@ final class SoftInputWindow extends Dialog { mDispatcherState.reset(); } - @Override - public boolean dispatchTouchEvent(MotionEvent ev) { - getWindow().getDecorView().getHitRect(mBounds); - - if (ev.isWithinBoundsNoHistory(mBounds.left, mBounds.top, - mBounds.right - 1, mBounds.bottom - 1)) { - return super.dispatchTouchEvent(ev); - } else { - MotionEvent temp = ev.clampNoHistory(mBounds.left, mBounds.top, - mBounds.right - 1, mBounds.bottom - 1); - boolean handled = super.dispatchTouchEvent(temp); - temp.recycle(); - return handled; - } - } - @Override public void show() { switch (mWindowState) { @@ -169,7 +157,8 @@ final class SoftInputWindow extends Dialog { try { super.show(); updateWindowState(WindowState.SHOWN_AT_LEAST_ONCE); - } catch (WindowManager.BadTokenException e) { + } catch (WindowManager.BadTokenException + | WindowManager.InvalidDisplayException e) { // Just ignore this exception. Since show() can be requested from other // components such as the system and there could be multiple event queues before // the request finally arrives here, the system may have already invalidated the @@ -265,7 +254,6 @@ final class SoftInputWindow extends Dialog { void dumpDebug(ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); - mBounds.dumpDebug(proto, BOUNDS); proto.write(WINDOW_STATE, mWindowState); proto.end(token); } diff --git a/location/java/android/location/GeocoderParams.java b/core/java/android/location/GeocoderParams.java similarity index 100% rename from location/java/android/location/GeocoderParams.java rename to core/java/android/location/GeocoderParams.java diff --git a/location/java/android/location/Geofence.java b/core/java/android/location/Geofence.java similarity index 100% rename from location/java/android/location/Geofence.java rename to core/java/android/location/Geofence.java diff --git a/location/java/android/location/GnssSignalQuality.java b/core/java/android/location/GnssSignalQuality.java similarity index 100% rename from location/java/android/location/GnssSignalQuality.java rename to core/java/android/location/GnssSignalQuality.java diff --git a/location/java/android/location/IFusedGeofenceHardware.aidl b/core/java/android/location/IFusedGeofenceHardware.aidl similarity index 100% rename from location/java/android/location/IFusedGeofenceHardware.aidl rename to core/java/android/location/IFusedGeofenceHardware.aidl diff --git a/location/java/android/location/IGpsGeofenceHardware.aidl b/core/java/android/location/IGpsGeofenceHardware.aidl similarity index 100% rename from location/java/android/location/IGpsGeofenceHardware.aidl rename to core/java/android/location/IGpsGeofenceHardware.aidl diff --git a/location/java/android/location/Location.aidl b/core/java/android/location/Location.aidl similarity index 100% rename from location/java/android/location/Location.aidl rename to core/java/android/location/Location.aidl diff --git a/location/java/android/location/Location.java b/core/java/android/location/Location.java similarity index 99% rename from location/java/android/location/Location.java rename to core/java/android/location/Location.java index 0eb657aba03357b05b6741cae41f0ef6614b30ab..fd3e5a22e969e096828bd26c792bc0b9ff3f5df0 100644 --- a/location/java/android/location/Location.java +++ b/core/java/android/location/Location.java @@ -709,11 +709,9 @@ public class Location implements Parcelable { /** * Returns the Mean Sea Level altitude of this location in meters. * - * @throws IllegalStateException if {@link #hasMslAltitude()} is false. + *

    This is only valid if {@link #hasMslAltitude()} is true. */ public @FloatRange double getMslAltitudeMeters() { - Preconditions.checkState(hasMslAltitude(), - "The Mean Sea Level altitude of this location is not set."); return mMslAltitudeMeters; } @@ -744,11 +742,9 @@ public class Location implements Parcelable { * percentile confidence level. This means that there is 68% chance that the true Mean Sea Level * altitude of this location falls within {@link #getMslAltitudeMeters()} +/- this uncertainty. * - * @throws IllegalStateException if {@link #hasMslAltitudeAccuracy()} is false. + *

    This is only valid if {@link #hasMslAltitudeAccuracy()} is true. */ public @FloatRange(from = 0.0) float getMslAltitudeAccuracyMeters() { - Preconditions.checkState(hasMslAltitudeAccuracy(), - "The Mean Sea Level altitude accuracy of this location is not set."); return mMslAltitudeAccuracyMeters; } diff --git a/location/java/android/location/LocationTime.java b/core/java/android/location/LocationTime.java similarity index 100% rename from location/java/android/location/LocationTime.java rename to core/java/android/location/LocationTime.java diff --git a/core/java/android/nfc/NfcAdapter.java b/core/java/android/nfc/NfcAdapter.java index 36199e522520bece073187a09625a86ceec44cf4..a9eb672c4e4d2d211e23612701083b7bcb346b0c 100644 --- a/core/java/android/nfc/NfcAdapter.java +++ b/core/java/android/nfc/NfcAdapter.java @@ -600,6 +600,17 @@ public final class NfcAdapter { return offHostSE; } + private static void retrieveServiceRegisterer() { + if (sServiceRegisterer == null) { + NfcServiceManager manager = NfcFrameworkInitializer.getNfcServiceManager(); + if (manager == null) { + Log.e(TAG, "NfcServiceManager is null"); + throw new UnsupportedOperationException(); + } + sServiceRegisterer = manager.getNfcManagerServiceRegisterer(); + } + } + /** * Returns the NfcAdapter for application context, * or throws if NFC is not available. @@ -627,12 +638,7 @@ public final class NfcAdapter { Log.v(TAG, "this device does not have NFC support"); throw new UnsupportedOperationException(); } - NfcServiceManager manager = NfcFrameworkInitializer.getNfcServiceManager(); - if (manager == null) { - Log.e(TAG, "NfcServiceManager is null"); - throw new UnsupportedOperationException(); - } - sServiceRegisterer = manager.getNfcManagerServiceRegisterer(); + retrieveServiceRegisterer(); sService = getServiceInterface(); if (sService == null) { Log.e(TAG, "could not retrieve NFC service"); @@ -706,11 +712,13 @@ public final class NfcAdapter { throw new IllegalArgumentException( "context not associated with any application (using a mock context?)"); } - - if (sIsInitialized && sServiceRegisterer.tryGet() == null) { - synchronized (NfcAdapter.class) { - /* Stale sService pointer */ - if (sIsInitialized) sIsInitialized = false; + retrieveServiceRegisterer(); + if (sServiceRegisterer.tryGet() == null) { + if (sIsInitialized) { + synchronized (NfcAdapter.class) { + /* Stale sService pointer */ + if (sIsInitialized) sIsInitialized = false; + } } return null; } diff --git a/core/java/android/nfc/NfcAntennaInfo.java b/core/java/android/nfc/NfcAntennaInfo.java index d54fcd2ed5b3d21f8bb130e8c9eb512afde93d54..b002ca21e8e3c4c0a4f25aae574d500dce94e055 100644 --- a/core/java/android/nfc/NfcAntennaInfo.java +++ b/core/java/android/nfc/NfcAntennaInfo.java @@ -85,8 +85,8 @@ public final class NfcAntennaInfo implements Parcelable { this.mDeviceHeight = in.readInt(); this.mDeviceFoldable = in.readByte() != 0; this.mAvailableNfcAntennas = new ArrayList<>(); - in.readParcelableList(this.mAvailableNfcAntennas, - AvailableNfcAntenna.class.getClassLoader()); + in.readTypedList(this.mAvailableNfcAntennas, + AvailableNfcAntenna.CREATOR); } public static final @NonNull Parcelable.Creator CREATOR = diff --git a/core/java/android/os/AggregateBatteryConsumer.java b/core/java/android/os/AggregateBatteryConsumer.java index 7a153ef9c6f3307ba55c3e46096f622caae08c54..c5f56144c29cd61704c0044a610b7211a8aca869 100644 --- a/core/java/android/os/AggregateBatteryConsumer.java +++ b/core/java/android/os/AggregateBatteryConsumer.java @@ -116,8 +116,9 @@ public final class AggregateBatteryConsumer extends BatteryConsumer { * Builder for DeviceBatteryConsumer. */ public static final class Builder extends BaseBuilder { - public Builder(BatteryConsumer.BatteryConsumerData data, int scope) { - super(data, CONSUMER_TYPE_AGGREGATE); + public Builder(BatteryConsumer.BatteryConsumerData data, int scope, + double minConsumedPowerThreshold) { + super(data, CONSUMER_TYPE_AGGREGATE, minConsumedPowerThreshold); data.putInt(COLUMN_INDEX_SCOPE, scope); } diff --git a/core/java/android/os/BatteryConsumer.java b/core/java/android/os/BatteryConsumer.java index 0ba8d51e820f0850536bcad33d225c9798116313..ca84b35635613ee24c8887b49b48c5aeb2931c85 100644 --- a/core/java/android/os/BatteryConsumer.java +++ b/core/java/android/os/BatteryConsumer.java @@ -795,11 +795,12 @@ public abstract class BatteryConsumer { protected final BatteryConsumer.BatteryConsumerData mData; protected final PowerComponents.Builder mPowerComponentsBuilder; - public BaseBuilder(BatteryConsumer.BatteryConsumerData data, int consumerType) { + public BaseBuilder(BatteryConsumer.BatteryConsumerData data, int consumerType, + double minConsumedPowerThreshold) { mData = data; data.putLong(COLUMN_INDEX_BATTERY_CONSUMER_TYPE, consumerType); - mPowerComponentsBuilder = new PowerComponents.Builder(data); + mPowerComponentsBuilder = new PowerComponents.Builder(data, minConsumedPowerThreshold); } @Nullable diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index 42c56265bb4a4394234eaefa7416277d283411b3..8482945dc1f07334079c3d91f16b7738dad2f525 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -19,6 +19,7 @@ package android.os; import static android.os.BatteryStatsManager.NUM_WIFI_STATES; import static android.os.BatteryStatsManager.NUM_WIFI_SUPPL_STATES; +import android.annotation.CurrentTimeMillisLong; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -55,6 +56,7 @@ import android.view.Display; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.BatteryStatsHistoryIterator; import com.android.internal.os.CpuScalingPolicies; +import com.android.internal.os.PowerStats; import com.google.android.collect.Lists; @@ -1793,75 +1795,55 @@ public abstract class BatteryStats { } /** - * Measured energy delta from the previous reading. + * An extension to the history item describing a proc state change for a UID. */ - public static final class EnergyConsumerDetails { + public static final class ProcessStateChange { + public int uid; + public @BatteryConsumer.ProcessState int processState; + + private static final int LARGE_UID_FLAG = 0x80000000; + private static final int SMALL_UID_MASK = 0x00FFFFFF; + private static final int PROC_STATE_MASK = 0x7F000000; + private static final int PROC_STATE_SHIFT = Integer.numberOfTrailingZeros(PROC_STATE_MASK); + /** - * Description of the energy consumer, such as CPU, DISPLAY etc + * Writes this object to the supplied parcel. */ - public static final class EnergyConsumer { - /** - * See android.hardware.power.stats.EnergyConsumerType - */ - public int type; - /** - * Used when there are multipe energy consumers of the same type, such - * as CPU clusters, multiple displays on foldable devices etc. - */ - public int ordinal; - /** - * Human-readable name of the energy consumer, e.g. "CPU" - */ - public String name; - } - public EnergyConsumer[] consumers; - public long[] chargeUC; - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder(); - for (int i = 0; i < consumers.length; i++) { - if (chargeUC[i] == POWER_DATA_UNAVAILABLE) { - continue; - } - if (sb.length() != 0) { - sb.append(' '); - } - sb.append(consumers[i].name); - sb.append('='); - sb.append(chargeUC[i]); + public void writeToParcel(Parcel out) { + int bits = processState << PROC_STATE_SHIFT; + if ((uid & ~SMALL_UID_MASK) == 0) { + bits |= uid; + out.writeInt(bits); + } else { + bits |= LARGE_UID_FLAG; + out.writeInt(bits); + out.writeInt(uid); } - return sb.toString(); } - } - /** - * CPU usage for a given UID. - */ - public static final class CpuUsageDetails { /** - * Descriptions of CPU power brackets, see PowerProfile.getCpuPowerBracketDescription + * Reads this object from the supplied parcel. */ - public String[] cpuBracketDescriptions; - public int uid; + public void readFromParcel(Parcel in) { + int bits = in.readInt(); + processState = (bits & PROC_STATE_MASK) >>> PROC_STATE_SHIFT; + if (processState >= BatteryConsumer.PROCESS_STATE_COUNT) { + Slog.e(TAG, "Unrecognized proc state in battery history: " + processState); + processState = BatteryConsumer.PROCESS_STATE_UNSPECIFIED; + } + if ((bits & LARGE_UID_FLAG) == 0) { + uid = bits & ~PROC_STATE_MASK; + } else { + uid = in.readInt(); + } + } + /** - * The delta, in milliseconds, per CPU power bracket, from the previous record for the - * same UID. + * String representation for inclusion in the battery history dump. */ - public long[] cpuUsageMs; - - @Override - public String toString() { - final StringBuilder sb = new StringBuilder(); - UserHandle.formatUid(sb, uid); - sb.append(": "); - for (int bracket = 0; bracket < cpuUsageMs.length; bracket++) { - if (bracket != 0) { - sb.append(", "); - } - sb.append(cpuUsageMs[bracket]); - } - return sb.toString(); + public String formatForBatteryHistory() { + return UserHandle.formatUid(uid) + ": " + + BatteryConsumer.processStateToString(processState); } } @@ -2008,11 +1990,11 @@ public abstract class BatteryStats { // Non-null when there is more detailed information at this step. public HistoryStepDetails stepDetails; - // Non-null when there is energy consumer information - public EnergyConsumerDetails energyConsumerDetails; + // Non-null when there are power stats to be written to history + public PowerStats powerStats; - // Non-null when there is CPU usage information - public CpuUsageDetails cpuUsageDetails; + // Non-null when there is procstate change to be written to history + public ProcessStateChange processStateChange; public static final int EVENT_FLAG_START = 0x8000; public static final int EVENT_FLAG_FINISH = 0x4000; @@ -2110,6 +2092,7 @@ public abstract class BatteryStats { public final HistoryTag localWakelockTag = new HistoryTag(); public final HistoryTag localWakeReasonTag = new HistoryTag(); public final HistoryTag localEventTag = new HistoryTag(); + public final ProcessStateChange localProcessStateChange = new ProcessStateChange(); // Includes a tag's first occurrence in the parcel, so the value of the tag is written // rather than just its index in the history tag pool. @@ -2222,8 +2205,8 @@ public abstract class BatteryStats { eventCode = EVENT_NONE; eventTag = null; tagsFirstOccurrence = false; - energyConsumerDetails = null; - cpuUsageDetails = null; + powerStats = null; + processStateChange = null; } @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P) @@ -2273,8 +2256,8 @@ public abstract class BatteryStats { } tagsFirstOccurrence = o.tagsFirstOccurrence; currentTime = o.currentTime; - energyConsumerDetails = o.energyConsumerDetails; - cpuUsageDetails = o.cpuUsageDetails; + powerStats = o.powerStats; + processStateChange = o.processStateChange; } public boolean sameNonEvent(HistoryItem o) { @@ -2434,8 +2417,14 @@ public abstract class BatteryStats { * Returns a BatteryStatsHistoryIterator. Battery history will continue being writable, * but the iterator will continue iterating over the snapshot taken at the time this method * is called. + * + * @param startTimeMs wall-clock time to start iterating from, inclusive + * @param endTimeMs wall-clock time to stop iterating, exclusive. + * Pass 0 to indicate current time. */ - public abstract BatteryStatsHistoryIterator iterateBatteryStatsHistory(); + public abstract BatteryStatsHistoryIterator iterateBatteryStatsHistory( + @CurrentTimeMillisLong long startTimeMs, + @CurrentTimeMillisLong long endTimeMs); /** * Returns the number of times the device has been started. @@ -6911,25 +6900,6 @@ public abstract class BatteryStats { private String printNextItem(HistoryItem rec, long baseTime, boolean checkin, boolean verbose) { StringBuilder item = new StringBuilder(); - - if (rec.cpuUsageDetails != null - && rec.cpuUsageDetails.cpuBracketDescriptions != null - && checkin) { - String[] descriptions = rec.cpuUsageDetails.cpuBracketDescriptions; - for (int bracket = 0; bracket < descriptions.length; bracket++) { - item.append(BATTERY_STATS_CHECKIN_VERSION); - item.append(','); - item.append(HISTORY_DATA); - item.append(",0,XB,"); - item.append(descriptions.length); - item.append(','); - item.append(bracket); - item.append(','); - item.append(descriptions[bracket]); - item.append("\n"); - } - } - if (!checkin) { item.append(" "); TimeUtils.formatDuration( @@ -7165,57 +7135,19 @@ public abstract class BatteryStats { item.append("\""); } } - boolean firstExtension = true; - if (rec.energyConsumerDetails != null) { - firstExtension = false; + if (rec.powerStats != null && verbose) { if (!checkin) { - item.append(" ext=energy:"); - item.append(rec.energyConsumerDetails); - } else { - item.append(",XE"); - for (int i = 0; i < rec.energyConsumerDetails.consumers.length; i++) { - if (rec.energyConsumerDetails.chargeUC[i] != POWER_DATA_UNAVAILABLE) { - item.append(','); - item.append(rec.energyConsumerDetails.consumers[i].name); - item.append('='); - item.append(rec.energyConsumerDetails.chargeUC[i]); - } - } + item.append( + "\n Stats: "); + item.append(rec.powerStats.formatForBatteryHistory( + "\n ")); } } - if (rec.cpuUsageDetails != null) { + if (rec.processStateChange != null && verbose) { if (!checkin) { - if (!firstExtension) { - item.append("\n "); - } - String[] descriptions = rec.cpuUsageDetails.cpuBracketDescriptions; - if (descriptions != null) { - for (int bracket = 0; bracket < descriptions.length; bracket++) { - item.append(" ext=cpu-bracket:"); - item.append(bracket); - item.append(":"); - item.append(descriptions[bracket]); - item.append("\n "); - } - } - item.append(" ext=cpu:"); - item.append(rec.cpuUsageDetails); - } else { - if (!firstExtension) { - item.append('\n'); - item.append(BATTERY_STATS_CHECKIN_VERSION); - item.append(','); - item.append(HISTORY_DATA); - item.append(",0"); - } - item.append(",XC,"); - item.append(rec.cpuUsageDetails.uid); - for (int i = 0; i < rec.cpuUsageDetails.cpuUsageMs.length; i++) { - item.append(','); - item.append(rec.cpuUsageDetails.cpuUsageMs[i]); - } + item.append(" procstate: "); + item.append(rec.processStateChange.formatForBatteryHistory()); } - firstExtension = false; } item.append("\n"); if (rec.stepDetails != null) { @@ -7537,7 +7469,7 @@ public abstract class BatteryStats { long baseTime = -1; boolean printed = false; HistoryEventTracker tracker = null; - try (BatteryStatsHistoryIterator iterator = iterateBatteryStatsHistory()) { + try (BatteryStatsHistoryIterator iterator = iterateBatteryStatsHistory(0, 0)) { HistoryItem rec; while ((rec = iterator.next()) != null) { try { @@ -8460,7 +8392,7 @@ public abstract class BatteryStats { long baseTime = -1; boolean printed = false; HistoryEventTracker tracker = null; - try (BatteryStatsHistoryIterator iterator = iterateBatteryStatsHistory()) { + try (BatteryStatsHistoryIterator iterator = iterateBatteryStatsHistory(0, 0)) { HistoryItem rec; while ((rec = iterator.next()) != null) { lastTime = rec.time; diff --git a/core/java/android/os/BatteryUsageStats.java b/core/java/android/os/BatteryUsageStats.java index e2c52cecc2b13083c4d13d675a74cae490529ef5..a5f8844a29212ca82b6f0c33a43c996151ecf734 100644 --- a/core/java/android/os/BatteryUsageStats.java +++ b/core/java/android/os/BatteryUsageStats.java @@ -315,7 +315,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { throw new IllegalStateException( "Battery history was not requested in the BatteryUsageStatsQuery"); } - return new BatteryStatsHistoryIterator(mBatteryStatsHistory); + return new BatteryStatsHistoryIterator(mBatteryStatsHistory, 0, 0); } @Override @@ -707,7 +707,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { XML_ATTR_PREFIX_INCLUDES_PROC_STATE_DATA, false); builder = new Builder(customComponentNames.toArray(new String[0]), true, - includesProcStateData); + includesProcStateData, 0); builder.setStatsStartTimestamp( parser.getAttributeLong(null, XML_ATTR_START_TIMESTAMP)); @@ -782,6 +782,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { private final String[] mCustomPowerComponentNames; private final boolean mIncludePowerModels; private final boolean mIncludesProcessStateData; + private final double mMinConsumedPowerThreshold; private final BatteryConsumer.BatteryConsumerDataLayout mBatteryConsumerDataLayout; private long mStatsStartTimestampMs; private long mStatsEndTimestampMs; @@ -802,11 +803,11 @@ public final class BatteryUsageStats implements Parcelable, Closeable { private BatteryStatsHistory mBatteryStatsHistory; public Builder(@NonNull String[] customPowerComponentNames) { - this(customPowerComponentNames, false, false); + this(customPowerComponentNames, false, false, 0); } public Builder(@NonNull String[] customPowerComponentNames, boolean includePowerModels, - boolean includeProcessStateData) { + boolean includeProcessStateData, double minConsumedPowerThreshold) { mBatteryConsumersCursorWindow = new CursorWindow(null, BATTERY_CONSUMER_CURSOR_WINDOW_SIZE); mBatteryConsumerDataLayout = @@ -817,12 +818,14 @@ public final class BatteryUsageStats implements Parcelable, Closeable { mCustomPowerComponentNames = customPowerComponentNames; mIncludePowerModels = includePowerModels; mIncludesProcessStateData = includeProcessStateData; + mMinConsumedPowerThreshold = minConsumedPowerThreshold; for (int scope = 0; scope < AGGREGATE_BATTERY_CONSUMER_SCOPE_COUNT; scope++) { final BatteryConsumer.BatteryConsumerData data = BatteryConsumer.BatteryConsumerData.create(mBatteryConsumersCursorWindow, mBatteryConsumerDataLayout); mAggregateBatteryConsumersBuilders[scope] = - new AggregateBatteryConsumer.Builder(data, scope); + new AggregateBatteryConsumer.Builder( + data, scope, mMinConsumedPowerThreshold); } } @@ -961,7 +964,8 @@ public final class BatteryUsageStats implements Parcelable, Closeable { final BatteryConsumer.BatteryConsumerData data = BatteryConsumer.BatteryConsumerData.create(mBatteryConsumersCursorWindow, mBatteryConsumerDataLayout); - builder = new UidBatteryConsumer.Builder(data, batteryStatsUid); + builder = new UidBatteryConsumer.Builder(data, batteryStatsUid, + mMinConsumedPowerThreshold); mUidBatteryConsumerBuilders.put(uid, builder); } return builder; @@ -979,7 +983,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { final BatteryConsumer.BatteryConsumerData data = BatteryConsumer.BatteryConsumerData.create(mBatteryConsumersCursorWindow, mBatteryConsumerDataLayout); - builder = new UidBatteryConsumer.Builder(data, uid); + builder = new UidBatteryConsumer.Builder(data, uid, mMinConsumedPowerThreshold); mUidBatteryConsumerBuilders.put(uid, builder); } return builder; @@ -996,7 +1000,7 @@ public final class BatteryUsageStats implements Parcelable, Closeable { final BatteryConsumer.BatteryConsumerData data = BatteryConsumer.BatteryConsumerData.create(mBatteryConsumersCursorWindow, mBatteryConsumerDataLayout); - builder = new UserBatteryConsumer.Builder(data, userId); + builder = new UserBatteryConsumer.Builder(data, userId, mMinConsumedPowerThreshold); mUserBatteryConsumerBuilders.put(userId, builder); } return builder; diff --git a/core/java/android/os/BatteryUsageStatsQuery.java b/core/java/android/os/BatteryUsageStatsQuery.java index b3f4d9874f4ea69050667458ec3b50d8405a87ef..49d7e8bc56329b07ae2e89d01dd2e8ecfdb4be06 100644 --- a/core/java/android/os/BatteryUsageStatsQuery.java +++ b/core/java/android/os/BatteryUsageStatsQuery.java @@ -80,6 +80,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { private final long mMaxStatsAgeMs; private final long mFromTimestamp; private final long mToTimestamp; + private final double mMinConsumedPowerThreshold; private final @BatteryConsumer.PowerComponent int[] mPowerComponents; private BatteryUsageStatsQuery(@NonNull Builder builder) { @@ -87,6 +88,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { mUserIds = builder.mUserIds != null ? builder.mUserIds.toArray() : new int[]{UserHandle.USER_ALL}; mMaxStatsAgeMs = builder.mMaxStatsAgeMs; + mMinConsumedPowerThreshold = builder.mMinConsumedPowerThreshold; mFromTimestamp = builder.mFromTimestamp; mToTimestamp = builder.mToTimestamp; mPowerComponents = builder.mPowerComponents; @@ -136,6 +138,14 @@ public final class BatteryUsageStatsQuery implements Parcelable { return mMaxStatsAgeMs; } + /** + * Returns the minimal power component consumed power threshold. The small power consuming + * components will be reported as zero. + */ + public double getMinConsumedPowerThreshold() { + return mMinConsumedPowerThreshold; + } + /** * Returns the exclusive lower bound of the stored snapshot timestamps that should be included * in the aggregation. Ignored if {@link #getToTimestamp()} is zero. @@ -158,6 +168,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { mUserIds = new int[in.readInt()]; in.readIntArray(mUserIds); mMaxStatsAgeMs = in.readLong(); + mMinConsumedPowerThreshold = in.readDouble(); mFromTimestamp = in.readLong(); mToTimestamp = in.readLong(); mPowerComponents = in.createIntArray(); @@ -169,6 +180,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { dest.writeInt(mUserIds.length); dest.writeIntArray(mUserIds); dest.writeLong(mMaxStatsAgeMs); + dest.writeDouble(mMinConsumedPowerThreshold); dest.writeLong(mFromTimestamp); dest.writeLong(mToTimestamp); dest.writeIntArray(mPowerComponents); @@ -202,6 +214,7 @@ public final class BatteryUsageStatsQuery implements Parcelable { private long mMaxStatsAgeMs = DEFAULT_MAX_STATS_AGE_MS; private long mFromTimestamp; private long mToTimestamp; + private double mMinConsumedPowerThreshold = 0; private @BatteryConsumer.PowerComponent int[] mPowerComponents; /** @@ -301,5 +314,14 @@ public final class BatteryUsageStatsQuery implements Parcelable { mMaxStatsAgeMs = maxStatsAgeMs; return this; } + + /** + * Set the minimal power component consumed power threshold. The small power consuming + * components will be reported as zero. + */ + public Builder setMinConsumedPowerThreshold(double minConsumedPowerThreshold) { + mMinConsumedPowerThreshold = minConsumedPowerThreshold; + return this; + } } } diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java index f40efc8a2e8fefc47cdf2a594307599e37117e17..218d4bb8514fce3eab493c8ff25deaf5cfd5cf77 100644 --- a/core/java/android/os/Binder.java +++ b/core/java/android/os/Binder.java @@ -186,6 +186,8 @@ public class Binder implements IBinder { /** * Get the binder transaction observer for this process. * + * TODO(b/299356196): only applies to Java code, not C++/Rust + * * @hide */ public static void setObserver(@Nullable BinderInternal.Observer observer) { @@ -202,6 +204,8 @@ public class Binder implements IBinder { * that require a result must be sent as {@link IBinder#FLAG_ONEWAY} calls * which deliver results through a callback interface. * + * TODO(b/299355525): only applies to Java code, not C++/Rust + * * @hide */ public static void setWarnOnBlocking(boolean warnOnBlocking) { @@ -218,6 +222,8 @@ public class Binder implements IBinder { * interfaces hosted by package that could be upgraded or replaced, * otherwise you risk system instability if that remote interface wedges. * + * TODO(b/299355525): only applies to Java code, not C++/Rust + * * @hide */ public static IBinder allowBlocking(IBinder binder) { @@ -1307,6 +1313,8 @@ public class Binder implements IBinder { int callingUid) { // Make sure the observer won't change while processing a transaction. final BinderInternal.Observer observer = sObserver; + + // TODO(b/299356196): observer should also observe transactions in native code final CallSession callSession = observer != null ? observer.callStarted(this, code, UNSET_WORKSOURCE) : null; // Theoretically, we should call transact, which will call onTransact, @@ -1329,7 +1337,7 @@ public class Binder implements IBinder { final boolean tracingEnabled = tagEnabled && transactionTraceName != null; try { - // TODO - this logic should not be in Java - it should be in native + // TODO(b/299356201) - this logic should not be in Java - it should be in native // code in libbinder so that it works for all binder users. final BinderCallHeavyHitterWatcher heavyHitterWatcher = sHeavyHitterWatcher; if (heavyHitterWatcher != null && callingUid != -1) { @@ -1340,9 +1348,9 @@ public class Binder implements IBinder { Trace.traceBegin(Trace.TRACE_TAG_AIDL, transactionTraceName); } - // TODO - this logic should not be in Java - it should be in native - // code in libbinder so that it works for all binder users. Further, - // this should not re-use flags. + // TODO(b/299353919) - this logic should not be in Java - it should be + // in native code in libbinder so that it works for all binder users. + // Further, this should not re-use flags. if ((flags & FLAG_COLLECT_NOTED_APP_OPS) != 0 && callingUid != -1) { AppOpsManager.startNotedAppOpsCollection(callingUid); try { diff --git a/core/java/android/os/BinderProxy.java b/core/java/android/os/BinderProxy.java index 1929a4d562d43a90c7463168fe412315b1b6b8f0..ada55325adede58d17d21172db2efa7188117434 100644 --- a/core/java/android/os/BinderProxy.java +++ b/core/java/android/os/BinderProxy.java @@ -227,7 +227,7 @@ public final class BinderProxy implements IBinder { Log.v(Binder.TAG, "BinderProxy map growth! bucket size = " + size + " total = " + totalSize); mWarnBucketSize += WARN_INCREMENT; - if (Build.IS_DEBUGGABLE && totalSize >= CRASH_AT_SIZE) { + if (totalSize >= CRASH_AT_SIZE) { // Use the number of uncleared entries to determine whether we should // really report a histogram and crash. We don't want to fundamentally // change behavior for a debuggable process, so we GC only if we are diff --git a/core/java/android/os/BugreportParams.java b/core/java/android/os/BugreportParams.java index 0456a33580cff1ce8ded9dd7f5e787ff18bf5c29..f10467f0760e449418739cecf1e47ae8a5159f07 100644 --- a/core/java/android/os/BugreportParams.java +++ b/core/java/android/os/BugreportParams.java @@ -18,6 +18,7 @@ package android.os; import android.annotation.IntDef; import android.annotation.SystemApi; +import android.annotation.TestApi; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -126,6 +127,13 @@ public final class BugreportParams { */ public static final int BUGREPORT_MODE_ONBOARDING = IDumpstate.BUGREPORT_MODE_ONBOARDING; + /** + * The maximum value of supported bugreport mode. + * @hide + */ + @TestApi + public static final int BUGREPORT_MODE_MAX_VALUE = BUGREPORT_MODE_ONBOARDING; + /** * Defines acceptable flags for customizing bugreport requests. * @hide diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index eb4717057145b96f303d54cbe1dfa52607959499..509c3b88441ee244023efcab2cd57c56068b2c01 100755 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -1560,7 +1560,7 @@ public class Build { String attestProp = getString( TextUtils.formatSimple("ro.product.%s_for_attestation", property)); return attestProp.equals(UNKNOWN) - ? getString(TextUtils.formatSimple("ro.product.vendor.%s", property)) : UNKNOWN; + ? getString(TextUtils.formatSimple("ro.product.vendor.%s", property)) : attestProp; } private static String[] getStringList(String property, String separator) { diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index 62d9c69565da2302415c6667f742bcf2cd46b061..c527cb5344c13b21c0b94bfb0e9bc16d218900de 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -16,6 +16,7 @@ package android.os; +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.AppGlobals; @@ -1953,6 +1954,23 @@ public final class Debug */ public static native long getPss(int pid, long[] outUssSwapPssRss, long[] outMemtrack); + /** + * Retrieves the RSS memory used by the process as given by the status file. + */ + @FlaggedApi(Flags.FLAG_REMOVE_APP_PROFILER_PSS_COLLECTION) + public static native long getRss(); + + /** + * Retrieves the RSS memory used by the process as given by the status file. Optionally supply a + * long array of up to 4 entries to retrieve the total memtrack reported size, memtrack + * graphics, memtrack gl, and memtrack other. + * + * @return The RSS memory usage, or 0 if retrieval failed (i.e. the PID is gone). + * @hide + */ + @FlaggedApi(Flags.FLAG_REMOVE_APP_PROFILER_PSS_COLLECTION) + public static native long getRss(int pid, long[] outMemtrack); + /** @hide */ public static final int MEMINFO_TOTAL = 0; /** @hide */ diff --git a/core/java/android/os/DropBoxManager.java b/core/java/android/os/DropBoxManager.java index 403f55ceb94a6b942606fe06573d30a7b5019bdc..cf35460575490a3586f2c1efcfd6238efa282dd3 100644 --- a/core/java/android/os/DropBoxManager.java +++ b/core/java/android/os/DropBoxManager.java @@ -364,7 +364,7 @@ public class DropBoxManager { } /** - * Checks any blacklists (set in system settings) to see whether a certain + * Checks any denylists (set in system settings) to see whether a certain * tag is allowed. Entries with disabled tags will be dropped immediately, * so you can save the work of actually constructing and sending the data. * diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java index af09a06627955f9df19f5933160783a80bf62da1..5b24dcacbf53e04ee66eb81a700a49164a8fe9a3 100644 --- a/core/java/android/os/FileUtils.java +++ b/core/java/android/os/FileUtils.java @@ -1294,32 +1294,30 @@ public final class FileUtils { * Round the given size of a storage device to a nice round power-of-two * value, such as 256MB or 32GB. This avoids showing weird values like * "29.5GB" in UI. - * - * Some storage devices are still using GiB (powers of 1024) over - * GB (powers of 1000) measurements and this method takes it into account. - * * Round ranges: * ... - * [256 GiB + 1; 512 GiB] -> 512 GB - * [512 GiB + 1; 1 TiB] -> 1 TB - * [1 TiB + 1; 2 TiB] -> 2 TB + * (128 GB; 256 GB] -> 256 GB + * (256 GB; 512 GB] -> 512 GB + * (512 GB; 1000 GB] -> 1000 GB + * (1000 GB; 2000 GB] -> 2000 GB + * ... * etc * * @hide */ public static long roundStorageSize(long size) { long val = 1; - long kiloPow = 1; - long kibiPow = 1; - while ((val * kibiPow) < size) { + long pow = 1; + while ((val * pow) < size) { val <<= 1; if (val > 512) { val = 1; - kibiPow *= 1024; - kiloPow *= 1000; + pow *= 1000; } } - return val * kiloPow; + + Log.d(TAG, String.format("Rounded bytes from %d to %d", size, val * pow)); + return val * pow; } private static long toBytes(long value, String unit) { diff --git a/core/java/android/os/INetworkManagementService.aidl b/core/java/android/os/INetworkManagementService.aidl index ed14652c0f0a24868bfd2d1e9b24c7aa1131bf8b..1a3dcee427d848cbc476a4629d1aeea51ec84679 100644 --- a/core/java/android/os/INetworkManagementService.aidl +++ b/core/java/android/os/INetworkManagementService.aidl @@ -126,50 +126,65 @@ interface INetworkManagementService /** * Returns true if IP forwarding is enabled */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "Use {@code android.net.INetd#ipfwdEnabled}") boolean getIpForwardingEnabled(); /** * Enables/Disables IP Forwarding */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "Avoid using this directly. Instead, enable tethering with " + + "{@code android.net.TetheringManager#startTethering}. See also " + + "{@code INetd#ipfwdEnableForwarding(String)}.") void setIpForwardingEnabled(boolean enabled); /** * Start tethering services with the specified dhcp server range * arg is a set of start end pairs defining the ranges. */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "{@code android.net.TetheringManager#startTethering}") void startTethering(in String[] dhcpRanges); /** * Stop currently running tethering services */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "{@code android.net.TetheringManager#stopTethering(int)}") void stopTethering(); /** * Returns true if tethering services are started */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "Generally track your own tethering requests. " + + "See also {@code android.net.INetd#tetherIsEnabled()}") boolean isTetheringStarted(); /** * Tethers the specified interface */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "Avoid using this directly. Instead, enable tethering with " + + "{@code android.net.TetheringManager#startTethering}. See also " + + "{@code com.android.net.module.util.NetdUtils#tetherInterface}.") void tetherInterface(String iface); /** * Untethers the specified interface */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "Avoid using this directly. Instead, disable " + + "tethering with {@code android.net.TetheringManager#stopTethering(int)}. " + + "See also {@code NetdUtils#untetherInterface}.") void untetherInterface(String iface); /** * Returns a list of currently tethered interfaces */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "{@code android.net.TetheringManager#getTetheredIfaces()}") String[] listTetheredInterfaces(); /** @@ -177,13 +192,17 @@ interface INetworkManagementService * The address and netmask of the external interface is used for * the NAT'ed network. */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "Avoid using this directly. Instead, enable tethering with " + + "{@code android.net.TetheringManager#startTethering}.") void enableNat(String internalInterface, String externalInterface); /** * Disables Network Address Translation between two interfaces. */ - @UnsupportedAppUsage + @UnsupportedAppUsage(maxTargetSdk = 34, trackingBug = 170729553, + publicAlternatives = "Avoid using this directly. Instead, disable tethering with " + + "{@code android.net.TetheringManager#stopTethering(int)}.") void disableNat(String internalInterface, String externalInterface); /** diff --git a/core/java/android/os/IVibratorManagerService.aidl b/core/java/android/os/IVibratorManagerService.aidl index 62753527929c3e63aa3ea46b26c8d49182de8fbd..f30dd20d708747129be09cfc4bec487b92d20d3e 100644 --- a/core/java/android/os/IVibratorManagerService.aidl +++ b/core/java/android/os/IVibratorManagerService.aidl @@ -36,4 +36,10 @@ interface IVibratorManagerService { void vibrate(int uid, int displayId, String opPkg, in CombinedVibration vibration, in VibrationAttributes attributes, String reason, IBinder token); void cancelVibrate(int usageFilter, IBinder token); + + // Async oneway APIs. + // There is no order guarantee with respect to the two-way APIs above like + // vibrate/isVibrating/cancel. + oneway void performHapticFeedback(int uid, int displayId, String opPkg, int constant, + boolean always, String reason, IBinder token); } diff --git a/core/java/android/os/LocaleList.java b/core/java/android/os/LocaleList.java index b74bb333deae6fe747a2ffb9c95abcaf6e80dbdf..82cdd280a0f3ca4a27c568171d56705d05f064ce 100644 --- a/core/java/android/os/LocaleList.java +++ b/core/java/android/os/LocaleList.java @@ -30,6 +30,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashSet; +import java.util.List; import java.util.Locale; /** @@ -150,6 +151,25 @@ public final class LocaleList implements Parcelable { return mStringRepresentation; } + /** + * Find the intersection between this LocaleList and another + * @return a String array of the Locales in both LocaleLists + * {@hide} + */ + @NonNull + public String[] getIntersection(@NonNull LocaleList other) { + List intersection = new ArrayList<>(); + for (Locale l1 : mList) { + for (Locale l2 : other.mList) { + if (matchesLanguageAndScript(l2, l1)) { + intersection.add(l1.toLanguageTag()); + break; + } + } + } + return intersection.toArray(new String[0]); + } + /** * Creates a new {@link LocaleList}. * diff --git a/core/java/android/os/OWNERS b/core/java/android/os/OWNERS index 6ef1dc0ec020df1b3c3a6d96a21e583d2e5b5734..8f7725ecaba00229dc712f3fde0b05d4af75c070 100644 --- a/core/java/android/os/OWNERS +++ b/core/java/android/os/OWNERS @@ -10,6 +10,7 @@ per-file PowerManagerInternal.java = michaelwr@google.com, santoscordon@google.c # BatteryStats per-file *BatteryConsumer* = file:/BATTERY_STATS_OWNERS per-file BatteryManager* = file:/BATTERY_STATS_OWNERS +per-file PowerMonitor* = file:/BATTERY_STATS_OWNERS per-file PowerComponents.java = file:/BATTERY_STATS_OWNERS per-file *Stats* = file:/BATTERY_STATS_OWNERS diff --git a/core/java/android/os/PowerComponents.java b/core/java/android/os/PowerComponents.java index 5dffa0a0ac3441328847ecada0ab2890d5a7eda1..9e5f5399301c22468c41993a44f739fa7d1ba159 100644 --- a/core/java/android/os/PowerComponents.java +++ b/core/java/android/os/PowerComponents.java @@ -461,9 +461,11 @@ class PowerComponents { private static final byte POWER_MODEL_UNINITIALIZED = -1; private final BatteryConsumer.BatteryConsumerData mData; + private final double mMinConsumedPowerThreshold; - Builder(BatteryConsumer.BatteryConsumerData data) { + Builder(BatteryConsumer.BatteryConsumerData data, double minConsumedPowerThreshold) { mData = data; + mMinConsumedPowerThreshold = minConsumedPowerThreshold; for (BatteryConsumer.Key[] keys : mData.layout.keys) { for (BatteryConsumer.Key key : keys) { if (key.mPowerModelColumnIndex != -1) { @@ -476,6 +478,9 @@ class PowerComponents { @NonNull public Builder setConsumedPower(BatteryConsumer.Key key, double componentPower, int powerModel) { + if (Math.abs(componentPower) < mMinConsumedPowerThreshold) { + componentPower = 0; + } mData.putDouble(key.mPowerColumnIndex, componentPower); if (key.mPowerModelColumnIndex != -1) { mData.putInt(key.mPowerModelColumnIndex, powerModel); @@ -491,6 +496,9 @@ class PowerComponents { */ @NonNull public Builder setConsumedPowerForCustomComponent(int componentId, double componentPower) { + if (Math.abs(componentPower) < mMinConsumedPowerThreshold) { + componentPower = 0; + } final int index = componentId - BatteryConsumer.FIRST_CUSTOM_POWER_COMPONENT_ID; if (index < 0 || index >= mData.layout.customPowerComponentCount) { throw new IllegalArgumentException( diff --git a/core/java/android/os/ServiceManager.java b/core/java/android/os/ServiceManager.java index b210c4644d7d6d3ce38b977669ee4998493fe1be..e96c24d677f12460b7b012fd4072f6b905f349b6 100644 --- a/core/java/android/os/ServiceManager.java +++ b/core/java/android/os/ServiceManager.java @@ -245,7 +245,7 @@ public final class ServiceManager { public static boolean isDeclared(@NonNull String name) { try { return getIServiceManager().isDeclared(name); - } catch (RemoteException e) { + } catch (RemoteException | SecurityException e) { Log.e(TAG, "error in isDeclared", e); return false; } diff --git a/core/java/android/os/SystemVibrator.java b/core/java/android/os/SystemVibrator.java index bf72b1d7a035f354f5e83d94aeed9e2263a61e87..04c257b92e29577988db154eec1db6d4bea20f63 100644 --- a/core/java/android/os/SystemVibrator.java +++ b/core/java/android/os/SystemVibrator.java @@ -18,26 +18,19 @@ package android.os; import android.annotation.CallbackExecutor; import android.annotation.NonNull; -import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; -import android.hardware.vibrator.IVibrator; +import android.os.vibrator.VibratorInfoFactory; import android.util.ArrayMap; import android.util.Log; -import android.util.Range; -import android.util.Slog; import android.util.SparseArray; -import android.util.SparseBooleanArray; -import android.util.SparseIntArray; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import java.util.ArrayList; -import java.util.Arrays; import java.util.Objects; import java.util.concurrent.Executor; -import java.util.function.Function; /** * Vibrator implementation that controls the main system vibrator. @@ -69,7 +62,7 @@ public class SystemVibrator extends Vibrator { } @Override - protected VibratorInfo getInfo() { + public VibratorInfo getInfo() { synchronized (mLock) { if (mVibratorInfo != null) { return mVibratorInfo; @@ -82,7 +75,7 @@ public class SystemVibrator extends Vibrator { if (vibratorIds.length == 0) { // It is known that the device has no vibrator, so cache and return info that // reflects the lack of support for effects/primitives. - return mVibratorInfo = new NoVibratorInfo(); + return mVibratorInfo = VibratorInfo.EMPTY_VIBRATOR_INFO; } VibratorInfo[] vibratorInfos = new VibratorInfo[vibratorIds.length]; for (int i = 0; i < vibratorIds.length; i++) { @@ -96,12 +89,7 @@ public class SystemVibrator extends Vibrator { } vibratorInfos[i] = vibrator.getInfo(); } - if (vibratorInfos.length == 1) { - // Device has a single vibrator info, cache and return successfully loaded info. - return mVibratorInfo = new VibratorInfo(/* id= */ -1, vibratorInfos[0]); - } - // Device has multiple vibrators, generate a single info representing all of them. - return mVibratorInfo = new MultiVibratorInfo(vibratorInfos); + return mVibratorInfo = VibratorInfoFactory.create(/* id= */ -1, vibratorInfos); } } @@ -217,6 +205,15 @@ public class SystemVibrator extends Vibrator { mVibratorManager.vibrate(uid, opPkg, combinedEffect, reason, attributes); } + @Override + public void performHapticFeedback(int constant, boolean always, String reason) { + if (mVibratorManager == null) { + Log.w(TAG, "Failed to perform haptic feedback; no vibrator manager."); + return; + } + mVibratorManager.performHapticFeedback(constant, always, reason); + } + @Override public void cancel() { if (mVibratorManager == null) { @@ -274,296 +271,6 @@ public class SystemVibrator extends Vibrator { } } - /** - * Represents a device with no vibrator as a single {@link VibratorInfo}. - * - * @hide - */ - @VisibleForTesting - public static class NoVibratorInfo extends VibratorInfo { - public NoVibratorInfo() { - // Use empty arrays to indicate no support, while null would indicate support unknown. - super(/* id= */ -1, - /* capabilities= */ 0, - /* supportedEffects= */ new SparseBooleanArray(), - /* supportedBraking= */ new SparseBooleanArray(), - /* supportedPrimitives= */ new SparseIntArray(), - /* primitiveDelayMax= */ 0, - /* compositionSizeMax= */ 0, - /* pwlePrimitiveDurationMax= */ 0, - /* pwleSizeMax= */ 0, - /* qFactor= */ Float.NaN, - new FrequencyProfile(/* resonantFrequencyHz= */ Float.NaN, - /* minFrequencyHz= */ Float.NaN, - /* frequencyResolutionHz= */ Float.NaN, - /* maxAmplitudes= */ null)); - } - } - - /** - * Represents multiple vibrator information as a single {@link VibratorInfo}. - * - *

    This uses an intersection of all vibrators to decide the capabilities and effect/primitive - * support. - * - * @hide - */ - @VisibleForTesting - public static class MultiVibratorInfo extends VibratorInfo { - // Epsilon used for float comparison applied in calculations for the merged info. - private static final float EPSILON = 1e-5f; - - public MultiVibratorInfo(VibratorInfo[] vibrators) { - // Need to use an extra constructor to share the computation in super initialization. - this(vibrators, frequencyProfileIntersection(vibrators)); - } - - private MultiVibratorInfo(VibratorInfo[] vibrators, - VibratorInfo.FrequencyProfile mergedProfile) { - super(/* id= */ -1, - capabilitiesIntersection(vibrators, mergedProfile.isEmpty()), - supportedEffectsIntersection(vibrators), - supportedBrakingIntersection(vibrators), - supportedPrimitivesAndDurationsIntersection(vibrators), - integerLimitIntersection(vibrators, VibratorInfo::getPrimitiveDelayMax), - integerLimitIntersection(vibrators, VibratorInfo::getCompositionSizeMax), - integerLimitIntersection(vibrators, VibratorInfo::getPwlePrimitiveDurationMax), - integerLimitIntersection(vibrators, VibratorInfo::getPwleSizeMax), - floatPropertyIntersection(vibrators, VibratorInfo::getQFactor), - mergedProfile); - } - - private static int capabilitiesIntersection(VibratorInfo[] infos, - boolean frequencyProfileIsEmpty) { - int intersection = ~0; - for (VibratorInfo info : infos) { - intersection &= info.getCapabilities(); - } - if (frequencyProfileIsEmpty) { - // Revoke frequency control if the merged frequency profile ended up empty. - intersection &= ~IVibrator.CAP_FREQUENCY_CONTROL; - } - return intersection; - } - - @Nullable - private static SparseBooleanArray supportedBrakingIntersection(VibratorInfo[] infos) { - for (VibratorInfo info : infos) { - if (!info.isBrakingSupportKnown()) { - // If one vibrator support is unknown, then the intersection is also unknown. - return null; - } - } - - SparseBooleanArray intersection = new SparseBooleanArray(); - SparseBooleanArray firstVibratorBraking = infos[0].getSupportedBraking(); - - brakingIdLoop: - for (int i = 0; i < firstVibratorBraking.size(); i++) { - int brakingId = firstVibratorBraking.keyAt(i); - if (!firstVibratorBraking.valueAt(i)) { - // The first vibrator already doesn't support this braking, so skip it. - continue brakingIdLoop; - } - - for (int j = 1; j < infos.length; j++) { - if (!infos[j].hasBrakingSupport(brakingId)) { - // One vibrator doesn't support this braking, so the intersection doesn't. - continue brakingIdLoop; - } - } - - intersection.put(brakingId, true); - } - - return intersection; - } - - @Nullable - private static SparseBooleanArray supportedEffectsIntersection(VibratorInfo[] infos) { - for (VibratorInfo info : infos) { - if (!info.isEffectSupportKnown()) { - // If one vibrator support is unknown, then the intersection is also unknown. - return null; - } - } - - SparseBooleanArray intersection = new SparseBooleanArray(); - SparseBooleanArray firstVibratorEffects = infos[0].getSupportedEffects(); - - effectIdLoop: - for (int i = 0; i < firstVibratorEffects.size(); i++) { - int effectId = firstVibratorEffects.keyAt(i); - if (!firstVibratorEffects.valueAt(i)) { - // The first vibrator already doesn't support this effect, so skip it. - continue effectIdLoop; - } - - for (int j = 1; j < infos.length; j++) { - if (infos[j].isEffectSupported(effectId) != VIBRATION_EFFECT_SUPPORT_YES) { - // One vibrator doesn't support this effect, so the intersection doesn't. - continue effectIdLoop; - } - } - - intersection.put(effectId, true); - } - - return intersection; - } - - @NonNull - private static SparseIntArray supportedPrimitivesAndDurationsIntersection( - VibratorInfo[] infos) { - SparseIntArray intersection = new SparseIntArray(); - SparseIntArray firstVibratorPrimitives = infos[0].getSupportedPrimitives(); - - primitiveIdLoop: - for (int i = 0; i < firstVibratorPrimitives.size(); i++) { - int primitiveId = firstVibratorPrimitives.keyAt(i); - int primitiveDuration = firstVibratorPrimitives.valueAt(i); - if (primitiveDuration == 0) { - // The first vibrator already doesn't support this primitive, so skip it. - continue primitiveIdLoop; - } - - for (int j = 1; j < infos.length; j++) { - int vibratorPrimitiveDuration = infos[j].getPrimitiveDuration(primitiveId); - if (vibratorPrimitiveDuration == 0) { - // One vibrator doesn't support this primitive, so the intersection doesn't. - continue primitiveIdLoop; - } else { - // The primitive vibration duration is the maximum among all vibrators. - primitiveDuration = Math.max(primitiveDuration, vibratorPrimitiveDuration); - } - } - - intersection.put(primitiveId, primitiveDuration); - } - return intersection; - } - - private static int integerLimitIntersection(VibratorInfo[] infos, - Function propertyGetter) { - int limit = 0; // Limit 0 means unlimited - for (VibratorInfo info : infos) { - int vibratorLimit = propertyGetter.apply(info); - if ((limit == 0) || (vibratorLimit > 0 && vibratorLimit < limit)) { - // This vibrator is limited and intersection is unlimited or has a larger limit: - // use smaller limit here for the intersection. - limit = vibratorLimit; - } - } - return limit; - } - - private static float floatPropertyIntersection(VibratorInfo[] infos, - Function propertyGetter) { - float property = propertyGetter.apply(infos[0]); - if (Float.isNaN(property)) { - // If one vibrator is undefined then the intersection is undefined. - return Float.NaN; - } - for (int i = 1; i < infos.length; i++) { - if (Float.compare(property, propertyGetter.apply(infos[i])) != 0) { - // If one vibrator has a different value then the intersection is undefined. - return Float.NaN; - } - } - return property; - } - - @NonNull - private static FrequencyProfile frequencyProfileIntersection(VibratorInfo[] infos) { - float freqResolution = floatPropertyIntersection(infos, - info -> info.getFrequencyProfile().getFrequencyResolutionHz()); - float resonantFreq = floatPropertyIntersection(infos, - VibratorInfo::getResonantFrequencyHz); - Range freqRange = frequencyRangeIntersection(infos, freqResolution); - - if ((freqRange == null) || Float.isNaN(freqResolution)) { - return new FrequencyProfile(resonantFreq, Float.NaN, freqResolution, null); - } - - int amplitudeCount = - Math.round(1 + (freqRange.getUpper() - freqRange.getLower()) / freqResolution); - float[] maxAmplitudes = new float[amplitudeCount]; - - // Use MAX_VALUE here to ensure that the FrequencyProfile constructor called with this - // will fail if the loop below is broken and do not replace filled values with actual - // vibrator measurements. - Arrays.fill(maxAmplitudes, Float.MAX_VALUE); - - for (VibratorInfo info : infos) { - Range vibratorFreqRange = info.getFrequencyProfile().getFrequencyRangeHz(); - float[] vibratorMaxAmplitudes = info.getFrequencyProfile().getMaxAmplitudes(); - int vibratorStartIdx = Math.round( - (freqRange.getLower() - vibratorFreqRange.getLower()) / freqResolution); - int vibratorEndIdx = vibratorStartIdx + maxAmplitudes.length - 1; - - if ((vibratorStartIdx < 0) || (vibratorEndIdx >= vibratorMaxAmplitudes.length)) { - Slog.w(TAG, "Error calculating the intersection of vibrator frequency" - + " profiles: attempted to fetch from vibrator " - + info.getId() + " max amplitude with bad index " + vibratorStartIdx); - return new FrequencyProfile(resonantFreq, Float.NaN, Float.NaN, null); - } - - for (int i = 0; i < maxAmplitudes.length; i++) { - maxAmplitudes[i] = Math.min(maxAmplitudes[i], - vibratorMaxAmplitudes[vibratorStartIdx + i]); - } - } - - return new FrequencyProfile(resonantFreq, freqRange.getLower(), - freqResolution, maxAmplitudes); - } - - @Nullable - private static Range frequencyRangeIntersection(VibratorInfo[] infos, - float frequencyResolution) { - Range firstRange = infos[0].getFrequencyProfile().getFrequencyRangeHz(); - if (firstRange == null) { - // If one vibrator is undefined then the intersection is undefined. - return null; - } - float intersectionLower = firstRange.getLower(); - float intersectionUpper = firstRange.getUpper(); - - // Generate the intersection of all vibrator supported ranges, making sure that both - // min supported frequencies are aligned w.r.t. the frequency resolution. - - for (int i = 1; i < infos.length; i++) { - Range vibratorRange = infos[i].getFrequencyProfile().getFrequencyRangeHz(); - if (vibratorRange == null) { - // If one vibrator is undefined then the intersection is undefined. - return null; - } - - if ((vibratorRange.getLower() >= intersectionUpper) - || (vibratorRange.getUpper() <= intersectionLower)) { - // If the range and intersection are disjoint then the intersection is undefined - return null; - } - - float frequencyDelta = Math.abs(intersectionLower - vibratorRange.getLower()); - if ((frequencyDelta % frequencyResolution) > EPSILON) { - // If the intersection is not aligned with one vibrator then it's undefined - return null; - } - - intersectionLower = Math.max(intersectionLower, vibratorRange.getLower()); - intersectionUpper = Math.min(intersectionUpper, vibratorRange.getUpper()); - } - - if ((intersectionUpper - intersectionLower) < frequencyResolution) { - // If the intersection is empty then it's undefined. - return null; - } - - return Range.create(intersectionLower, intersectionUpper); - } - } - /** * Listener for all vibrators state change. * diff --git a/core/java/android/os/SystemVibratorManager.java b/core/java/android/os/SystemVibratorManager.java index eb2a712c85752a08156bbf7f7f5c1b9c6c25fb9c..ee90834c15ef664e5bc3aebeb3c2c41fa74cde40 100644 --- a/core/java/android/os/SystemVibratorManager.java +++ b/core/java/android/os/SystemVibratorManager.java @@ -144,6 +144,21 @@ public class SystemVibratorManager extends VibratorManager { } } + @Override + public void performHapticFeedback(int constant, boolean always, String reason) { + if (mService == null) { + Log.w(TAG, "Failed to perform haptic feedback; no vibrator manager service."); + return; + } + try { + mService.performHapticFeedback( + Process.myUid(), mContext.getAssociatedDisplayId(), mPackageName, constant, + always, reason, mToken); + } catch (RemoteException e) { + Log.w(TAG, "Failed to perform haptic feedback.", e); + } + } + @Override public void cancel() { cancelVibration(VibrationAttributes.USAGE_FILTER_MATCH_ALL); @@ -194,7 +209,7 @@ public class SystemVibratorManager extends VibratorManager { } @Override - protected VibratorInfo getInfo() { + public VibratorInfo getInfo() { return mVibratorInfo; } @@ -227,6 +242,11 @@ public class SystemVibratorManager extends VibratorManager { SystemVibratorManager.this.vibrate(uid, opPkg, combined, reason, attributes); } + @Override + public void performHapticFeedback(int effectId, boolean always, String reason) { + SystemVibratorManager.this.performHapticFeedback(effectId, always, reason); + } + @Override public void cancel() { SystemVibratorManager.this.cancel(); diff --git a/core/java/android/os/UidBatteryConsumer.java b/core/java/android/os/UidBatteryConsumer.java index 103452d255a7770990339eb9b25b16e7185277dd..03a1b6f7fe016a1ba295a25121870879b7aade22 100644 --- a/core/java/android/os/UidBatteryConsumer.java +++ b/core/java/android/os/UidBatteryConsumer.java @@ -207,17 +207,18 @@ public final class UidBatteryConsumer extends BatteryConsumer { private String mPackageWithHighestDrain = PACKAGE_NAME_UNINITIALIZED; private boolean mExcludeFromBatteryUsageStats; - public Builder(BatteryConsumerData data, @NonNull BatteryStats.Uid batteryStatsUid) { - this(data, batteryStatsUid, batteryStatsUid.getUid()); + public Builder(BatteryConsumerData data, @NonNull BatteryStats.Uid batteryStatsUid, + double minConsumedPowerThreshold) { + this(data, batteryStatsUid, batteryStatsUid.getUid(), minConsumedPowerThreshold); } - public Builder(BatteryConsumerData data, int uid) { - this(data, null, uid); + public Builder(BatteryConsumerData data, int uid, double minConsumedPowerThreshold) { + this(data, null, uid, minConsumedPowerThreshold); } private Builder(BatteryConsumerData data, @Nullable BatteryStats.Uid batteryStatsUid, - int uid) { - super(data, CONSUMER_TYPE_UID); + int uid, double minConsumedPowerThreshold) { + super(data, CONSUMER_TYPE_UID, minConsumedPowerThreshold); mBatteryStatsUid = batteryStatsUid; mUid = uid; mIsVirtualUid = mUid == Process.SDK_SANDBOX_VIRTUAL_UID; diff --git a/core/java/android/os/UserBatteryConsumer.java b/core/java/android/os/UserBatteryConsumer.java index 6b4a5cfc836f5c4d89d15444393aa0294f7e9855..a2ff078263ca9eabf0102f6d4be4444ac147bd3c 100644 --- a/core/java/android/os/UserBatteryConsumer.java +++ b/core/java/android/os/UserBatteryConsumer.java @@ -107,8 +107,8 @@ public class UserBatteryConsumer extends BatteryConsumer { public static final class Builder extends BaseBuilder { private List mUidBatteryConsumers; - Builder(BatteryConsumerData data, int userId) { - super(data, CONSUMER_TYPE_USER); + Builder(BatteryConsumerData data, int userId, double minConsumedPowerThreshold) { + super(data, CONSUMER_TYPE_USER, minConsumedPowerThreshold); data.putLong(COLUMN_INDEX_USER_ID, userId); } diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java index d8cf4ded79e8f82c29c06e0067750a5fda9e2f19..80b7d40c14c513010c22a82413aa674e02ea2c3e 100644 --- a/core/java/android/os/UserManager.java +++ b/core/java/android/os/UserManager.java @@ -1001,6 +1001,24 @@ public class UserManager { */ public static final String DISALLOW_ADD_CLONE_PROFILE = "no_add_clone_profile"; + /** + * Specifies if a user is disallowed from creating a private profile. + *

    The default value for an unmanaged user is false. + * For users with a device owner set, the default is true. + * + *

    Holders of the permission + * {@link android.Manifest.permission#MANAGE_DEVICE_POLICY_PROFILES} + * can set this restriction using the DevicePolicyManager APIs mentioned below. + * + *

    Key for user restrictions. + *

    Type: Boolean + * @see DevicePolicyManager#addUserRestriction(ComponentName, String) + * @see DevicePolicyManager#clearUserRestriction(ComponentName, String) + * @see #getUserRestrictions() + * @hide + */ + public static final String DISALLOW_ADD_PRIVATE_PROFILE = "no_add_private_profile"; + /** * Specifies if a user is disallowed from disabling application verification. The default * value is false. @@ -1831,6 +1849,31 @@ public class UserManager { */ public static final String DISALLOW_ULTRA_WIDEBAND_RADIO = "no_ultra_wideband_radio"; + /** + * This user restriction specifies if Near-field communication is disallowed on the device. If + * Near-field communication is disallowed it cannot be turned on via Settings. + * + *

    This restriction can only be set by a device owner or a profile owner of an + * organization-owned managed profile on the parent profile. + * In both cases, the restriction applies globally on the device and will turn off the + * Near-field communication radio if it's currently on and prevent the radio from being turned + * on in the future. + * + *

    + * Near-field communication (NFC) is a radio technology that allows two devices (like your phone + * and a payments terminal) to communicate with each other when they're close together. + * + *

    Default is false. + * + *

    Key for user restrictions. + *

    Type: Boolean + * @see DevicePolicyManager#addUserRestriction(ComponentName, String) + * @see DevicePolicyManager#clearUserRestriction(ComponentName, String) + * @see #getUserRestrictions() + */ + public static final String DISALLOW_NEAR_FIELD_COMMUNICATION_RADIO = + "no_near_field_communication_radio"; + /** * List of key values that can be passed into the various user restriction related methods * in {@link UserManager} & {@link DevicePolicyManager}. @@ -1870,6 +1913,7 @@ public class UserManager { DISALLOW_ADD_USER, DISALLOW_ADD_MANAGED_PROFILE, DISALLOW_ADD_CLONE_PROFILE, + DISALLOW_ADD_PRIVATE_PROFILE, ENSURE_VERIFY_APPS, DISALLOW_CONFIG_CELL_BROADCASTS, DISALLOW_CONFIG_MOBILE_NETWORKS, @@ -1915,6 +1959,7 @@ public class UserManager { DISALLOW_CELLULAR_2G, DISALLOW_ULTRA_WIDEBAND_RADIO, DISALLOW_GRANT_ADMIN, + DISALLOW_NEAR_FIELD_COMMUNICATION_RADIO, }) @Retention(RetentionPolicy.SOURCE) public @interface UserRestrictionKey {} @@ -4617,26 +4662,6 @@ public class UserManager { /* excludePreCreated= */ true); } - /** - * Returns number of full users on the device. - * @hide - */ - @RequiresPermission(anyOf = { - android.Manifest.permission.MANAGE_USERS, - android.Manifest.permission.CREATE_USERS - }) - public int getFullUserCount() { - List users = getUsers(/* excludePartial= */ true, /* excludeDying= */ true, - /* excludePreCreated= */ true); - int count = 0; - for (UserInfo user : users) { - if (user.isFull()) { - count++; - } - } - return count; - } - /** * @deprecated use {@link #getAliveUsers()} for {@code getUsers(true)}, or * {@link #getUsers()} for @code getUsers(false)}. diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java index b24b45d11c3a17256ca698a3fc0a9fbd82d996ae..08b32bf2b9e0320db67a1f3f10f97af4adde4e50 100644 --- a/core/java/android/os/VibrationEffect.java +++ b/core/java/android/os/VibrationEffect.java @@ -525,14 +525,14 @@ public abstract class VibrationEffect implements Parcelable { public abstract long getDuration(); /** - * Checks if a given {@link Vibrator} can play this effect as intended. + * Checks if a vibrator with a given {@link VibratorInfo} can play this effect as intended. * - *

    See @link Vibrator#areVibrationFeaturesSupported(VibrationEffect)} for more information - * about what counts as supported by a vibrator, and what counts as not. + *

    See {@link VibratorInfo#areVibrationFeaturesSupported(VibrationEffect)} for more + * information about what counts as supported by a vibrator, and what counts as not. * * @hide */ - public abstract boolean areVibrationFeaturesSupported(@NonNull Vibrator vibrator); + public abstract boolean areVibrationFeaturesSupported(@NonNull VibratorInfo vibratorInfo); /** * Returns true if this effect could represent a touch haptic feedback. @@ -813,9 +813,9 @@ public abstract class VibrationEffect implements Parcelable { /** @hide */ @Override - public boolean areVibrationFeaturesSupported(@NonNull Vibrator vibrator) { + public boolean areVibrationFeaturesSupported(@NonNull VibratorInfo vibratorInfo) { for (VibrationEffectSegment segment : mSegments) { - if (!segment.areVibrationFeaturesSupported(vibrator)) { + if (!segment.areVibrationFeaturesSupported(vibratorInfo)) { return false; } } diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java index 4e852e333ec85693e3f42992ec9eaa4454da8cba..99c9925d9cb7a3d317b7bd373fe6b2d46bba577f 100644 --- a/core/java/android/os/Vibrator.java +++ b/core/java/android/os/Vibrator.java @@ -153,7 +153,7 @@ public abstract class Vibrator { * * @hide */ - protected VibratorInfo getInfo() { + public VibratorInfo getInfo() { return VibratorInfo.EMPTY_VIBRATOR_INFO; } @@ -216,9 +216,7 @@ public abstract class Vibrator { */ @TestApi public boolean hasFrequencyControl() { - // We currently can only control frequency of the vibration using the compose PWLE method. - return getInfo().hasCapability( - IVibrator.CAP_FREQUENCY_CONTROL | IVibrator.CAP_COMPOSE_PWLE_EFFECTS); + return getInfo().hasFrequencyControl(); } /** @@ -240,7 +238,7 @@ public abstract class Vibrator { * @hide */ public boolean areVibrationFeaturesSupported(@NonNull VibrationEffect effect) { - return effect.areVibrationFeaturesSupported(this); + return getInfo().areVibrationFeaturesSupported(effect); } /** @@ -511,6 +509,28 @@ public abstract class Vibrator { public abstract void vibrate(int uid, String opPkg, @NonNull VibrationEffect vibe, String reason, @NonNull VibrationAttributes attributes); + /** + * Performs a haptic feedback. + * + *

    A haptic feedback is a short vibration feedback. The type of feedback is identified via + * the {@code constant}, which should be one of the effect constants provided in + * {@link HapticFeedbackConstants}. The haptic feedback provided for a given effect ID is + * consistent across all usages on the same device. + * + * @param constant the ID for the haptic feedback. This should be one of the constants defined + * in {@link HapticFeedbackConstants}. + * @param always {@code true} if the haptic feedback should be played regardless of the user + * vibration intensity settings applicable to the corresponding vibration. + * {@code false} if the vibration for the haptic feedback should respect the applicable + * vibration intensity settings. + * @param reason the reason for this haptic feedback. + * + * @hide + */ + public void performHapticFeedback(int constant, boolean always, String reason) { + Log.w(TAG, "performHapticFeedback is not supported"); + } + /** * Query whether the vibrator natively supports the given effects. * diff --git a/core/java/android/os/VibratorInfo.java b/core/java/android/os/VibratorInfo.java index 02e685699398b277cec3827a2186e1fe97ed303d..4f8c24d1f905abfa0da300f8aec3d2a12a2e9f76 100644 --- a/core/java/android/os/VibratorInfo.java +++ b/core/java/android/os/VibratorInfo.java @@ -156,6 +156,16 @@ public class VibratorInfo implements Parcelable { return false; } VibratorInfo that = (VibratorInfo) o; + return mId == that.mId && equalContent(that); + } + + /** + * Returns {@code true} only if the properties and capabilities of the provided info, except for + * the ID, equals to this info. Returns {@code false} otherwise. + * + * @hide + */ + public boolean equalContent(VibratorInfo that) { int supportedPrimitivesCount = mSupportedPrimitives.size(); if (supportedPrimitivesCount != that.mSupportedPrimitives.size()) { return false; @@ -168,7 +178,7 @@ public class VibratorInfo implements Parcelable { return false; } } - return mId == that.mId && mCapabilities == that.mCapabilities + return mCapabilities == that.mCapabilities && mPrimitiveDelayMax == that.mPrimitiveDelayMax && mCompositionSizeMax == that.mCompositionSizeMax && mPwlePrimitiveDurationMax == that.mPwlePrimitiveDurationMax @@ -241,6 +251,17 @@ public class VibratorInfo implements Parcelable { return hasCapability(IVibrator.CAP_AMPLITUDE_CONTROL); } + /** + * Check whether the vibrator has frequency control. + * + * @return True if the hardware can control the frequency of the vibrations, otherwise false. + */ + public boolean hasFrequencyControl() { + // We currently can only control frequency of the vibration using the compose PWLE method. + return hasCapability( + IVibrator.CAP_FREQUENCY_CONTROL | IVibrator.CAP_COMPOSE_PWLE_EFFECTS); + } + /** * Returns a default value to be applied to composed PWLE effects for braking. * @@ -322,6 +343,23 @@ public class VibratorInfo implements Parcelable { && (mSupportedPrimitives.indexOfKey(primitiveId) >= 0); } + /** + * Query whether or not the vibrator supports all components of a given {@link VibrationEffect} + * (i.e. the vibrator can play the given effect as intended). + * + *

    See {@link Vibrator#areVibrationFeaturesSupported(VibrationEffect)} for more + * information on how the vibrator support is determined. + * + * @param effect the {@link VibrationEffect} to check if it is supported + * @return {@code true} if the vibrator can play the given {@code effect} as intended, + * {@code false} otherwise. + * + * @hide + */ + public boolean areVibrationFeaturesSupported(@NonNull VibrationEffect effect) { + return effect.areVibrationFeaturesSupported(this); + } + /** * Query the estimated duration of given primitive. * @@ -417,7 +455,8 @@ public class VibratorInfo implements Parcelable { return mFrequencyProfile; } - protected long getCapabilities() { + /** Returns a single int representing all the capabilities of the vibrator. */ + public long getCapabilities() { return mCapabilities; } diff --git a/core/java/android/os/VibratorManager.java b/core/java/android/os/VibratorManager.java index f506ef8955d44dc866aacba1c2260b5140d5768f..e0b6a9fd28f00527b3d20c46f83a8192acf4bfe0 100644 --- a/core/java/android/os/VibratorManager.java +++ b/core/java/android/os/VibratorManager.java @@ -35,7 +35,8 @@ import android.util.Log; public abstract class VibratorManager { private static final String TAG = "VibratorManager"; - private final String mPackageName; + /** @hide */ + protected final String mPackageName; /** * @hide to prevent subclassing from outside of the framework @@ -136,6 +137,21 @@ public abstract class VibratorManager { public abstract void vibrate(int uid, String opPkg, @NonNull CombinedVibration effect, String reason, @Nullable VibrationAttributes attributes); + /** + * Performs a haptic feedback. + * + * @param constant the ID of the requested haptic feedback. Should be one of the constants + * defined in {@link HapticFeedbackConstants}. + * @param always {@code true} if the haptic feedback should be played regardless of the user + * vibration intensity settings applicable to the corresponding vibration. + * {@code false} otherwise. + * @param reason the reason for this haptic feedback. + * @hide + */ + public void performHapticFeedback(int constant, boolean always, String reason) { + Log.w(TAG, "performHapticFeedback is not supported"); + } + /** * Turn all the vibrators off. */ diff --git a/core/java/android/os/flags.aconfig b/core/java/android/os/flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..febe6f719baf01743a1b309f4d5f76ed37df47e5 --- /dev/null +++ b/core/java/android/os/flags.aconfig @@ -0,0 +1,22 @@ +package: "android.os" + +flag { + name: "disallow_cellular_null_ciphers_restriction" + namespace: "cellular_security" + description: "Guards a new UserManager user restriction that admins can use to require cellular encryption on their managed devices." + bug: "276752881" +} + +flag { + name: "remove_app_profiler_pss_collection" + namespace: "android_platform_power_optimization" + description: "Replaces background PSS collection in AppProfiler with RSS" + bug: "297542292" +} + +flag { + name: "allow_private_profile" + namespace: "private_profile" + description: "Guards a new Private Profile type in UserManager - everything from its setup to config to deletion." + bug: "299069460" +} diff --git a/core/java/android/os/storage/IStorageManager.aidl b/core/java/android/os/storage/IStorageManager.aidl index bc52744078ea26f07e44c24169c1c6fa718fc5c5..369a1932e437901d0b109d49fe730d8d69956c87 100644 --- a/core/java/android/os/storage/IStorageManager.aidl +++ b/core/java/android/os/storage/IStorageManager.aidl @@ -174,4 +174,5 @@ interface IStorageManager { boolean isAppIoBlocked(in String volumeUuid, int uid, int tid, int reason) = 95; void setCloudMediaProvider(in String authority) = 96; String getCloudMediaProvider() = 97; + long getInternalStorageBlockDeviceSize() = 98; } \ No newline at end of file diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java index 80dd48825ba7c02ec6f6426fb4f782c882ec5c83..ee387e7c284fc8f8e4c1a7d81d3b1b3b9fa0616b 100644 --- a/core/java/android/os/storage/StorageManager.java +++ b/core/java/android/os/storage/StorageManager.java @@ -1358,6 +1358,15 @@ public class StorageManager { + Environment.getRootDirectory().getTotalSpace()); } + /** {@hide} */ + public long getInternalStorageBlockDeviceSize() { + try { + return mStorageManager.getInternalStorageBlockDeviceSize(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** {@hide} */ public void mkdirs(File file) { BlockGuard.getVmPolicy().onPathAccess(file.getAbsolutePath()); diff --git a/core/java/android/os/storage/StorageManagerInternal.java b/core/java/android/os/storage/StorageManagerInternal.java index 059bd846327cef620426c0ec8f3fbd619d23deb8..8961846728a6393709c55d2c149c4faf1c42c8e3 100644 --- a/core/java/android/os/storage/StorageManagerInternal.java +++ b/core/java/android/os/storage/StorageManagerInternal.java @@ -19,8 +19,12 @@ package android.os.storage; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; +import android.content.pm.UserInfo; +import android.os.IInstalld; import android.os.IVold; +import android.os.ParcelFileDescriptor; +import java.io.IOException; import java.util.List; import java.util.Set; @@ -169,4 +173,32 @@ public abstract class StorageManagerInternal { */ public abstract void registerCloudProviderChangeListener( @NonNull CloudProviderChangeListener listener); + + /** + * Prepares user data directories before moving storage or apps. This is required as adoptable + * storage unlock is tied to the prepare user data and storage needs to be unlocked before + * performing any operations on it. This will also create user data directories before + * initiating the move operations, which essential for ensuring the directories to have correct + * SELinux labels and permissions. + * + * @param fromVolumeUuid the source volume UUID from which content needs to be transferred + * @param toVolumeUuid the destination volume UUID to which contents are to be transferred + * @param users a list of users for whom to prepare storage + */ + public abstract void prepareUserStorageForMove(String fromVolumeUuid, String toVolumeUuid, + List users); + + /** + * A proxy call to the corresponding method in Installer. + * @see com.android.server.pm.Installer#createFsveritySetupAuthToken() + */ + public abstract IInstalld.IFsveritySetupAuthToken createFsveritySetupAuthToken( + ParcelFileDescriptor authFd, int appUid, @UserIdInt int userId) throws IOException; + + /** + * A proxy call to the corresponding method in Installer. + * @see com.android.server.pm.Installer#enableFsverity() + */ + public abstract int enableFsverity(IInstalld.IFsveritySetupAuthToken authToken, String filePath, + String packageName) throws IOException; } diff --git a/core/java/android/os/vibrator/MultiVibratorInfo.java b/core/java/android/os/vibrator/MultiVibratorInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..5f32731292131cb14ca1a6f019588be69e37ee5b --- /dev/null +++ b/core/java/android/os/vibrator/MultiVibratorInfo.java @@ -0,0 +1,294 @@ +/* + * Copyright 2023 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.os.vibrator; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.hardware.vibrator.IVibrator; +import android.os.Vibrator; +import android.os.VibratorInfo; +import android.util.Range; +import android.util.Slog; +import android.util.SparseBooleanArray; +import android.util.SparseIntArray; + +import java.util.Arrays; +import java.util.function.Function; + +/** + * Represents multiple vibrator information as a single {@link VibratorInfo}. + * + *

    This uses an intersection of all vibrators to decide the capabilities and effect/primitive + * support. + * + * @hide + */ +public final class MultiVibratorInfo extends VibratorInfo { + private static final String TAG = "MultiVibratorInfo"; + + // Epsilon used for float comparison applied in calculations for the merged info. + private static final float EPSILON = 1e-5f; + + public MultiVibratorInfo(int id, VibratorInfo[] vibrators) { + this(id, vibrators, frequencyProfileIntersection(vibrators)); + } + + private MultiVibratorInfo( + int id, VibratorInfo[] vibrators, VibratorInfo.FrequencyProfile mergedProfile) { + super(id, + capabilitiesIntersection(vibrators, mergedProfile.isEmpty()), + supportedEffectsIntersection(vibrators), + supportedBrakingIntersection(vibrators), + supportedPrimitivesAndDurationsIntersection(vibrators), + integerLimitIntersection(vibrators, VibratorInfo::getPrimitiveDelayMax), + integerLimitIntersection(vibrators, VibratorInfo::getCompositionSizeMax), + integerLimitIntersection(vibrators, VibratorInfo::getPwlePrimitiveDurationMax), + integerLimitIntersection(vibrators, VibratorInfo::getPwleSizeMax), + floatPropertyIntersection(vibrators, VibratorInfo::getQFactor), + mergedProfile); + } + + private static int capabilitiesIntersection(VibratorInfo[] infos, + boolean frequencyProfileIsEmpty) { + int intersection = ~0; + for (VibratorInfo info : infos) { + intersection &= info.getCapabilities(); + } + if (frequencyProfileIsEmpty) { + // Revoke frequency control if the merged frequency profile ended up empty. + intersection &= ~IVibrator.CAP_FREQUENCY_CONTROL; + } + return intersection; + } + + @Nullable + private static SparseBooleanArray supportedBrakingIntersection(VibratorInfo[] infos) { + for (VibratorInfo info : infos) { + if (!info.isBrakingSupportKnown()) { + // If one vibrator support is unknown, then the intersection is also unknown. + return null; + } + } + + SparseBooleanArray intersection = new SparseBooleanArray(); + SparseBooleanArray firstVibratorBraking = infos[0].getSupportedBraking(); + + brakingIdLoop: + for (int i = 0; i < firstVibratorBraking.size(); i++) { + int brakingId = firstVibratorBraking.keyAt(i); + if (!firstVibratorBraking.valueAt(i)) { + // The first vibrator already doesn't support this braking, so skip it. + continue brakingIdLoop; + } + + for (int j = 1; j < infos.length; j++) { + if (!infos[j].hasBrakingSupport(brakingId)) { + // One vibrator doesn't support this braking, so the intersection doesn't. + continue brakingIdLoop; + } + } + + intersection.put(brakingId, true); + } + + return intersection; + } + + @Nullable + private static SparseBooleanArray supportedEffectsIntersection(VibratorInfo[] infos) { + for (VibratorInfo info : infos) { + if (!info.isEffectSupportKnown()) { + // If one vibrator support is unknown, then the intersection is also unknown. + return null; + } + } + + SparseBooleanArray intersection = new SparseBooleanArray(); + SparseBooleanArray firstVibratorEffects = infos[0].getSupportedEffects(); + + effectIdLoop: + for (int i = 0; i < firstVibratorEffects.size(); i++) { + int effectId = firstVibratorEffects.keyAt(i); + if (!firstVibratorEffects.valueAt(i)) { + // The first vibrator already doesn't support this effect, so skip it. + continue effectIdLoop; + } + + for (int j = 1; j < infos.length; j++) { + if (infos[j].isEffectSupported(effectId) != Vibrator.VIBRATION_EFFECT_SUPPORT_YES) { + // One vibrator doesn't support this effect, so the intersection doesn't. + continue effectIdLoop; + } + } + + intersection.put(effectId, true); + } + + return intersection; + } + + @NonNull + private static SparseIntArray supportedPrimitivesAndDurationsIntersection( + VibratorInfo[] infos) { + SparseIntArray intersection = new SparseIntArray(); + SparseIntArray firstVibratorPrimitives = infos[0].getSupportedPrimitives(); + + primitiveIdLoop: + for (int i = 0; i < firstVibratorPrimitives.size(); i++) { + int primitiveId = firstVibratorPrimitives.keyAt(i); + int primitiveDuration = firstVibratorPrimitives.valueAt(i); + if (primitiveDuration == 0) { + // The first vibrator already doesn't support this primitive, so skip it. + continue primitiveIdLoop; + } + + for (int j = 1; j < infos.length; j++) { + int vibratorPrimitiveDuration = infos[j].getPrimitiveDuration(primitiveId); + if (vibratorPrimitiveDuration == 0) { + // One vibrator doesn't support this primitive, so the intersection doesn't. + continue primitiveIdLoop; + } else { + // The primitive vibration duration is the maximum among all vibrators. + primitiveDuration = Math.max(primitiveDuration, vibratorPrimitiveDuration); + } + } + + intersection.put(primitiveId, primitiveDuration); + } + return intersection; + } + + private static int integerLimitIntersection(VibratorInfo[] infos, + Function propertyGetter) { + int limit = 0; // Limit 0 means unlimited + for (VibratorInfo info : infos) { + int vibratorLimit = propertyGetter.apply(info); + if ((limit == 0) || (vibratorLimit > 0 && vibratorLimit < limit)) { + // This vibrator is limited and intersection is unlimited or has a larger limit: + // use smaller limit here for the intersection. + limit = vibratorLimit; + } + } + return limit; + } + + private static float floatPropertyIntersection(VibratorInfo[] infos, + Function propertyGetter) { + float property = propertyGetter.apply(infos[0]); + if (Float.isNaN(property)) { + // If one vibrator is undefined then the intersection is undefined. + return Float.NaN; + } + for (int i = 1; i < infos.length; i++) { + if (Float.compare(property, propertyGetter.apply(infos[i])) != 0) { + // If one vibrator has a different value then the intersection is undefined. + return Float.NaN; + } + } + return property; + } + + @NonNull + private static FrequencyProfile frequencyProfileIntersection(VibratorInfo[] infos) { + float freqResolution = floatPropertyIntersection(infos, + info -> info.getFrequencyProfile().getFrequencyResolutionHz()); + float resonantFreq = floatPropertyIntersection(infos, + VibratorInfo::getResonantFrequencyHz); + Range freqRange = frequencyRangeIntersection(infos, freqResolution); + + if ((freqRange == null) || Float.isNaN(freqResolution)) { + return new FrequencyProfile(resonantFreq, Float.NaN, freqResolution, null); + } + + int amplitudeCount = + Math.round(1 + (freqRange.getUpper() - freqRange.getLower()) / freqResolution); + float[] maxAmplitudes = new float[amplitudeCount]; + + // Use MAX_VALUE here to ensure that the FrequencyProfile constructor called with this + // will fail if the loop below is broken and do not replace filled values with actual + // vibrator measurements. + Arrays.fill(maxAmplitudes, Float.MAX_VALUE); + + for (VibratorInfo info : infos) { + Range vibratorFreqRange = info.getFrequencyProfile().getFrequencyRangeHz(); + float[] vibratorMaxAmplitudes = info.getFrequencyProfile().getMaxAmplitudes(); + int vibratorStartIdx = Math.round( + (freqRange.getLower() - vibratorFreqRange.getLower()) / freqResolution); + int vibratorEndIdx = vibratorStartIdx + maxAmplitudes.length - 1; + + if ((vibratorStartIdx < 0) || (vibratorEndIdx >= vibratorMaxAmplitudes.length)) { + Slog.w(TAG, "Error calculating the intersection of vibrator frequency" + + " profiles: attempted to fetch from vibrator " + + info.getId() + " max amplitude with bad index " + vibratorStartIdx); + return new FrequencyProfile(resonantFreq, Float.NaN, Float.NaN, null); + } + + for (int i = 0; i < maxAmplitudes.length; i++) { + maxAmplitudes[i] = Math.min(maxAmplitudes[i], + vibratorMaxAmplitudes[vibratorStartIdx + i]); + } + } + + return new FrequencyProfile(resonantFreq, freqRange.getLower(), + freqResolution, maxAmplitudes); + } + + @Nullable + private static Range frequencyRangeIntersection(VibratorInfo[] infos, + float frequencyResolution) { + Range firstRange = infos[0].getFrequencyProfile().getFrequencyRangeHz(); + if (firstRange == null) { + // If one vibrator is undefined then the intersection is undefined. + return null; + } + float intersectionLower = firstRange.getLower(); + float intersectionUpper = firstRange.getUpper(); + + // Generate the intersection of all vibrator supported ranges, making sure that both + // min supported frequencies are aligned w.r.t. the frequency resolution. + + for (int i = 1; i < infos.length; i++) { + Range vibratorRange = infos[i].getFrequencyProfile().getFrequencyRangeHz(); + if (vibratorRange == null) { + // If one vibrator is undefined then the intersection is undefined. + return null; + } + + if ((vibratorRange.getLower() >= intersectionUpper) + || (vibratorRange.getUpper() <= intersectionLower)) { + // If the range and intersection are disjoint then the intersection is undefined + return null; + } + + float frequencyDelta = Math.abs(intersectionLower - vibratorRange.getLower()); + if ((frequencyDelta % frequencyResolution) > EPSILON) { + // If the intersection is not aligned with one vibrator then it's undefined + return null; + } + + intersectionLower = Math.max(intersectionLower, vibratorRange.getLower()); + intersectionUpper = Math.min(intersectionUpper, vibratorRange.getUpper()); + } + + if ((intersectionUpper - intersectionLower) < frequencyResolution) { + // If the intersection is empty then it's undefined. + return null; + } + + return Range.create(intersectionLower, intersectionUpper); + } +} diff --git a/core/java/android/os/vibrator/PrebakedSegment.java b/core/java/android/os/vibrator/PrebakedSegment.java index 42b6c2dae5eb420a5014e7d688f297c2cce7defa..a035092e314f73302b1b78a242462d0e08292290 100644 --- a/core/java/android/os/vibrator/PrebakedSegment.java +++ b/core/java/android/os/vibrator/PrebakedSegment.java @@ -23,6 +23,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.os.VibrationEffect; import android.os.Vibrator; +import android.os.VibratorInfo; import java.util.Objects; @@ -77,8 +78,8 @@ public final class PrebakedSegment extends VibrationEffectSegment { /** @hide */ @Override - public boolean areVibrationFeaturesSupported(@NonNull Vibrator vibrator) { - if (vibrator.areAllEffectsSupported(mEffectId) == Vibrator.VIBRATION_EFFECT_SUPPORT_YES) { + public boolean areVibrationFeaturesSupported(@NonNull VibratorInfo vibratorInfo) { + if (vibratorInfo.isEffectSupported(mEffectId) == Vibrator.VIBRATION_EFFECT_SUPPORT_YES) { return true; } if (!mFallback) { diff --git a/core/java/android/os/vibrator/PrimitiveSegment.java b/core/java/android/os/vibrator/PrimitiveSegment.java index c52a09ce69c79b68c20bbeb7529712c78a4707b7..95d97bfe4ad1749f354c70557f9c088fc5fba635 100644 --- a/core/java/android/os/vibrator/PrimitiveSegment.java +++ b/core/java/android/os/vibrator/PrimitiveSegment.java @@ -22,7 +22,7 @@ import android.annotation.TestApi; import android.os.Parcel; import android.os.Parcelable; import android.os.VibrationEffect; -import android.os.Vibrator; +import android.os.VibratorInfo; import com.android.internal.util.Preconditions; @@ -77,8 +77,8 @@ public final class PrimitiveSegment extends VibrationEffectSegment { /** @hide */ @Override - public boolean areVibrationFeaturesSupported(@NonNull Vibrator vibrator) { - return vibrator.areAllPrimitivesSupported(mPrimitiveId); + public boolean areVibrationFeaturesSupported(@NonNull VibratorInfo vibratorInfo) { + return vibratorInfo.isPrimitiveSupported(mPrimitiveId); } /** @hide */ diff --git a/core/java/android/os/vibrator/RampSegment.java b/core/java/android/os/vibrator/RampSegment.java index e997bcdbdb32f90459ea312cd07a3b5c48e81ad0..5f9d1024d9a588442f5603fbb3d4929d779a3896 100644 --- a/core/java/android/os/vibrator/RampSegment.java +++ b/core/java/android/os/vibrator/RampSegment.java @@ -20,7 +20,7 @@ import android.annotation.NonNull; import android.annotation.TestApi; import android.os.Parcel; import android.os.VibrationEffect; -import android.os.Vibrator; +import android.os.VibratorInfo; import com.android.internal.util.Preconditions; @@ -96,7 +96,7 @@ public final class RampSegment extends VibrationEffectSegment { /** @hide */ @Override - public boolean areVibrationFeaturesSupported(@NonNull Vibrator vibrator) { + public boolean areVibrationFeaturesSupported(@NonNull VibratorInfo vibratorInfo) { boolean areFeaturesSupported = true; // If the start/end frequencies are not the same, require frequency control since we need to // ramp up/down the frequency. @@ -104,7 +104,7 @@ public final class RampSegment extends VibrationEffectSegment { // If there is no frequency ramping, make sure that the one frequency used does not // require frequency control. || frequencyRequiresFrequencyControl(mStartFrequencyHz)) { - areFeaturesSupported &= vibrator.hasFrequencyControl(); + areFeaturesSupported &= vibratorInfo.hasFrequencyControl(); } // If the start/end amplitudes are not the same, require amplitude control since we need to // ramp up/down the amplitude. @@ -112,7 +112,7 @@ public final class RampSegment extends VibrationEffectSegment { // If there is no amplitude ramping, make sure that the amplitude used does not // require amplitude control. || amplitudeRequiresAmplitudeControl(mStartAmplitude)) { - areFeaturesSupported &= vibrator.hasAmplitudeControl(); + areFeaturesSupported &= vibratorInfo.hasAmplitudeControl(); } return areFeaturesSupported; } diff --git a/core/java/android/os/vibrator/StepSegment.java b/core/java/android/os/vibrator/StepSegment.java index a585aa866ed825f8bd16acfc04c12d687092bfb1..9576a5bba1f1084d4cca09fe263e7e5d200afaef 100644 --- a/core/java/android/os/vibrator/StepSegment.java +++ b/core/java/android/os/vibrator/StepSegment.java @@ -21,7 +21,7 @@ import android.annotation.TestApi; import android.os.Parcel; import android.os.Parcelable; import android.os.VibrationEffect; -import android.os.Vibrator; +import android.os.VibratorInfo; import com.android.internal.util.Preconditions; @@ -82,13 +82,13 @@ public final class StepSegment extends VibrationEffectSegment { /** @hide */ @Override - public boolean areVibrationFeaturesSupported(@NonNull Vibrator vibrator) { + public boolean areVibrationFeaturesSupported(@NonNull VibratorInfo vibratorInfo) { boolean areFeaturesSupported = true; if (frequencyRequiresFrequencyControl(mFrequencyHz)) { - areFeaturesSupported &= vibrator.hasFrequencyControl(); + areFeaturesSupported &= vibratorInfo.hasFrequencyControl(); } if (amplitudeRequiresAmplitudeControl(mAmplitude)) { - areFeaturesSupported &= vibrator.hasAmplitudeControl(); + areFeaturesSupported &= vibratorInfo.hasAmplitudeControl(); } return areFeaturesSupported; } diff --git a/core/java/android/os/vibrator/VibrationEffectSegment.java b/core/java/android/os/vibrator/VibrationEffectSegment.java index 3b286a7228fb584f166680ecd1241e35f73a9069..17ac36f3ab3727e5ec6176a156a9b4559901041e 100644 --- a/core/java/android/os/vibrator/VibrationEffectSegment.java +++ b/core/java/android/os/vibrator/VibrationEffectSegment.java @@ -21,7 +21,7 @@ import android.annotation.TestApi; import android.os.Parcel; import android.os.Parcelable; import android.os.VibrationEffect; -import android.os.Vibrator; +import android.os.VibratorInfo; /** * Representation of a single segment of a {@link VibrationEffect}. @@ -65,7 +65,7 @@ public abstract class VibrationEffectSegment implements Parcelable { * * @hide */ - public abstract boolean areVibrationFeaturesSupported(@NonNull Vibrator vibrator); + public abstract boolean areVibrationFeaturesSupported(@NonNull VibratorInfo vibratorInfo); /** * Returns true if this segment could be a haptic feedback effect candidate. diff --git a/core/java/android/os/vibrator/VibratorInfoFactory.java b/core/java/android/os/vibrator/VibratorInfoFactory.java new file mode 100644 index 0000000000000000000000000000000000000000..d10d7ec222c3b46b5a83abac2685fea6afb06370 --- /dev/null +++ b/core/java/android/os/vibrator/VibratorInfoFactory.java @@ -0,0 +1,52 @@ +/* + * Copyright 2023 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.os.vibrator; + +import android.annotation.NonNull; +import android.os.VibratorInfo; + +/** + * Factory for creating {@link VibratorInfo}s. + * + * @hide + */ +public final class VibratorInfoFactory { + /** + * Creates a single {@link VibratorInfo} that is an intersection of a given collection of + * {@link VibratorInfo}s. That is, the capabilities of the returned info will be an + * intersection of that of the provided infos. + * + * @param id the ID for the new {@link VibratorInfo}. + * @param vibratorInfos the {@link VibratorInfo}s from which to create a single + * {@link VibratorInfo}. + * @return a {@link VibratorInfo} that represents the intersection of {@code vibratorInfos}. + */ + @NonNull + public static VibratorInfo create(int id, @NonNull VibratorInfo[] vibratorInfos) { + if (vibratorInfos.length == 0) { + return new VibratorInfo.Builder(id).build(); + } + if (vibratorInfos.length == 1) { + // Create an equivalent info with the requested ID. + return new VibratorInfo(id, vibratorInfos[0]); + } + // Create a MultiVibratorInfo that intersects all the given infos and has the requested ID. + return new MultiVibratorInfo(id, vibratorInfos); + } + + private VibratorInfoFactory() {} +} diff --git a/core/java/android/os/vibrator/flags.aconfig b/core/java/android/os/vibrator/flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..c01ef3d79bb93586bd220b6e992774eae70e5fb2 --- /dev/null +++ b/core/java/android/os/vibrator/flags.aconfig @@ -0,0 +1,15 @@ +package: "android.os.vibrator" + +flag { + namespace: "haptics" + name: "use_vibrator_haptic_feedback" + description: "Enables performHapticFeedback to directly use the vibrator service instead of going through the window session" + bug: "295459081" +} + +flag { + namespace: "haptics" + name: "haptics_customization_enabled" + description: "Enables the haptics customization feature" + bug: "241918098" +} \ No newline at end of file diff --git a/core/java/android/os/vibrator/persistence/ParsedVibration.java b/core/java/android/os/vibrator/persistence/ParsedVibration.java new file mode 100644 index 0000000000000000000000000000000000000000..ded74eab149eabd91bd2b2abf5a94c5aa5dcad1c --- /dev/null +++ b/core/java/android/os/vibrator/persistence/ParsedVibration.java @@ -0,0 +1,92 @@ +/* + * Copyright 2023 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.os.vibrator.persistence; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.annotation.TestApi; +import android.os.VibrationEffect; +import android.os.Vibrator; +import android.os.VibratorInfo; + +import com.android.internal.annotations.VisibleForTesting; + +import java.util.Collections; +import java.util.List; + +/** + * The result of parsing a serialized vibration, which can be define by one or more + * {@link VibrationEffect} and a resolution method. + * + * @hide + */ +@TestApi +public class ParsedVibration { + private final List mEffects; + + /** @hide */ + public ParsedVibration(@NonNull List effects) { + mEffects = effects; + } + + /** @hide */ + public ParsedVibration(@NonNull VibrationEffect effect) { + mEffects = List.of(effect); + } + /** + * Returns the first parsed vibration supported by {@code vibrator}, or {@code null} if none of + * the parsed vibrations are supported. + * + * @hide + */ + @TestApi + @Nullable + public VibrationEffect resolve(@NonNull Vibrator vibrator) { + return resolve(vibrator.getInfo()); + } + + /** + * Returns the parsed vibrations for testing purposes. + * + *

    Real callers should not use this method. Instead, they should resolve to a + * {@link VibrationEffect} via {@link #resolve(Vibrator)}. + * + * @hide + */ + @TestApi + @VisibleForTesting + @NonNull + public List getVibrationEffects() { + return Collections.unmodifiableList(mEffects); + } + + /** + * Same as {@link #resolve(Vibrator)}, but uses {@link VibratorInfo} instead for resolving. + * + * @hide + */ + @Nullable + public final VibrationEffect resolve(@NonNull VibratorInfo info) { + for (int i = 0; i < mEffects.size(); i++) { + VibrationEffect effect = mEffects.get(i); + if (info.areVibrationFeaturesSupported(effect)) { + return effect; + } + } + return null; + } +} diff --git a/core/java/android/os/vibrator/persistence/VibrationXmlParser.java b/core/java/android/os/vibrator/persistence/VibrationXmlParser.java index e91e04ec9cd10c543cf40995bb4601cf765f88b0..e08cc4262bed130dad04411b7ab7fedf5ffd4384 100644 --- a/core/java/android/os/vibrator/persistence/VibrationXmlParser.java +++ b/core/java/android/os/vibrator/persistence/VibrationXmlParser.java @@ -28,6 +28,7 @@ import com.android.internal.vibrator.persistence.VibrationEffectXmlParser; import com.android.internal.vibrator.persistence.XmlConstants; import com.android.internal.vibrator.persistence.XmlParserException; import com.android.internal.vibrator.persistence.XmlReader; +import com.android.internal.vibrator.persistence.XmlValidator; import com.android.modules.utils.TypedXmlPullParser; import org.xmlpull.v1.XmlPullParser; @@ -37,11 +38,18 @@ import java.io.IOException; import java.io.Reader; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.util.ArrayList; +import java.util.List; /** * Parses XML into a {@link VibrationEffect}. * - *

    This parser supports a root element that represent a single vibration effect as follows: + *

    This parser supports a root element that represent a single vibration effect or a selection + * list of vibration effects. + * + *

    Use the schema at core/xsd/vibrator/vibration/vibration.xsd. + * + *

    When the root element represents a single vibration effect, the format is as follows: * * * Predefined vibration effects * @@ -85,6 +93,26 @@ import java.lang.annotation.RetentionPolicy; * } * * + *

    When the root element represents a selection list of vibration effects, the root tag should be + * a tag. The root element should contain a list of vibration serializations. + * Each vibration within the root-element should follow the format discussed for the tag + * above. See example below: + * + *

    + *   {@code
    + *     
    + *       
    + *         
    + *       
    + *       
    + *         
    + *           
    + *         
    + *       
    + *     
    + *   }
    + * 
    + * * @hide */ @TestApi @@ -140,6 +168,9 @@ public final class VibrationXmlParser { /** * Parses XML content from given input stream into a {@link VibrationEffect}. * + *

    This method parses an XML content that contains a single, complete {@link VibrationEffect} + * serialization. As such, the root tag must be a "vibration" tag. + * *

    This parser fails silently and returns {@code null} if the content of the input stream * does not follow the schema or has unsupported values. * @@ -150,75 +181,106 @@ public final class VibrationXmlParser { */ @TestApi @Nullable - public static VibrationEffect parse(@NonNull Reader reader) throws IOException { - return parse(reader, /* flags= */ 0); + public static VibrationEffect parseVibrationEffect(@NonNull Reader reader) throws IOException { + return parseVibrationEffect(reader, /* flags= */ 0); } /** * Parses XML content from given input stream into a {@link VibrationEffect}. * - *

    Same as {@link #parse(Reader)}, with extra flags to control the parsing behavior. + *

    This method parses an XML content that contains a single, complete {@link VibrationEffect} + * serialization. As such, the root tag must be a "vibration" tag. + * + *

    Same as {@link #parseVibrationEffect(Reader)}, with extra flags to control the parsing + * behavior. * * @hide */ @Nullable - public static VibrationEffect parse(@NonNull Reader reader, @Flags int flags) + public static VibrationEffect parseVibrationEffect(@NonNull Reader reader, @Flags int flags) throws IOException { - TypedXmlPullParser parser = Xml.newFastPullParser(); - try { - parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); - parser.setInput(reader); - } catch (XmlPullParserException e) { - throw new RuntimeException("An error occurred while setting up the XML parser", e); + return parseDocumentInternal( + reader, flags, VibrationXmlParser::parseVibrationEffectInternal); + } catch (XmlParserException | XmlPullParserException e) { + Slog.w(TAG, "Error parsing vibration XML", e); + return null; } + } - try { - // Ensure XML starts with expected root tag. - XmlReader.readDocumentStartTag(parser, XmlConstants.TAG_VIBRATION); - - // Parse root tag as a vibration effect. - VibrationEffect effect = parseTag(parser, flags); - - // Ensure XML ends after root tag is consumed. - XmlReader.readDocumentEndTag(parser); + /** + * Parses XML content from given input stream into a {@link ParsedVibration}. + * + *

    It supports both the "vibration" and "vibration-select" root tags. + *

      + *
    • If "vibration" is the root tag, the serialization provided through {@code reader} + * should contain a valid serialization for a single vibration. + *
    • If "vibration-select" is the root tag, the serialization may contain one or more + * valid vibration serializations. + *
    + * + *

    After parsing, it returns a {@link ParsedVibration} that opaquely represents the parsed + * vibration(s), and the caller can get a concrete {@link VibrationEffect} by resolving this + * result to a specific vibrator. + * + *

    This parser fails silently and returns {@code null} if the content of the input does not + * follow the schema or has unsupported values. + * + * @return a {@link ParsedVibration} + * @throws IOException error reading from given {@link Reader} + * + * @hide + */ + @TestApi + @Nullable + public static ParsedVibration parseDocument(@NonNull Reader reader) throws IOException { + return parseDocument(reader, /* flags= */ 0); + } - return effect; - } catch (XmlParserException | VibrationXmlParserException e) { - Slog.w(TAG, "Error parsing vibration XML", e); + /** + * Parses XML content from given input stream into a {@link ParsedVibration}. + * + *

    Same as {@link #parseDocument(Reader)}, with extra flags to control the parsing behavior. + * + * @hide + */ + @Nullable + public static ParsedVibration parseDocument(@NonNull Reader reader, @Flags int flags) + throws IOException { + try { + return parseDocumentInternal(reader, flags, VibrationXmlParser::parseElementInternal); + } catch (XmlParserException | XmlPullParserException e) { + Slog.w(TAG, "Error parsing vibration/vibration-select XML", e); return null; } } /** - * Parses XML content from given open {@link TypedXmlPullParser} into a {@link VibrationEffect}. + * Parses XML content from a given open {@link TypedXmlPullParser} into a + * {@link ParsedVibration}. * - *

    The provided parser should be pointing to a start of a valid vibration XML (i.e. to a - * start tag). No other parser position, including start of document, is considered - * valid. + *

    Same as {@link #parseDocument(Reader, int)}, but, instead of parsing the full XML content, + * it takes a parser that points to either a or a start tag. No + * other parser position, including start of document, is considered valid. * - *

    This method parses as long as it reads a valid vibration XML, and until an end vibration - * tag. After a successful parsing, the parser will point to the end vibration tag (i.e. to a - * tag). + *

    This method parses until an end "vibration" or "vibration-select" tag (depending on the + * start tag found at the start of parsing). After a successful parsing, the parser will point + * to the end tag. * * @throws IOException error parsing from given {@link TypedXmlPullParser}. * @throws VibrationXmlParserException if the XML tag cannot be parsed into a - * {@link VibrationEffect}. The given {@code parser} might be pointing to a child XML tag + * {@link ParsedVibration}. The given {@code parser} might be pointing to a child XML tag * that caused the parser failure. * * @hide */ @NonNull - public static VibrationEffect parseTag(@NonNull TypedXmlPullParser parser, @Flags int flags) + public static ParsedVibration parseElement(@NonNull TypedXmlPullParser parser, @Flags int flags) throws IOException, VibrationXmlParserException { - int parserFlags = 0; - if ((flags & VibrationXmlParser.FLAG_ALLOW_HIDDEN_APIS) != 0) { - parserFlags |= XmlConstants.FLAG_ALLOW_HIDDEN_APIS; - } try { - return VibrationEffectXmlParser.parseTag(parser, parserFlags).deserialize(); + return parseElementInternal(parser, flags); } catch (XmlParserException e) { - throw new VibrationXmlParserException("Error parsing vibration effect.", e); + throw new VibrationXmlParserException("Error parsing vibration-select.", e); } } @@ -231,6 +293,82 @@ public final class VibrationXmlParser { private VibrationXmlParserException(String message, Throwable cause) { super(message, cause); } + + private VibrationXmlParserException(String message) { + super(message); + } + } + + private static ParsedVibration parseElementInternal( + @NonNull TypedXmlPullParser parser, @Flags int flags) + throws IOException, XmlParserException { + XmlValidator.checkStartTag(parser); + + String tagName = parser.getName(); + switch(tagName) { + case XmlConstants.TAG_VIBRATION: + return new ParsedVibration(parseVibrationEffectInternal(parser, flags)); + case XmlConstants.TAG_VIBRATION_SELECT: + return parseVibrationSelectInternal(parser, flags); + default: + throw new XmlParserException( + "Unexpected tag name when parsing element: " + tagName); + } + } + + private static ParsedVibration parseVibrationSelectInternal( + @NonNull TypedXmlPullParser parser, @Flags int flags) + throws IOException, XmlParserException { + XmlValidator.checkStartTag(parser, XmlConstants.TAG_VIBRATION_SELECT); + XmlValidator.checkTagHasNoUnexpectedAttributes(parser); + + int rootDepth = parser.getDepth(); + List effects = new ArrayList<>(); + while (XmlReader.readNextTagWithin(parser, rootDepth)) { + effects.add(parseVibrationEffectInternal(parser, flags)); + } + return new ParsedVibration(effects); + } + + /** Parses a single XML element for "vibration" tag into a {@link VibrationEffect}. */ + private static VibrationEffect parseVibrationEffectInternal( + @NonNull TypedXmlPullParser parser, @Flags int flags) + throws IOException, XmlParserException { + int parserFlags = 0; + if ((flags & VibrationXmlParser.FLAG_ALLOW_HIDDEN_APIS) != 0) { + parserFlags |= XmlConstants.FLAG_ALLOW_HIDDEN_APIS; + } + return VibrationEffectXmlParser.parseTag(parser, parserFlags).deserialize(); + } + + /** + * This method parses a whole XML document (provided through a {@link Reader}). The root tag is + * parsed as per a provided {@link ElementParser}. + */ + private static T parseDocumentInternal( + @NonNull Reader reader, @Flags int flags, ElementParser parseLogic) + throws IOException, XmlParserException, XmlPullParserException { + TypedXmlPullParser parser = Xml.newFastPullParser(); + parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true); + parser.setInput(reader); + + // Ensure XML starts with a document start tag. + XmlReader.readDocumentStart(parser); + + // Parse root tag. + T result = parseLogic.parse(parser, flags); + + // Ensure XML ends after root tag is consumed. + XmlReader.readDocumentEndTag(parser); + + return result; + } + + /** Encapsulate a logic to parse an XML element from an open parser. */ + private interface ElementParser { + /** Parses a single XML element starting from the current position of the {@code parser}. */ + T parse(@NonNull TypedXmlPullParser parser, @Flags int flags) + throws IOException, XmlParserException; } private VibrationXmlParser() { diff --git a/core/java/android/permission/PermissionUsageHelper.java b/core/java/android/permission/PermissionUsageHelper.java index 2a4c01e1c46ea874fe3bc0697b58acca5aa35515..1f798baf1bd61e616e078a669231488186aab270 100644 --- a/core/java/android/permission/PermissionUsageHelper.java +++ b/core/java/android/permission/PermissionUsageHelper.java @@ -86,11 +86,6 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis private static final String PROPERTY_LOCATION_INDICATORS_ENABLED = "location_indicators_enabled"; - /** - * Whether to show the Permissions Hub. - */ - private static final String PROPERTY_PERMISSIONS_HUB_2_ENABLED = "permissions_hub_2_enabled"; - /** * How long after an access to show it as "recent" */ @@ -106,14 +101,9 @@ public class PermissionUsageHelper implements AppOpsManager.OnOpActiveChangedLis private static final long DEFAULT_RUNNING_TIME_MS = 5000L; private static final long DEFAULT_RECENT_TIME_MS = 15000L; - private static boolean shouldShowPermissionsHub() { - return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY, - PROPERTY_PERMISSIONS_HUB_2_ENABLED, false); - } - private static boolean shouldShowIndicators() { return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY, - PROPERTY_CAMERA_MIC_ICONS_ENABLED, true) || shouldShowPermissionsHub(); + PROPERTY_CAMERA_MIC_ICONS_ENABLED, true); } private static boolean shouldShowLocationIndicator() { diff --git a/core/java/android/permission/flags.aconfig b/core/java/android/permission/flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..77be5d4008536f3f2638cc98c98290eeda18008c --- /dev/null +++ b/core/java/android/permission/flags.aconfig @@ -0,0 +1,8 @@ +package: "android.permission.flags" + +flag { + name: "device_aware_permission_apis" + namespace: "permissions" + description: "enable device aware permission APIs" + bug: "274852670" +} diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 3f2be514618796249d82b1e5122521d9530a0f8b..c19c20c8429d631b47851825fa08d77c7d04b1c0 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -1450,7 +1450,7 @@ public final class Settings { /** * Activity Action: Ask the user to allow an app to ignore battery optimizations (that is, - * put them on the whitelist of apps shown by + * put them on the allowlist of apps shown by * {@link #ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS}). For an app to use this, it also * must hold the {@link android.Manifest.permission#REQUEST_IGNORE_BATTERY_OPTIMIZATIONS} * permission. @@ -2831,7 +2831,7 @@ public final class Settings { /** @hide - Private call() method to query the 'global' table */ public static final String CALL_METHOD_LIST_GLOBAL = "LIST_global"; - /** @hide - Private call() method to reset to defaults the 'configuration' table */ + /** @hide - Private call() method to query the 'configuration' table */ public static final String CALL_METHOD_LIST_CONFIG = "LIST_config"; /** @hide - Private call() method to disable / re-enable syncs to the 'configuration' table */ @@ -3524,7 +3524,6 @@ public final class Settings { public ArrayMap getStringsForPrefix(ContentResolver cr, String prefix, List names) { String namespace = prefix.substring(0, prefix.length() - 1); - Config.enforceReadPermission(namespace); ArrayMap keyValues = new ArrayMap<>(); int currentGeneration = -1; boolean needsGenerationTracker = false; @@ -3597,12 +3596,9 @@ public final class Settings { } Bundle b; - // b/252663068: if we're in system server and the caller did not call + // If we're in system server and the caller did not call // clearCallingIdentity, the read would fail due to mismatched AttributionSources. - // TODO(b/256013480): remove this bypass after fixing the callers in system server. - if (namespace.equals(DeviceConfig.NAMESPACE_DEVICE_POLICY_MANAGER) - && Settings.isInSystemServer() - && Binder.getCallingUid() != Process.myUid()) { + if (Settings.isInSystemServer() && Binder.getCallingUid() != Process.myUid()) { final long token = Binder.clearCallingIdentity(); try { // Fetch all flags for the namespace at once for caching purposes @@ -4580,6 +4576,16 @@ public final class Settings { public static final String WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE = "wear_accessibility_gesture_enabled_during_oobe"; + + /** + * If the text-to-speech pre-warm is enabled. + * Set to 1 for true and 0 for false. + * + * This setting is used only internally. + * @hide + */ + public static final String WEAR_TTS_PREWARM_ENABLED = "wear_tts_prewarm_enabled"; + /** * @deprecated Use {@link android.provider.Settings.Global#AIRPLANE_MODE_ON} instead */ @@ -4862,13 +4868,13 @@ public final class Settings { public static final String PEAK_REFRESH_RATE = "peak_refresh_rate"; /** - * Control whether to stay awake on fold + * Control lock behavior on fold * * If this isn't set, the system falls back to a device specific default. * @hide */ @Readable - public static final String STAY_AWAKE_ON_FOLD = "stay_awake_on_fold"; + public static final String FOLD_LOCK_BEHAVIOR = "fold_lock_behavior_setting"; /** * The amount of time in milliseconds before the device goes to sleep or begins @@ -5302,7 +5308,6 @@ public final class Settings { public static final Uri DEFAULT_RINGTONE_URI = getUriFor(RINGTONE); /** {@hide} */ - @Readable public static final String RINGTONE_CACHE = "ringtone_cache"; /** {@hide} */ public static final Uri RINGTONE_CACHE_URI = getUriFor(RINGTONE_CACHE); @@ -5627,13 +5632,21 @@ public final class Settings { public static final String SHOW_TOUCHES = "show_touches"; /** - * Show key presses and other events dispatched to focused windows on the screen. + * Show key presses dispatched to focused windows on the screen. * 0 = no * 1 = yes * @hide */ public static final String SHOW_KEY_PRESSES = "show_key_presses"; + /** + * Show rotary input dispatched to focused windows on the screen. + * 0 = no + * 1 = yes + * @hide + */ + public static final String SHOW_ROTARY_INPUT = "show_rotary_input"; + /** * Log raw orientation data from * {@link com.android.server.policy.WindowOrientationListener} for use with the @@ -5868,15 +5881,6 @@ public final class Settings { @Readable public static final String MULTI_AUDIO_FOCUS_ENABLED = "multi_audio_focus_enabled"; - /** - * Whether desktop mode is enabled or not. - * 0 = off - * 1 = on - * @hide - */ - @Readable - public static final String DESKTOP_MODE = "desktop_mode"; - /** * The information of locale preference. This records user's preference to avoid * unsynchronized and existing locale preference in @@ -6010,6 +6014,7 @@ public final class Settings { PRIVATE_SETTINGS.add(ADVANCED_SETTINGS); PRIVATE_SETTINGS.add(WEAR_ACCESSIBILITY_GESTURE_ENABLED); PRIVATE_SETTINGS.add(WEAR_ACCESSIBILITY_GESTURE_ENABLED_DURING_OOBE); + PRIVATE_SETTINGS.add(WEAR_TTS_PREWARM_ENABLED); PRIVATE_SETTINGS.add(SCREEN_AUTO_BRIGHTNESS_ADJ); PRIVATE_SETTINGS.add(VIBRATE_INPUT_DEVICES); PRIVATE_SETTINGS.add(VOLUME_MASTER); @@ -6049,7 +6054,6 @@ public final class Settings { PRIVATE_SETTINGS.add(SHOW_BATTERY_PERCENT); PRIVATE_SETTINGS.add(DISPLAY_COLOR_MODE); PRIVATE_SETTINGS.add(DISPLAY_COLOR_MODE_VENDOR_HINT); - PRIVATE_SETTINGS.add(DESKTOP_MODE); PRIVATE_SETTINGS.add(LOCALE_PREFERENCES); PRIVATE_SETTINGS.add(TOUCHPAD_POINTER_SPEED); PRIVATE_SETTINGS.add(TOUCHPAD_NATURAL_SCROLLING); @@ -10125,6 +10129,13 @@ public final class Settings { */ public static final String AUDIO_DEVICE_INVENTORY = "audio_device_inventory"; + /** + * Stores a boolean that defines whether the CSD as a feature is enabled or not. + * @hide + */ + public static final String AUDIO_SAFE_CSD_AS_A_FEATURE_ENABLED = + "audio_safe_csd_as_a_feature_enabled"; + /** * Indicates whether notification display on the lock screen is enabled. *

    @@ -10642,18 +10653,20 @@ public final class Settings { "assist_long_press_home_enabled"; /** - * Control whether Trust Agents are in active unlock or extend unlock mode. + * Whether press and hold on nav handle can trigger search. + * * @hide */ - @Readable - public static final String TRUST_AGENTS_EXTEND_UNLOCK = "trust_agents_extend_unlock"; + public static final String SEARCH_PRESS_HOLD_NAV_HANDLE_ENABLED = + "search_press_hold_nav_handle_enabled"; /** - * Control whether the screen locks when trust is lost. + * Whether long-pressing on the home button can trigger search. + * * @hide */ - @Readable - public static final String LOCK_SCREEN_WHEN_TRUST_LOST = "lock_screen_when_trust_lost"; + public static final String SEARCH_LONG_PRESS_HOME_ENABLED = + "search_long_press_home_enabled"; /** * Control whether Night display is currently activated. @@ -11623,6 +11636,21 @@ public final class Settings { public static final String ACCESSIBILITY_FLOATING_MENU_MIGRATION_TOOLTIP_PROMPT = "accessibility_floating_menu_migration_tooltip_prompt"; + /** + * For the force dark theme feature which inverts any apps that don't already support dark + * theme. + * + * If true, it will automatically invert any app that is mainly light. + * + * This is related to the force dark override setting, however it will always force the apps + * colors and will ignore any developer hints or opt-out APIs. + * + * @hide + */ + @Readable + public static final String ACCESSIBILITY_FORCE_INVERT_COLOR_ENABLED = + "accessibility_force_invert_color_enabled"; + /** * Whether the Adaptive connectivity option is enabled. * @@ -12355,7 +12383,7 @@ public final class Settings { public static final String BUGREPORT_IN_POWER_MENU = "bugreport_in_power_menu"; /** - * The package name for the custom bugreport handler app. This app must be whitelisted. + * The package name for the custom bugreport handler app. This app must be allowlisted. * This is currently used only by Power Menu short press. * @deprecated Use {@link android.provider.Settings.Secure#CUSTOM_BUGREPORT_HANDLER_APP} * instead @@ -12771,7 +12799,7 @@ public final class Settings { "location_background_throttle_proximity_alert_interval_ms"; /** - * Packages that are whitelisted for background throttling (throttling will not be applied). + * Packages that are allowlisted for background throttling (throttling will not be applied). * @hide */ @Readable @@ -12779,7 +12807,7 @@ public final class Settings { "location_background_throttle_package_whitelist"; /** - * Packages that are whitelisted for ignoring location settings (may retrieve location even + * Packages that are allowlisted for ignoring location settings (may retrieve location even * when user location settings are off), for emergency purposes. * @deprecated No longer used from Android 12+ * @hide @@ -13363,7 +13391,7 @@ public final class Settings { /** * List of certificate (hex string representation of the application's certificate - SHA-1 - * or SHA-256) and carrier app package pairs which are whitelisted to prompt the user for + * or SHA-256) and carrier app package pairs which are allowlisted to prompt the user for * install when a sim card with matching UICC carrier privilege rules is inserted. The * certificate is used as a key, so the certificate encoding here must be the same as the * certificate encoding used on the SIM. @@ -16764,7 +16792,7 @@ public final class Settings { "enable_adb_incremental_install_default"; /** - * The packages whitelisted to be run in autofill compatibility mode. The list + * The packages allowlisted to be run in autofill compatibility mode. The list * of packages is {@code ":"} colon delimited, and each entry has the name of the * package and an optional list of url bar resource ids (the list is delimited by * brackets&mdash{@code [} and {@code ]}&mdash and is also comma delimited). @@ -16824,7 +16852,7 @@ public final class Settings { public static final String STYLUS_EVER_USED = "stylus_ever_used"; /** - * Exemptions to the hidden API blacklist. + * Exemptions to the hidden API denylist. * * @hide */ @@ -18323,24 +18351,28 @@ public final class Settings { * If hotword detection should be enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String HOTWORD_DETECTION_ENABLED = "hotword_detection_enabled"; /** * Whether Smart Replies are enabled within Wear. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String SMART_REPLIES_ENABLED = "smart_replies_enabled"; /** * The default vibration pattern. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String DEFAULT_VIBRATION = "default_vibration"; /** * If FLP should obtain location data from the paired device. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String OBTAIN_PAIRED_DEVICE_LOCATION = "obtain_paired_device_location"; @@ -18348,6 +18380,7 @@ public final class Settings { * The play store availability on companion phone. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String PHONE_PLAY_STORE_AVAILABILITY = "phone_play_store_availability"; @@ -18363,6 +18396,7 @@ public final class Settings { * Whether the bug report is enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String BUG_REPORT = "bug_report"; // Possible bug report states @@ -18375,12 +18409,14 @@ public final class Settings { * The enabled/disabled state of the SmartIlluminate. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String SMART_ILLUMINATE_ENABLED = "smart_illuminate_enabled"; /** * Whether automatic time is enabled on the watch. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String CLOCKWORK_AUTO_TIME = "clockwork_auto_time"; // Possible clockwork auto time states @@ -18398,6 +18434,7 @@ public final class Settings { * Whether automatic time zone is enabled on the watch. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String CLOCKWORK_AUTO_TIME_ZONE = "clockwork_auto_time_zone"; // Possible clockwork auto time zone states @@ -18414,12 +18451,14 @@ public final class Settings { * Whether 24 hour time format is enabled on the watch. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String CLOCKWORK_24HR_TIME = "clockwork_24hr_time"; /** * Whether the auto wifi toggle setting is enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AUTO_WIFI = "auto_wifi"; // Possible force wifi on states @@ -18439,6 +18478,7 @@ public final class Settings { * wifi requirement until this time). The time is in millis since epoch. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String ALT_BYPASS_WIFI_REQUIREMENT_TIME_MILLIS = "alt_bypass_wifi_requirement_time_millis"; @@ -18446,6 +18486,7 @@ public final class Settings { * Whether the setup was skipped. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String SETUP_SKIPPED = "setup_skipped"; // Possible setup_skipped states @@ -18460,6 +18501,7 @@ public final class Settings { * The last requested call forwarding action. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String LAST_CALL_FORWARD_ACTION = "last_call_forward_action"; // Possible call forwarding actions @@ -18472,22 +18514,31 @@ public final class Settings { // Stem button settings. /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_1_TYPE = "STEM_1_TYPE"; /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_1_DATA = "STEM_1_DATA"; /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_1_DEFAULT_DATA = "STEM_1_DEFAULT_DATA"; /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_2_TYPE = "STEM_2_TYPE"; /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_2_DATA = "STEM_2_DATA"; /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_2_DEFAULT_DATA = "STEM_2_DEFAULT_DATA"; /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_3_TYPE = "STEM_3_TYPE"; /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_3_DATA = "STEM_3_DATA"; /** @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String STEM_3_DEFAULT_DATA = "STEM_3_DEFAULT_DATA"; // Stem types @@ -18502,12 +18553,14 @@ public final class Settings { * If the device should be muted when off body. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String MUTE_WHEN_OFF_BODY_ENABLED = "obtain_mute_when_off_body"; /** * Wear OS version string. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String WEAR_OS_VERSION_STRING = "wear_os_version_string"; /** @@ -18520,24 +18573,28 @@ public final class Settings { * The android wear system version. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String ANDROID_WEAR_VERSION = "android_wear_version"; /** * The wear system capabiltiies. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String SYSTEM_CAPABILITIES = "system_capabilities"; /** * The android wear system edition. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String SYSTEM_EDITION = "android_wear_system_edition"; /** * The Wear platform MR number. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String WEAR_PLATFORM_MR_NUMBER = "wear_platform_mr_number"; /** @@ -18551,36 +18608,42 @@ public final class Settings { * Whether ambient is currently enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AMBIENT_ENABLED = "ambient_enabled"; /** * Whether ambient tilt to wake is enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AMBIENT_TILT_TO_WAKE = "ambient_tilt_to_wake"; /** * Whether ambient low bit mode is enabled by developer options. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AMBIENT_LOW_BIT_ENABLED_DEV = "ambient_low_bit_enabled_dev"; /** * Whether ambient touch to wake is enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AMBIENT_TOUCH_TO_WAKE = "ambient_touch_to_wake"; /** * Whether ambient tilt to bright is enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AMBIENT_TILT_TO_BRIGHT = "ambient_tilt_to_bright"; /** * Whether touch and hold to edit WF is enabled * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String GESTURE_TOUCH_AND_HOLD_WATCH_FACE_ENABLED = "gesture_touch_and_hold_watchface_enabled"; @@ -18594,6 +18657,7 @@ public final class Settings { * Whether bedtime mode is enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String BEDTIME_MODE = "bedtime_mode"; /** @@ -18605,31 +18669,35 @@ public final class Settings { * Whether the current watchface is decomposable. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String DECOMPOSABLE_WATCHFACE = "current_watchface_decomposable"; /** * Whether to force ambient when docked. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AMBIENT_FORCE_WHEN_DOCKED = "ambient_force_when_docked"; /** * Whether the ambient low bit mode is enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AMBIENT_LOW_BIT_ENABLED = "ambient_low_bit_enabled"; /** * The timeout duration in minutes of ambient mode when plugged in. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String AMBIENT_PLUGGED_TIMEOUT_MIN = "ambient_plugged_timeout_min"; /** * What OS does paired device has. * @hide */ - @Readable + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String PAIRED_DEVICE_OS_TYPE = "paired_device_os_type"; // Possible values of PAIRED_DEVICE_OS_TYPE @@ -18662,6 +18730,7 @@ public final class Settings { * The user's last setting for hfp client. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String USER_HFP_CLIENT_SETTING = "user_hfp_client_setting"; // Possible hfp client user setting values @@ -18686,6 +18755,7 @@ public final class Settings { * The companion App name. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String COMPANION_APP_NAME = "wear_companion_app_name"; /** @@ -18693,18 +18763,21 @@ public final class Settings { * wear. 1 for supporting, 0 for not supporting. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String ENABLE_ALL_LANGUAGES = "enable_all_languages"; /** * The Locale (as language tag) the user chose at startup. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String SETUP_LOCALE = "setup_locale"; /** * The version of oem setup present. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String OEM_SETUP_VERSION = "oem_setup_version"; /** @@ -18750,6 +18823,7 @@ public final class Settings { * -{@link BATTERY_SAVER_MODE_CUSTOM} * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String BATTERY_SAVER_MODE = "battery_saver_mode"; /** @@ -18782,6 +18856,7 @@ public final class Settings { * The maximum ambient mode duration when an activity is allowed to auto resume. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String WEAR_ACTIVITY_AUTO_RESUME_TIMEOUT_MS = "wear_activity_auto_resume_timeout_ms"; @@ -18797,6 +18872,7 @@ public final class Settings { * If burn in protection is enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String BURN_IN_PROTECTION_ENABLED = "burn_in_protection"; /** @@ -18815,6 +18891,7 @@ public final class Settings { * RIGHT_WRIST_ROTATION_0 = "2", RIGHT_WRIST_ROTATION_180 = "3" * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String WRIST_ORIENTATION_MODE = "wear_wrist_orientation_mode"; /** @@ -18853,6 +18930,7 @@ public final class Settings { * * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String CLOCKWORK_SYSUI_PACKAGE = "clockwork_sysui_package"; /** @@ -18882,6 +18960,7 @@ public final class Settings { * Whether the device has Wet Mode/ Touch Lock Mode enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String WET_MODE_ON = "wet_mode_on"; /** @@ -18900,6 +18979,7 @@ public final class Settings { * Whether charging sounds are enabled. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String CHARGING_SOUNDS_ENABLED = "wear_charging_sounds_enabled"; /** @@ -18908,6 +18988,7 @@ public final class Settings { * * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String DYNAMIC_COLOR_THEME_ENABLED = "dynamic_color_theme_enabled"; /** @@ -18999,6 +19080,7 @@ public final class Settings { * The key to indicate the data migration status on device upgrade in Wear Services. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String UPGRADE_DATA_MIGRATION_STATUS = "upgrade_data_migration_status"; @@ -19049,17 +19131,20 @@ public final class Settings { * The custom foreground color. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String CUSTOM_COLOR_FOREGROUND = "custom_foreground_color"; /** * The custom background color. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String CUSTOM_COLOR_BACKGROUND = "custom_background_color"; /** The status of the phone switching process. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String PHONE_SWITCHING_STATUS = "phone_switching_status"; /** @@ -19140,6 +19225,7 @@ public final class Settings { * (0 = false, 1 = true) * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String REDUCE_MOTION = "reduce_motion"; /** @@ -19174,6 +19260,10 @@ public final class Settings { */ public static final int TETHERED_CONFIG_TETHERED = 2; + /** + * Device is set in restricted mode. + */ + public static final int TETHERED_CONFIG_RESTRICTED = 3; /** * Whether phone switching is supported. @@ -19201,6 +19291,7 @@ public final class Settings { * Controls the launcher ui mode on wearable devices. * @hide */ + @Readable(maxTargetSdk = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) public static final String WEAR_LAUNCHER_UI_MODE = "wear_launcher_ui_mode"; /** Whether Wear Power Anomaly Service is enabled. @@ -19326,6 +19417,36 @@ public final class Settings { return getStrings(getContentResolver(), namespace, names); } + /** + * Return all stored flags. + * + * The keys take the form {@code namespace/flag}, and the values are the flag values. + * + * @hide + */ + @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) + @NonNull + public static Map getAllStrings() { + HashMap allFlags = new HashMap(); + try { + ContentResolver resolver = getContentResolver(); + Bundle arg = new Bundle(); + arg.putInt(Settings.CALL_METHOD_USER_KEY, resolver.getUserId()); + IContentProvider cp = sProviderHolder.getProvider(resolver); + Bundle b = cp.call(resolver.getAttributionSource(), + sProviderHolder.mUri.getAuthority(), CALL_METHOD_LIST_CONFIG, null, arg); + if (b != null) { + Map flagsToValues = + (HashMap) b.getSerializable(Settings.NameValueTable.VALUE, + java.util.HashMap.class); + allFlags.putAll(flagsToValues); + } + } catch (RemoteException e) { + Log.w(TAG, "Can't query configuration table for " + CONTENT_URI, e); + } + return allFlags; + } + /** * Look up a list of names in the database, within the specified namespace. * @@ -19625,21 +19746,6 @@ public final class Settings { .getApplicationContext().checkCallingOrSelfPermission(permission); } - /** - * Enforces READ_DEVICE_CONFIG permission if namespace is not one of public namespaces. - * @hide - */ - public static void enforceReadPermission(String namespace) { - if (ActivityThread.currentApplication().getApplicationContext() - .checkCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG) - != PackageManager.PERMISSION_GRANTED) { - if (!DeviceConfig.getPublicNamespaces().contains(namespace)) { - throw new SecurityException("Permission denial: reading from settings requires:" - + Manifest.permission.READ_DEVICE_CONFIG); - } - } - } - private static void setMonitorCallbackAsUser( @NonNull @CallbackExecutor Executor executor, @NonNull ContentResolver resolver, @UserIdInt int userHandle, diff --git a/core/java/android/security/FileIntegrityManager.java b/core/java/android/security/FileIntegrityManager.java index 266046e57cd5f0a5181be85a41bc82517cbebb64..d6f3bf334456aa7c4e63737fc443e4f651e170da 100644 --- a/core/java/android/security/FileIntegrityManager.java +++ b/core/java/android/security/FileIntegrityManager.java @@ -16,12 +16,21 @@ package android.security; +import android.annotation.FlaggedApi; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemService; import android.content.Context; +import android.os.IInstalld.IFsveritySetupAuthToken; +import android.os.ParcelFileDescriptor; import android.os.RemoteException; +import android.system.ErrnoException; +import com.android.internal.security.VerityUtils; + +import java.io.File; +import java.io.IOException; import java.security.cert.CertificateEncodingException; import java.security.cert.X509Certificate; @@ -54,6 +63,67 @@ public final class FileIntegrityManager { } } + /** + * Enables fs-verity to the owned file under the calling app's private directory. It always uses + * the common configuration, i.e. SHA-256 digest algorithm, 4K block size, and without salt. + * + * The operation can only succeed when the file is not opened as writable by any process. + * + * It takes O(file size) time to build the underlying data structure for continuous + * verification. The operation is atomic, i.e. it's either enabled or not, even in case of + * power failure during or after the call. + * + * Note for the API users: When the file's authenticity is crucial, the app typical needs to + * perform a signature check by itself before using the file. The signature is often delivered + * as a separate file and stored next to the targeting file in the filesystem. The public key of + * the signer (normally the same app developer) can be put in the APK, and the app can use the + * public key to verify the signature to the file's actual fs-verity digest (from {@link + * #getFsVerityDigest}) before using the file. The exact format is not prescribed by the + * framework. App developers may choose to use common practices like JCA for the signing and + * verification, or their own preferred approach. + * + * @param file The file to enable fs-verity. It should be an absolute path. + * + * @see Kernel doc + */ + @FlaggedApi(Flags.FLAG_FSVERITY_API) + public void setupFsVerity(@NonNull File file) throws IOException { + if (!file.isAbsolute()) { + throw new IllegalArgumentException("Expect an absolute path"); + } + IFsveritySetupAuthToken authToken; + // fs-verity setup requires no writable fd to the file. Make sure it's closed before + // continue. + try (var authFd = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_WRITE)) { + authToken = mService.createAuthToken(authFd); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + + try { + int errno = mService.setupFsverity(authToken, file.getPath(), + mContext.getPackageName()); + if (errno != 0) { + new ErrnoException("setupFsVerity", errno).rethrowAsIOException(); + } + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** + * Returns the fs-verity digest for the owned file under the calling app's + * private directory, or null when the file does not have fs-verity enabled. + * + * @param file The file to measure the fs-verity digest. + * @return The fs-verity digeset in byte[], null if none. + * @see Kernel doc + */ + @FlaggedApi(Flags.FLAG_FSVERITY_API) + public @Nullable byte[] getFsVerityDigest(@NonNull File file) throws IOException { + return VerityUtils.getFsverityDigest(file.getPath()); + } + /** * Returns whether the given certificate can be used to prove app's install source. Always * return false if the feature is not supported. @@ -63,11 +133,13 @@ public final class FileIntegrityManager { * also use this API to download the best signature on the running device. * * @return whether the certificate is trusted in the system + * @deprecated The feature is no longer supported, and this API now always returns false. */ @RequiresPermission(anyOf = { android.Manifest.permission.INSTALL_PACKAGES, android.Manifest.permission.REQUEST_INSTALL_PACKAGES }) + @Deprecated public boolean isAppSourceCertificateTrusted(@NonNull X509Certificate certificate) throws CertificateEncodingException { try { diff --git a/core/java/android/security/IFileIntegrityService.aidl b/core/java/android/security/IFileIntegrityService.aidl index dff347ec758a1f0a05905627abdb3fe676b72083..1a6cf881e3370ae1e37a91a1f988e348ce38a583 100644 --- a/core/java/android/security/IFileIntegrityService.aidl +++ b/core/java/android/security/IFileIntegrityService.aidl @@ -16,6 +16,9 @@ package android.security; +import android.os.ParcelFileDescriptor; +import android.os.IInstalld; + /** * Binder interface to communicate with FileIntegrityService. * @hide @@ -23,4 +26,8 @@ package android.security; interface IFileIntegrityService { boolean isApkVeritySupported(); boolean isAppSourceCertificateTrusted(in byte[] certificateBytes, in String packageName); + + IInstalld.IFsveritySetupAuthToken createAuthToken(in ParcelFileDescriptor authFd); + int setupFsverity(IInstalld.IFsveritySetupAuthToken authToken, in String filePath, + in String packageName); } diff --git a/core/java/android/security/OWNERS b/core/java/android/security/OWNERS index f6b123554367fd7825bbc478af7618f97fa4fc51..96c0be7f803e61f256e9e8709f69ec043bb6e356 100644 --- a/core/java/android/security/OWNERS +++ b/core/java/android/security/OWNERS @@ -1,10 +1,10 @@ # Bug component: 36824 -cbrubaker@google.com +brambonne@google.com +brufino@google.com +jeffv@google.com -per-file NetworkSecurityPolicy.java = cbrubaker@google.com -per-file NetworkSecurityPolicy.java = klyubin@google.com -per-file FrameworkNetworkSecurityPolicy.java = cbrubaker@google.com -per-file FrameworkNetworkSecurityPolicy.java = klyubin@google.com -per-file Confirmation*.java = jdanis@google.com -per-file Confirmation*.java = swillden@google.com +per-file *NetworkSecurityPolicy.java = file:net/OWNERS +per-file Confirmation*.java = file:/keystore/OWNERS +per-file FileIntegrityManager.java = file:platform/system/security:/fsverity/OWNERS +per-file IFileIntegrityService.aidl = file:platform/system/security:/fsverity/OWNERS diff --git a/core/java/android/security/TEST_MAPPING b/core/java/android/security/TEST_MAPPING new file mode 100644 index 0000000000000000000000000000000000000000..5a679b1a2bf7f8201ca44217f3986d20402cec11 --- /dev/null +++ b/core/java/android/security/TEST_MAPPING @@ -0,0 +1,16 @@ +{ + "presubmit": [ + { + "name": "CtsSecurityTestCases", + "options": [ + { + "include-filter": "android.security.cts.FileIntegrityManagerTest" + } + ], + "file_patterns": [ + "FileIntegrityManager\\.java", + "IFileIntegrityService\\.aidl" + ] + } + ] +} diff --git a/core/java/android/security/flags.aconfig b/core/java/android/security/flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..800149cb0a67e60e968a617b76a1f21cdf048e99 --- /dev/null +++ b/core/java/android/security/flags.aconfig @@ -0,0 +1,30 @@ +package: "android.security" + +flag { + name: "fsverity_api" + namespace: "hardware_backed_security" + description: "Feature flag for fs-verity API" + bug: "285185747" +} + +flag { + name: "fix_unlocked_device_required_keys" + namespace: "hardware_backed_security" + description: "Fix bugs in behavior of UnlockedDeviceRequired keystore keys" + bug: "296464083" +} + +flag { + name: "deprecate_fsv_sig" + namespace: "hardware_backed_security" + description: "Feature flag for deprecating .fsv_sig" + bug: "277916185" +} + +flag { + name: "extend_vb_chain_to_updated_apk" + namespace: "hardware_backed_security" + description: "Use v4 signature and fs-verity to chain verification of allowlisted APKs to Verified Boot" + bug: "277916185" + is_fixed_read_only: true +} diff --git a/core/java/android/security/keystore/OWNERS b/core/java/android/security/keystore/OWNERS index 65129a46d113383873973a1e77dcb07d0c389b70..d9e01161ce6da61b6b5b631fb6de9a35d9287acf 100644 --- a/core/java/android/security/keystore/OWNERS +++ b/core/java/android/security/keystore/OWNERS @@ -1,5 +1 @@ -# Bug component: 189335 - -swillden@google.com -jdanis@google.com -jbires@google.com +include /keystore/OWNERS diff --git a/core/java/android/security/keystore/recovery/OWNERS b/core/java/android/security/keystore/recovery/OWNERS deleted file mode 100644 index 65129a46d113383873973a1e77dcb07d0c389b70..0000000000000000000000000000000000000000 --- a/core/java/android/security/keystore/recovery/OWNERS +++ /dev/null @@ -1,5 +0,0 @@ -# Bug component: 189335 - -swillden@google.com -jdanis@google.com -jbires@google.com diff --git a/core/java/android/security/net/OWNERS b/core/java/android/security/net/OWNERS index d8281645738bd68b6517a3423aabda18cad31f79..1d52eed0cb5654fa5f226b34b1c2dc181aea9224 100644 --- a/core/java/android/security/net/OWNERS +++ b/core/java/android/security/net/OWNERS @@ -1,4 +1,4 @@ # Bug component: 36824 -cbrubaker@google.com brambonne@google.com +jeffv@google.com diff --git a/core/java/android/service/autofill/AutofillServiceInfo.java b/core/java/android/service/autofill/AutofillServiceInfo.java index 00c30b12c93dc6db8acc5804892a93a5610f13ff..83f96629a582d6d1f7ca6aefe4699f5eaff02e0e 100644 --- a/core/java/android/service/autofill/AutofillServiceInfo.java +++ b/core/java/android/service/autofill/AutofillServiceInfo.java @@ -63,6 +63,10 @@ public final class AutofillServiceInfo { private static final String TAG_AUTOFILL_SERVICE = "autofill-service"; private static final String TAG_COMPATIBILITY_PACKAGE = "compatibility-package"; + private static final ComponentName CREDMAN_SERVICE_COMPONENT_NAME = + new ComponentName("com.android.credentialmanager", + "com.android.credentialmanager.autofill.CredentialAutofillService"); + private static ServiceInfo getServiceInfoOrThrow(ComponentName comp, int userHandle) throws PackageManager.NameNotFoundException { try { @@ -307,6 +311,11 @@ public final class AutofillServiceInfo { for (ResolveInfo resolveInfo : resolveInfos) { final ServiceInfo serviceInfo = resolveInfo.serviceInfo; try { + if (serviceInfo != null && isCredentialManagerAutofillService( + serviceInfo.getComponentName())) { + // Skip this service as it is for internal use only + continue; + } services.add(new AutofillServiceInfo(context, serviceInfo)); } catch (SecurityException e) { // Service does not declare the proper permission, ignore it. @@ -316,6 +325,13 @@ public final class AutofillServiceInfo { return services; } + private static boolean isCredentialManagerAutofillService(ComponentName componentName) { + if (componentName == null) { + return false; + } + return componentName.equals(CREDMAN_SERVICE_COMPONENT_NAME); + } + @Override public String toString() { final StringBuilder builder = new StringBuilder(); diff --git a/core/java/android/service/credentials/Action.java b/core/java/android/service/credentials/Action.java index 55133aea4fd6906da39504b05640682bc43ff5ee..9b1132a872c1164b944f03a085a2c0643aef4b15 100644 --- a/core/java/android/service/credentials/Action.java +++ b/core/java/android/service/credentials/Action.java @@ -46,7 +46,14 @@ public final class Action implements Parcelable { *

    See details on usage of {@code Action} for various actionable entries in * {@link BeginCreateCredentialResponse} and {@link BeginGetCredentialResponse}. * - * @param slice the display content to be displayed on the UI, along with this action + * @param slice the slice containing the metadata to be shown on the UI, must be constructed + * through the {@link androidx.credentials.provider} Jetpack library; + * If constructed manually, the {@code slice} object must + * contain the non-null properties of the + * {@link androidx.credentials.provider.Action} class populated as slice items + * against specific hints as used in the class's {@code toSlice} method, + * since the Android System uses this library to parse the {@code slice} and + * extract the required attributes */ public Action(@NonNull Slice slice) { Objects.requireNonNull(slice, "slice must not be null"); diff --git a/core/java/android/service/credentials/CreateEntry.java b/core/java/android/service/credentials/CreateEntry.java index 6a9f09f257f3632cde114896ac6372788065eb48..2495c7dd9f25f27705ab2477b72c7f5a3bc961ee 100644 --- a/core/java/android/service/credentials/CreateEntry.java +++ b/core/java/android/service/credentials/CreateEntry.java @@ -66,7 +66,14 @@ public final class CreateEntry implements Parcelable { /** * Constructs a CreateEntry to be displayed on the UI. * - * @param slice the display content to be displayed on the UI, along with this entry + * @param slice the slice containing the metadata to be shown on the UI, must be constructed + * through the {@link androidx.credentials.provider} Jetpack library; + * If constructed manually, the {@code slice} object must + * contain the non-null properties of the + * {@link androidx.credentials.provider.CreateEntry} class populated as slice items + * against specific hints as used in the class's {@code toSlice} method, + * since the Android System uses this library to parse the {@code slice} and + * extract the required attributes */ public CreateEntry( @NonNull Slice slice) { diff --git a/core/java/android/service/credentials/CredentialEntry.java b/core/java/android/service/credentials/CredentialEntry.java index 512d8339e94489c7ef810c70510481c4e2441fff..53094e800cf69ef0790d3215dbfe3c45227a8461 100644 --- a/core/java/android/service/credentials/CredentialEntry.java +++ b/core/java/android/service/credentials/CredentialEntry.java @@ -69,8 +69,14 @@ public final class CredentialEntry implements Parcelable { * receive the complete corresponding * {@link GetCredentialRequest}. * @param type the type of the credential for which this credential entry is being created - * @param slice the slice containing the metadata to be shown on the UI. Must be - * constructed through the androidx.credentials jetpack library. + * @param slice the slice containing the metadata to be shown on the UI, must be constructed + * through the {@link androidx.credentials.provider} Jetpack library; + * If constructed manually, the {@code slice} object must + * contain the non-null properties of the + * {@link androidx.credentials.provider.CredentialEntry} class populated as slice + * items against specific hints as used in the class's {@code toSlice} method, + * since the Android System uses this library to parse the {@code slice} and + * extract the required attributes * * @throws IllegalArgumentException If {@code beginGetCredentialOptionId} or {@code type} * is null, or empty diff --git a/core/java/android/service/credentials/CredentialProviderInfoFactory.java b/core/java/android/service/credentials/CredentialProviderInfoFactory.java index 58bc4daa3cd7e2c9aa29498256f11cce6b9a344b..0aa6a232d41644eb33c13fda6f98f9e5cbbfa317 100644 --- a/core/java/android/service/credentials/CredentialProviderInfoFactory.java +++ b/core/java/android/service/credentials/CredentialProviderInfoFactory.java @@ -417,7 +417,8 @@ public final class CredentialProviderInfoFactory { si, /* isSystemProvider= */ true, disableSystemAppVerificationForTests, - enabledServices.contains(si.getComponentName()), false); + enabledServices.contains(si.getComponentName()), + false); if (cpi.isSystemProvider()) { providerInfos.add(cpi); } else { @@ -456,7 +457,7 @@ public final class CredentialProviderInfoFactory { int userId, int providerFilter, Set enabledServices, - Set primaryServices) { + Set primaryServices) { requireNonNull(context, "context must not be null"); // Get the device policy. @@ -490,7 +491,7 @@ public final class CredentialProviderInfoFactory { int userId, int providerFilter, Set enabledServices, - Set primaryServices) { + Set primaryServices) { requireNonNull(context, "context must not be null"); // Get the device policy. @@ -601,7 +602,7 @@ public final class CredentialProviderInfoFactory { @UserIdInt int userId, boolean disableSystemAppVerificationForTests, Set enabledServices, - Set primaryServices) { + Set primaryServices) { final List services = new ArrayList<>(); final List resolveInfos = context.getPackageManager() @@ -624,8 +625,7 @@ public final class CredentialProviderInfoFactory { /* isSystemProvider= */ false, disableSystemAppVerificationForTests, enabledServices.contains(serviceInfo.getComponentName()), - primaryServices.contains( - serviceInfo.getComponentName().flattenToString())); + primaryServices.contains(serviceInfo.getComponentName())); if (!cpi.isSystemProvider()) { services.add(cpi); } diff --git a/core/java/android/service/credentials/RemoteEntry.java b/core/java/android/service/credentials/RemoteEntry.java index 5b3218ad9aa892d247d58b422ef27c79aaef46a0..5fd9925d84c99a50d9c17a4e9e51fdf0a94c5156 100644 --- a/core/java/android/service/credentials/RemoteEntry.java +++ b/core/java/android/service/credentials/RemoteEntry.java @@ -73,7 +73,14 @@ public final class RemoteEntry implements Parcelable { /** * Constructs a RemoteEntry to be displayed on the UI. * - * @param slice the display content to be displayed on the UI, along with this entry + * @param slice the slice containing the metadata to be shown on the UI, must be constructed + * through the {@link androidx.credentials.provider} Jetpack library; + * If constructed manually, the {@code slice} object must + * contain the non-null properties of the + * {@link androidx.credentials.provider.RemoteEntry} class populated as slice items + * against specific hints as used in the class's {@code toSlice} method, + * since the Android System uses this library to parse the {@code slice} and + * extract the required attributes */ public RemoteEntry( @NonNull Slice slice) { diff --git a/core/java/android/service/dreams/OWNERS b/core/java/android/service/dreams/OWNERS index 489a5f62b49d9ae9d38c83f319ec0aa293c0f857..77bcee832250dbe9476a81816cc68d39cec65cc7 100644 --- a/core/java/android/service/dreams/OWNERS +++ b/core/java/android/service/dreams/OWNERS @@ -4,5 +4,7 @@ brycelee@google.com dsandler@google.com galinap@google.com jjaggi@google.com +lusilva@google.com michaelwr@google.com santoscordon@google.com +wxyz@google.com diff --git a/core/java/android/service/notification/NotificationRankingUpdate.java b/core/java/android/service/notification/NotificationRankingUpdate.java index 75640bd47ab9ba3d2772c65a6764096a3baa15ce..f3b4c6da4a01e7ce78f162606a5d6c2653411be3 100644 --- a/core/java/android/service/notification/NotificationRankingUpdate.java +++ b/core/java/android/service/notification/NotificationRankingUpdate.java @@ -92,6 +92,7 @@ public class NotificationRankingUpdate implements Parcelable { mapParcel.recycle(); if (buffer != null) { mRankingMapFd.unmap(buffer); + mRankingMapFd.close(); } } } else { diff --git a/core/java/android/service/quicksettings/Tile.java b/core/java/android/service/quicksettings/Tile.java index 910fc44988b27113ecaf58c683d47473ef9b79ee..c027981070f9ce674e1f38ceef4b5512adf797da 100644 --- a/core/java/android/service/quicksettings/Tile.java +++ b/core/java/android/service/quicksettings/Tile.java @@ -64,6 +64,7 @@ public final class Tile implements Parcelable { private IBinder mToken; private Icon mIcon; private CharSequence mLabel; + private CharSequence mDefaultLabel; private CharSequence mSubtitle; private CharSequence mContentDescription; private CharSequence mStateDescription; @@ -142,9 +143,24 @@ public final class Tile implements Parcelable { * Gets the current label for the tile. */ public CharSequence getLabel() { + return mLabel != null ? mLabel : mDefaultLabel; + } + + /** + * @hide + * @return + */ + public CharSequence getCustomLabel() { return mLabel; } + /** + * @hide + */ + public void setDefaultLabel(CharSequence defaultLabel) { + mDefaultLabel = defaultLabel; + } + /** * Sets the current label for the tile. * @@ -267,6 +283,7 @@ public final class Tile implements Parcelable { } dest.writeInt(mState); TextUtils.writeToParcel(mLabel, dest, flags); + TextUtils.writeToParcel(mDefaultLabel, dest, flags); TextUtils.writeToParcel(mSubtitle, dest, flags); TextUtils.writeToParcel(mContentDescription, dest, flags); TextUtils.writeToParcel(mStateDescription, dest, flags); @@ -285,6 +302,7 @@ public final class Tile implements Parcelable { } mState = source.readInt(); mLabel = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); + mDefaultLabel = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); mSubtitle = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); mContentDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); mStateDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); diff --git a/core/java/android/service/trust/OWNERS b/core/java/android/service/trust/OWNERS index a895f7fd73d6378d3aec2e5489ae26027957e7ed..d3525250ebb633d11d2f27115d7928937b6a5b3d 100644 --- a/core/java/android/service/trust/OWNERS +++ b/core/java/android/service/trust/OWNERS @@ -1,4 +1,4 @@ # Bug component: 36824 -cbrubaker@google.com jacobhobbie@google.com +dlm@google.com diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java index 21f676e3fe2f769efdcaec38040f8c9e139d674c..94d851603064b3e2eb2b5ede38413518b5996db3 100644 --- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java +++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java @@ -67,6 +67,7 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.app.IHotwordRecognitionStatusCallback; import com.android.internal.app.IVoiceInteractionManagerService; import com.android.internal.app.IVoiceInteractionSoundTriggerSession; +import com.android.internal.infra.AndroidFuture; import java.io.PrintWriter; import java.lang.annotation.Retention; @@ -1710,6 +1711,11 @@ public class AlwaysOnHotwordDetector extends AbstractDetector { Slog.i(TAG, "onProcessRestarted"); mHandler.sendEmptyMessage(MSG_PROCESS_RESTARTED); } + + @Override + public void onOpenFile(String filename, AndroidFuture future) throws RemoteException { + throw new UnsupportedOperationException("Hotword cannot access files from the disk."); + } } void onDetectorRemoteException() { diff --git a/core/java/android/service/voice/HotwordDetectionService.java b/core/java/android/service/voice/HotwordDetectionService.java index d9ee859dc66bd7ed468a88eb8b7139b85a4a6ea8..ccf8b67826c88fcd1739d33c5cf05d9dab6d73dc 100644 --- a/core/java/android/service/voice/HotwordDetectionService.java +++ b/core/java/android/service/voice/HotwordDetectionService.java @@ -227,6 +227,12 @@ public abstract class HotwordDetectionService extends Service public void stopDetection() { HotwordDetectionService.this.onStopDetection(); } + + @Override + public void registerRemoteStorageService(IDetectorSessionStorageService + detectorSessionStorageService) { + throw new UnsupportedOperationException("Hotword cannot access files from the disk."); + } }; @Override diff --git a/core/java/android/service/voice/HotwordTrainingAudio.aidl b/core/java/android/service/voice/HotwordTrainingAudio.aidl new file mode 100644 index 0000000000000000000000000000000000000000..4dd22897f83166e28dceec0813b16b3952d926ef --- /dev/null +++ b/core/java/android/service/voice/HotwordTrainingAudio.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2023 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.service.voice; + +parcelable HotwordTrainingAudio; \ No newline at end of file diff --git a/core/java/android/service/voice/HotwordTrainingAudio.java b/core/java/android/service/voice/HotwordTrainingAudio.java new file mode 100644 index 0000000000000000000000000000000000000000..91e34dcc4a64711145cd23b7f9c573b7a377d28d --- /dev/null +++ b/core/java/android/service/voice/HotwordTrainingAudio.java @@ -0,0 +1,382 @@ +/* + * Copyright (C) 2023 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.service.voice; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.annotation.SuppressLint; +import android.annotation.SystemApi; +import android.media.AudioFormat; +import android.os.Parcel; +import android.os.Parcelable; + +import com.android.internal.util.DataClass; + +import java.util.Objects; + +/** + * Represents audio supporting hotword model training. + * + * @hide + */ +@DataClass( + genConstructor = false, + genBuilder = true, + genEqualsHashCode = true, + genHiddenConstDefs = true, + genParcelable = true, + genToString = true +) +@SystemApi +public final class HotwordTrainingAudio implements Parcelable { + /** Represents unset value for the hotword offset. */ + public static final int HOTWORD_OFFSET_UNSET = -1; + + /** + * Buffer of hotword audio data for training models. The data format is expected to match + * {@link #getAudioFormat()}. + */ + @NonNull + private final byte[] mHotwordAudio; + + private String hotwordAudioToString() { + return "length=" + mHotwordAudio.length; + } + + /** + * The {@link AudioFormat} of the {@link HotwordTrainingAudio#mHotwordAudio}. + */ + @NonNull + private final AudioFormat mAudioFormat; + + /** + * App-defined identifier to distinguish hotword training audio instances. + */ + @NonNull + private final int mAudioType; + + private static int defaultAudioType() { + return 0; + } + + /** + * App-defined offset in milliseconds relative to start of + * {@link HotwordTrainingAudio#mHotwordAudio}. Default value is + * {@link HotwordTrainingAudio#HOTWORD_OFFSET_UNSET}. + */ + private int mHotwordOffsetMillis = HOTWORD_OFFSET_UNSET; + + @DataClass.Suppress("setHotwordAudio") + abstract static class BaseBuilder { + + /** + * Buffer of hotword audio data for training models. The data format is expected to match + * {@link #getAudioFormat()}. + */ + @SuppressLint("UnflaggedApi") + public @NonNull HotwordTrainingAudio.Builder setHotwordAudio(@NonNull byte[] value) { + Objects.requireNonNull(value, "value should not be null"); + final HotwordTrainingAudio.Builder builder = (HotwordTrainingAudio.Builder) this; + // If the code gen flag in build() is changed, we must update the flag e.g. 0x1 here. + builder.mBuilderFieldsSet |= 0x1; + builder.mHotwordAudio = value; + return builder; + } + } + + + + // Code below generated by codegen v1.0.23. + // + // DO NOT MODIFY! + // CHECKSTYLE:OFF Generated code + // + // To regenerate run: + // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/voice/HotwordTrainingAudio.java + // + // To exclude the generated code from IntelliJ auto-formatting enable (one-time): + // Settings > Editor > Code Style > Formatter Control + //@formatter:off + + + @DataClass.Generated.Member + /* package-private */ HotwordTrainingAudio( + @NonNull byte[] hotwordAudio, + @NonNull AudioFormat audioFormat, + @NonNull int audioType, + int hotwordOffsetMillis) { + this.mHotwordAudio = hotwordAudio; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mHotwordAudio); + this.mAudioFormat = audioFormat; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mAudioFormat); + this.mAudioType = audioType; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mAudioType); + this.mHotwordOffsetMillis = hotwordOffsetMillis; + + // onConstructed(); // You can define this method to get a callback + } + + /** + * Buffer of hotword audio data for training models. The data format is expected to match + * {@link #getAudioFormat()}. + */ + @DataClass.Generated.Member + public @NonNull byte[] getHotwordAudio() { + return mHotwordAudio; + } + + /** + * The {@link AudioFormat} of the {@link HotwordTrainingAudio#mHotwordAudio}. + */ + @DataClass.Generated.Member + public @NonNull AudioFormat getAudioFormat() { + return mAudioFormat; + } + + /** + * App-defined identifier to distinguish hotword training audio instances. + */ + @DataClass.Generated.Member + public @NonNull int getAudioType() { + return mAudioType; + } + + /** + * App-defined offset in milliseconds relative to start of + * {@link HotwordTrainingAudio#mHotwordAudio}. Default value is + * {@link HotwordTrainingAudio#HOTWORD_OFFSET_UNSET}. + */ + @DataClass.Generated.Member + public int getHotwordOffsetMillis() { + return mHotwordOffsetMillis; + } + + @Override + @DataClass.Generated.Member + public String toString() { + // You can override field toString logic by defining methods like: + // String fieldNameToString() { ... } + + return "HotwordTrainingAudio { " + + "hotwordAudio = " + hotwordAudioToString() + ", " + + "audioFormat = " + mAudioFormat + ", " + + "audioType = " + mAudioType + ", " + + "hotwordOffsetMillis = " + mHotwordOffsetMillis + + " }"; + } + + @Override + @DataClass.Generated.Member + public boolean equals(@Nullable Object o) { + // You can override field equality logic by defining either of the methods like: + // boolean fieldNameEquals(HotwordTrainingAudio other) { ... } + // boolean fieldNameEquals(FieldType otherValue) { ... } + + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + @SuppressWarnings("unchecked") + HotwordTrainingAudio that = (HotwordTrainingAudio) o; + //noinspection PointlessBooleanExpression + return true + && java.util.Arrays.equals(mHotwordAudio, that.mHotwordAudio) + && Objects.equals(mAudioFormat, that.mAudioFormat) + && mAudioType == that.mAudioType + && mHotwordOffsetMillis == that.mHotwordOffsetMillis; + } + + @Override + @DataClass.Generated.Member + public int hashCode() { + // You can override field hashCode logic by defining methods like: + // int fieldNameHashCode() { ... } + + int _hash = 1; + _hash = 31 * _hash + java.util.Arrays.hashCode(mHotwordAudio); + _hash = 31 * _hash + Objects.hashCode(mAudioFormat); + _hash = 31 * _hash + mAudioType; + _hash = 31 * _hash + mHotwordOffsetMillis; + return _hash; + } + + @Override + @DataClass.Generated.Member + public void writeToParcel(@NonNull Parcel dest, int flags) { + // You can override field parcelling by defining methods like: + // void parcelFieldName(Parcel dest, int flags) { ... } + + dest.writeByteArray(mHotwordAudio); + dest.writeTypedObject(mAudioFormat, flags); + dest.writeInt(mAudioType); + dest.writeInt(mHotwordOffsetMillis); + } + + @Override + @DataClass.Generated.Member + public int describeContents() { return 0; } + + /** @hide */ + @SuppressWarnings({"unchecked", "RedundantCast"}) + @DataClass.Generated.Member + /* package-private */ HotwordTrainingAudio(@NonNull Parcel in) { + // You can override field unparcelling by defining methods like: + // static FieldType unparcelFieldName(Parcel in) { ... } + + byte[] hotwordAudio = in.createByteArray(); + AudioFormat audioFormat = (AudioFormat) in.readTypedObject(AudioFormat.CREATOR); + int audioType = in.readInt(); + int hotwordOffsetMillis = in.readInt(); + + this.mHotwordAudio = hotwordAudio; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mHotwordAudio); + this.mAudioFormat = audioFormat; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mAudioFormat); + this.mAudioType = audioType; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mAudioType); + this.mHotwordOffsetMillis = hotwordOffsetMillis; + + // onConstructed(); // You can define this method to get a callback + } + + @DataClass.Generated.Member + public static final @NonNull Parcelable.Creator CREATOR + = new Parcelable.Creator() { + @Override + public HotwordTrainingAudio[] newArray(int size) { + return new HotwordTrainingAudio[size]; + } + + @Override + public HotwordTrainingAudio createFromParcel(@NonNull Parcel in) { + return new HotwordTrainingAudio(in); + } + }; + + /** + * A builder for {@link HotwordTrainingAudio} + */ + @SuppressWarnings("WeakerAccess") + @DataClass.Generated.Member + public static final class Builder extends BaseBuilder { + + private @NonNull byte[] mHotwordAudio; + private @NonNull AudioFormat mAudioFormat; + private @NonNull int mAudioType; + private int mHotwordOffsetMillis; + + private long mBuilderFieldsSet = 0L; + + /** + * Creates a new Builder. + * + * @param hotwordAudio + * Buffer of hotword audio data for training models. The data format is expected to match + * {@link #getAudioFormat()}. + * @param audioFormat + * The {@link AudioFormat} of the {@link HotwordTrainingAudio#mHotwordAudio}. + */ + public Builder( + @NonNull byte[] hotwordAudio, + @NonNull AudioFormat audioFormat) { + mHotwordAudio = hotwordAudio; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mHotwordAudio); + mAudioFormat = audioFormat; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mAudioFormat); + } + + /** + * The {@link AudioFormat} of the {@link HotwordTrainingAudio#mHotwordAudio}. + */ + @DataClass.Generated.Member + public @NonNull Builder setAudioFormat(@NonNull AudioFormat value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x2; + mAudioFormat = value; + return this; + } + + /** + * App-defined identifier to distinguish hotword training audio instances. + */ + @DataClass.Generated.Member + public @NonNull Builder setAudioType(@NonNull int value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x4; + mAudioType = value; + return this; + } + + /** + * App-defined offset in milliseconds relative to start of + * {@link HotwordTrainingAudio#mHotwordAudio}. Default value is + * {@link HotwordTrainingAudio#HOTWORD_OFFSET_UNSET}. + */ + @DataClass.Generated.Member + public @NonNull Builder setHotwordOffsetMillis(int value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x8; + mHotwordOffsetMillis = value; + return this; + } + + /** Builds the instance. This builder should not be touched after calling this! */ + public @NonNull HotwordTrainingAudio build() { + checkNotUsed(); + mBuilderFieldsSet |= 0x10; // Mark builder used + + if ((mBuilderFieldsSet & 0x4) == 0) { + mAudioType = defaultAudioType(); + } + if ((mBuilderFieldsSet & 0x8) == 0) { + mHotwordOffsetMillis = HOTWORD_OFFSET_UNSET; + } + HotwordTrainingAudio o = new HotwordTrainingAudio( + mHotwordAudio, + mAudioFormat, + mAudioType, + mHotwordOffsetMillis); + return o; + } + + private void checkNotUsed() { + if ((mBuilderFieldsSet & 0x10) != 0) { + throw new IllegalStateException( + "This Builder should not be reused. Use a new Builder instance instead"); + } + } + } + + @DataClass.Generated( + time = 1694193905346L, + codegenVersion = "1.0.23", + sourceFile = "frameworks/base/core/java/android/service/voice/HotwordTrainingAudio.java", + inputSignatures = "public static final int HOTWORD_OFFSET_UNSET\nprivate final @android.annotation.NonNull byte[] mHotwordAudio\nprivate final @android.annotation.NonNull android.media.AudioFormat mAudioFormat\nprivate final @android.annotation.NonNull int mAudioType\nprivate int mHotwordOffsetMillis\nprivate java.lang.String hotwordAudioToString()\nprivate static int defaultAudioType()\nclass HotwordTrainingAudio extends java.lang.Object implements [android.os.Parcelable]\npublic @android.annotation.SuppressLint @android.annotation.NonNull android.service.voice.HotwordTrainingAudio.Builder setHotwordAudio(byte[])\nclass BaseBuilder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)\npublic @android.annotation.SuppressLint @android.annotation.NonNull android.service.voice.HotwordTrainingAudio.Builder setHotwordAudio(byte[])\nclass BaseBuilder extends java.lang.Object implements []") + @Deprecated + private void __metadata() {} + + + //@formatter:on + // End of generated code + +} diff --git a/core/java/android/service/voice/HotwordTrainingData.aidl b/core/java/android/service/voice/HotwordTrainingData.aidl new file mode 100644 index 0000000000000000000000000000000000000000..03cc8413d7806504caa1edc681230fb63f0d2800 --- /dev/null +++ b/core/java/android/service/voice/HotwordTrainingData.aidl @@ -0,0 +1,19 @@ +/* + * Copyright (C) 2023 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.service.voice; + +parcelable HotwordTrainingData; diff --git a/core/java/android/service/voice/HotwordTrainingData.java b/core/java/android/service/voice/HotwordTrainingData.java new file mode 100644 index 0000000000000000000000000000000000000000..9dca77ed7f515b196ed59a823366790855183f6a --- /dev/null +++ b/core/java/android/service/voice/HotwordTrainingData.java @@ -0,0 +1,371 @@ +/* + * Copyright (C) 2023 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.service.voice; + +import android.annotation.IntDef; +import android.annotation.NonNull; +import android.annotation.SystemApi; +import android.os.Parcel; +import android.os.Parcelable; +import android.text.TextUtils; + +import com.android.internal.util.DataClass; +import com.android.internal.util.Preconditions; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * Contains training data related to hotword detection service. + * + *

    The constructed object's size must be within + * {@link HotwordTrainingData#getMaxTrainingDataSize()} or an + * {@link IllegalArgumentException} will be thrown on construction. Size of the object is calculated + * by converting object to a {@link Parcel} and using the {@link Parcel#dataSize()}. + * + * @hide + */ +@DataClass( + genConstructor = false, + genBuilder = true, + genEqualsHashCode = true, + genHiddenConstDefs = true, + genParcelable = true, + genToString = true) +@SystemApi +public final class HotwordTrainingData implements Parcelable { + /** Max size for hotword training data. */ + public static int getMaxTrainingDataSize() { + return 1024 * 1024; // 1 MB; + } + + /** The list containing hotword audio that is useful for training. */ + @NonNull + @DataClass.PluralOf("trainingAudio") + private final List mTrainingAudios; + + private static List defaultTrainingAudios() { + return Collections.emptyList(); + } + + /** Timeout stage is unknown. */ + public static final int TIMEOUT_STAGE_UNKNOWN = 0; + + /** + * Timeout stage value that represents that the model timed out very early while detecting + * hotword. + */ + public static final int TIMEOUT_STAGE_VERY_EARLY = 1; + + /** + * Timeout stage value that represents that the model timed out early while detecting + * hotword. + */ + public static final int TIMEOUT_STAGE_EARLY = 2; + + /** + * Timeout stage value that represents that the model timed out in the middle while detecting + * hotword. + */ + public static final int TIMEOUT_STAGE_MIDDLE = 3; + + /** + * Timeout stage value that represents that the model timed out late while detecting + * hotword. + */ + public static final int TIMEOUT_STAGE_LATE = 4; + + /** @hide */ + @IntDef(prefix = {"TIMEOUT_STAGE"}, value = { + TIMEOUT_STAGE_UNKNOWN, + TIMEOUT_STAGE_VERY_EARLY, + TIMEOUT_STAGE_EARLY, + TIMEOUT_STAGE_MIDDLE, + TIMEOUT_STAGE_LATE, + }) + @interface HotwordTimeoutStage {} + + /** Stage when timeout occurred. */ + @HotwordTimeoutStage + private final int mTimeoutStage; + + private static int defaultTimeoutStage() { + return TIMEOUT_STAGE_UNKNOWN; + } + + private void onConstructed() { + // Verify size of object is within limit. + Parcel parcel = Parcel.obtain(); + parcel.writeValue(this); + int dataSizeBytes = parcel.dataSize(); + parcel.recycle(); + Preconditions.checkArgument( + dataSizeBytes < getMaxTrainingDataSize(), + TextUtils.formatSimple( + "Hotword training data of size %s exceeds size limit of %s!", + dataSizeBytes, getMaxTrainingDataSize())); + } + + + + // Code below generated by codegen v1.0.23. + // + // DO NOT MODIFY! + // CHECKSTYLE:OFF Generated code + // + // To regenerate run: + // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/service/voice/HotwordTrainingData.java + // + // To exclude the generated code from IntelliJ auto-formatting enable (one-time): + // Settings > Editor > Code Style > Formatter Control + //@formatter:off + + + /** @hide */ + @IntDef(prefix = "TIMEOUT_STAGE_", value = { + TIMEOUT_STAGE_UNKNOWN, + TIMEOUT_STAGE_VERY_EARLY, + TIMEOUT_STAGE_EARLY, + TIMEOUT_STAGE_MIDDLE, + TIMEOUT_STAGE_LATE + }) + @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) + @DataClass.Generated.Member + public @interface TimeoutStage {} + + /** @hide */ + @DataClass.Generated.Member + public static String timeoutStageToString(@TimeoutStage int value) { + switch (value) { + case TIMEOUT_STAGE_UNKNOWN: + return "TIMEOUT_STAGE_UNKNOWN"; + case TIMEOUT_STAGE_VERY_EARLY: + return "TIMEOUT_STAGE_VERY_EARLY"; + case TIMEOUT_STAGE_EARLY: + return "TIMEOUT_STAGE_EARLY"; + case TIMEOUT_STAGE_MIDDLE: + return "TIMEOUT_STAGE_MIDDLE"; + case TIMEOUT_STAGE_LATE: + return "TIMEOUT_STAGE_LATE"; + default: return Integer.toHexString(value); + } + } + + @DataClass.Generated.Member + /* package-private */ HotwordTrainingData( + @NonNull List trainingAudios, + @HotwordTimeoutStage int timeoutStage) { + this.mTrainingAudios = trainingAudios; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mTrainingAudios); + this.mTimeoutStage = timeoutStage; + com.android.internal.util.AnnotationValidations.validate( + HotwordTimeoutStage.class, null, mTimeoutStage); + + onConstructed(); + } + + /** + * The list containing hotword audio that is useful for training. + */ + @DataClass.Generated.Member + public @NonNull List getTrainingAudios() { + return mTrainingAudios; + } + + /** + * Stage when timeout occurred. + */ + @DataClass.Generated.Member + public @HotwordTimeoutStage int getTimeoutStage() { + return mTimeoutStage; + } + + @Override + @DataClass.Generated.Member + public String toString() { + // You can override field toString logic by defining methods like: + // String fieldNameToString() { ... } + + return "HotwordTrainingData { " + + "trainingAudios = " + mTrainingAudios + ", " + + "timeoutStage = " + mTimeoutStage + + " }"; + } + + @Override + @DataClass.Generated.Member + public boolean equals(@android.annotation.Nullable Object o) { + // You can override field equality logic by defining either of the methods like: + // boolean fieldNameEquals(HotwordTrainingData other) { ... } + // boolean fieldNameEquals(FieldType otherValue) { ... } + + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + @SuppressWarnings("unchecked") + HotwordTrainingData that = (HotwordTrainingData) o; + //noinspection PointlessBooleanExpression + return true + && java.util.Objects.equals(mTrainingAudios, that.mTrainingAudios) + && mTimeoutStage == that.mTimeoutStage; + } + + @Override + @DataClass.Generated.Member + public int hashCode() { + // You can override field hashCode logic by defining methods like: + // int fieldNameHashCode() { ... } + + int _hash = 1; + _hash = 31 * _hash + java.util.Objects.hashCode(mTrainingAudios); + _hash = 31 * _hash + mTimeoutStage; + return _hash; + } + + @Override + @DataClass.Generated.Member + public void writeToParcel(@NonNull Parcel dest, int flags) { + // You can override field parcelling by defining methods like: + // void parcelFieldName(Parcel dest, int flags) { ... } + + dest.writeParcelableList(mTrainingAudios, flags); + dest.writeInt(mTimeoutStage); + } + + @Override + @DataClass.Generated.Member + public int describeContents() { return 0; } + + /** @hide */ + @SuppressWarnings({"unchecked", "RedundantCast"}) + @DataClass.Generated.Member + /* package-private */ HotwordTrainingData(@NonNull Parcel in) { + // You can override field unparcelling by defining methods like: + // static FieldType unparcelFieldName(Parcel in) { ... } + + List trainingAudios = new ArrayList<>(); + in.readParcelableList(trainingAudios, HotwordTrainingAudio.class.getClassLoader()); + int timeoutStage = in.readInt(); + + this.mTrainingAudios = trainingAudios; + com.android.internal.util.AnnotationValidations.validate( + NonNull.class, null, mTrainingAudios); + this.mTimeoutStage = timeoutStage; + com.android.internal.util.AnnotationValidations.validate( + HotwordTimeoutStage.class, null, mTimeoutStage); + + onConstructed(); + } + + @DataClass.Generated.Member + public static final @NonNull Parcelable.Creator CREATOR + = new Parcelable.Creator() { + @Override + public HotwordTrainingData[] newArray(int size) { + return new HotwordTrainingData[size]; + } + + @Override + public HotwordTrainingData createFromParcel(@NonNull Parcel in) { + return new HotwordTrainingData(in); + } + }; + + /** + * A builder for {@link HotwordTrainingData} + */ + @SuppressWarnings("WeakerAccess") + @DataClass.Generated.Member + public static final class Builder { + + private @NonNull List mTrainingAudios; + private @HotwordTimeoutStage int mTimeoutStage; + + private long mBuilderFieldsSet = 0L; + + public Builder() { + } + + /** + * The list containing hotword audio that is useful for training. + */ + @DataClass.Generated.Member + public @NonNull Builder setTrainingAudios(@NonNull List value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x1; + mTrainingAudios = value; + return this; + } + + /** @see #setTrainingAudios */ + @DataClass.Generated.Member + public @NonNull Builder addTrainingAudio(@NonNull HotwordTrainingAudio value) { + if (mTrainingAudios == null) setTrainingAudios(new ArrayList<>()); + mTrainingAudios.add(value); + return this; + } + + /** + * Stage when timeout occurred. + */ + @DataClass.Generated.Member + public @NonNull Builder setTimeoutStage(@HotwordTimeoutStage int value) { + checkNotUsed(); + mBuilderFieldsSet |= 0x2; + mTimeoutStage = value; + return this; + } + + /** Builds the instance. This builder should not be touched after calling this! */ + public @NonNull HotwordTrainingData build() { + checkNotUsed(); + mBuilderFieldsSet |= 0x4; // Mark builder used + + if ((mBuilderFieldsSet & 0x1) == 0) { + mTrainingAudios = defaultTrainingAudios(); + } + if ((mBuilderFieldsSet & 0x2) == 0) { + mTimeoutStage = defaultTimeoutStage(); + } + HotwordTrainingData o = new HotwordTrainingData( + mTrainingAudios, + mTimeoutStage); + return o; + } + + private void checkNotUsed() { + if ((mBuilderFieldsSet & 0x4) != 0) { + throw new IllegalStateException( + "This Builder should not be reused. Use a new Builder instance instead"); + } + } + } + + @DataClass.Generated( + time = 1693313864628L, + codegenVersion = "1.0.23", + sourceFile = "frameworks/base/core/java/android/service/voice/HotwordTrainingData.java", + inputSignatures = "private final @android.annotation.NonNull @com.android.internal.util.DataClass.PluralOf(\"trainingAudio\") java.util.List mTrainingAudios\npublic static final int TIMEOUT_STAGE_UNKNOWN\npublic static final int TIMEOUT_STAGE_VERY_EARLY\npublic static final int TIMEOUT_STAGE_EARLY\npublic static final int TIMEOUT_STAGE_MIDDLE\npublic static final int TIMEOUT_STAGE_LATE\nprivate final @android.service.voice.HotwordTrainingData.HotwordTimeoutStage int mTimeoutStage\npublic static int getMaxTrainingDataSize()\nprivate static java.util.List defaultTrainingAudios()\nprivate static int defaultTimeoutStage()\nprivate void onConstructed()\nclass HotwordTrainingData extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genConstructor=false, genBuilder=true, genEqualsHashCode=true, genHiddenConstDefs=true, genParcelable=true, genToString=true)") + @Deprecated + private void __metadata() {} + + + //@formatter:on + // End of generated code + +} diff --git a/core/java/android/service/voice/IDetectorSessionStorageService.aidl b/core/java/android/service/voice/IDetectorSessionStorageService.aidl new file mode 100644 index 0000000000000000000000000000000000000000..592373e0ef80a9a05277e5103ff4253cce9bdf6a --- /dev/null +++ b/core/java/android/service/voice/IDetectorSessionStorageService.aidl @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2023 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.service.voice; + +import com.android.internal.infra.AndroidFuture; + +/** + * @hide + */ +oneway interface IDetectorSessionStorageService { + /** + * Called when a file open request is sent. Only files with the given names under the internal + * app storage, i.e., {@link Context#getFilesDir()} can be opened. + */ + void openFile(in String filename, in AndroidFuture future); +} diff --git a/core/java/android/service/voice/ISandboxedDetectionService.aidl b/core/java/android/service/voice/ISandboxedDetectionService.aidl index 098536dfeb64a0fb6a0c214165b295794c6b75a3..c76ac28eb36c81294a7eb205ca073f4eae2578a3 100644 --- a/core/java/android/service/voice/ISandboxedDetectionService.aidl +++ b/core/java/android/service/voice/ISandboxedDetectionService.aidl @@ -24,6 +24,7 @@ import android.os.IRemoteCallback; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.SharedMemory; +import android.service.voice.IDetectorSessionStorageService; import android.service.voice.IDetectorSessionVisualQueryDetectionCallback; import android.service.voice.IDspHotwordDetectionCallback; import android.view.contentcapture.IContentCaptureManager; @@ -71,4 +72,10 @@ oneway interface ISandboxedDetectionService { void ping(in IRemoteCallback callback); void stopDetection(); + + /** + * Registers the interface stub to talk to the voice interaction service for initialization/ + * detection unrelated functionalities. + */ + void registerRemoteStorageService(in IDetectorSessionStorageService detectorSessionStorageService); } diff --git a/core/java/android/service/voice/SoftwareHotwordDetector.java b/core/java/android/service/voice/SoftwareHotwordDetector.java index 128bc0daedeaf1345d043b5d71bf7183535554a8..f1bc792696d6480d309959c9a0c326369e206067 100644 --- a/core/java/android/service/voice/SoftwareHotwordDetector.java +++ b/core/java/android/service/voice/SoftwareHotwordDetector.java @@ -36,6 +36,7 @@ import android.util.Slog; import com.android.internal.app.IHotwordRecognitionStatusCallback; import com.android.internal.app.IVoiceInteractionManagerService; +import com.android.internal.infra.AndroidFuture; import java.io.PrintWriter; import java.util.concurrent.Executor; @@ -302,6 +303,11 @@ class SoftwareHotwordDetector extends AbstractDetector { Binder.withCleanCallingIdentity(() -> mExecutor.execute( () -> mCallback.onHotwordDetectionServiceRestarted())); } + + @Override + public void onOpenFile(String filename, AndroidFuture future) throws RemoteException { + throw new UnsupportedOperationException("Hotword cannot access files from the disk."); + } } /** @hide */ diff --git a/core/java/android/service/voice/VisualQueryDetectionService.java b/core/java/android/service/voice/VisualQueryDetectionService.java index cbe7666ddf43af0908846c1e70d81ec7f6e10f9b..d184b1eb96abc3140624580862bdb4f74b773666 100644 --- a/core/java/android/service/voice/VisualQueryDetectionService.java +++ b/core/java/android/service/voice/VisualQueryDetectionService.java @@ -40,7 +40,12 @@ import android.util.Log; import android.view.contentcapture.ContentCaptureManager; import android.view.contentcapture.IContentCaptureManager; +import com.android.internal.infra.AndroidFuture; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.util.Objects; +import java.util.concurrent.ExecutionException; import java.util.function.IntConsumer; /** @@ -86,6 +91,8 @@ public abstract class VisualQueryDetectionService extends Service private ContentCaptureManager mContentCaptureManager; @Nullable private IRecognitionServiceManager mIRecognitionServiceManager; + @Nullable + private IDetectorSessionStorageService mDetectorSessionStorageService; private final ISandboxedDetectionService mInterface = new ISandboxedDetectionService.Stub() { @@ -154,6 +161,12 @@ public abstract class VisualQueryDetectionService extends Service public void updateRecognitionServiceManager(IRecognitionServiceManager manager) { mIRecognitionServiceManager = manager; } + + @Override + public void registerRemoteStorageService(IDetectorSessionStorageService + detectorSessionStorageService) { + mDetectorSessionStorageService = detectorSessionStorageService; + } }; @Override @@ -323,4 +336,23 @@ public abstract class VisualQueryDetectionService extends Service } } + /** + * Overrides {@link Context#openFileInput} to read files with the given file names under the + * internal app storage of the {@link VoiceInteractionService}, i.e., only files stored in + * {@link Context#getFilesDir()} can be opened. + */ + @Override + public @Nullable FileInputStream openFileInput(@NonNull String filename) throws + FileNotFoundException { + try { + AndroidFuture future = new AndroidFuture<>(); + mDetectorSessionStorageService.openFile(filename, future); + ParcelFileDescriptor pfd = future.get(); + return new FileInputStream(pfd.getFileDescriptor()); + } catch (RemoteException | ExecutionException | InterruptedException e) { + Log.w(TAG, "Cannot open file due to remote service failure"); + throw new FileNotFoundException(e.getMessage()); + } + } + } diff --git a/core/java/android/service/voice/VisualQueryDetector.java b/core/java/android/service/voice/VisualQueryDetector.java index 9e0eb4bdfcd9d41e791d54cfc96f34b70f190b1c..b5448d4374b293b861b3ed3444c493912c4416fd 100644 --- a/core/java/android/service/voice/VisualQueryDetector.java +++ b/core/java/android/service/voice/VisualQueryDetector.java @@ -25,6 +25,7 @@ import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SuppressLint; import android.annotation.SystemApi; +import android.content.Context; import android.hardware.soundtrigger.SoundTrigger; import android.media.AudioFormat; import android.os.Binder; @@ -37,7 +38,10 @@ import android.util.Slog; import com.android.internal.app.IHotwordRecognitionStatusCallback; import com.android.internal.app.IVoiceInteractionManagerService; +import com.android.internal.infra.AndroidFuture; +import java.io.File; +import java.io.FileNotFoundException; import java.io.PrintWriter; import java.util.concurrent.Executor; import java.util.function.Consumer; @@ -58,18 +62,20 @@ public class VisualQueryDetector { private final Callback mCallback; private final Executor mExecutor; + private final Context mContext; private final IVoiceInteractionManagerService mManagerService; private final VisualQueryDetectorInitializationDelegate mInitializationDelegate; private final String mAttributionTag; VisualQueryDetector( IVoiceInteractionManagerService managerService, - @NonNull @CallbackExecutor Executor executor, - Callback callback, @Nullable String attributionTag) { + @NonNull @CallbackExecutor Executor executor, Callback callback, Context context, + @Nullable String attributionTag) { mManagerService = managerService; mCallback = callback; mExecutor = executor; mInitializationDelegate = new VisualQueryDetectorInitializationDelegate(); + mContext = context; mAttributionTag = attributionTag; } @@ -247,7 +253,7 @@ public class VisualQueryDetector { @Override void initialize(@Nullable PersistableBundle options, @Nullable SharedMemory sharedMemory) { initAndVerifyDetector(options, sharedMemory, - new InitializationStateListener(mExecutor, mCallback), + new InitializationStateListener(mExecutor, mCallback, mContext), DETECTOR_TYPE_VISUAL_QUERY_DETECTOR, mAttributionTag); } @@ -332,9 +338,12 @@ public class VisualQueryDetector { private final Executor mExecutor; private final Callback mCallback; - InitializationStateListener(Executor executor, Callback callback) { + private final Context mContext; + + InitializationStateListener(Executor executor, Callback callback, Context context) { this.mExecutor = executor; this.mCallback = callback; + this.mContext = context; } @Override @@ -428,5 +437,22 @@ public class VisualQueryDetector { !TextUtils.isEmpty(errorMessage) ? errorMessage : "Error data is null"); })); } + @Override + public void onOpenFile(String filename, AndroidFuture future) throws RemoteException { + Slog.v(TAG, "BinderCallback#onOpenFile " + filename); + Binder.withCleanCallingIdentity(() -> mExecutor.execute(() -> { + Slog.v(TAG, "onOpenFile: " + filename); + File f = new File(mContext.getFilesDir(), filename); + ParcelFileDescriptor pfd = null; + try { + Slog.d(TAG, "opened a file with ParcelFileDescriptor."); + pfd = ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY); + } catch (FileNotFoundException e) { + Slog.e(TAG, "Cannot open file. No ParcelFileDescriptor returned."); + } finally { + future.complete(pfd); + } + })); + } } } diff --git a/core/java/android/service/voice/VoiceInteractionService.java b/core/java/android/service/voice/VoiceInteractionService.java index 8cec17fe5340024a983bf7beb0fc5b8d29419439..3f41c56ac7f151b3605311e16fae9201f44d15a9 100644 --- a/core/java/android/service/voice/VoiceInteractionService.java +++ b/core/java/android/service/voice/VoiceInteractionService.java @@ -46,6 +46,7 @@ import android.os.PersistableBundle; import android.os.RemoteException; import android.os.ServiceManager; import android.os.SharedMemory; +import android.os.SystemProperties; import android.provider.Settings; import android.util.ArraySet; import android.util.Log; @@ -131,6 +132,9 @@ public class VoiceInteractionService extends Service { @EnabledSince(targetSdkVersion = Build.VERSION_CODES.UPSIDE_DOWN_CAKE) static final long MULTIPLE_ACTIVE_HOTWORD_DETECTORS = 193232191L; + private static final boolean SYSPROP_VISUAL_QUERY_SERVICE_ENABLED = + SystemProperties.getBoolean("ro.hotword.visual_query_service_enabled", false); + IVoiceInteractionService mInterface = new IVoiceInteractionService.Stub() { @Override public void ready() { @@ -947,6 +951,10 @@ public class VoiceInteractionService extends Service { Objects.requireNonNull(executor); Objects.requireNonNull(callback); + if (!SYSPROP_VISUAL_QUERY_SERVICE_ENABLED) { + throw new IllegalStateException("VisualQueryDetectionService is not enabled on this " + + "system. Please set ro.hotword.visual_query_service_enabled to true."); + } if (mSystemService == null) { throw new IllegalStateException("Not available until onReady() is called"); } @@ -965,7 +973,7 @@ public class VoiceInteractionService extends Service { } VisualQueryDetector visualQueryDetector = - new VisualQueryDetector(mSystemService, executor, callback, + new VisualQueryDetector(mSystemService, executor, callback, this, getAttributionTag()); HotwordDetector visualQueryDetectorInitializationDelegate = visualQueryDetector.getInitializationDelegate(); diff --git a/core/java/android/service/wallpaper/WallpaperService.java b/core/java/android/service/wallpaper/WallpaperService.java index c7e54537703bdc1294627500bed8c82df89a7702..04ae0aff10d07e1b4900b7f05f2b0fc0e59f2872 100644 --- a/core/java/android/service/wallpaper/WallpaperService.java +++ b/core/java/android/service/wallpaper/WallpaperService.java @@ -1307,9 +1307,9 @@ public abstract class WallpaperService extends Service { visibleFrame.intersect(mInsetsState.getDisplayFrame()); WindowInsets windowInsets = mInsetsState.calculateInsets(visibleFrame, null /* ignoringVisibilityState */, config.isScreenRound(), - false /* alwaysConsumeSystemBars */, mLayout.softInputMode, - mLayout.flags, SYSTEM_UI_FLAG_VISIBLE, mLayout.type, - config.windowConfiguration.getWindowingMode(), null /* idSideMap */); + mLayout.softInputMode, mLayout.flags, SYSTEM_UI_FLAG_VISIBLE, + mLayout.type, config.windowConfiguration.getActivityType(), + null /* idSideMap */); if (!fixedSize) { final Rect padding = mIWallpaperEngine.mDisplayPadding; @@ -2556,7 +2556,7 @@ public abstract class WallpaperService extends Service { private void doDetachEngine() { // Some wallpapers will not trigger the rendering threads of the remaining engines even // if they are visible, so we need to toggle the state to get their attention. - if (!mEngine.mDestroyed) { + if (mEngine != null && !mEngine.mDestroyed) { mEngine.detach(); synchronized (mActiveEngines) { for (IWallpaperEngineWrapper engineWrapper : mActiveEngines.values()) { diff --git a/core/java/android/speech/OWNERS b/core/java/android/speech/OWNERS index 162e02904075270543e93bdf212780e7ccae9065..0f2f8ad3d99e253362798bc84d6014d15ad83a5d 100644 --- a/core/java/android/speech/OWNERS +++ b/core/java/android/speech/OWNERS @@ -1,5 +1,4 @@ volnov@google.com eugeniom@google.com schfan@google.com -andreaambu@google.com -hackz@google.com \ No newline at end of file +hackz@google.com diff --git a/core/java/android/speech/RecognitionService.java b/core/java/android/speech/RecognitionService.java index 9656f36d2c4dae25c49b3c49f40f0f1dcf39e0d0..7f313c17705398d80fc9b54aefe79e398bb6859f 100644 --- a/core/java/android/speech/RecognitionService.java +++ b/core/java/android/speech/RecognitionService.java @@ -38,6 +38,7 @@ import android.os.Message; import android.os.RemoteException; import android.util.Log; +import com.android.internal.annotations.GuardedBy; import com.android.internal.util.function.pooled.PooledLambda; import java.lang.ref.WeakReference; @@ -232,39 +233,68 @@ public abstract class RecognitionService extends Service { intent, attributionSource, new ModelDownloadListener() { + + private final Object mLock = new Object(); + + @GuardedBy("mLock") + private boolean mIsTerminated = false; + @Override public void onProgress(int completedPercent) { - try { - listener.onProgress(completedPercent); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); + synchronized (mLock) { + if (mIsTerminated) { + return; + } + try { + listener.onProgress(completedPercent); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } } @Override public void onSuccess() { - try { - listener.onSuccess(); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); + synchronized (mLock) { + if (mIsTerminated) { + return; + } + mIsTerminated = true; + try { + listener.onSuccess(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } } @Override public void onScheduled() { - try { - listener.onScheduled(); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); + synchronized (mLock) { + if (mIsTerminated) { + return; + } + mIsTerminated = true; + try { + listener.onScheduled(); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } } @Override public void onError(int error) { - try { - listener.onError(error); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); + synchronized (mLock) { + if (mIsTerminated) { + return; + } + mIsTerminated = true; + try { + listener.onError(error); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } } }); diff --git a/core/java/android/text/BoringLayout.java b/core/java/android/text/BoringLayout.java index 7748d5b3c8618265b8cb7a8c2111cd294b8de08a..65a1da6b81b84a883c2c72e9f7b052896d7debb3 100644 --- a/core/java/android/text/BoringLayout.java +++ b/core/java/android/text/BoringLayout.java @@ -16,6 +16,9 @@ package android.text; +import static com.android.text.flags.Flags.FLAG_USE_BOUNDS_FOR_WIDTH; + +import android.annotation.FlaggedApi; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; @@ -23,6 +26,7 @@ import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; +import android.graphics.RectF; import android.graphics.text.LineBreakConfig; import android.text.style.ParagraphStyle; @@ -54,9 +58,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * line width * @param includePad set whether to include extra space beyond font ascent and descent which is * needed to avoid clipping in some scripts - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public static BoringLayout make(CharSequence source, TextPaint paint, int outerWidth, Alignment align, float spacingMult, float spacingAdd, BoringLayout.Metrics metrics, boolean includePad) { @@ -82,9 +84,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * @param ellipsizedWidth the width to which this Layout is ellipsizing. If {@code ellipsize} is * {@code null}, or is {@link TextUtils.TruncateAt#MARQUEE} this value is * not used, {@code outerWidth} is used instead - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public static BoringLayout make(CharSequence source, TextPaint paint, int outerWidth, Alignment align, float spacingmult, float spacingadd, BoringLayout.Metrics metrics, boolean includePad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { @@ -116,9 +116,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * False for keeping the first font's line height. If some glyphs * requires larger vertical spaces, by passing true to this * argument, the layout increase the line height to fit all glyphs. - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public static @NonNull BoringLayout make( @NonNull CharSequence source, @NonNull TextPaint paint, @IntRange(from = 0) int outerWidth, @@ -191,6 +189,17 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback @NonNull Alignment align, @NonNull BoringLayout.Metrics metrics, boolean includePad, @Nullable TextUtils.TruncateAt ellipsize, @IntRange(from = 0) int ellipsizedWidth, boolean useFallbackLineSpacing) { + return replaceOrMake(source, paint, outerWidth, align, 1.0f, 0.0f, metrics, includePad, + ellipsize, ellipsizedWidth, useFallbackLineSpacing, false /* useBoundsForWidth */); + } + + /** @hide */ + public @NonNull BoringLayout replaceOrMake(@NonNull CharSequence source, + @NonNull TextPaint paint, @IntRange(from = 0) int outerWidth, + @NonNull Alignment align, float spacingMultiplier, float spacingAmount, + @NonNull BoringLayout.Metrics metrics, boolean includePad, + @Nullable TextUtils.TruncateAt ellipsize, @IntRange(from = 0) int ellipsizedWidth, + boolean useFallbackLineSpacing, boolean useBoundsForWidth) { boolean trust; if (ellipsize == null || ellipsize == TextUtils.TruncateAt.MARQUEE) { @@ -202,7 +211,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback trust = true; } else { replaceWith(TextUtils.ellipsize(source, paint, ellipsizedWidth, ellipsize, true, this), - paint, outerWidth, align, 1f, 0f); + paint, outerWidth, align, spacingMultiplier, spacingAmount); mEllipsizedWidth = ellipsizedWidth; trust = false; @@ -254,17 +263,14 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * line width * @param includePad set whether to include extra space beyond font ascent and descent which is * needed to avoid clipping in some scripts - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public BoringLayout(CharSequence source, TextPaint paint, int outerwidth, Alignment align, float spacingMult, float spacingAdd, BoringLayout.Metrics metrics, boolean includePad) { super(source, paint, outerwidth, align, TextDirectionHeuristics.LTR, spacingMult, spacingAdd, includePad, false /* fallbackLineSpacing */, outerwidth /* ellipsizedWidth */, null /* ellipsize */, 1 /* maxLines */, BREAK_STRATEGY_SIMPLE, HYPHENATION_FREQUENCY_NONE, null /* leftIndents */, - null /* rightIndents */, JUSTIFICATION_MODE_NONE, - LineBreakConfig.NONE); + null /* rightIndents */, JUSTIFICATION_MODE_NONE, LineBreakConfig.NONE, false); mEllipsizedWidth = outerwidth; mEllipsizedStart = 0; @@ -291,9 +297,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * @param ellipsizedWidth the width to which this Layout is ellipsizing. If {@code ellipsize} is * {@code null}, or is {@link TextUtils.TruncateAt#MARQUEE} this value is * not used, {@code outerWidth} is used instead - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public BoringLayout(CharSequence source, TextPaint paint, int outerWidth, Alignment align, float spacingMult, float spacingAdd, BoringLayout.Metrics metrics, boolean includePad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth) { @@ -322,9 +326,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * False for keeping the first font's line height. If some glyphs * requires larger vertical spaces, by passing true to this * argument, the layout increase the line height to fit all glyphs. - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public BoringLayout( @NonNull CharSequence source, @NonNull TextPaint paint, @IntRange(from = 0) int outerWidth, @NonNull Alignment align, float spacingMult, @@ -341,7 +343,28 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback ellipsizedWidth, ellipsize, 1 /* maxLines */, BREAK_STRATEGY_SIMPLE, HYPHENATION_FREQUENCY_NONE, null /* leftIndents */, null /* rightIndents */, JUSTIFICATION_MODE_NONE, - LineBreakConfig.NONE, metrics); + LineBreakConfig.NONE, metrics, false /* useBoundsForWidth */); + } + + /** @hide */ + public BoringLayout( + CharSequence text, + TextPaint paint, + int width, + Alignment align, + float spacingMult, + float spacingAdd, + boolean includePad, + boolean fallbackLineSpacing, + int ellipsizedWidth, + TextUtils.TruncateAt ellipsize, + Metrics metrics, + boolean useBoundsForWidth) { + this(text, paint, width, align, TextDirectionHeuristics.LTR, + spacingMult, spacingAdd, includePad, fallbackLineSpacing, ellipsizedWidth, + ellipsize, 1 /* maxLines */, Layout.BREAK_STRATEGY_SIMPLE, + Layout.HYPHENATION_FREQUENCY_NONE, null, null, Layout.JUSTIFICATION_MODE_NONE, + LineBreakConfig.NONE, metrics, useBoundsForWidth); } /* package */ BoringLayout( @@ -363,12 +386,13 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback int[] rightIndents, int justificationMode, LineBreakConfig lineBreakConfig, - Metrics metrics) { + Metrics metrics, + boolean useBoundsForWidth) { super(text, paint, width, align, textDir, spacingMult, spacingAdd, includePad, fallbackLineSpacing, ellipsizedWidth, ellipsize, maxLines, breakStrategy, hyphenationFrequency, leftIndents, rightIndents, justificationMode, - lineBreakConfig); + lineBreakConfig, useBoundsForWidth); boolean trust; @@ -425,7 +449,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback line.set(paint, source, 0, source.length(), Layout.DIR_LEFT_TO_RIGHT, Layout.DIRS_ALL_LEFT_TO_RIGHT, false, null, mEllipsizedStart, mEllipsizedStart + mEllipsizedCount, useFallbackLineSpacing); - mMax = (int) Math.ceil(line.metrics(null)); + mMax = (int) Math.ceil(line.metrics(null, null, false)); TextLine.recycle(line); } @@ -433,6 +457,9 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback mTopPadding = metrics.top - metrics.ascent; mBottomPadding = metrics.bottom - metrics.descent; } + + mDrawingBounds.set(metrics.mDrawingBounds); + mDrawingBounds.offset(0, mBottom - mDesc); } /** @@ -442,9 +469,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * @param paint a paint * @return layout metric for the given text. null if given text is unable to be handled by * BoringLayout. - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public static Metrics isBoring(CharSequence text, TextPaint paint) { return isBoring(text, paint, TextDirectionHeuristics.FIRSTSTRONG_LTR, null); } @@ -459,9 +484,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * @return layout metric for the given text. If metrics is not null, this method fills values * to given metrics object instead of allocating new metrics object. null if given text * is unable to be handled by BoringLayout. - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public static Metrics isBoring(CharSequence text, TextPaint paint, Metrics metrics) { return isBoring(text, paint, TextDirectionHeuristics.FIRSTSTRONG_LTR, metrics); } @@ -521,9 +544,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback * argument, the layout increase the line height to fit all glyphs. * @param metrics the out metrics. * @return metrics on success. null if text cannot be rendered by BoringLayout. - * @deprecated Use {@link android.text.Layout.Builder} instead. */ - @Deprecated public static @Nullable Metrics isBoring(@NonNull CharSequence text, @NonNull TextPaint paint, @NonNull TextDirectionHeuristic textDir, boolean useFallbackLineSpacing, @Nullable Metrics metrics) { @@ -555,7 +576,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback 0 /* ellipsisStart, 0 since text has not been ellipsized at this point */, 0 /* ellipsisEnd, 0 since text has not been ellipsized at this point */, useFallbackLineSpacing); - fm.width = (int) Math.ceil(line.metrics(fm)); + fm.width = (int) Math.ceil(line.metrics(fm, fm.mDrawingBounds, false)); TextLine.recycle(line); return fm; @@ -604,12 +625,20 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback @Override public float getLineMax(int line) { - return mMax; + if (getUseBoundsForWidth()) { + return super.getLineMax(line); + } else { + return mMax; + } } @Override public float getLineWidth(int line) { - return (line == 0 ? mMax : 0); + if (getUseBoundsForWidth()) { + return super.getLineWidth(line); + } else { + return (line == 0 ? mMax : 0); + } } @Override @@ -647,12 +676,29 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback return mUseFallbackLineSpacing; } + @Override + public @NonNull RectF computeDrawingBoundingBox() { + return mDrawingBounds; + } + // Override draw so it will be faster. @Override public void draw(Canvas c, Path highlight, Paint highlightpaint, int cursorOffset) { if (mDirect != null && highlight == null) { + if (getUseBoundsForWidth()) { + c.save(); + RectF drawingRect = computeDrawingBoundingBox(); + if (drawingRect.left < 0) { + c.translate(-drawingRect.left, 0); + } + } + c.drawText(mDirect, 0, mBottom - mDesc, mPaint); + + if (getUseBoundsForWidth()) { + c.restore(); + } } else { super.draw(c, highlight, highlightpaint, cursorOffset); } @@ -674,12 +720,24 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback private int mTopPadding, mBottomPadding; private float mMax; private int mEllipsizedWidth, mEllipsizedStart, mEllipsizedCount; + private final RectF mDrawingBounds = new RectF(); public static class Metrics extends Paint.FontMetricsInt { public int width; + private final RectF mDrawingBounds = new RectF(); + + /** + * Returns drawing bounding box. + * + * @return a drawing bounding box. + */ + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) + @NonNull public RectF getDrawingBoundingBox() { + return mDrawingBounds; + } @Override public String toString() { - return super.toString() + " width=" + width; + return super.toString() + " width=" + width + ", drawingBounds = " + mDrawingBounds; } private void reset() { @@ -689,6 +747,7 @@ public class BoringLayout extends Layout implements TextUtils.EllipsizeCallback descent = 0; width = 0; leading = 0; + mDrawingBounds.setEmpty(); } } } diff --git a/core/java/android/text/DynamicLayout.java b/core/java/android/text/DynamicLayout.java index 3bdaca9a9ba5fffa127994c9570e83cdaec9f725..2b3a081ceff6b02b3dd243eb84e5376792fd30e0 100644 --- a/core/java/android/text/DynamicLayout.java +++ b/core/java/android/text/DynamicLayout.java @@ -285,6 +285,29 @@ public class DynamicLayout extends Layout { return this; } + /** + * Set true for using width of bounding box as a source of automatic line breaking and + * drawing. + * + * If this value is false, the Layout determines the drawing offset and automatic line + * breaking based on total advances. By setting true, use all joined glyph's bounding boxes + * as a source of text width. + * + * If the font has glyphs that have negative bearing X or its xMax is greater than advance, + * the glyph clipping can happen because the drawing area may be bigger. By setting this to + * true, the Layout will reserve more spaces for drawing. + * + * @param useBoundsForWidth True for using bounding box, false for advances. + * @return this builder instance + * @see Layout#getUseBoundsForWidth() + * @see Layout.Builder#setUseBoundsForWidth(boolean) + */ + @NonNull + public Builder setUseBoundsForWidth(boolean useBoundsForWidth) { + mUseBoundsForWidth = useBoundsForWidth; + return this; + } + /** * Build the {@link DynamicLayout} after options have been set. * @@ -317,6 +340,7 @@ public class DynamicLayout extends Layout { private TextUtils.TruncateAt mEllipsize; private int mEllipsizedWidth; private LineBreakConfig mLineBreakConfig = LineBreakConfig.NONE; + private boolean mUseBoundsForWidth; private final Paint.FontMetricsInt mFontMetricsInt = new Paint.FontMetricsInt(); @@ -392,7 +416,7 @@ public class DynamicLayout extends Layout { false /* fallbackLineSpacing */, ellipsizedWidth, ellipsize, Integer.MAX_VALUE /* maxLines */, breakStrategy, hyphenationFrequency, null /* leftIndents */, null /* rightIndents */, justificationMode, - lineBreakConfig); + lineBreakConfig, false /* useBoundsForWidth */); final Builder b = Builder.obtain(base, paint, width) .setAlignment(align) @@ -418,7 +442,7 @@ public class DynamicLayout extends Layout { b.mIncludePad, b.mFallbackLineSpacing, b.mEllipsizedWidth, b.mEllipsize, Integer.MAX_VALUE /* maxLines */, b.mBreakStrategy, b.mHyphenationFrequency, null /* leftIndents */, null /* rightIndents */, b.mJustificationMode, - b.mLineBreakConfig); + b.mLineBreakConfig, b.mUseBoundsForWidth); mDisplay = b.mDisplay; mIncludePad = b.mIncludePad; @@ -445,6 +469,7 @@ public class DynamicLayout extends Layout { private void generate(@NonNull Builder b) { mBase = b.mBase; mFallbackLineSpacing = b.mFallbackLineSpacing; + mUseBoundsForWidth = b.mUseBoundsForWidth; if (b.mEllipsize != null) { mInts = new PackedIntVector(COLUMNS_ELLIPSIZE); mEllipsizedWidth = b.mEllipsizedWidth; @@ -622,7 +647,7 @@ public class DynamicLayout extends Layout { sBuilder = null; } - if (reflowed == null) { + if (b == null) { b = StaticLayout.Builder.obtain(text, where, where + after, getPaint(), getWidth()); } @@ -639,9 +664,11 @@ public class DynamicLayout extends Layout { .setJustificationMode(mJustificationMode) .setLineBreakConfig(mLineBreakConfig) .setAddLastLineLineSpacing(!islast) - .setIncludePad(false); + .setIncludePad(false) + .setUseBoundsForWidth(mUseBoundsForWidth) + .setCalculateBounds(true); - reflowed = b.regenerate(true /* trackpadding */, reflowed); + reflowed = b.buildPartialStaticLayoutForDynamicLayout(true /* trackpadding */, reflowed); int n = reflowed.getLineCount(); // If the new layout has a blank line at the end, but it is not // the very end of the buffer, then we already have a line that @@ -1290,6 +1317,8 @@ public class DynamicLayout extends Layout { private Rect mTempRect = new Rect(); + private boolean mUseBoundsForWidth; + @UnsupportedAppUsage private static StaticLayout sStaticLayout = null; private static StaticLayout.Builder sBuilder = null; diff --git a/core/java/android/text/Layout.java b/core/java/android/text/Layout.java index 98b9fee34a20fdb5b3fec556f2bdd3ddff7106ba..4f4dea7801713ef652b992c19b97a0aa50b73a16 100644 --- a/core/java/android/text/Layout.java +++ b/core/java/android/text/Layout.java @@ -16,10 +16,15 @@ package android.text; +import static com.android.text.flags.Flags.FLAG_USE_BOUNDS_FOR_WIDTH; + +import android.annotation.FlaggedApi; +import android.annotation.FloatRange; import android.annotation.IntDef; import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SuppressLint; import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Canvas; import android.graphics.Paint; @@ -227,7 +232,7 @@ public abstract class Layout { */ public static float getDesiredWidth(CharSequence source, int start, int end, TextPaint paint, TextDirectionHeuristic textDir) { - return getDesiredWidthWithLimit(source, start, end, paint, textDir, Float.MAX_VALUE); + return getDesiredWidthWithLimit(source, start, end, paint, textDir, Float.MAX_VALUE, false); } /** * Return how wide a layout must be in order to display the @@ -237,7 +242,8 @@ public abstract class Layout { * @hide */ public static float getDesiredWidthWithLimit(CharSequence source, int start, int end, - TextPaint paint, TextDirectionHeuristic textDir, float upperLimit) { + TextPaint paint, TextDirectionHeuristic textDir, float upperLimit, + boolean useBoundsForWidth) { float need = 0; int next; @@ -248,7 +254,7 @@ public abstract class Layout { next = end; // note, omits trailing paragraph char - float w = measurePara(paint, source, i, next, textDir); + float w = measurePara(paint, source, i, next, textDir, useBoundsForWidth); if (w > upperLimit) { return upperLimit; } @@ -281,7 +287,7 @@ public abstract class Layout { this(text, paint, width, align, TextDirectionHeuristics.FIRSTSTRONG_LTR, spacingMult, spacingAdd, false, false, 0, null, Integer.MAX_VALUE, BREAK_STRATEGY_SIMPLE, HYPHENATION_FREQUENCY_NONE, null, null, - JUSTIFICATION_MODE_NONE, LineBreakConfig.NONE); + JUSTIFICATION_MODE_NONE, LineBreakConfig.NONE, false); } /** @@ -329,7 +335,8 @@ public abstract class Layout { int[] leftIndents, int[] rightIndents, int justificationMode, - LineBreakConfig lineBreakConfig + LineBreakConfig lineBreakConfig, + boolean useBoundsForWidth ) { if (width < 0) @@ -363,6 +370,7 @@ public abstract class Layout { mRightIndents = rightIndents; mJustificationMode = justificationMode; mLineBreakConfig = lineBreakConfig; + mUseBoundsForWidth = useBoundsForWidth; } /** @@ -442,6 +450,13 @@ public abstract class Layout { @Nullable Path selectionPath, @Nullable Paint selectionPaint, int cursorOffsetVertical) { + if (mUseBoundsForWidth) { + canvas.save(); + RectF drawingRect = computeDrawingBoundingBox(); + if (drawingRect.left < 0) { + canvas.translate(-drawingRect.left, 0); + } + } final long lineRange = getLineRangeForDraw(canvas); int firstLine = TextUtils.unpackRangeStartFromLong(lineRange); int lastLine = TextUtils.unpackRangeEndFromLong(lineRange); @@ -450,6 +465,9 @@ public abstract class Layout { drawWithoutText(canvas, highlightPaths, highlightPaints, selectionPath, selectionPaint, cursorOffsetVertical, firstLine, lastLine); drawText(canvas, firstLine, lastLine); + if (mUseBoundsForWidth) { + canvas.restore(); + } } /** @@ -983,6 +1001,85 @@ public abstract class Layout { */ public abstract int getLineCount(); + /** + * Get an actual bounding box that draws text content. + * + * Note that the {@link RectF#top} and {@link RectF#bottom} may be different from the + * {@link Layout#getLineTop(int)} of the first line and {@link Layout#getLineBottom(int)} of + * the last line. The line top and line bottom are calculated based on yMin/yMax or + * ascent/descent value of font file. On the other hand, the drawing bounding boxes are + * calculated based on actual glyphs used there. + * + * @return bounding rectangle + */ + @NonNull + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) + public RectF computeDrawingBoundingBox() { + float left = 0; + float right = 0; + float top = 0; + float bottom = 0; + TextLine tl = TextLine.obtain(); + RectF rectF = new RectF(); + for (int line = 0; line < getLineCount(); ++line) { + final int start = getLineStart(line); + final int end = getLineVisibleEnd(line); + + final boolean hasTabs = getLineContainsTab(line); + TabStops tabStops = null; + if (hasTabs && mText instanceof Spanned) { + // Just checking this line should be good enough, tabs should be + // consistent across all lines in a paragraph. + TabStopSpan[] tabs = getParagraphSpans((Spanned) mText, start, end, + TabStopSpan.class); + if (tabs.length > 0) { + tabStops = new TabStops(TAB_INCREMENT, tabs); // XXX should reuse + } + } + final Directions directions = getLineDirections(line); + // Returned directions can actually be null + if (directions == null) { + continue; + } + final int dir = getParagraphDirection(line); + + final TextPaint paint = mWorkPaint; + paint.set(mPaint); + paint.setStartHyphenEdit(getStartHyphenEdit(line)); + paint.setEndHyphenEdit(getEndHyphenEdit(line)); + tl.set(paint, mText, start, end, dir, directions, hasTabs, tabStops, + getEllipsisStart(line), getEllipsisStart(line) + getEllipsisCount(line), + isFallbackLineSpacingEnabled()); + if (isJustificationRequired(line)) { + tl.justify(getJustifyWidth(line)); + } + tl.metrics(null, rectF, false); + + float lineLeft = rectF.left; + float lineRight = rectF.right; + float lineTop = rectF.top + getLineBaseline(line); + float lineBottom = rectF.bottom + getLineBaseline(line); + if (getParagraphDirection(line) == Layout.DIR_RIGHT_TO_LEFT) { + lineLeft += getWidth(); + lineRight += getWidth(); + } + + if (line == 0) { + left = lineLeft; + right = lineRight; + top = lineTop; + bottom = lineBottom; + } else { + left = Math.min(left, lineLeft); + right = Math.max(right, lineRight); + top = Math.min(top, lineTop); + bottom = Math.max(bottom, lineBottom); + } + } + TextLine.recycle(tl); + return new RectF(left, top, right, bottom); + } + /** * Return the baseline for the specified line (0…getLineCount() - 1) * If bounds is not null, return the top, left, right, bottom extents @@ -1356,7 +1453,7 @@ public abstract class Layout { tl.set(mPaint, mText, start, end, dir, directions, hasTab, tabStops, getEllipsisStart(line), getEllipsisStart(line) + getEllipsisCount(line), isFallbackLineSpacingEnabled()); - float wid = tl.measure(offset - start, trailing, null); + float wid = tl.measure(offset - start, trailing, null, null); TextLine.recycle(tl); if (clamped && wid > mWidth) { @@ -1692,7 +1789,7 @@ public abstract class Layout { if (isJustificationRequired(line)) { tl.justify(getJustifyWidth(line)); } - final float width = tl.metrics(null); + final float width = tl.metrics(null, null, mUseBoundsForWidth); TextLine.recycle(tl); return width; } @@ -1723,7 +1820,7 @@ public abstract class Layout { if (isJustificationRequired(line)) { tl.justify(getJustifyWidth(line)); } - final float width = tl.metrics(null); + final float width = tl.metrics(null, null, mUseBoundsForWidth); TextLine.recycle(tl); return width; } @@ -2799,7 +2896,7 @@ public abstract class Layout { } private static float measurePara(TextPaint paint, CharSequence text, int start, int end, - TextDirectionHeuristic textDir) { + TextDirectionHeuristic textDir, boolean useBoundsForWidth) { MeasuredParagraph mt = null; TextLine tl = TextLine.obtain(); try { @@ -2839,7 +2936,7 @@ public abstract class Layout { tl.set(paint, text, start, end, dir, directions, hasTabs, tabStops, 0 /* ellipsisStart */, 0 /* ellipsisEnd */, false /* use fallback line spacing. unused */); - return margin + Math.abs(tl.metrics(null)); + return margin + Math.abs(tl.metrics(null, null, useBoundsForWidth)); } finally { TextLine.recycle(tl); if (mt != null) { @@ -3234,6 +3331,7 @@ public abstract class Layout { private int[] mRightIndents; private int mJustificationMode; private LineBreakConfig mLineBreakConfig; + private boolean mUseBoundsForWidth; /** @hide */ @IntDef(prefix = { "DIR_" }, value = { @@ -3342,6 +3440,7 @@ public abstract class Layout { * * @see StaticLayout.Builder */ + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public static final class Builder { /** * Construct a builder class. @@ -3407,7 +3506,7 @@ public abstract class Layout { * * The specified amount of pixels will be added to each line. * - * The default value is {@code 0}. + * The default value is {@code 0}. The negative value is allowed for squeezing lines. * * @param amount an amount of pixels to be added to line height. * @return this builder instance. @@ -3435,7 +3534,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setLineSpacing(float, float) */ @NonNull - public Builder setLineSpacingMultiplier(float multiplier) { + public Builder setLineSpacingMultiplier(@FloatRange(from = 0) float multiplier) { mSpacingMult = multiplier; return this; } @@ -3450,11 +3549,11 @@ public abstract class Layout { * * @param includeFontPadding true for including extra space into first and last line. * @return this builder instance. - * @see Layout#isIncludeFontPadding() + * @see Layout#isFontPaddingIncluded() * @see StaticLayout.Builder#setIncludePad(boolean) */ @NonNull - public Builder setIncludeFontPadding(boolean includeFontPadding) { + public Builder setFontPaddingIncluded(boolean includeFontPadding) { mIncludePad = includeFontPadding; return this; } @@ -3662,6 +3761,32 @@ public abstract class Layout { return this; } + /** + * Set true for using width of bounding box as a source of automatic line breaking and + * drawing. + * + * If this value is false, the Layout determines the drawing offset and automatic line + * breaking based on total advances. By setting true, use all joined glyph's bounding boxes + * as a source of text width. + * + * If the font has glyphs that have negative bearing X or its xMax is greater than advance, + * the glyph clipping can happen because the drawing area may be bigger. By setting this to + * true, the Layout will reserve more spaces for drawing. + * + * @param useBoundsForWidth True for using bounding box, false for advances. + * @return this builder instance + * @see Layout#getUseBoundsForWidth() + * @see StaticLayout.Builder#setUseBoundsForWidth(boolean) + */ + // The corresponding getter is getUseBoundsForWidth + @NonNull + @SuppressLint("MissingGetterMatchingBuilder") + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) + public Builder setUseBoundsForWidth(boolean useBoundsForWidth) { + mUseBoundsForWidth = useBoundsForWidth; + return this; + } + private BoringLayout.Metrics isBoring() { if (mStart != 0 || mEnd != mText.length()) { // BoringLayout only support entire text. return null; @@ -3701,13 +3826,14 @@ public abstract class Layout { .setIndents(mLeftIndents, mRightIndents) .setJustificationMode(mJustificationMode) .setLineBreakConfig(mLineBreakConfig) + .setUseBoundsForWidth(mUseBoundsForWidth) .build(); } else { return new BoringLayout( mText, mPaint, mWidth, mAlignment, mTextDir, mSpacingMult, mSpacingAdd, mIncludePad, mFallbackLineSpacing, mEllipsizedWidth, mEllipsize, mMaxLines, mBreakStrategy, mHyphenationFrequency, mLeftIndents, mRightIndents, - mJustificationMode, mLineBreakConfig, metrics); + mJustificationMode, mLineBreakConfig, metrics, mUseBoundsForWidth); } } @@ -3731,6 +3857,7 @@ public abstract class Layout { private int[] mRightIndents = null; private int mJustificationMode = JUSTIFICATION_MODE_NONE; private LineBreakConfig mLineBreakConfig = LineBreakConfig.NONE; + private boolean mUseBoundsForWidth; } /////////////////////////////////////////////////////////////////////////////////////////////// @@ -3744,6 +3871,7 @@ public abstract class Layout { * @see Layout.Builder */ @NonNull + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final CharSequence getText() { return mText; } @@ -3793,6 +3921,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setTextDirection(TextDirectionHeuristic) */ @NonNull + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final TextDirectionHeuristic getTextDirectionHeuristic() { return mTextDir; } @@ -3819,6 +3948,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setLineSpacing(float, float) * @see Layout#getSpacingMultiplier() */ + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final float getLineSpacingMultiplier() { return mSpacingMult; } @@ -3845,6 +3975,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setLineSpacing(float, float) * @see Layout#getSpacingAdd() */ + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final float getLineSpacingAmount() { return mSpacingAdd; } @@ -3853,10 +3984,11 @@ public abstract class Layout { * Returns true if this layout is created with increased line height. * * @return true if the layout is created with increased line height. - * @see Layout.Builder#setIncludeFontPadding(boolean) + * @see Layout.Builder#setFontPaddingIncluded(boolean) * @see StaticLayout.Builder#setIncludePad(boolean) */ - public final boolean isIncludeFontPadding() { + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) + public final boolean isFontPaddingIncluded() { return mIncludePad; } @@ -3903,6 +4035,7 @@ public abstract class Layout { * @see Layout#getEllipsizedWidth() */ @Nullable + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final TextUtils.TruncateAt getEllipsize() { return mEllipsize; } @@ -3918,6 +4051,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setMaxLines(int) */ @IntRange(from = 1) + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final int getMaxLines() { return mMaxLines; } @@ -3930,6 +4064,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setBreakStrategy(int) */ @BreakStrategy + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final int getBreakStrategy() { return mBreakStrategy; } @@ -3942,6 +4077,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setHyphenationFrequency(int) */ @HyphenationFrequency + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final int getHyphenationFrequency() { return mHyphenationFrequency; } @@ -3957,6 +4093,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setIndents(int[], int[]) */ @Nullable + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final int[] getLeftIndents() { if (mLeftIndents == null) { return null; @@ -3977,9 +4114,10 @@ public abstract class Layout { * @see StaticLayout.Builder#setIndents(int[], int[]) */ @Nullable + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final int[] getRightIndents() { if (mRightIndents == null) { - return mLeftIndents; + return null; } int[] newArray = new int[mRightIndents.length]; System.arraycopy(mRightIndents, 0, newArray, 0, newArray.length); @@ -3994,6 +4132,7 @@ public abstract class Layout { * @see StaticLayout.Builder#setJustificationMode(int) */ @JustificationMode + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public final int getJustificationMode() { return mJustificationMode; } @@ -4007,7 +4146,22 @@ public abstract class Layout { */ // not being final because of subclass has already published API. @NonNull + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) public LineBreakConfig getLineBreakConfig() { return mLineBreakConfig; } + + /** + * Returns true if using bounding box as a width, false for using advance as a width. + * + * @return True if using bounding box for width, false if using advance for width. + * @see android.widget.TextView#setUseBoundsForWidth(boolean) + * @see android.widget.TextView#getUseBoundsForWidth() + * @see StaticLayout.Builder#setUseBoundsForWidth(boolean) + * @see DynamicLayout.Builder#setUseBoundsForWidth(boolean) + */ + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) + public boolean getUseBoundsForWidth() { + return mUseBoundsForWidth; + } } diff --git a/core/java/android/text/MeasuredParagraph.java b/core/java/android/text/MeasuredParagraph.java index 5b4f195d537b8a2aee0c8f7586ec02bf04c34db6..c1d0e9b95b70b2760eb5db0e94b451e76a03d181 100644 --- a/core/java/android/text/MeasuredParagraph.java +++ b/core/java/android/text/MeasuredParagraph.java @@ -460,10 +460,11 @@ public class MeasuredParagraph { @NonNull TextDirectionHeuristic textDir, int hyphenationMode, boolean computeLayout, + boolean computeBounds, @Nullable MeasuredParagraph hint, @Nullable MeasuredParagraph recycle) { return buildForStaticLayoutInternal(paint, lineBreakConfig, text, start, end, textDir, - hyphenationMode, computeLayout, hint, recycle, null); + hyphenationMode, computeLayout, computeBounds, hint, recycle, null); } /** @@ -498,7 +499,7 @@ public class MeasuredParagraph { boolean computeLayout, @Nullable StyleRunCallback testCallback) { return buildForStaticLayoutInternal(paint, lineBreakConfig, text, start, end, textDir, - hyphenationMode, computeLayout, null, null, testCallback); + hyphenationMode, computeLayout, false, null, null, testCallback); } private static @NonNull MeasuredParagraph buildForStaticLayoutInternal( @@ -510,6 +511,7 @@ public class MeasuredParagraph { @NonNull TextDirectionHeuristic textDir, int hyphenationMode, boolean computeLayout, + boolean computeBounds, @Nullable MeasuredParagraph hint, @Nullable MeasuredParagraph recycle, @Nullable StyleRunCallback testCallback) { @@ -519,7 +521,8 @@ public class MeasuredParagraph { if (hint == null) { builder = new MeasuredText.Builder(mt.mCopiedBuffer) .setComputeHyphenation(hyphenationMode) - .setComputeLayout(computeLayout); + .setComputeLayout(computeLayout) + .setComputeBounds(computeBounds); } else { builder = new MeasuredText.Builder(hint.mMeasuredText); } diff --git a/core/java/android/text/PrecomputedText.java b/core/java/android/text/PrecomputedText.java index fd97801208ac2a381a66a9fe7609ddcd19dcbb61..517ae4f5c81bca86de5d33555a281a2b0b404ada 100644 --- a/core/java/android/text/PrecomputedText.java +++ b/core/java/android/text/PrecomputedText.java @@ -434,7 +434,8 @@ public class PrecomputedText implements Spannable { } if (paraInfo == null) { paraInfo = createMeasuredParagraphs( - text, params, 0, text.length(), true /* computeLayout */); + text, params, 0, text.length(), true /* computeLayout */, + true /* computeBounds */); } return new PrecomputedText(text, 0, text.length(), params, paraInfo); } @@ -462,7 +463,7 @@ public class PrecomputedText implements Spannable { final int paraEnd = pct.getParagraphEnd(i); result.add(new ParagraphInfo(paraEnd, MeasuredParagraph.buildForStaticLayout( params.getTextPaint(), params.getLineBreakConfig(), pct, paraStart, paraEnd, - params.getTextDirection(), hyphenationMode, computeLayout, + params.getTextDirection(), hyphenationMode, computeLayout, true, pct.getMeasuredParagraph(i), null /* no recycle */))); } return result.toArray(new ParagraphInfo[result.size()]); @@ -471,7 +472,8 @@ public class PrecomputedText implements Spannable { /** @hide */ public static ParagraphInfo[] createMeasuredParagraphs( @NonNull CharSequence text, @NonNull Params params, - @IntRange(from = 0) int start, @IntRange(from = 0) int end, boolean computeLayout) { + @IntRange(from = 0) int start, @IntRange(from = 0) int end, boolean computeLayout, + boolean computeBounds) { ArrayList result = new ArrayList<>(); Preconditions.checkNotNull(text); @@ -500,7 +502,8 @@ public class PrecomputedText implements Spannable { result.add(new ParagraphInfo(paraEnd, MeasuredParagraph.buildForStaticLayout( params.getTextPaint(), params.getLineBreakConfig(), text, paraStart, paraEnd, - params.getTextDirection(), hyphenationMode, computeLayout, null /* no hint */, + params.getTextDirection(), hyphenationMode, computeLayout, computeBounds, + null /* no hint */, null /* no recycle */))); } return result.toArray(new ParagraphInfo[result.size()]); diff --git a/core/java/android/text/StaticLayout.java b/core/java/android/text/StaticLayout.java index f843900e8022db55690b97caf77f8a3c8f4667af..e3c72c964d6488caeb80b0c54ed913aaa34c6deb 100644 --- a/core/java/android/text/StaticLayout.java +++ b/core/java/android/text/StaticLayout.java @@ -22,6 +22,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Paint; +import android.graphics.RectF; import android.graphics.text.LineBreakConfig; import android.graphics.text.LineBreaker; import android.os.Build; @@ -420,6 +421,40 @@ public class StaticLayout extends Layout { return this; } + /** + * Set true for using width of bounding box as a source of automatic line breaking and + * drawing. + * + * If this value is false, the Layout determines the drawing offset and automatic line + * breaking based on total advances. By setting true, use all joined glyph's bounding boxes + * as a source of text width. + * + * If the font has glyphs that have negative bearing X or its xMax is greater than advance, + * the glyph clipping can happen because the drawing area may be bigger. By setting this to + * true, the Layout will reserve more spaces for drawing. + * + * @param useBoundsForWidth True for using bounding box, false for advances. + * @return this builder instance + * @see Layout#getUseBoundsForWidth() + * @see Layout.Builder#setUseBoundsForWidth(boolean) + */ + @NonNull + public Builder setUseBoundsForWidth(boolean useBoundsForWidth) { + mUseBoundsForWidth = useBoundsForWidth; + return this; + } + + /** + * Internal API that tells underlying line breaker that calculating bounding boxes even if + * the line break is performed with advances. This is useful for DynamicLayout internal + * implementation because it uses bounding box as well as advances. + * @hide + */ + public Builder setCalculateBounds(boolean value) { + mCalculateBounds = value; + return this; + } + /** * Build the {@link StaticLayout} after options have been set. * @@ -437,13 +472,25 @@ public class StaticLayout extends Layout { return result; } - /* package */ @NonNull StaticLayout regenerate(boolean trackpadding, StaticLayout recycle) { + /** + * DO NOT USE THIS METHOD OTHER THAN DynamicLayout. + * + * This class generates a very weird StaticLayout only for getting a result of line break. + * Since DynamicLayout keeps StaticLayout reference in the static context for object + * recycling but keeping text reference in static context will end up with leaking Context + * due to TextWatcher via TextView. + * + * So, this is a dirty work around that creating StaticLayout without passing text reference + * to the super constructor, but calculating the text layout by calling generate function + * directly. + */ + /* package */ @NonNull StaticLayout buildPartialStaticLayoutForDynamicLayout( + boolean trackpadding, StaticLayout recycle) { if (recycle == null) { - return new StaticLayout(this, trackpadding, COLUMNS_ELLIPSIZE); - } else { - recycle.generate(this, mIncludePad, trackpadding); - return recycle; + recycle = new StaticLayout(); } + recycle.generate(this, mIncludePad, trackpadding); + return recycle; } private CharSequence mText; @@ -467,12 +514,46 @@ public class StaticLayout extends Layout { private int mJustificationMode; private boolean mAddLastLineLineSpacing; private LineBreakConfig mLineBreakConfig = LineBreakConfig.NONE; + private boolean mUseBoundsForWidth; + private boolean mCalculateBounds; private final Paint.FontMetricsInt mFontMetricsInt = new Paint.FontMetricsInt(); private static final SynchronizedPool sPool = new SynchronizedPool<>(3); } + /** + * DO NOT USE THIS CONSTRUCTOR OTHER THAN FOR DYNAMIC LAYOUT. + * See Builder#buildPartialStaticLayoutForDynamicLayout for the reason of this constructor. + */ + private StaticLayout() { + super( + null, // text + null, // paint + 0, // width + null, // alignment + null, // textDir + 1, // spacing multiplier + 0, // spacing amount + false, // include font padding + false, // fallback line spacing + 0, // ellipsized width + null, // ellipsize + 1, // maxLines + BREAK_STRATEGY_SIMPLE, + HYPHENATION_FREQUENCY_NONE, + null, // leftIndents + null, // rightIndents + JUSTIFICATION_MODE_NONE, + null, // lineBreakConfig, + false // useBoundsForWidth + ); + + mColumns = COLUMNS_ELLIPSIZE; + mLineDirections = ArrayUtils.newUnpaddedArray(Directions.class, 2); + mLines = ArrayUtils.newUnpaddedIntArray(2 * mColumns); + } + /** * @deprecated Use {@link Builder} instead. */ @@ -542,7 +623,7 @@ public class StaticLayout extends Layout { b.mPaint, b.mWidth, b.mAlignment, b.mTextDir, b.mSpacingMult, b.mSpacingAdd, b.mIncludePad, b.mFallbackLineSpacing, b.mEllipsizedWidth, b.mEllipsize, b.mMaxLines, b.mBreakStrategy, b.mHyphenationFrequency, b.mLeftIndents, - b.mRightIndents, b.mJustificationMode, b.mLineBreakConfig); + b.mRightIndents, b.mJustificationMode, b.mLineBreakConfig, b.mUseBoundsForWidth); mColumns = columnSize; if (b.mEllipsize != null) { @@ -601,6 +682,7 @@ public class StaticLayout extends Layout { mLineCount = 0; mEllipsized = false; mMaxLineHeight = mMaximumVisibleLineCount < 1 ? 0 : DEFAULT_MAX_LINE_HEIGHT; + mDrawingBounds = null; boolean isFallbackLineSpacing = b.mFallbackLineSpacing; int v = 0; @@ -631,6 +713,7 @@ public class StaticLayout extends Layout { // TODO: Support more justification mode, e.g. letter spacing, stretching. .setJustificationMode(b.mJustificationMode) .setIndents(indents) + .setUseBoundsForWidth(b.mUseBoundsForWidth) .build(); LineBreaker.ParagraphConstraints constraints = @@ -668,7 +751,7 @@ public class StaticLayout extends Layout { final PrecomputedText.Params param = new PrecomputedText.Params(paint, b.mLineBreakConfig, textDir, b.mBreakStrategy, b.mHyphenationFrequency); paragraphInfo = PrecomputedText.createMeasuredParagraphs(source, param, bufStart, - bufEnd, false /* computeLayout */); + bufEnd, false /* computeLayout */, b.mCalculateBounds); } for (int paraIndex = 0; paraIndex < paragraphInfo.length; paraIndex++) { @@ -1363,6 +1446,16 @@ public class StaticLayout extends Layout { return mLines[mColumns * line + ELLIPSIS_START]; } + @Override + @NonNull + public RectF computeDrawingBoundingBox() { + // Cache the drawing bounds result because it does not change after created. + if (mDrawingBounds == null) { + mDrawingBounds = super.computeDrawingBoundingBox(); + } + return mDrawingBounds; + } + /** * Return the total height of this layout. * @@ -1388,6 +1481,7 @@ public class StaticLayout extends Layout { private int mTopPadding, mBottomPadding; @UnsupportedAppUsage private int mColumns; + private RectF mDrawingBounds = null; // lazy calculation. /** * Keeps track if ellipsize is applied to the text. diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java index e38073a5619465a3d786bf757126b074a11a8f9a..f9abec04e71dceddffe655b9a87fe7973e0ddda8 100644 --- a/core/java/android/text/TextLine.java +++ b/core/java/android/text/TextLine.java @@ -23,6 +23,8 @@ import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.FontMetricsInt; +import android.graphics.Rect; +import android.graphics.RectF; import android.graphics.text.PositionedGlyphs; import android.graphics.text.TextRunShaper; import android.os.Build; @@ -70,6 +72,9 @@ public class TextLine { @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023) private Spanned mSpanned; private PrecomputedText mComputed; + private RectF mTmpRectForMeasure; + private RectF mTmpRectForPaintAPI; + private Rect mTmpRectForPrecompute; private boolean mUseFallbackExtent = false; @@ -265,7 +270,7 @@ public class TextLine { // width. return; } - final float width = Math.abs(measure(end, false, null)); + final float width = Math.abs(measure(end, false, null, null)); mAddedWidthForJustify = (justifyWidth - width) / spaces; mIsJustifying = true; } @@ -307,11 +312,33 @@ public class TextLine { * Returns metrics information for the entire line. * * @param fmi receives font metrics information, can be null + * @param drawBounds output parameter for drawing bounding box. optional. + * @param returnDrawWidth true for returning width of the bounding box, false for returning + * total advances. * @return the signed width of the line */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) - public float metrics(FontMetricsInt fmi) { - return measure(mLen, false, fmi); + public float metrics(FontMetricsInt fmi, @Nullable RectF drawBounds, boolean returnDrawWidth) { + if (returnDrawWidth) { + if (drawBounds == null) { + if (mTmpRectForMeasure == null) { + mTmpRectForMeasure = new RectF(); + } + drawBounds = mTmpRectForMeasure; + } + drawBounds.setEmpty(); + float w = measure(mLen, false, fmi, drawBounds); + float boundsWidth = drawBounds.width(); + if (Math.abs(w) > boundsWidth) { + return w; + } else { + // bounds width is always positive but output of measure is signed width. + // To be able to use bounds width as signed width, use the sign of the width. + return Math.signum(w) * boundsWidth; + } + } else { + return measure(mLen, false, fmi, drawBounds); + } } /** @@ -379,12 +406,13 @@ public class TextLine { * as the edge of the trailing run's edge. If false, the offset is regarded as * the edge of the preceding run's edge. See example above. * @param fmi receives metrics information about the requested character, can be null + * @param drawBounds output parameter for drawing bounding box. optional. * @return the signed graphical offset from the leading margin to the requested character edge. * The positive value means the offset is right from the leading edge. The negative * value means the offset is left from the leading edge. */ public float measure(@IntRange(from = 0) int offset, boolean trailing, - @NonNull FontMetricsInt fmi) { + @NonNull FontMetricsInt fmi, @Nullable RectF drawBounds) { if (offset > mLen) { throw new IndexOutOfBoundsException( "offset(" + offset + ") should be less than line limit(" + mLen + ")"); @@ -408,14 +436,17 @@ public class TextLine { final boolean sameDirection = (mDir == Layout.DIR_RIGHT_TO_LEFT) == runIsRtl; if (targetIsInThisSegment && sameDirection) { - return h + measureRun(segStart, offset, j, runIsRtl, fmi, null, 0); + return h + measureRun(segStart, offset, j, runIsRtl, fmi, drawBounds, null, + 0, h); } - final float segmentWidth = measureRun(segStart, j, j, runIsRtl, fmi, null, 0); + final float segmentWidth = measureRun(segStart, j, j, runIsRtl, fmi, drawBounds, + null, 0, h); h += sameDirection ? segmentWidth : -segmentWidth; if (targetIsInThisSegment) { - return h + measureRun(segStart, offset, j, runIsRtl, null, null, 0); + return h + measureRun(segStart, offset, j, runIsRtl, null, null, null, 0, + h); } if (j != runLimit) { // charAt(j) == TAB_CHAR @@ -506,7 +537,7 @@ public class TextLine { final boolean sameDirection = (mDir == Layout.DIR_RIGHT_TO_LEFT) == runIsRtl; final float segmentWidth = - measureRun(segStart, j, j, runIsRtl, null, advances, segStart); + measureRun(segStart, j, j, runIsRtl, null, null, advances, segStart, 0); final float oldh = h; h += sameDirection ? segmentWidth : -segmentWidth; @@ -547,7 +578,7 @@ public class TextLine { } /** - * @see #measure(int, boolean, FontMetricsInt) + * @see #measure(int, boolean, FontMetricsInt, RectF) * @return The measure results for all possible offsets */ @VisibleForTesting @@ -578,7 +609,8 @@ public class TextLine { // measureRun overwrites the result. final float previousSegEndHorizontal = measurement[segStart]; final float width = - measureRun(segStart, j, j, runIsRtl, fmi, measurement, segStart); + measureRun(segStart, j, j, runIsRtl, fmi, null, measurement, segStart, + 0); horizontal += sameDirection ? width : -width; float currHorizontal = sameDirection ? oldHorizontal : horizontal; @@ -643,14 +675,14 @@ public class TextLine { boolean needWidth) { if ((mDir == Layout.DIR_LEFT_TO_RIGHT) == runIsRtl) { - float w = -measureRun(start, limit, limit, runIsRtl, null, null, 0); + float w = -measureRun(start, limit, limit, runIsRtl, null, null, null, 0, 0); handleRun(start, limit, limit, runIsRtl, c, null, x + w, top, - y, bottom, null, false, null, 0); + y, bottom, null, null, false, null, 0); return w; } return handleRun(start, limit, limit, runIsRtl, c, null, x, top, - y, bottom, null, needWidth, null, 0); + y, bottom, null, null, needWidth, null, 0); } /** @@ -665,13 +697,20 @@ public class TextLine { * run, can be null. * @param advances receives the advance information about the requested run, can be null. * @param advancesIndex the start index to fill in the advance information. + * @param x horizontal offset of the run. * @return the signed width from the start of the run to the leading edge * of the character at offset, based on the run (not paragraph) direction */ private float measureRun(int start, int offset, int limit, boolean runIsRtl, - @Nullable FontMetricsInt fmi, @Nullable float[] advances, int advancesIndex) { - return handleRun(start, offset, limit, runIsRtl, null, null, 0, 0, 0, 0, fmi, true, - advances, advancesIndex); + @Nullable FontMetricsInt fmi, @Nullable RectF drawBounds, @Nullable float[] advances, + int advancesIndex, float x) { + if (drawBounds != null && (mDir == Layout.DIR_LEFT_TO_RIGHT) == runIsRtl) { + float w = -measureRun(start, offset, limit, runIsRtl, null, null, null, 0, 0); + return handleRun(start, offset, limit, runIsRtl, null, null, x + w, 0, 0, 0, fmi, + drawBounds, true, advances, advancesIndex); + } + return handleRun(start, offset, limit, runIsRtl, null, null, x, 0, 0, 0, fmi, drawBounds, + true, advances, advancesIndex); } /** @@ -690,13 +729,13 @@ public class TextLine { int limit, boolean runIsRtl, float x, boolean needWidth) { if ((mDir == Layout.DIR_LEFT_TO_RIGHT) == runIsRtl) { - float w = -measureRun(start, limit, limit, runIsRtl, null, null, 0); - handleRun(start, limit, limit, runIsRtl, null, consumer, x + w, 0, 0, 0, null, + float w = -measureRun(start, limit, limit, runIsRtl, null, null, null, 0, 0); + handleRun(start, limit, limit, runIsRtl, null, consumer, x + w, 0, 0, 0, null, null, false, null, 0); return w; } - return handleRun(start, limit, limit, runIsRtl, null, consumer, x, 0, 0, 0, null, + return handleRun(start, limit, limit, runIsRtl, null, consumer, x, 0, 0, 0, null, null, needWidth, null, 0); } @@ -1037,17 +1076,25 @@ public class TextLine { } private float getRunAdvance(TextPaint wp, int start, int end, int contextStart, int contextEnd, - boolean runIsRtl, int offset, @Nullable float[] advances, int advancesIndex) { + boolean runIsRtl, int offset, @Nullable float[] advances, int advancesIndex, + RectF drawingBounds) { if (mCharsValid) { return wp.getRunCharacterAdvance(mChars, start, end, contextStart, contextEnd, - runIsRtl, offset, advances, advancesIndex); + runIsRtl, offset, advances, advancesIndex, drawingBounds); } else { final int delta = mStart; if (mComputed == null || advances != null) { return wp.getRunCharacterAdvance(mText, delta + start, delta + end, delta + contextStart, delta + contextEnd, runIsRtl, - delta + offset, advances, advancesIndex); + delta + offset, advances, advancesIndex, drawingBounds); } else { + if (drawingBounds != null) { + if (mTmpRectForPrecompute == null) { + mTmpRectForPrecompute = new Rect(); + } + mComputed.getBounds(start + delta, end + delta, mTmpRectForPrecompute); + drawingBounds.set(mTmpRectForPrecompute); + } return mComputed.getWidth(start + delta, end + delta); } } @@ -1079,7 +1126,7 @@ public class TextLine { private float handleText(TextPaint wp, int start, int end, int contextStart, int contextEnd, boolean runIsRtl, Canvas c, TextShaper.GlyphsConsumer consumer, float x, int top, int y, int bottom, - FontMetricsInt fmi, boolean needWidth, int offset, + FontMetricsInt fmi, RectF drawBounds, boolean needWidth, int offset, @Nullable ArrayList decorations, @Nullable float[] advances, int advancesIndex) { @@ -1087,6 +1134,9 @@ public class TextLine { wp.setWordSpacing(mAddedWidthForJustify); } // Get metrics first (even for empty strings or "0" width runs) + if (drawBounds != null && fmi == null) { + fmi = new FontMetricsInt(); + } if (fmi != null) { expandMetricsFromPaint(fmi, wp); } @@ -1101,8 +1151,19 @@ public class TextLine { final int numDecorations = decorations == null ? 0 : decorations.size(); if (needWidth || ((c != null || consumer != null) && (wp.bgColor != 0 || numDecorations != 0 || runIsRtl))) { + if (drawBounds != null && mTmpRectForPaintAPI == null) { + mTmpRectForPaintAPI = new RectF(); + } totalWidth = getRunAdvance(wp, start, end, contextStart, contextEnd, runIsRtl, offset, - advances, advancesIndex); + advances, advancesIndex, drawBounds == null ? null : mTmpRectForPaintAPI); + if (drawBounds != null) { + if (runIsRtl) { + mTmpRectForPaintAPI.offset(x - totalWidth, 0); + } else { + mTmpRectForPaintAPI.offset(x, 0); + } + drawBounds.union(mTmpRectForPaintAPI); + } } final float leftX, rightX; @@ -1145,9 +1206,9 @@ public class TextLine { final int decorationStart = Math.max(info.start, start); final int decorationEnd = Math.min(info.end, offset); float decorationStartAdvance = getRunAdvance(wp, start, end, contextStart, - contextEnd, runIsRtl, decorationStart, null, 0); + contextEnd, runIsRtl, decorationStart, null, 0, null); float decorationEndAdvance = getRunAdvance(wp, start, end, contextStart, - contextEnd, runIsRtl, decorationEnd, null, 0); + contextEnd, runIsRtl, decorationEnd, null, 0, null); final float decorationXLeft, decorationXRight; if (runIsRtl) { decorationXLeft = rightX - decorationEndAdvance; @@ -1322,7 +1383,7 @@ public class TextLine { private float handleRun(int start, int measureLimit, int limit, boolean runIsRtl, Canvas c, TextShaper.GlyphsConsumer consumer, float x, int top, int y, - int bottom, FontMetricsInt fmi, boolean needWidth, + int bottom, FontMetricsInt fmi, RectF drawBounds, boolean needWidth, @Nullable float[] advances, int advancesIndex) { if (measureLimit < start || measureLimit > limit) { @@ -1342,6 +1403,14 @@ public class TextLine { if (fmi != null) { expandMetricsFromPaint(fmi, wp); } + if (drawBounds != null) { + if (fmi == null) { + FontMetricsInt tmpFmi = new FontMetricsInt(); + expandMetricsFromPaint(tmpFmi, wp); + fmi = tmpFmi; + } + drawBounds.union(0f, fmi.top, 0f, fmi.bottom); + } return 0f; } @@ -1361,7 +1430,8 @@ public class TextLine { wp.setStartHyphenEdit(adjustStartHyphenEdit(start, wp.getStartHyphenEdit())); wp.setEndHyphenEdit(adjustEndHyphenEdit(limit, wp.getEndHyphenEdit())); return handleText(wp, start, limit, start, limit, runIsRtl, c, consumer, x, top, - y, bottom, fmi, needWidth, measureLimit, null, advances, advancesIndex); + y, bottom, fmi, drawBounds, needWidth, measureLimit, null, advances, + advancesIndex); } // Shaping needs to take into account context up to metric boundaries, @@ -1450,7 +1520,8 @@ public class TextLine { activePaint.setEndHyphenEdit( adjustEndHyphenEdit(activeEnd, mPaint.getEndHyphenEdit())); x += handleText(activePaint, activeStart, activeEnd, i, inext, runIsRtl, c, - consumer, x, top, y, bottom, fmi, needWidth || activeEnd < measureLimit, + consumer, x, top, y, bottom, fmi, drawBounds, + needWidth || activeEnd < measureLimit, Math.min(activeEnd, mlimit), mDecorations, advances, advancesIndex + activeStart - start); @@ -1478,7 +1549,7 @@ public class TextLine { activePaint.setEndHyphenEdit( adjustEndHyphenEdit(activeEnd, mPaint.getEndHyphenEdit())); x += handleText(activePaint, activeStart, activeEnd, i, inext, runIsRtl, c, consumer, x, - top, y, bottom, fmi, needWidth || activeEnd < measureLimit, + top, y, bottom, fmi, drawBounds, needWidth || activeEnd < measureLimit, Math.min(activeEnd, mlimit), mDecorations, advances, advancesIndex + activeStart - start); } diff --git a/core/java/android/text/flags/deprecate_fonts_xml.aconfig b/core/java/android/text/flags/deprecate_fonts_xml.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..58dc210af58147c800be48bb927c15de7fad404a --- /dev/null +++ b/core/java/android/text/flags/deprecate_fonts_xml.aconfig @@ -0,0 +1,8 @@ +package: "com.android.text.flags" + +flag { + name: "deprecate_fonts_xml" + namespace: "text" + description: "Feature flag for deprecating fonts.xml. By setting true for this feature flag, the new font configuration XML, /system/etc/font_fallback.xml is used. The new XML has a new syntax and flexibility of variable font declarations, but it is not compatible with the apps that reads fonts.xml. So, fonts.xml is maintained as a subset of the font_fallback.xml" + bug: "281769620" +} diff --git a/core/java/android/text/flags/no_break_no_hyphenation_span.aconfig b/core/java/android/text/flags/no_break_no_hyphenation_span.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..60f1e8802ea14d21146d19e1bcbc7be386d6cb02 --- /dev/null +++ b/core/java/android/text/flags/no_break_no_hyphenation_span.aconfig @@ -0,0 +1,8 @@ +package: "com.android.text.flags" + +flag { + name: "no_break_no_hyphenation_span" + namespace: "text" + description: "A feature flag that adding new spans that prevents line breaking and hyphenation." + bug: "283193586" +} diff --git a/core/java/android/text/flags/phrase_strict_fallback.aconfig b/core/java/android/text/flags/phrase_strict_fallback.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..c67a21bca0b44d6e6238bc0e6404b5fdf00d961e --- /dev/null +++ b/core/java/android/text/flags/phrase_strict_fallback.aconfig @@ -0,0 +1,8 @@ +package: "com.android.text.flags" + +flag { + name: "phrase_strict_fallback" + namespace: "text" + description: "Feature flag for automatic fallback from phrase based line break to strict line break." + bug: "281970875" +} diff --git a/core/java/android/text/flags/use_bounds_for_width.aconfig b/core/java/android/text/flags/use_bounds_for_width.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..d89d5f4c7216a9e50bfeaf52a15151c0aed3507a --- /dev/null +++ b/core/java/android/text/flags/use_bounds_for_width.aconfig @@ -0,0 +1,8 @@ +package: "com.android.text.flags" + +flag { + name: "use_bounds_for_width" + namespace: "text" + description: "Feature flag for preventing horizontal clipping." + bug: "63938206" +} diff --git a/core/java/android/text/style/LineBreakConfigSpan.java b/core/java/android/text/style/LineBreakConfigSpan.java index 90a79c6b3f943fd0255e5e3bbaafb828af388b3d..b8033a9d6fe1e84324abbc908643636adc4c25c4 100644 --- a/core/java/android/text/style/LineBreakConfigSpan.java +++ b/core/java/android/text/style/LineBreakConfigSpan.java @@ -16,6 +16,9 @@ package android.text.style; +import static com.android.text.flags.Flags.FLAG_NO_BREAK_NO_HYPHENATION_SPAN; + +import android.annotation.FlaggedApi; import android.annotation.NonNull; import android.graphics.text.LineBreakConfig; @@ -24,6 +27,7 @@ import java.util.Objects; /** * LineBreakSpan for changing line break style of the specific region of the text. */ +@FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN) public class LineBreakConfigSpan { private final LineBreakConfig mLineBreakConfig; @@ -60,4 +64,22 @@ public class LineBreakConfigSpan { public String toString() { return "LineBreakConfigSpan{mLineBreakConfig=" + mLineBreakConfig + '}'; } + + private static final LineBreakConfig sNoHyphenationConfig = new LineBreakConfig.Builder() + .setHyphenation(LineBreakConfig.HYPHENATION_DISABLED) + .build(); + + /** + * A specialized {@link LineBreakConfigSpan} that used for preventing hyphenation. + */ + @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN) + public static final class NoHyphenationSpan extends LineBreakConfigSpan { + /** + * Construct a new {@link NoHyphenationSpan}. + */ + @FlaggedApi(FLAG_NO_BREAK_NO_HYPHENATION_SPAN) + public NoHyphenationSpan() { + super(sNoHyphenationConfig); + } + } } diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java index 795500aef1035762f0f09cabde4554b47d79aa80..9148c4a101d7792ecd31dc3846d387a5749ec215 100755 --- a/core/java/android/util/DisplayMetrics.java +++ b/core/java/android/util/DisplayMetrics.java @@ -16,12 +16,16 @@ package android.util; +import android.annotation.IntDef; import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; import android.content.res.FontScaleConverter; import android.os.SystemProperties; import android.view.WindowManager; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** * A structure describing general information about a display, such as its * size, density, and font scaling. @@ -39,6 +43,35 @@ import android.view.WindowManager; * */ public class DisplayMetrics { + + @IntDef(prefix = { "DENSITY_" }, value = { + DENSITY_LOW, + DENSITY_140, + DENSITY_MEDIUM, + DENSITY_180, + DENSITY_200, + DENSITY_TV, + DENSITY_220, + DENSITY_HIGH, + DENSITY_260, + DENSITY_280, + DENSITY_300, + DENSITY_XHIGH, + DENSITY_340, + DENSITY_360, + DENSITY_400, + DENSITY_420, + DENSITY_440, + DENSITY_450, + DENSITY_XXHIGH, + DENSITY_520, + DENSITY_560, + DENSITY_600, + DENSITY_XXXHIGH, + }) + @Retention(RetentionPolicy.SOURCE) + @interface DensityDpi{} + /** * Standard quantized DPI for low-density screens. */ @@ -282,6 +315,7 @@ public class DisplayMetrics { * versions may be backported to previous Android versions, so applications * should not strongly rely on density matching one of the enum constants. */ + @DensityDpi public int densityDpi; /** * A scaling factor for fonts displayed on the display. This is the same diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java index 827600c83faebf7fdb8c2288511564af4f54d81c..2906d86f803d2ac290362f2c129745d13df8f40e 100644 --- a/core/java/android/util/FeatureFlagUtils.java +++ b/core/java/android/util/FeatureFlagUtils.java @@ -156,6 +156,13 @@ public class FeatureFlagUtils { public static final String SETTINGS_BIOMETRICS2_FINGERPRINT_SETTINGS = "settings_biometrics2_fingerprint"; + /** + * Flag to enable/disable remote auth enrollment and settings + * @hide + */ + public static final String SETTINGS_REMOTEAUTH_ENROLLMENT_SETTINGS = + "settings_remoteauth_enrollment"; + /** Flag to enable/disable entire page in Accessibility -> Hearing aids * @hide */ @@ -179,14 +186,6 @@ public class FeatureFlagUtils { */ public static final String SETTINGS_FLASH_NOTIFICATIONS = "settings_flash_notifications"; - /** - * Flag to disable/enable showing udfps enroll view in settings. If it's disabled, udfps enroll - * view is shown in system ui. - * @hide - */ - public static final String SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS = - "settings_show_udfps_enroll_in_settings"; - /** * Flag to enable lock screen credentials transfer API in Android U. * @hide @@ -243,10 +242,11 @@ public class FeatureFlagUtils { DEFAULT_FLAGS.put(SETTINGS_PREFER_ACCESSIBILITY_MENU_IN_SYSTEM, "false"); DEFAULT_FLAGS.put(SETTINGS_AUDIO_ROUTING, "false"); DEFAULT_FLAGS.put(SETTINGS_FLASH_NOTIFICATIONS, "true"); - DEFAULT_FLAGS.put(SETTINGS_SHOW_UDFPS_ENROLL_IN_SETTINGS, "true"); DEFAULT_FLAGS.put(SETTINGS_ENABLE_LOCKSCREEN_TRANSFER_API, "true"); DEFAULT_FLAGS.put(SETTINGS_REMOTE_DEVICE_CREDENTIAL_VALIDATION, "true"); DEFAULT_FLAGS.put(SETTINGS_BIOMETRICS2_FINGERPRINT_SETTINGS, "false"); + // TODO: b/298454866 Replace with Trunk Stable Feature Flag + DEFAULT_FLAGS.put(SETTINGS_REMOTEAUTH_ENROLLMENT_SETTINGS, "false"); } private static final Set PERSISTENT_FLAGS; diff --git a/core/java/android/util/IntArray.java b/core/java/android/util/IntArray.java index 511cb2df712dbac174809aa13fcb2b3db52ee002..ac76fc2eb4695e8f1522e90ee8183b2d52f6db42 100644 --- a/core/java/android/util/IntArray.java +++ b/core/java/android/util/IntArray.java @@ -212,6 +212,11 @@ public class IntArray implements Cloneable { return -1; } + /** Returns {@code true} if this array contains the specified value. */ + public boolean contains(int value) { + return indexOf(value) != -1; + } + /** * Removes the value at the specified index from this array. */ diff --git a/core/java/android/util/Patterns.java b/core/java/android/util/Patterns.java index ece069fa087373a6f5ce02db33930b3f3337bce9..c4660c474e570100ef8257cb5b34d9b94344c9ea 100644 --- a/core/java/android/util/Patterns.java +++ b/core/java/android/util/Patterns.java @@ -111,7 +111,7 @@ public class Patterns { /** * Regular expression to match all IANA top-level domains. * - * List accurate as of 2015/11/24. List taken from: + * List accurate as of 2023/09/11. List taken from: * http://data.iana.org/TLD/tlds-alpha-by-domain.txt * This pattern is auto-generated by frameworks/ex/common/tools/make-iana-tld-pattern.py * @@ -119,121 +119,167 @@ public class Patterns { */ static final String IANA_TOP_LEVEL_DOMAINS = "(?:" - + "(?:aaa|aarp|abb|abbott|abogado|academy|accenture|accountant|accountants|aco|active" - + "|actor|ads|adult|aeg|aero|afl|agency|aig|airforce|airtel|allfinanz|alsace|amica|amsterdam" - + "|android|apartments|app|apple|aquarelle|aramco|archi|army|arpa|arte|asia|associates" - + "|attorney|auction|audio|auto|autos|axa|azure|a[cdefgilmoqrstuwxz])" - + "|(?:band|bank|bar|barcelona|barclaycard|barclays|bargains|bauhaus|bayern|bbc|bbva" - + "|bcn|beats|beer|bentley|berlin|best|bet|bharti|bible|bid|bike|bing|bingo|bio|biz|black" - + "|blackfriday|bloomberg|blue|bms|bmw|bnl|bnpparibas|boats|bom|bond|boo|boots|boutique" - + "|bradesco|bridgestone|broadway|broker|brother|brussels|budapest|build|builders|business" - + "|buzz|bzh|b[abdefghijmnorstvwyz])" - + "|(?:cab|cafe|cal|camera|camp|cancerresearch|canon|capetown|capital|car|caravan|cards" - + "|care|career|careers|cars|cartier|casa|cash|casino|cat|catering|cba|cbn|ceb|center|ceo" - + "|cern|cfa|cfd|chanel|channel|chat|cheap|chloe|christmas|chrome|church|cipriani|cisco" - + "|citic|city|cityeats|claims|cleaning|click|clinic|clothing|cloud|club|clubmed|coach" - + "|codes|coffee|college|cologne|com|commbank|community|company|computer|comsec|condos" - + "|construction|consulting|contractors|cooking|cool|coop|corsica|country|coupons|courses" - + "|credit|creditcard|creditunion|cricket|crown|crs|cruises|csc|cuisinella|cymru|cyou|c[acdfghiklmnoruvwxyz])" - + "|(?:dabur|dad|dance|date|dating|datsun|day|dclk|deals|degree|delivery|dell|delta" - + "|democrat|dental|dentist|desi|design|dev|diamonds|diet|digital|direct|directory|discount" - + "|dnp|docs|dog|doha|domains|doosan|download|drive|durban|dvag|d[ejkmoz])" - + "|(?:earth|eat|edu|education|email|emerck|energy|engineer|engineering|enterprises" - + "|epson|equipment|erni|esq|estate|eurovision|eus|events|everbank|exchange|expert|exposed" - + "|express|e[cegrstu])" - + "|(?:fage|fail|fairwinds|faith|family|fan|fans|farm|fashion|feedback|ferrero|film" - + "|final|finance|financial|firmdale|fish|fishing|fit|fitness|flights|florist|flowers|flsmidth" - + "|fly|foo|football|forex|forsale|forum|foundation|frl|frogans|fund|furniture|futbol|fyi" - + "|f[ijkmor])" - + "|(?:gal|gallery|game|garden|gbiz|gdn|gea|gent|genting|ggee|gift|gifts|gives|giving" - + "|glass|gle|global|globo|gmail|gmo|gmx|gold|goldpoint|golf|goo|goog|google|gop|gov|grainger" - + "|graphics|gratis|green|gripe|group|gucci|guge|guide|guitars|guru|g[abdefghilmnpqrstuwy])" - + "|(?:hamburg|hangout|haus|healthcare|help|here|hermes|hiphop|hitachi|hiv|hockey|holdings" - + "|holiday|homedepot|homes|honda|horse|host|hosting|hoteles|hotmail|house|how|hsbc|hyundai" - + "|h[kmnrtu])" - + "|(?:ibm|icbc|ice|icu|ifm|iinet|immo|immobilien|industries|infiniti|info|ing|ink|institute" - + "|insure|int|international|investments|ipiranga|irish|ist|istanbul|itau|iwc|i[delmnoqrst])" - + "|(?:jaguar|java|jcb|jetzt|jewelry|jlc|jll|jobs|joburg|jprs|juegos|j[emop])" - + "|(?:kaufen|kddi|kia|kim|kinder|kitchen|kiwi|koeln|komatsu|krd|kred|kyoto|k[eghimnprwyz])" - + "|(?:lacaixa|lancaster|land|landrover|lasalle|lat|latrobe|law|lawyer|lds|lease|leclerc" - + "|legal|lexus|lgbt|liaison|lidl|life|lifestyle|lighting|limited|limo|linde|link|live" - + "|lixil|loan|loans|lol|london|lotte|lotto|love|ltd|ltda|lupin|luxe|luxury|l[abcikrstuvy])" - + "|(?:madrid|maif|maison|man|management|mango|market|marketing|markets|marriott|mba" - + "|media|meet|melbourne|meme|memorial|men|menu|meo|miami|microsoft|mil|mini|mma|mobi|moda" - + "|moe|moi|mom|monash|money|montblanc|mormon|mortgage|moscow|motorcycles|mov|movie|movistar" - + "|mtn|mtpc|mtr|museum|mutuelle|m[acdeghklmnopqrstuvwxyz])" - + "|(?:nadex|nagoya|name|navy|nec|net|netbank|network|neustar|new|news|nexus|ngo|nhk" - + "|nico|ninja|nissan|nokia|nra|nrw|ntt|nyc|n[acefgilopruz])" - + "|(?:obi|office|okinawa|omega|one|ong|onl|online|ooo|oracle|orange|org|organic|osaka" - + "|otsuka|ovh|om)" - + "|(?:page|panerai|paris|partners|parts|party|pet|pharmacy|philips|photo|photography" - + "|photos|physio|piaget|pics|pictet|pictures|ping|pink|pizza|place|play|playstation|plumbing" - + "|plus|pohl|poker|porn|post|praxi|press|pro|prod|productions|prof|properties|property" - + "|protection|pub|p[aefghklmnrstwy])" - + "|(?:qpon|quebec|qa)" - + "|(?:racing|realtor|realty|recipes|red|redstone|rehab|reise|reisen|reit|ren|rent|rentals" - + "|repair|report|republican|rest|restaurant|review|reviews|rich|ricoh|rio|rip|rocher|rocks" - + "|rodeo|rsvp|ruhr|run|rwe|ryukyu|r[eosuw])" - + "|(?:saarland|sakura|sale|samsung|sandvik|sandvikcoromant|sanofi|sap|sapo|sarl|saxo" - + "|sbs|sca|scb|schmidt|scholarships|school|schule|schwarz|science|scor|scot|seat|security" - + "|seek|sener|services|seven|sew|sex|sexy|shiksha|shoes|show|shriram|singles|site|ski" - + "|sky|skype|sncf|soccer|social|software|sohu|solar|solutions|sony|soy|space|spiegel|spreadbetting" - + "|srl|stada|starhub|statoil|stc|stcgroup|stockholm|studio|study|style|sucks|supplies" - + "|supply|support|surf|surgery|suzuki|swatch|swiss|sydney|systems|s[abcdeghijklmnortuvxyz])" - + "|(?:tab|taipei|tatamotors|tatar|tattoo|tax|taxi|team|tech|technology|tel|telefonica" - + "|temasek|tennis|thd|theater|theatre|tickets|tienda|tips|tires|tirol|today|tokyo|tools" - + "|top|toray|toshiba|tours|town|toyota|toys|trade|trading|training|travel|trust|tui|t[cdfghjklmnortvwz])" - + "|(?:ubs|university|uno|uol|u[agksyz])" - + "|(?:vacations|vana|vegas|ventures|versicherung|vet|viajes|video|villas|vin|virgin" - + "|vision|vista|vistaprint|viva|vlaanderen|vodka|vote|voting|voto|voyage|v[aceginu])" - + "|(?:wales|walter|wang|watch|webcam|website|wed|wedding|weir|whoswho|wien|wiki|williamhill" - + "|win|windows|wine|wme|work|works|world|wtc|wtf|w[fs])" - + "|(?:\u03b5\u03bb|\u0431\u0435\u043b|\u0434\u0435\u0442\u0438|\u043a\u043e\u043c|\u043c\u043a\u0434" + + "(?:aaa|aarp|abb|abbott|abbvie|abc|able|abogado|abudhabi|academy|accenture|accountant" + + "|accountants|aco|actor|ads|adult|aeg|aero|aetna|afl|africa|agakhan|agency|aig|airbus" + + "|airforce|airtel|akdn|alibaba|alipay|allfinanz|allstate|ally|alsace|alstom|amazon|americanexpress" + + "|americanfamily|amex|amfam|amica|amsterdam|analytics|android|anquan|anz|aol|apartments" + + "|app|apple|aquarelle|arab|aramco|archi|army|arpa|art|arte|asda|asia|associates|athleta" + + "|attorney|auction|audi|audible|audio|auspost|author|auto|autos|avianca|aws|axa|azure" + + "|a[cdefgilmoqrstuwxz])" + + "|(?:baby|baidu|banamex|bananarepublic|band|bank|bar|barcelona|barclaycard|barclays" + + "|barefoot|bargains|baseball|basketball|bauhaus|bayern|bbc|bbt|bbva|bcg|bcn|beats|beauty" + + "|beer|bentley|berlin|best|bestbuy|bet|bharti|bible|bid|bike|bing|bingo|bio|biz|black" + + "|blackfriday|blockbuster|blog|bloomberg|blue|bms|bmw|bnpparibas|boats|boehringer|bofa" + + "|bom|bond|boo|book|booking|bosch|bostik|boston|bot|boutique|box|bradesco|bridgestone" + + "|broadway|broker|brother|brussels|build|builders|business|buy|buzz|bzh|b[abdefghijmnorstvwyz])" + + "|(?:cab|cafe|cal|call|calvinklein|cam|camera|camp|canon|capetown|capital|capitalone" + + "|car|caravan|cards|care|career|careers|cars|casa|case|cash|casino|cat|catering|catholic" + + "|cba|cbn|cbre|cbs|center|ceo|cern|cfa|cfd|chanel|channel|charity|chase|chat|cheap|chintai" + + "|christmas|chrome|church|cipriani|circle|cisco|citadel|citi|citic|city|cityeats|claims" + + "|cleaning|click|clinic|clinique|clothing|cloud|club|clubmed|coach|codes|coffee|college" + + "|cologne|com|comcast|commbank|community|company|compare|computer|comsec|condos|construction" + + "|consulting|contact|contractors|cooking|cool|coop|corsica|country|coupon|coupons|courses" + + "|cpa|credit|creditcard|creditunion|cricket|crown|crs|cruise|cruises|cuisinella|cymru" + + "|cyou|c[acdfghiklmnoruvwxyz])" + + "|(?:dabur|dad|dance|data|date|dating|datsun|day|dclk|dds|deal|dealer|deals|degree" + + "|delivery|dell|deloitte|delta|democrat|dental|dentist|desi|design|dev|dhl|diamonds|diet" + + "|digital|direct|directory|discount|discover|dish|diy|dnp|docs|doctor|dog|domains|dot" + + "|download|drive|dtv|dubai|dunlop|dupont|durban|dvag|dvr|d[ejkmoz])" + + "|(?:earth|eat|eco|edeka|edu|education|email|emerck|energy|engineer|engineering|enterprises" + + "|epson|equipment|ericsson|erni|esq|estate|etisalat|eurovision|eus|events|exchange|expert" + + "|exposed|express|extraspace|e[cegrstu])" + + "|(?:fage|fail|fairwinds|faith|family|fan|fans|farm|farmers|fashion|fast|fedex|feedback" + + "|ferrari|ferrero|fidelity|fido|film|final|finance|financial|fire|firestone|firmdale" + + "|fish|fishing|fit|fitness|flickr|flights|flir|florist|flowers|fly|foo|food|football" + + "|ford|forex|forsale|forum|foundation|fox|free|fresenius|frl|frogans|frontdoor|frontier" + + "|ftr|fujitsu|fun|fund|furniture|futbol|fyi|f[ijkmor])" + + "|(?:gal|gallery|gallo|gallup|game|games|gap|garden|gay|gbiz|gdn|gea|gent|genting" + + "|george|ggee|gift|gifts|gives|giving|glass|gle|global|globo|gmail|gmbh|gmo|gmx|godaddy" + + "|gold|goldpoint|golf|goo|goodyear|goog|google|gop|got|gov|grainger|graphics|gratis|green" + + "|gripe|grocery|group|guardian|gucci|guge|guide|guitars|guru|g[abdefghilmnpqrstuwy])" + + "|(?:hair|hamburg|hangout|haus|hbo|hdfc|hdfcbank|health|healthcare|help|helsinki|here" + + "|hermes|hiphop|hisamitsu|hitachi|hiv|hkt|hockey|holdings|holiday|homedepot|homegoods" + + "|homes|homesense|honda|horse|hospital|host|hosting|hot|hotels|hotmail|house|how|hsbc" + + "|hughes|hyatt|hyundai|h[kmnrtu])" + + "|(?:ibm|icbc|ice|icu|ieee|ifm|ikano|imamat|imdb|immo|immobilien|inc|industries|infiniti" + + "|info|ing|ink|institute|insurance|insure|int|international|intuit|investments|ipiranga" + + "|irish|ismaili|ist|istanbul|itau|itv|i[delmnoqrst])" + + "|(?:jaguar|java|jcb|jeep|jetzt|jewelry|jio|jll|jmp|jnj|jobs|joburg|jot|joy|jpmorgan" + + "|jprs|juegos|juniper|j[emop])" + + "|(?:kaufen|kddi|kerryhotels|kerrylogistics|kerryproperties|kfh|kia|kids|kim|kinder" + + "|kindle|kitchen|kiwi|koeln|komatsu|kosher|kpmg|kpn|krd|kred|kuokgroup|kyoto|k[eghimnprwyz])" + + "|(?:lacaixa|lamborghini|lamer|lancaster|land|landrover|lanxess|lasalle|lat|latino" + + "|latrobe|law|lawyer|lds|lease|leclerc|lefrak|legal|lego|lexus|lgbt|lidl|life|lifeinsurance" + + "|lifestyle|lighting|like|lilly|limited|limo|lincoln|link|lipsy|live|living|llc|llp|loan" + + "|loans|locker|locus|lol|london|lotte|lotto|love|lpl|lplfinancial|ltd|ltda|lundbeck|luxe" + + "|luxury|l[abcikrstuvy])" + + "|(?:madrid|maif|maison|makeup|man|management|mango|map|market|marketing|markets|marriott" + + "|marshalls|mattel|mba|mckinsey|med|media|meet|melbourne|meme|memorial|men|menu|merckmsd" + + "|miami|microsoft|mil|mini|mint|mit|mitsubishi|mlb|mls|mma|mobi|mobile|moda|moe|moi|mom" + + "|monash|money|monster|mormon|mortgage|moscow|moto|motorcycles|mov|movie|msd|mtn|mtr" + + "|museum|music|m[acdeghklmnopqrstuvwxyz])" + + "|(?:nab|nagoya|name|natura|navy|nba|nec|net|netbank|netflix|network|neustar|new|news" + + "|next|nextdirect|nexus|nfl|ngo|nhk|nico|nike|nikon|ninja|nissan|nissay|nokia|norton" + + "|now|nowruz|nowtv|nra|nrw|ntt|nyc|n[acefgilopruz])" + + "|(?:obi|observer|office|okinawa|olayan|olayangroup|oldnavy|ollo|omega|one|ong|onl" + + "|online|ooo|open|oracle|orange|org|organic|origins|osaka|otsuka|ott|ovh|om)" + + "|(?:page|panasonic|paris|pars|partners|parts|party|pay|pccw|pet|pfizer|pharmacy|phd" + + "|philips|phone|photo|photography|photos|physio|pics|pictet|pictures|pid|pin|ping|pink" + + "|pioneer|pizza|place|play|playstation|plumbing|plus|pnc|pohl|poker|politie|porn|post" + + "|pramerica|praxi|press|prime|pro|prod|productions|prof|progressive|promo|properties" + + "|property|protection|pru|prudential|pub|pwc|p[aefghklmnrstwy])" + + "|(?:qpon|quebec|quest|qa)" + + "|(?:racing|radio|read|realestate|realtor|realty|recipes|red|redstone|redumbrella" + + "|rehab|reise|reisen|reit|reliance|ren|rent|rentals|repair|report|republican|rest|restaurant" + + "|review|reviews|rexroth|rich|richardli|ricoh|ril|rio|rip|rocher|rocks|rodeo|rogers|room" + + "|rsvp|rugby|ruhr|run|rwe|ryukyu|r[eosuw])" + + "|(?:saarland|safe|safety|sakura|sale|salon|samsclub|samsung|sandvik|sandvikcoromant" + + "|sanofi|sap|sarl|sas|save|saxo|sbi|sbs|sca|scb|schaeffler|schmidt|scholarships|school" + + "|schule|schwarz|science|scot|search|seat|secure|security|seek|select|sener|services" + + "|seven|sew|sex|sexy|sfr|shangrila|sharp|shaw|shell|shia|shiksha|shoes|shop|shopping" + + "|shouji|show|showtime|silk|sina|singles|site|ski|skin|sky|skype|sling|smart|smile|sncf" + + "|soccer|social|softbank|software|sohu|solar|solutions|song|sony|soy|spa|space|sport" + + "|spot|srl|stada|staples|star|statebank|statefarm|stc|stcgroup|stockholm|storage|store" + + "|stream|studio|study|style|sucks|supplies|supply|support|surf|surgery|suzuki|swatch" + + "|swiss|sydney|systems|s[abcdeghijklmnorstuvxyz])" + + "|(?:tab|taipei|talk|taobao|target|tatamotors|tatar|tattoo|tax|taxi|tci|tdk|team|tech" + + "|technology|tel|temasek|tennis|teva|thd|theater|theatre|tiaa|tickets|tienda|tips|tires" + + "|tirol|tjmaxx|tjx|tkmaxx|tmall|today|tokyo|tools|top|toray|toshiba|total|tours|town" + + "|toyota|toys|trade|trading|training|travel|travelers|travelersinsurance|trust|trv|tube" + + "|tui|tunes|tushu|tvs|t[cdfghjklmnortvwz])" + + "|(?:ubank|ubs|unicom|university|uno|uol|ups|u[agksyz])" + + "|(?:vacations|vana|vanguard|vegas|ventures|verisign|versicherung|vet|viajes|video" + + "|vig|viking|villas|vin|vip|virgin|visa|vision|viva|vivo|vlaanderen|vodka|volkswagen" + + "|volvo|vote|voting|voto|voyage|v[aceginu])" + + "|(?:wales|walmart|walter|wang|wanggou|watch|watches|weather|weatherchannel|webcam" + + "|weber|website|wed|wedding|weibo|weir|whoswho|wien|wiki|williamhill|win|windows|wine" + + "|winners|wme|wolterskluwer|woodside|work|works|world|wow|wtc|wtf|w[fs])" + + "|(?:\u03b5\u03bb|\u03b5\u03c5|\u0431\u0433|\u0431\u0435\u043b|\u0434\u0435\u0442\u0438" + + "|\u0435\u044e|\u043a\u0430\u0442\u043e\u043b\u0438\u043a|\u043a\u043e\u043c|\u043c\u043a\u0434" + "|\u043c\u043e\u043d|\u043c\u043e\u0441\u043a\u0432\u0430|\u043e\u043d\u043b\u0430\u0439\u043d" + "|\u043e\u0440\u0433|\u0440\u0443\u0441|\u0440\u0444|\u0441\u0430\u0439\u0442|\u0441\u0440\u0431" - + "|\u0443\u043a\u0440|\u049b\u0430\u0437|\u0570\u0561\u0575|\u05e7\u05d5\u05dd|\u0627\u0631\u0627\u0645\u0643\u0648" - + "|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629" - + "|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a|\u0627\u06cc\u0631\u0627\u0646" - + "|\u0628\u0627\u0632\u0627\u0631|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633" - + "|\u0633\u0648\u062f\u0627\u0646|\u0633\u0648\u0631\u064a\u0629|\u0634\u0628\u0643\u0629" - + "|\u0639\u0631\u0627\u0642|\u0639\u0645\u0627\u0646|\u0641\u0644\u0633\u0637\u064a\u0646" - + "|\u0642\u0637\u0631|\u0643\u0648\u0645|\u0645\u0635\u0631|\u0645\u0644\u064a\u0633\u064a\u0627" - + "|\u0645\u0648\u0642\u0639|\u0915\u0949\u092e|\u0928\u0947\u091f|\u092d\u093e\u0930\u0924" - + "|\u0938\u0902\u0917\u0920\u0928|\u09ad\u09be\u09b0\u09a4|\u0a2d\u0a3e\u0a30\u0a24|\u0aad\u0abe\u0ab0\u0aa4" - + "|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd" - + "|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0dbd\u0d82\u0d9a\u0dcf|\u0e04\u0e2d\u0e21|\u0e44\u0e17\u0e22" - + "|\u10d2\u10d4|\u307f\u3093\u306a|\u30b0\u30fc\u30b0\u30eb|\u30b3\u30e0|\u4e16\u754c" - + "|\u4e2d\u4fe1|\u4e2d\u56fd|\u4e2d\u570b|\u4e2d\u6587\u7f51|\u4f01\u4e1a|\u4f5b\u5c71" - + "|\u4fe1\u606f|\u5065\u5eb7|\u516b\u5366|\u516c\u53f8|\u516c\u76ca|\u53f0\u6e7e|\u53f0\u7063" - + "|\u5546\u57ce|\u5546\u5e97|\u5546\u6807|\u5728\u7ebf|\u5927\u62ff|\u5a31\u4e50|\u5de5\u884c" - + "|\u5e7f\u4e1c|\u6148\u5584|\u6211\u7231\u4f60|\u624b\u673a|\u653f\u52a1|\u653f\u5e9c" - + "|\u65b0\u52a0\u5761|\u65b0\u95fb|\u65f6\u5c1a|\u673a\u6784|\u6de1\u9a6c\u9521|\u6e38\u620f" - + "|\u70b9\u770b|\u79fb\u52a8|\u7ec4\u7ec7\u673a\u6784|\u7f51\u5740|\u7f51\u5e97|\u7f51\u7edc" - + "|\u8c37\u6b4c|\u96c6\u56e2|\u98de\u5229\u6d66|\u9910\u5385|\u9999\u6e2f|\ub2f7\ub137" - + "|\ub2f7\ucef4|\uc0bc\uc131|\ud55c\uad6d|xbox" - + "|xerox|xin|xn\\-\\-11b4c3d|xn\\-\\-1qqw23a|xn\\-\\-30rr7y|xn\\-\\-3bst00m|xn\\-\\-3ds443g" - + "|xn\\-\\-3e0b707e|xn\\-\\-3pxu8k|xn\\-\\-42c2d9a|xn\\-\\-45brj9c|xn\\-\\-45q11c|xn\\-\\-4gbrim" - + "|xn\\-\\-55qw42g|xn\\-\\-55qx5d|xn\\-\\-6frz82g|xn\\-\\-6qq986b3xl|xn\\-\\-80adxhks" - + "|xn\\-\\-80ao21a|xn\\-\\-80asehdb|xn\\-\\-80aswg|xn\\-\\-90a3ac|xn\\-\\-90ais|xn\\-\\-9dbq2a" - + "|xn\\-\\-9et52u|xn\\-\\-b4w605ferd|xn\\-\\-c1avg|xn\\-\\-c2br7g|xn\\-\\-cg4bki|xn\\-\\-clchc0ea0b2g2a9gcd" - + "|xn\\-\\-czr694b|xn\\-\\-czrs0t|xn\\-\\-czru2d|xn\\-\\-d1acj3b|xn\\-\\-d1alf|xn\\-\\-efvy88h" - + "|xn\\-\\-estv75g|xn\\-\\-fhbei|xn\\-\\-fiq228c5hs|xn\\-\\-fiq64b|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s" - + "|xn\\-\\-fjq720a|xn\\-\\-flw351e|xn\\-\\-fpcrj9c3d|xn\\-\\-fzc2c9e2c|xn\\-\\-gecrj9c" - + "|xn\\-\\-h2brj9c|xn\\-\\-hxt814e|xn\\-\\-i1b6b1a6a2e|xn\\-\\-imr513n|xn\\-\\-io0a7i" - + "|xn\\-\\-j1aef|xn\\-\\-j1amh|xn\\-\\-j6w193g|xn\\-\\-kcrx77d1x4a|xn\\-\\-kprw13d|xn\\-\\-kpry57d" + + "|\u0443\u043a\u0440|\u049b\u0430\u0437|\u0570\u0561\u0575|\u05d9\u05e9\u05e8\u05d0\u05dc" + + "|\u05e7\u05d5\u05dd|\u0627\u0628\u0648\u0638\u0628\u064a|\u0627\u062a\u0635\u0627\u0644\u0627\u062a" + + "|\u0627\u0631\u0627\u0645\u0643\u0648|\u0627\u0644\u0627\u0631\u062f\u0646|\u0627\u0644\u0628\u062d\u0631\u064a\u0646" + + "|\u0627\u0644\u062c\u0632\u0627\u0626\u0631|\u0627\u0644\u0633\u0639\u0648\u062f\u064a\u0629" + + "|\u0627\u0644\u0639\u0644\u064a\u0627\u0646|\u0627\u0644\u0645\u063a\u0631\u0628|\u0627\u0645\u0627\u0631\u0627\u062a" + + "|\u0627\u06cc\u0631\u0627\u0646|\u0628\u0627\u0631\u062a|\u0628\u0627\u0632\u0627\u0631" + + "|\u0628\u064a\u062a\u0643|\u0628\u06be\u0627\u0631\u062a|\u062a\u0648\u0646\u0633|\u0633\u0648\u062f\u0627\u0646" + + "|\u0633\u0648\u0631\u064a\u0629|\u0634\u0628\u0643\u0629|\u0639\u0631\u0627\u0642|\u0639\u0631\u0628" + + "|\u0639\u0645\u0627\u0646|\u0641\u0644\u0633\u0637\u064a\u0646|\u0642\u0637\u0631|\u0643\u0627\u062b\u0648\u0644\u064a\u0643" + + "|\u0643\u0648\u0645|\u0645\u0635\u0631|\u0645\u0644\u064a\u0633\u064a\u0627|\u0645\u0648\u0631\u064a\u062a\u0627\u0646\u064a\u0627" + + "|\u0645\u0648\u0642\u0639|\u0647\u0645\u0631\u0627\u0647|\u067e\u0627\u06a9\u0633\u062a\u0627\u0646" + + "|\u0680\u0627\u0631\u062a|\u0915\u0949\u092e|\u0928\u0947\u091f|\u092d\u093e\u0930\u0924" + + "|\u092d\u093e\u0930\u0924\u092e\u094d|\u092d\u093e\u0930\u094b\u0924|\u0938\u0902\u0917\u0920\u0928" + + "|\u09ac\u09be\u0982\u09b2\u09be|\u09ad\u09be\u09b0\u09a4|\u09ad\u09be\u09f0\u09a4|\u0a2d\u0a3e\u0a30\u0a24" + + "|\u0aad\u0abe\u0ab0\u0aa4|\u0b2d\u0b3e\u0b30\u0b24|\u0b87\u0ba8\u0bcd\u0ba4\u0bbf\u0baf\u0bbe" + + "|\u0b87\u0bb2\u0b99\u0bcd\u0b95\u0bc8|\u0b9a\u0bbf\u0b99\u0bcd\u0b95\u0baa\u0bcd\u0baa\u0bc2\u0bb0\u0bcd" + + "|\u0c2d\u0c3e\u0c30\u0c24\u0c4d|\u0cad\u0cbe\u0cb0\u0ca4|\u0d2d\u0d3e\u0d30\u0d24\u0d02" + + "|\u0dbd\u0d82\u0d9a\u0dcf|\u0e04\u0e2d\u0e21|\u0e44\u0e17\u0e22|\u0ea5\u0eb2\u0ea7|\u10d2\u10d4" + + "|\u307f\u3093\u306a|\u30a2\u30de\u30be\u30f3|\u30af\u30e9\u30a6\u30c9|\u30b0\u30fc\u30b0\u30eb" + + "|\u30b3\u30e0|\u30b9\u30c8\u30a2|\u30bb\u30fc\u30eb|\u30d5\u30a1\u30c3\u30b7\u30e7\u30f3" + + "|\u30dd\u30a4\u30f3\u30c8|\u4e16\u754c|\u4e2d\u4fe1|\u4e2d\u56fd|\u4e2d\u570b|\u4e2d\u6587\u7f51" + + "|\u4e9a\u9a6c\u900a|\u4f01\u4e1a|\u4f5b\u5c71|\u4fe1\u606f|\u5065\u5eb7|\u516b\u5366" + + "|\u516c\u53f8|\u516c\u76ca|\u53f0\u6e7e|\u53f0\u7063|\u5546\u57ce|\u5546\u5e97|\u5546\u6807" + + "|\u5609\u91cc|\u5609\u91cc\u5927\u9152\u5e97|\u5728\u7ebf|\u5927\u62ff|\u5929\u4e3b\u6559" + + "|\u5a31\u4e50|\u5bb6\u96fb|\u5e7f\u4e1c|\u5fae\u535a|\u6148\u5584|\u6211\u7231\u4f60" + + "|\u624b\u673a|\u62db\u8058|\u653f\u52a1|\u653f\u5e9c|\u65b0\u52a0\u5761|\u65b0\u95fb" + + "|\u65f6\u5c1a|\u66f8\u7c4d|\u673a\u6784|\u6de1\u9a6c\u9521|\u6e38\u620f|\u6fb3\u9580" + + "|\u70b9\u770b|\u79fb\u52a8|\u7ec4\u7ec7\u673a\u6784|\u7f51\u5740|\u7f51\u5e97|\u7f51\u7ad9" + + "|\u7f51\u7edc|\u8054\u901a|\u8c37\u6b4c|\u8d2d\u7269|\u901a\u8ca9|\u96c6\u56e2|\u96fb\u8a0a\u76c8\u79d1" + + "|\u98de\u5229\u6d66|\u98df\u54c1|\u9910\u5385|\u9999\u683c\u91cc\u62c9|\u9999\u6e2f" + + "|\ub2f7\ub137|\ub2f7\ucef4|\uc0bc\uc131|\ud55c\uad6d" + + "|xbox|xerox|xfinity|xihuan|xin|xn\\-\\-11b4c3d|xn\\-\\-1ck2e1b|xn\\-\\-1qqw23a|xn\\-\\-2scrj9c" + + "|xn\\-\\-30rr7y|xn\\-\\-3bst00m|xn\\-\\-3ds443g|xn\\-\\-3e0b707e|xn\\-\\-3hcrj9c|xn\\-\\-3pxu8k" + + "|xn\\-\\-42c2d9a|xn\\-\\-45br5cyl|xn\\-\\-45brj9c|xn\\-\\-45q11c|xn\\-\\-4dbrk0ce|xn\\-\\-4gbrim" + + "|xn\\-\\-54b7fta0cc|xn\\-\\-55qw42g|xn\\-\\-55qx5d|xn\\-\\-5su34j936bgsg|xn\\-\\-5tzm5g" + + "|xn\\-\\-6frz82g|xn\\-\\-6qq986b3xl|xn\\-\\-80adxhks|xn\\-\\-80ao21a|xn\\-\\-80aqecdr1a" + + "|xn\\-\\-80asehdb|xn\\-\\-80aswg|xn\\-\\-8y0a063a|xn\\-\\-90a3ac|xn\\-\\-90ae|xn\\-\\-90ais" + + "|xn\\-\\-9dbq2a|xn\\-\\-9et52u|xn\\-\\-9krt00a|xn\\-\\-b4w605ferd|xn\\-\\-bck1b9a5dre4c" + + "|xn\\-\\-c1avg|xn\\-\\-c2br7g|xn\\-\\-cck2b3b|xn\\-\\-cckwcxetd|xn\\-\\-cg4bki|xn\\-\\-clchc0ea0b2g2a9gcd" + + "|xn\\-\\-czr694b|xn\\-\\-czrs0t|xn\\-\\-czru2d|xn\\-\\-d1acj3b|xn\\-\\-d1alf|xn\\-\\-e1a4c" + + "|xn\\-\\-eckvdtc9d|xn\\-\\-efvy88h|xn\\-\\-fct429k|xn\\-\\-fhbei|xn\\-\\-fiq228c5hs" + + "|xn\\-\\-fiq64b|xn\\-\\-fiqs8s|xn\\-\\-fiqz9s|xn\\-\\-fjq720a|xn\\-\\-flw351e|xn\\-\\-fpcrj9c3d" + + "|xn\\-\\-fzc2c9e2c|xn\\-\\-fzys8d69uvgm|xn\\-\\-g2xx48c|xn\\-\\-gckr3f0f|xn\\-\\-gecrj9c" + + "|xn\\-\\-gk3at1e|xn\\-\\-h2breg3eve|xn\\-\\-h2brj9c|xn\\-\\-h2brj9c8c|xn\\-\\-hxt814e" + + "|xn\\-\\-i1b6b1a6a2e|xn\\-\\-imr513n|xn\\-\\-io0a7i|xn\\-\\-j1aef|xn\\-\\-j1amh|xn\\-\\-j6w193g" + + "|xn\\-\\-jlq480n2rg|xn\\-\\-jvr189m|xn\\-\\-kcrx77d1x4a|xn\\-\\-kprw13d|xn\\-\\-kpry57d" + "|xn\\-\\-kput3i|xn\\-\\-l1acc|xn\\-\\-lgbbat1ad8j|xn\\-\\-mgb9awbf|xn\\-\\-mgba3a3ejt" - + "|xn\\-\\-mgba3a4f16a|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbab2bd|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a71e" - + "|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgberp4a5d4ar|xn\\-\\-mgbpl2fh|xn\\-\\-mgbtx2b|xn\\-\\-mgbx4cd0ab" - + "|xn\\-\\-mk1bu44c|xn\\-\\-mxtq1m|xn\\-\\-ngbc5azd|xn\\-\\-node|xn\\-\\-nqv7f|xn\\-\\-nqv7fs00ema" - + "|xn\\-\\-nyqy26a|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl|xn\\-\\-p1acf|xn\\-\\-p1ai|xn\\-\\-pgbs0dh" - + "|xn\\-\\-pssy2u|xn\\-\\-q9jyb4c|xn\\-\\-qcka1pmc|xn\\-\\-qxam|xn\\-\\-rhqv96g|xn\\-\\-s9brj9c" - + "|xn\\-\\-ses554g|xn\\-\\-t60b56a|xn\\-\\-tckwe|xn\\-\\-unup4y|xn\\-\\-vermgensberater\\-ctb" - + "|xn\\-\\-vermgensberatung\\-pwb|xn\\-\\-vhquv|xn\\-\\-vuq861b|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a" + + "|xn\\-\\-mgba3a4f16a|xn\\-\\-mgba7c0bbn0a|xn\\-\\-mgbaakc7dvf|xn\\-\\-mgbaam7a8h|xn\\-\\-mgbab2bd" + + "|xn\\-\\-mgbah1a3hjkrd|xn\\-\\-mgbai9azgqp6j|xn\\-\\-mgbayh7gpa|xn\\-\\-mgbbh1a|xn\\-\\-mgbbh1a71e" + + "|xn\\-\\-mgbc0a9azcg|xn\\-\\-mgbca7dzdo|xn\\-\\-mgbcpq6gpa1a|xn\\-\\-mgberp4a5d4ar|xn\\-\\-mgbgu82a" + + "|xn\\-\\-mgbi4ecexp|xn\\-\\-mgbpl2fh|xn\\-\\-mgbt3dhd|xn\\-\\-mgbtx2b|xn\\-\\-mgbx4cd0ab" + + "|xn\\-\\-mix891f|xn\\-\\-mk1bu44c|xn\\-\\-mxtq1m|xn\\-\\-ngbc5azd|xn\\-\\-ngbe9e0a|xn\\-\\-ngbrx" + + "|xn\\-\\-node|xn\\-\\-nqv7f|xn\\-\\-nqv7fs00ema|xn\\-\\-nyqy26a|xn\\-\\-o3cw4h|xn\\-\\-ogbpf8fl" + + "|xn\\-\\-otu796d|xn\\-\\-p1acf|xn\\-\\-p1ai|xn\\-\\-pgbs0dh|xn\\-\\-pssy2u|xn\\-\\-q7ce6a" + + "|xn\\-\\-q9jyb4c|xn\\-\\-qcka1pmc|xn\\-\\-qxa6a|xn\\-\\-qxam|xn\\-\\-rhqv96g|xn\\-\\-rovu88b" + + "|xn\\-\\-rvc1e0am3e|xn\\-\\-s9brj9c|xn\\-\\-ses554g|xn\\-\\-t60b56a|xn\\-\\-tckwe|xn\\-\\-tiq49xqyj" + + "|xn\\-\\-unup4y|xn\\-\\-vermgensberater\\-ctb|xn\\-\\-vermgensberatung\\-pwb|xn\\-\\-vhquv" + + "|xn\\-\\-vuq861b|xn\\-\\-w4r85el8fhu5dnra|xn\\-\\-w4rs40l|xn\\-\\-wgbh1c|xn\\-\\-wgbl6a" + "|xn\\-\\-xhq521b|xn\\-\\-xkc2al3hye2a|xn\\-\\-xkc2dl3a5ee0h|xn\\-\\-y9a3aq|xn\\-\\-yfro4i67o" - + "|xn\\-\\-ygbi2ammx|xn\\-\\-zfr164b|xperia|xxx|xyz)" - + "|(?:yachts|yamaxun|yandex|yodobashi|yoga|yokohama|youtube|y[et])" - + "|(?:zara|zip|zone|zuerich|z[amw]))"; - + + "|xn\\-\\-ygbi2ammx|xn\\-\\-zfr164b|xxx|xyz)" + + "|(?:yachts|yahoo|yamaxun|yandex|yodobashi|yoga|yokohama|you|youtube|yun|y[et])" + + "|(?:zappos|zara|zero|zip|zone|zuerich|z[amw]))"; /** * Kept for backward compatibility reasons. * diff --git a/core/java/android/util/apk/ApkSignatureVerifier.java b/core/java/android/util/apk/ApkSignatureVerifier.java index d2a18dd843135baedd3d33a451cdfae8e257ee2f..a6724da02bf21e6712d863521b4c16b1ee83a912 100644 --- a/core/java/android/util/apk/ApkSignatureVerifier.java +++ b/core/java/android/util/apk/ApkSignatureVerifier.java @@ -48,6 +48,7 @@ import java.security.NoSuchAlgorithmException; import java.security.cert.Certificate; import java.security.cert.CertificateEncodingException; import java.util.ArrayList; +import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -428,7 +429,7 @@ public class ApkSignatureVerifier { // make sure all entries use the same signing certs final Signature[] entrySigs = convertToSignatures(entryCerts); - if (!Signature.areExactMatch(lastSigs, entrySigs)) { + if (!Arrays.equals(lastSigs, entrySigs)) { return input.error( INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES, "Package " + apkPath + " has mismatched certificates at entry " diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java index ca33c5e0594435dcb4e998789c4385aa277a6654..1ab055a6a7a1e175766988b5892c6e8f192ba2c3 100644 --- a/core/java/android/view/Choreographer.java +++ b/core/java/android/view/Choreographer.java @@ -977,7 +977,7 @@ public final class Choreographer { if (callbackType == Choreographer.CALLBACK_COMMIT) { final long jitterNanos = now - frameTimeNanos; Trace.traceCounter(Trace.TRACE_TAG_VIEW, "jitterNanos", (int) jitterNanos); - if (jitterNanos >= 2 * frameIntervalNanos) { + if (frameIntervalNanos > 0 && jitterNanos >= 2 * frameIntervalNanos) { final long lastFrameOffset = jitterNanos % frameIntervalNanos + frameIntervalNanos; if (DEBUG_JANK) { @@ -1208,9 +1208,15 @@ public final class Choreographer { } private void allocateFrameTimelines(int length) { - mFrameTimelines = new FrameTimeline[length]; - for (int i = 0; i < mFrameTimelines.length; i++) { - mFrameTimelines[i] = new FrameTimeline(); + // Maintain one default frame timeline for API (such as getFrameTimelines and + // getPreferredFrameTimeline) consistency. It should have default data when accessed. + length = Math.max(1, length); + + if (mFrameTimelines == null || mFrameTimelines.length != length) { + mFrameTimelines = new FrameTimeline[length]; + for (int i = 0; i < mFrameTimelines.length; i++) { + mFrameTimelines[i] = new FrameTimeline(); + } } } @@ -1220,12 +1226,7 @@ public final class Choreographer { */ FrameTimeline update( long frameTimeNanos, DisplayEventReceiver.VsyncEventData vsyncEventData) { - // Even if the frame timelines length is 0, continue with allocation for API - // FrameData.getFrameTimelines consistency. The 0 length frame timelines code path - // should only occur when USE_VSYNC property is false. - if (mFrameTimelines.length != vsyncEventData.frameTimelinesLength) { - allocateFrameTimelines(vsyncEventData.frameTimelinesLength); - } + allocateFrameTimelines(vsyncEventData.frameTimelinesLength); mFrameTimeNanos = frameTimeNanos; mPreferredFrameTimelineIndex = vsyncEventData.preferredFrameTimelineIndex; for (int i = 0; i < mFrameTimelines.length; i++) { diff --git a/core/java/android/view/HandwritingInitiator.java b/core/java/android/view/HandwritingInitiator.java index 751cd210b94c39c03e430928ba1724c5433e5df7..0ce1d4711c6d839b8ad48bbf59505717df12801b 100644 --- a/core/java/android/view/HandwritingInitiator.java +++ b/core/java/android/view/HandwritingInitiator.java @@ -19,8 +19,12 @@ package android.view; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; +import android.graphics.Matrix; import android.graphics.Rect; +import android.graphics.RectF; +import android.graphics.Region; import android.view.inputmethod.InputMethodManager; +import android.widget.EditText; import android.widget.TextView; import com.android.internal.annotations.VisibleForTesting; @@ -78,11 +82,21 @@ public class HandwritingInitiator { private int mConnectionCount = 0; private final InputMethodManager mImm; + private final int[] mTempLocation = new int[2]; + + private final Rect mTempRect = new Rect(); + + private final RectF mTempRectF = new RectF(); + + private final Region mTempRegion = new Region(); + + private final Matrix mTempMatrix = new Matrix(); + /** * The handwrite-able View that is currently the target of a hovering stylus pointer. This is * used to help determine whether the handwriting PointerIcon should be shown in * {@link #onResolvePointerIcon(Context, MotionEvent)} so that we can reduce the number of calls - * to {@link #findBestCandidateView(float, float)}. + * to {@link #findBestCandidateView(float, float, boolean)}. */ @Nullable private WeakReference mCachedHoverTarget = null; @@ -184,8 +198,8 @@ public class HandwritingInitiator { final float y = motionEvent.getY(pointerIndex); if (largerThanTouchSlop(x, y, mState.mStylusDownX, mState.mStylusDownY)) { mState.mExceedHandwritingSlop = true; - View candidateView = - findBestCandidateView(mState.mStylusDownX, mState.mStylusDownY); + View candidateView = findBestCandidateView(mState.mStylusDownX, + mState.mStylusDownY, /* isHover */ false); if (candidateView != null) { if (candidateView == getConnectedView()) { if (!candidateView.hasFocus()) { @@ -337,13 +351,13 @@ public class HandwritingInitiator { } private static boolean shouldTriggerStylusHandwritingForView(@NonNull View view) { - if (!view.isAutoHandwritingEnabled()) { + if (!view.shouldInitiateHandwriting()) { return false; } - // The view may be a handwriting initiation delegate, in which case it is not the editor + // The view may be a handwriting initiation delegator, in which case it is not the editor // view for which handwriting would be started. However, in almost all cases, the return - // values of View#isStylusHandwritingAvailable will be the same for the delegate view and - // the delegator editor view. So the delegate view can be used to decide whether handwriting + // values of View#isStylusHandwritingAvailable will be the same for the delegator view and + // the delegate editor view. So the delegator view can be used to decide whether handwriting // should be triggered. return view.isStylusHandwritingAvailable(); } @@ -392,14 +406,16 @@ public class HandwritingInitiator { final View cachedHoverTarget = getCachedHoverTarget(); if (cachedHoverTarget != null) { - final Rect handwritingArea = getViewHandwritingArea(cachedHoverTarget); - if (isInHandwritingArea(handwritingArea, hoverX, hoverY, cachedHoverTarget) + final Rect handwritingArea = mTempRect; + if (getViewHandwritingArea(cachedHoverTarget, handwritingArea) + && isInHandwritingArea(handwritingArea, hoverX, hoverY, cachedHoverTarget, + /* isHover */ true) && shouldTriggerStylusHandwritingForView(cachedHoverTarget)) { return cachedHoverTarget; } } - final View candidateView = findBestCandidateView(hoverX, hoverY); + final View candidateView = findBestCandidateView(hoverX, hoverY, /* isHover */ true); if (candidateView != null) { mCachedHoverTarget = new WeakReference<>(candidateView); @@ -411,7 +427,19 @@ public class HandwritingInitiator { return null; } - private static void requestFocusWithoutReveal(View view) { + private void requestFocusWithoutReveal(View view) { + if (view instanceof EditText editText && !mState.mStylusDownWithinEditorBounds) { + // If the stylus down point was inside the EditText's bounds, then the EditText will + // automatically set its cursor position nearest to the stylus down point when it + // gains focus. If the stylus down point was outside the EditText's bounds (within + // the extended handwriting bounds), then we must calculate and set the cursor + // position manually. + view.getLocationInWindow(mTempLocation); + int offset = editText.getOffsetForPosition( + mState.mStylusDownX - mTempLocation[0], + mState.mStylusDownY - mTempLocation[1]); + editText.setSelection(offset); + } if (view.getRevealOnFocusHint()) { view.setRevealOnFocusHint(false); view.requestFocus(); @@ -429,15 +457,20 @@ public class HandwritingInitiator { * @param y the y coordinates of the stylus event, in the coordinates of the window. */ @Nullable - private View findBestCandidateView(float x, float y) { + private View findBestCandidateView(float x, float y, boolean isHover) { // If the connectedView is not null and do not set any handwriting area, it will check // whether the connectedView's boundary contains the initial stylus position. If true, // directly return the connectedView. final View connectedView = getConnectedView(); if (connectedView != null) { - Rect handwritingArea = getViewHandwritingArea(connectedView); - if (isInHandwritingArea(handwritingArea, x, y, connectedView) + Rect handwritingArea = mTempRect; + if (getViewHandwritingArea(connectedView, handwritingArea) + && isInHandwritingArea(handwritingArea, x, y, connectedView, isHover) && shouldTriggerStylusHandwritingForView(connectedView)) { + if (!isHover && mState != null) { + mState.mStylusDownWithinEditorBounds = + contains(handwritingArea, x, y, 0f, 0f, 0f, 0f); + } return connectedView; } } @@ -450,13 +483,18 @@ public class HandwritingInitiator { for (HandwritableViewInfo viewInfo : handwritableViewInfos) { final View view = viewInfo.getView(); final Rect handwritingArea = viewInfo.getHandwritingArea(); - if (!isInHandwritingArea(handwritingArea, x, y, view) + if (!isInHandwritingArea(handwritingArea, x, y, view, isHover) || !shouldTriggerStylusHandwritingForView(view)) { continue; } final float distance = distance(handwritingArea, x, y); - if (distance == 0f) return view; + if (distance == 0f) { + if (!isHover && mState != null) { + mState.mStylusDownWithinEditorBounds = true; + } + return view; + } if (distance < minDistance) { minDistance = distance; bestCandidate = view; @@ -518,43 +556,78 @@ public class HandwritingInitiator { /** * Return the handwriting area of the given view, represented in the window's coordinate. * If the view didn't set any handwriting area, it will return the view's boundary. - * It will return null if the view or its handwriting area is not visible. * - * The handwriting area is clipped to its visible part. + *

    The handwriting area is clipped to its visible part. * Notice that the returned rectangle is the view's original handwriting area without the - * view's handwriting area extends. + * view's handwriting area extends.

    + * + * @param view the {@link View} whose handwriting area we want to compute. + * @param rect the {@link Rect} to receive the result. + * + * @return true if the view's handwriting area is still visible, or false if it's clipped and + * fully invisible. This method only consider the clip by given view's parents, but not the case + * where a view is covered by its sibling view. */ - @Nullable - private static Rect getViewHandwritingArea(@NonNull View view) { + private static boolean getViewHandwritingArea(@NonNull View view, @NonNull Rect rect) { final ViewParent viewParent = view.getParent(); if (viewParent != null && view.isAttachedToWindow() && view.isAggregatedVisible()) { final Rect localHandwritingArea = view.getHandwritingArea(); - final Rect globalHandwritingArea = new Rect(); if (localHandwritingArea != null) { - globalHandwritingArea.set(localHandwritingArea); + rect.set(localHandwritingArea); } else { - globalHandwritingArea.set(0, 0, view.getWidth(), view.getHeight()); - } - if (viewParent.getChildVisibleRect(view, globalHandwritingArea, null)) { - return globalHandwritingArea; + rect.set(0, 0, view.getWidth(), view.getHeight()); } + return viewParent.getChildVisibleRect(view, rect, null); } - return null; + return false; } /** * Return true if the (x, y) is inside by the given {@link Rect} with the View's * handwriting bounds with offsets applied. */ - private static boolean isInHandwritingArea(@Nullable Rect handwritingArea, - float x, float y, View view) { + private boolean isInHandwritingArea(@Nullable Rect handwritingArea, + float x, float y, View view, boolean isHover) { if (handwritingArea == null) return false; - return contains(handwritingArea, x, y, + if (!contains(handwritingArea, x, y, view.getHandwritingBoundsOffsetLeft(), view.getHandwritingBoundsOffsetTop(), view.getHandwritingBoundsOffsetRight(), - view.getHandwritingBoundsOffsetBottom()); + view.getHandwritingBoundsOffsetBottom())) { + return false; + } + + // The returned handwritingArea computed by ViewParent#getChildVisibleRect didn't consider + // the case where a view is stacking on top of the editor. (e.g. DrawerLayout, popup) + // We must check the hit region of the editor again, and avoid the case where another + // view on top of the editor is handling MotionEvents. + ViewParent parent = view.getParent(); + if (parent == null) { + return true; + } + + Region region = mTempRegion; + mTempRegion.set(0, 0, view.getWidth(), view.getHeight()); + Matrix matrix = mTempMatrix; + matrix.reset(); + if (!parent.getChildLocalHitRegion(view, region, matrix, isHover)) { + return false; + } + + // It's not easy to extend the region by the given handwritingBoundsOffset. Instead, we + // create a rectangle surrounding the motion event location and check if this rectangle + // overlaps with the hit region of the editor. + float left = x - view.getHandwritingBoundsOffsetRight(); + float top = y - view.getHandwritingBoundsOffsetBottom(); + float right = Math.max(x + view.getHandwritingBoundsOffsetLeft(), left + 1); + float bottom = Math.max(y + view.getHandwritingBoundsOffsetTop(), top + 1); + RectF rectF = mTempRectF; + rectF.set(left, top, right, bottom); + matrix.mapRect(rectF); + + return region.op(Math.round(rectF.left), Math.round(rectF.top), + Math.round(rectF.right), Math.round(rectF.bottom), Region.Op.INTERSECT); } /** @@ -603,6 +676,12 @@ public class HandwritingInitiator { */ private boolean mExceedHandwritingSlop; + /** + * Whether the stylus down point of the MotionEvent sequence was within the editor's bounds + * (not including the extended handwriting bounds). + */ + private boolean mStylusDownWithinEditorBounds; + /** * A view which has requested focus and is pending input connection creation. When an input * connection is created for the view, a handwriting session should be started for the view. @@ -634,7 +713,7 @@ public class HandwritingInitiator { /** The helper method to check if the given view is still active for handwriting. */ private static boolean isViewActive(@Nullable View view) { return view != null && view.isAttachedToWindow() && view.isAggregatedVisible() - && view.isAutoHandwritingEnabled(); + && view.shouldInitiateHandwriting(); } /** diff --git a/core/java/android/view/HapticScrollFeedbackProvider.java b/core/java/android/view/HapticScrollFeedbackProvider.java index 7e103a53d4ed575f8deb1da9647e4d357a64d458..a2f1d37c2c1100c2d63146b5d18720c640855aea 100644 --- a/core/java/android/view/HapticScrollFeedbackProvider.java +++ b/core/java/android/view/HapticScrollFeedbackProvider.java @@ -16,25 +16,40 @@ package android.view; -import static com.android.internal.R.dimen.config_rotaryEncoderAxisScrollTickInterval; +import android.annotation.FlaggedApi; +import android.annotation.IntDef; +import android.annotation.NonNull; +import android.view.flags.Flags; import com.android.internal.annotations.VisibleForTesting; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + /** * {@link ScrollFeedbackProvider} that performs haptic feedback when scrolling. * *

    Each scrolling widget should have its own instance of this class to ensure that scroll state * is isolated. * - * @hide + *

    Check {@link ScrollFeedbackProvider} for details on the arguments that should be passed to the + * methods in this class. To check if your input device ID, source, and motion axis are valid for + * haptic feedback, you can use the + * {@link ViewConfiguration#isHapticScrollFeedbackEnabled(int, int, int)} API. */ +@FlaggedApi(Flags.FLAG_SCROLL_FEEDBACK_API) public class HapticScrollFeedbackProvider implements ScrollFeedbackProvider { private static final String TAG = "HapticScrollFeedbackProvider"; + /** @hide */ + @IntDef(value = {MotionEvent.AXIS_SCROLL}) + @Retention(RetentionPolicy.SOURCE) + public @interface HapticScrollFeedbackAxis {} + private static final int TICK_INTERVAL_NO_TICK = 0; - private static final int TICK_INTERVAL_UNSET = Integer.MAX_VALUE; private final View mView; + private final ViewConfiguration mViewConfig; // Info about the cause of the latest scroll event. @@ -45,30 +60,36 @@ public class HapticScrollFeedbackProvider implements ScrollFeedbackProvider { /** The {@link InputDevice} source from which the latest scroll event happened. */ private int mSource = -1; - /** - * Cache for tick interval for scroll tick caused by a {@link InputDevice#SOURCE_ROTARY_ENCODER} - * on {@link MotionEvent#AXIS_SCROLL}. Set to -1 if the value has not been fetched and cached. - */ - private int mRotaryEncoderAxisScrollTickIntervalPixels = TICK_INTERVAL_UNSET; /** The tick interval corresponding to the current InputDevice/source/axis. */ private int mTickIntervalPixels = TICK_INTERVAL_NO_TICK; private int mTotalScrollPixels = 0; private boolean mCanPlayLimitFeedback = true; + private boolean mHapticScrollFeedbackEnabled = false; - public HapticScrollFeedbackProvider(View view) { - this(view, /* rotaryEncoderAxisScrollTickIntervalPixels= */ TICK_INTERVAL_UNSET); + public HapticScrollFeedbackProvider(@NonNull View view) { + this(view, ViewConfiguration.get(view.getContext())); } /** @hide */ @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) - public HapticScrollFeedbackProvider(View view, int rotaryEncoderAxisScrollTickIntervalPixels) { + public HapticScrollFeedbackProvider(View view, ViewConfiguration viewConfig) { mView = view; - mRotaryEncoderAxisScrollTickIntervalPixels = rotaryEncoderAxisScrollTickIntervalPixels; + mViewConfig = viewConfig; } @Override - public void onScrollProgress(MotionEvent event, int axis, int deltaInPixels) { - maybeUpdateCurrentConfig(event, axis); + public void onScrollProgress( + int inputDeviceId, int source, @HapticScrollFeedbackAxis int axis, int deltaInPixels) { + maybeUpdateCurrentConfig(inputDeviceId, source, axis); + if (!mHapticScrollFeedbackEnabled) { + return; + } + + // Unlock limit feedback regardless of scroll tick being enabled as long as there's a + // non-zero scroll progress. + if (deltaInPixels != 0) { + mCanPlayLimitFeedback = true; + } if (mTickIntervalPixels == TICK_INTERVAL_NO_TICK) { // There's no valid tick interval. Exit early before doing any further computation. @@ -82,13 +103,15 @@ public class HapticScrollFeedbackProvider implements ScrollFeedbackProvider { // TODO(b/239594271): create a new `performHapticFeedbackForDevice` and use that here. mView.performHapticFeedback(HapticFeedbackConstants.SCROLL_TICK); } - - mCanPlayLimitFeedback = true; } @Override - public void onScrollLimit(MotionEvent event, int axis, boolean isStart) { - maybeUpdateCurrentConfig(event, axis); + public void onScrollLimit( + int inputDeviceId, int source, @HapticScrollFeedbackAxis int axis, boolean isStart) { + maybeUpdateCurrentConfig(inputDeviceId, source, axis); + if (!mHapticScrollFeedbackEnabled) { + return; + } if (!mCanPlayLimitFeedback) { return; @@ -101,41 +124,33 @@ public class HapticScrollFeedbackProvider implements ScrollFeedbackProvider { } @Override - public void onSnapToItem(MotionEvent event, int axis) { + public void onSnapToItem(int inputDeviceId, int source, @HapticScrollFeedbackAxis int axis) { + maybeUpdateCurrentConfig(inputDeviceId, source, axis); + if (!mHapticScrollFeedbackEnabled) { + return; + } // TODO(b/239594271): create a new `performHapticFeedbackForDevice` and use that here. mView.performHapticFeedback(HapticFeedbackConstants.SCROLL_ITEM_FOCUS); mCanPlayLimitFeedback = true; } - private void maybeUpdateCurrentConfig(MotionEvent event, int axis) { - int source = event.getSource(); - int deviceId = event.getDeviceId(); - + private void maybeUpdateCurrentConfig(int deviceId, int source, int axis) { if (mAxis != axis || mSource != source || mDeviceId != deviceId) { mSource = source; mAxis = axis; mDeviceId = deviceId; + mHapticScrollFeedbackEnabled = + mViewConfig.isHapticScrollFeedbackEnabled(deviceId, axis, source); mCanPlayLimitFeedback = true; mTotalScrollPixels = 0; - calculateTickIntervals(source, axis); + updateTickIntervals(deviceId, source, axis); } } - private void calculateTickIntervals(int source, int axis) { - mTickIntervalPixels = TICK_INTERVAL_NO_TICK; - - if (axis == MotionEvent.AXIS_SCROLL && source == InputDevice.SOURCE_ROTARY_ENCODER) { - if (mRotaryEncoderAxisScrollTickIntervalPixels == TICK_INTERVAL_UNSET) { - // Value has not been fetched yet. Fetch and cache it. - mRotaryEncoderAxisScrollTickIntervalPixels = - mView.getContext().getResources().getDimensionPixelSize( - config_rotaryEncoderAxisScrollTickInterval); - if (mRotaryEncoderAxisScrollTickIntervalPixels < 0) { - mRotaryEncoderAxisScrollTickIntervalPixels = TICK_INTERVAL_NO_TICK; - } - } - mTickIntervalPixels = mRotaryEncoderAxisScrollTickIntervalPixels; - } + private void updateTickIntervals(int deviceId, int source, int axis) { + mTickIntervalPixels = mHapticScrollFeedbackEnabled + ? mViewConfig.getHapticScrollFeedbackTickInterval(deviceId, axis, source) + : TICK_INTERVAL_NO_TICK; } } diff --git a/core/java/android/view/IRecentsAnimationRunner.aidl b/core/java/android/view/IRecentsAnimationRunner.aidl index c7fd38092ec79a4713b1adda923aeab3f451973a..37663d59cafd6922cd0f5ade96c7811fa3d905bb 100644 --- a/core/java/android/view/IRecentsAnimationRunner.aidl +++ b/core/java/android/view/IRecentsAnimationRunner.aidl @@ -21,6 +21,7 @@ import android.graphics.Rect; import android.view.RemoteAnimationTarget; import android.view.IRecentsAnimationController; import android.window.TaskSnapshot; +import android.os.Bundle; /** * Interface that is used to callback from window manager to the process that runs a recents @@ -57,7 +58,7 @@ oneway interface IRecentsAnimationRunner { @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) void onAnimationStart(in IRecentsAnimationController controller, in RemoteAnimationTarget[] apps, in RemoteAnimationTarget[] wallpapers, - in Rect homeContentInsets, in Rect minimizedHomeBounds) = 2; + in Rect homeContentInsets, in Rect minimizedHomeBounds, in Bundle extras) = 2; /** * Called when the task of an activity that has been started while the recents animation diff --git a/core/java/android/view/InputWindowHandle.java b/core/java/android/view/InputWindowHandle.java index 3812d37a5fed53fbcf0acce9b765814c1d66fa96..2761aaeb4a7d7f7473560951267910a3706a6c63 100644 --- a/core/java/android/view/InputWindowHandle.java +++ b/core/java/android/view/InputWindowHandle.java @@ -19,6 +19,7 @@ package android.view; import android.annotation.IntDef; import android.annotation.Nullable; import android.graphics.Matrix; +import android.graphics.Rect; import android.graphics.Region; import android.gui.TouchOcclusionMode; import android.os.IBinder; @@ -103,10 +104,7 @@ public final class InputWindowHandle { public long dispatchingTimeoutMillis; // Window frame. - public int frameLeft; - public int frameTop; - public int frameRight; - public int frameBottom; + public final Rect frame = new Rect(); public int surfaceInset; @@ -184,10 +182,7 @@ public final class InputWindowHandle { layoutParamsFlags = other.layoutParamsFlags; layoutParamsType = other.layoutParamsType; dispatchingTimeoutMillis = other.dispatchingTimeoutMillis; - frameLeft = other.frameLeft; - frameTop = other.frameTop; - frameRight = other.frameRight; - frameBottom = other.frameBottom; + frame.set(other.frame); surfaceInset = other.surfaceInset; scaleFactor = other.scaleFactor; touchableRegion.set(other.touchableRegion); @@ -209,8 +204,7 @@ public final class InputWindowHandle { @Override public String toString() { return new StringBuilder(name != null ? name : "") - .append(", frame=[").append(frameLeft).append(",").append(frameTop).append(",") - .append(frameRight).append(",").append(frameBottom).append("]") + .append(", frame=[").append(frame).append("]") .append(", touchableRegion=").append(touchableRegion) .append(", scaleFactor=").append(scaleFactor) .append(", transform=").append(transform) diff --git a/core/java/android/view/InsetsAnimationControlImpl.java b/core/java/android/view/InsetsAnimationControlImpl.java index 6c5f195ba2a05287fd106f1f3f0b8f9c9e2ee356..1ec7c41e4395fa52dc09abbb4e719737044de819 100644 --- a/core/java/android/view/InsetsAnimationControlImpl.java +++ b/core/java/android/view/InsetsAnimationControlImpl.java @@ -16,7 +16,7 @@ package android.view; -import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.view.EventLogTags.IMF_IME_ANIM_CANCEL; import static android.view.EventLogTags.IMF_IME_ANIM_FINISH; import static android.view.EventLogTags.IMF_IME_ANIM_START; @@ -28,7 +28,6 @@ import static android.view.InsetsAnimationControlImplProto.PENDING_FRACTION; import static android.view.InsetsAnimationControlImplProto.PENDING_INSETS; import static android.view.InsetsAnimationControlImplProto.SHOWN_ON_FINISH; import static android.view.InsetsAnimationControlImplProto.TMP_MATRIX; -import static android.view.InsetsController.ANIMATION_TYPE_SHOW; import static android.view.InsetsController.AnimationType; import static android.view.InsetsController.DEBUG; import static android.view.InsetsController.LAYOUT_INSETS_DURING_ANIMATION_SHOWN; @@ -40,6 +39,7 @@ import static android.view.InsetsState.ISIDE_LEFT; import static android.view.InsetsState.ISIDE_RIGHT; import static android.view.InsetsState.ISIDE_TOP; import static android.view.WindowInsets.Type.ime; +import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION; import static android.view.inputmethod.ImeTracker.DEBUG_IME_VISIBILITY; import static android.view.inputmethod.ImeTracker.TOKEN_NONE; @@ -63,7 +63,6 @@ import android.view.InsetsState.InternalInsetsSide; import android.view.SyncRtSurfaceTransactionApplier.SurfaceParams; import android.view.WindowInsets.Type.InsetsType; import android.view.WindowInsetsAnimation.Bounds; -import android.view.WindowManager.LayoutParams; import android.view.animation.Interpolator; import android.view.inputmethod.ImeTracker; @@ -285,15 +284,11 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro return false; } final Insets offset = Insets.subtract(mShownInsets, mPendingInsets); - ArrayList params = new ArrayList<>(); - updateLeashesForSide(ISIDE_LEFT, offset.left, mPendingInsets.left, params, outState, - mPendingAlpha); - updateLeashesForSide(ISIDE_TOP, offset.top, mPendingInsets.top, params, outState, - mPendingAlpha); - updateLeashesForSide(ISIDE_RIGHT, offset.right, mPendingInsets.right, params, outState, - mPendingAlpha); - updateLeashesForSide(ISIDE_BOTTOM, offset.bottom, mPendingInsets.bottom, params, outState, - mPendingAlpha); + final ArrayList params = new ArrayList<>(); + updateLeashesForSide(ISIDE_LEFT, offset.left, params, outState, mPendingAlpha); + updateLeashesForSide(ISIDE_TOP, offset.top, params, outState, mPendingAlpha); + updateLeashesForSide(ISIDE_RIGHT, offset.right, params, outState, mPendingAlpha); + updateLeashesForSide(ISIDE_BOTTOM, offset.bottom, params, outState, mPendingAlpha); mController.applySurfaceParams(params.toArray(new SurfaceParams[params.size()])); mCurrentInsets = mPendingInsets; @@ -401,10 +396,9 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro private Insets getInsetsFromState(InsetsState state, Rect frame, @Nullable @InternalInsetsSide SparseIntArray idSideMap) { return state.calculateInsets(frame, null /* ignoringVisibilityState */, - false /* isScreenRound */, false /* alwaysConsumeSystemBars */, - LayoutParams.SOFT_INPUT_ADJUST_RESIZE /* legacySoftInputMode*/, + false /* isScreenRound */, SOFT_INPUT_ADJUST_RESIZE /* legacySoftInputMode */, 0 /* legacyWindowFlags */, 0 /* legacySystemUiFlags */, TYPE_APPLICATION, - WINDOWING_MODE_UNDEFINED, idSideMap).getInsets(mTypes); + ACTIVITY_TYPE_UNDEFINED, idSideMap).getInsets(mTypes); } /** Computes the insets relative to the given frame. */ @@ -457,7 +451,7 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro return alpha >= 1 ? 1 : (alpha <= 0 ? 0 : alpha); } - private void updateLeashesForSide(@InternalInsetsSide int side, int offset, int inset, + private void updateLeashesForSide(@InternalInsetsSide int side, int offset, ArrayList surfaceParams, @Nullable InsetsState outState, float alpha) { final ArraySet controls = mSideControlsMap.get(side); if (controls == null) { @@ -475,9 +469,9 @@ public class InsetsAnimationControlImpl implements InternalInsetsAnimationContro } addTranslationToMatrix(side, offset, mTmpMatrix, mTmpFrame); - final boolean visible = mHasZeroInsetsIme && side == ISIDE_BOTTOM - ? (mAnimationType == ANIMATION_TYPE_SHOW || !mFinished) - : inset != 0; + final boolean visible = mPendingFraction == 0 && source != null + ? source.isVisible() + : !mFinished || mShownOnFinish; if (outState != null && source != null) { outState.addSource(new InsetsSource(source) diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index 4ecfc4044b1dfec7a1936d8e9b9e81289a7465d0..fb24211e591a9e88cb46418c7a4864120024d7d9 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -16,10 +16,12 @@ package android.view; +import static android.inputmethodservice.InputMethodService.ENABLE_HIDE_IME_CAPTION_BAR; import static android.os.Trace.TRACE_TAG_VIEW; import static android.view.InsetsControllerProto.CONTROL; import static android.view.InsetsControllerProto.STATE; import static android.view.InsetsSource.ID_IME; +import static android.view.InsetsSource.ID_IME_CAPTION_BAR; import static android.view.ViewRootImpl.CAPTION_ON_SHELL; import static android.view.WindowInsets.Type.FIRST; import static android.view.WindowInsets.Type.LAST; @@ -40,6 +42,7 @@ import android.app.ActivityThread; import android.content.Context; import android.content.res.CompatibilityInfo; import android.graphics.Insets; +import android.graphics.Point; import android.graphics.Rect; import android.os.CancellationSignal; import android.os.Handler; @@ -649,9 +652,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation private int mLastLegacySoftInputMode; private int mLastLegacyWindowFlags; private int mLastLegacySystemUiFlags; - private int mLastWindowingMode; + private int mLastActivityType; private boolean mStartingAnimation; private int mCaptionInsetsHeight = 0; + private int mImeCaptionBarInsetsHeight = 0; private boolean mAnimationsDisabled; private boolean mCompatSysUiVisibilityStaled; @@ -662,9 +666,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation /** Set of inset types for which an animation was started since last resetting this field */ private @InsetsType int mLastStartedAnimTypes; - /** Set of inset types which cannot be controlled by the user animation */ - private @InsetsType int mDisabledUserAnimationInsetsTypes; - /** Set of inset types which are existing */ private @InsetsType int mExistingTypes = 0; @@ -693,6 +694,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation if (!CAPTION_ON_SHELL && source1.getType() == captionBar()) { return; } + if (source1.getId() == ID_IME_CAPTION_BAR) { + return; + } // Don't change the indexes of the sources while traversing. Remove it later. mPendingRemoveIndexes.add(index1); @@ -796,10 +800,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } } - WindowInsets insets = state.calculateInsets(mFrame, mState /* ignoringVisibilityState*/, - mLastInsets.isRound(), false /* alwaysConsumeSystemBars */, + WindowInsets insets = state.calculateInsets(mFrame, + mState /* ignoringVisibilityState */, mLastInsets.isRound(), mLastLegacySoftInputMode, mLastLegacyWindowFlags, mLastLegacySystemUiFlags, - mWindowType, mLastWindowingMode, null /* idSideMap */); + mWindowType, mLastActivityType, null /* idSideMap */); mHost.dispatchWindowInsetsAnimationProgress(insets, Collections.unmodifiableList(runningAnimations)); if (DEBUG) { @@ -823,6 +827,9 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation if (mFrame.equals(frame)) { return; } + if (mImeCaptionBarInsetsHeight != 0) { + setImeCaptionBarInsetsHeight(mImeCaptionBarInsetsHeight); + } mHost.notifyInsetsChanged(); mFrame.set(frame); } @@ -877,21 +884,11 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation mState.set(newState, 0 /* types */); @InsetsType int existingTypes = 0; @InsetsType int visibleTypes = 0; - @InsetsType int disabledUserAnimationTypes = 0; @InsetsType int[] cancelledUserAnimationTypes = {0}; for (int i = 0, size = newState.sourceSize(); i < size; i++) { final InsetsSource source = newState.sourceAt(i); @InsetsType int type = source.getType(); @AnimationType int animationType = getAnimationType(type); - if (!source.isUserControllable()) { - // The user animation is not allowed when visible frame is empty. - disabledUserAnimationTypes |= type; - if (animationType == ANIMATION_TYPE_USER) { - // Existing user animation needs to be cancelled. - animationType = ANIMATION_TYPE_NONE; - cancelledUserAnimationTypes[0] |= type; - } - } final InsetsSourceConsumer consumer = mSourceConsumers.get(source.getId()); if (consumer != null) { consumer.updateSource(source, animationType); @@ -921,28 +918,11 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } InsetsState.traverse(mState, newState, mRemoveGoneSources); - updateDisabledUserAnimationTypes(disabledUserAnimationTypes); - if (cancelledUserAnimationTypes[0] != 0) { mHandler.post(() -> show(cancelledUserAnimationTypes[0])); } } - private void updateDisabledUserAnimationTypes(@InsetsType int disabledUserAnimationTypes) { - @InsetsType int diff = mDisabledUserAnimationInsetsTypes ^ disabledUserAnimationTypes; - if (diff != 0) { - for (int i = mSourceConsumers.size() - 1; i >= 0; i--) { - InsetsSourceConsumer consumer = mSourceConsumers.valueAt(i); - if (consumer.getControl() != null && (consumer.getType() & diff) != 0) { - mHandler.removeCallbacks(mInvokeControllableInsetsChangedListeners); - mHandler.post(mInvokeControllableInsetsChangedListeners); - break; - } - } - mDisabledUserAnimationInsetsTypes = disabledUserAnimationTypes; - } - } - private boolean captionInsetsUnchanged() { if (CAPTION_ON_SHELL) { return false; @@ -959,30 +939,29 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } /** - * @see InsetsState#calculateInsets(Rect, InsetsState, boolean, boolean, int, int, int, int, - * int, android.util.SparseIntArray) + * @see InsetsState#calculateInsets(Rect, InsetsState, boolean, int, int, int, int, int, + * android.util.SparseIntArray) */ @VisibleForTesting - public WindowInsets calculateInsets(boolean isScreenRound, boolean alwaysConsumeSystemBars, - int windowType, int windowingMode, int legacySoftInputMode, int legacyWindowFlags, - int legacySystemUiFlags) { + public WindowInsets calculateInsets(boolean isScreenRound, int windowType, int activityType, + int legacySoftInputMode, int legacyWindowFlags, int legacySystemUiFlags) { mWindowType = windowType; - mLastWindowingMode = windowingMode; + mLastActivityType = activityType; mLastLegacySoftInputMode = legacySoftInputMode; mLastLegacyWindowFlags = legacyWindowFlags; mLastLegacySystemUiFlags = legacySystemUiFlags; - mLastInsets = mState.calculateInsets(mFrame, null /* ignoringVisibilityState*/, - isScreenRound, alwaysConsumeSystemBars, legacySoftInputMode, legacyWindowFlags, - legacySystemUiFlags, windowType, windowingMode, null /* idSideMap */); + mLastInsets = mState.calculateInsets(mFrame, null /* ignoringVisibilityState */, + isScreenRound, legacySoftInputMode, legacyWindowFlags, + legacySystemUiFlags, windowType, activityType, null /* idSideMap */); return mLastInsets; } /** * @see InsetsState#calculateVisibleInsets(Rect, int, int, int, int) */ - public Insets calculateVisibleInsets(int windowType, int windowingMode, + public Insets calculateVisibleInsets(int windowType, int activityType, @SoftInputModeFlags int softInputMode, int windowFlags) { - return mState.calculateVisibleInsets(mFrame, windowType, windowingMode, softInputMode, + return mState.calculateVisibleInsets(mFrame, windowType, activityType, softInputMode, windowFlags); } @@ -1007,6 +986,12 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation // Ensure to update all existing source consumers for (int i = mSourceConsumers.size() - 1; i >= 0; i--) { final InsetsSourceConsumer consumer = mSourceConsumers.valueAt(i); + if (consumer.getId() == ID_IME_CAPTION_BAR) { + // The inset control for the IME caption bar will never be dispatched + // by the server. + continue; + } + final InsetsSourceControl control = mTmpControlArray.get(consumer.getId()); if (control != null) { controllableTypes |= control.getType(); @@ -1316,26 +1301,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation + " while an existing " + Type.toString(mTypesBeingCancelled) + " is being cancelled."); } - if (animationType == ANIMATION_TYPE_USER) { - final @InsetsType int disabledTypes = types & mDisabledUserAnimationInsetsTypes; - if (DEBUG) Log.d(TAG, "user animation disabled types: " + disabledTypes); - types &= ~mDisabledUserAnimationInsetsTypes; - - if ((disabledTypes & ime()) != 0) { - ImeTracker.forLogging().onFailed(statsToken, - ImeTracker.PHASE_CLIENT_DISABLED_USER_ANIMATION); - - if (fromIme - && !mState.isSourceOrDefaultVisible(mImeSourceConsumer.getId(), ime())) { - // We've requested IMM to show IME, but the IME is not controllable. We need to - // cancel the request. - setRequestedVisibleTypes(0 /* visibleTypes */, ime()); - if (mImeSourceConsumer.onAnimationStateChanged(false /* running */)) { - notifyVisibilityChanged(); - } - } - } - } if (types == 0) { // nothing to animate. listener.onCancelled(null); @@ -1499,7 +1464,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation continue; } final InsetsSourceControl control = consumer.getControl(); - if (control != null && control.getLeash() != null) { + if (control != null + && (control.getLeash() != null || control.getId() == ID_IME_CAPTION_BAR)) { controls.put(control.getId(), new InsetsSourceControl(control)); typesReady |= consumer.getType(); } @@ -1884,6 +1850,35 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } } + @Override + public void setImeCaptionBarInsetsHeight(int height) { + if (!ENABLE_HIDE_IME_CAPTION_BAR) { + return; + } + Rect newFrame = new Rect(mFrame.left, mFrame.bottom - height, mFrame.right, mFrame.bottom); + InsetsSource source = mState.peekSource(ID_IME_CAPTION_BAR); + if (mImeCaptionBarInsetsHeight != height + || (source != null && !newFrame.equals(source.getFrame()))) { + mImeCaptionBarInsetsHeight = height; + if (mImeCaptionBarInsetsHeight != 0) { + mState.getOrCreateSource(ID_IME_CAPTION_BAR, captionBar()) + .setFrame(newFrame); + getSourceConsumer(ID_IME_CAPTION_BAR, captionBar()).setControl( + new InsetsSourceControl(ID_IME_CAPTION_BAR, captionBar(), + null /* leash */, false /* initialVisible */, + new Point(), Insets.NONE), + new int[1], new int[1]); + } else { + mState.removeSource(ID_IME_CAPTION_BAR); + InsetsSourceConsumer sourceConsumer = mSourceConsumers.get(ID_IME_CAPTION_BAR); + if (sourceConsumer != null) { + sourceConsumer.setControl(null, new int[1], new int[1]); + } + } + mHost.notifyInsetsChanged(); + } + } + @Override public void setSystemBarsBehavior(@Behavior int behavior) { mHost.setSystemBarsBehavior(behavior); @@ -1908,7 +1903,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation for (int i = mSourceConsumers.size() - 1; i >= 0; i--) { InsetsSourceConsumer consumer = mSourceConsumers.valueAt(i); InsetsSource source = mState.peekSource(consumer.getId()); - if (consumer.getControl() != null && source != null && source.isUserControllable()) { + if (consumer.getControl() != null && source != null) { result |= consumer.getType(); } } diff --git a/core/java/android/view/InsetsSource.java b/core/java/android/view/InsetsSource.java index 64411866f020a2357b231d06f0e25c8fc16c31cc..0d5704eed4b300ffe214eb67af99b754a9d1803a 100644 --- a/core/java/android/view/InsetsSource.java +++ b/core/java/android/view/InsetsSource.java @@ -20,6 +20,7 @@ import static android.view.InsetsSourceProto.FRAME; import static android.view.InsetsSourceProto.TYPE; import static android.view.InsetsSourceProto.VISIBLE; import static android.view.InsetsSourceProto.VISIBLE_FRAME; +import static android.view.WindowInsets.Type.captionBar; import static android.view.WindowInsets.Type.ime; import android.annotation.IntDef; @@ -47,6 +48,9 @@ public class InsetsSource implements Parcelable { /** The insets source ID of IME */ public static final int ID_IME = createId(null, 0, ime()); + /** The insets source ID of the IME caption bar ("fake" IME navigation bar). */ + static final int ID_IME_CAPTION_BAR = + InsetsSource.createId(null /* owner */, 1 /* index */, captionBar()); /** * Controls whether this source suppresses the scrim. If the scrim is ignored, the system won't @@ -183,11 +187,6 @@ public class InsetsSource implements Parcelable { return (mFlags & flags) == flags; } - boolean isUserControllable() { - // If mVisibleFrame is null, it will be the same area as mFrame. - return mVisibleFrame == null || !mVisibleFrame.isEmpty(); - } - /** * Calculates the insets this source will cause to a client window. * @@ -215,8 +214,12 @@ public class InsetsSource implements Parcelable { // During drag-move and drag-resizing, the caption insets position may not get updated // before the app frame get updated. To layout the app content correctly during drag events, // we always return the insets with the corresponding height covering the top. + // However, with the "fake" IME navigation bar treated as a caption bar, we return the + // insets with the corresponding height the bottom. if (getType() == WindowInsets.Type.captionBar()) { - return Insets.of(0, frame.height(), 0, 0); + return getId() == ID_IME_CAPTION_BAR + ? Insets.of(0, 0, 0, frame.height()) + : Insets.of(0, frame.height(), 0, 0); } // Checks for whether there is shared edge with insets for 0-width/height window. final boolean hasIntersection = relativeFrame.isEmpty() diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java index af24140086ed1ddee7fc2279778c85d3d7e38ef8..59e0932ecd805732deac9893548706df2bff0db1 100644 --- a/core/java/android/view/InsetsState.java +++ b/core/java/android/view/InsetsState.java @@ -16,6 +16,7 @@ package android.view; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.view.InsetsSource.FLAG_FORCE_CONSUMING; import static android.view.InsetsSource.FLAG_INSETS_ROUNDED_CORNER; import static android.view.InsetsStateProto.DISPLAY_CUTOUT; @@ -39,7 +40,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.WindowConfiguration; +import android.app.WindowConfiguration.ActivityType; import android.graphics.Insets; import android.graphics.Rect; import android.os.Parcel; @@ -136,9 +137,8 @@ public class InsetsState implements Parcelable { * @return The calculated insets. */ public WindowInsets calculateInsets(Rect frame, @Nullable InsetsState ignoringVisibilityState, - boolean isScreenRound, boolean alwaysConsumeSystemBars, - int legacySoftInputMode, int legacyWindowFlags, int legacySystemUiFlags, - int windowType, @WindowConfiguration.WindowingMode int windowingMode, + boolean isScreenRound, int legacySoftInputMode, int legacyWindowFlags, + int legacySystemUiFlags, int windowType, @ActivityType int activityType, @Nullable @InternalInsetsSide SparseIntArray idSideMap) { Insets[] typeInsetsMap = new Insets[Type.SIZE]; Insets[] typeMaxInsetsMap = new Insets[Type.SIZE]; @@ -185,9 +185,8 @@ public class InsetsState implements Parcelable { if ((legacyWindowFlags & FLAG_FULLSCREEN) != 0) { compatInsetsTypes &= ~statusBars(); } - if (clearsCompatInsets(windowType, legacyWindowFlags, windowingMode)) { - // Clear all types but forceConsumingTypes. - compatInsetsTypes &= forceConsumingTypes; + if (clearsCompatInsets(windowType, legacyWindowFlags, activityType, forceConsumingTypes)) { + compatInsetsTypes = 0; } return new WindowInsets(typeInsetsMap, typeMaxInsetsMap, typeVisibilityMap, isScreenRound, @@ -295,26 +294,27 @@ public class InsetsState implements Parcelable { return insets; } - public Insets calculateVisibleInsets(Rect frame, int windowType, int windowingMode, + public Insets calculateVisibleInsets(Rect frame, int windowType, @ActivityType int activityType, @SoftInputModeFlags int softInputMode, int windowFlags) { - final boolean clearsCompatInsets = clearsCompatInsets( - windowType, windowFlags, windowingMode); final int softInputAdjustMode = softInputMode & SOFT_INPUT_MASK_ADJUST; final int visibleInsetsTypes = softInputAdjustMode != SOFT_INPUT_ADJUST_NOTHING ? systemBars() | ime() : systemBars(); + @InsetsType int forceConsumingTypes = 0; Insets insets = Insets.NONE; for (int i = mSources.size() - 1; i >= 0; i--) { final InsetsSource source = mSources.valueAt(i); if ((source.getType() & visibleInsetsTypes) == 0) { continue; } - if (clearsCompatInsets && !source.hasFlags(FLAG_FORCE_CONSUMING)) { - continue; + if (source.hasFlags(FLAG_FORCE_CONSUMING)) { + forceConsumingTypes |= source.getType(); } insets = Insets.max(source.calculateVisibleInsets(frame), insets); } - return insets; + return clearsCompatInsets(windowType, windowFlags, activityType, forceConsumingTypes) + ? Insets.NONE + : insets; } /** @@ -662,10 +662,15 @@ public class InsetsState implements Parcelable { mSources.put(source.getId(), source); } - public static boolean clearsCompatInsets(int windowType, int windowFlags, int windowingMode) { + public static boolean clearsCompatInsets(int windowType, int windowFlags, + @ActivityType int activityType, @InsetsType int forceConsumingTypes) { return (windowFlags & FLAG_LAYOUT_NO_LIMITS) != 0 + // For compatibility reasons, this excludes the wallpaper, the system error windows, + // and the app windows while any system bar is forcibly consumed. && windowType != TYPE_WALLPAPER && windowType != TYPE_SYSTEM_ERROR - && !WindowConfiguration.inMultiWindowMode(windowingMode); + // This ensures the app content won't be obscured by compat insets even if the app + // has FLAG_LAYOUT_NO_LIMITS. + && (forceConsumingTypes == 0 || activityType != ACTIVITY_TYPE_STANDARD); } public void dump(String prefix, PrintWriter pw) { diff --git a/core/java/android/view/KeyCharacterMap.aidl b/core/java/android/view/KeyCharacterMap.aidl new file mode 100644 index 0000000000000000000000000000000000000000..1a761a67b520a0774ef0e33c01b8fae29e546c86 --- /dev/null +++ b/core/java/android/view/KeyCharacterMap.aidl @@ -0,0 +1,19 @@ +/* + * Copyright 2023, 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.view; + +parcelable KeyCharacterMap; \ No newline at end of file diff --git a/core/java/android/view/KeyCharacterMap.java b/core/java/android/view/KeyCharacterMap.java index d8221a6267fd8d947d9d381e24a62e8d5d7c8374..4fe53c2410f57e0d60d6ad8bd8b426601bbf03bd 100644 --- a/core/java/android/view/KeyCharacterMap.java +++ b/core/java/android/view/KeyCharacterMap.java @@ -16,6 +16,7 @@ package android.view; +import android.annotation.NonNull; import android.annotation.Nullable; import android.compat.annotation.UnsupportedAppUsage; import android.hardware.input.InputManagerGlobal; @@ -309,6 +310,10 @@ public class KeyCharacterMap implements Parcelable { private static native KeyCharacterMap nativeObtainEmptyKeyCharacterMap(int deviceId); private static native boolean nativeEquals(long ptr1, long ptr2); + private static native void nativeApplyOverlay(long ptr, String layoutDescriptor, + String overlay); + private static native int nativeGetMappedKey(long ptr, int scanCode); + private KeyCharacterMap(Parcel in) { if (in == null) { throw new IllegalArgumentException("parcel must not be null"); @@ -367,6 +372,38 @@ public class KeyCharacterMap implements Parcelable { return inputDevice.getKeyCharacterMap(); } + /** + * Loads the key character map with applied KCM overlay. + * + * @param layoutDescriptor descriptor of the applied overlay KCM + * @param overlay string describing the overlay KCM + * @return The resultant key character map. + * @throws {@link UnavailableException} if the key character map + * could not be loaded because it was malformed or the default key character map + * is missing from the system. + * @hide + */ + public static KeyCharacterMap load(@NonNull String layoutDescriptor, @NonNull String overlay) { + KeyCharacterMap kcm = KeyCharacterMap.load(VIRTUAL_KEYBOARD); + kcm.applyOverlay(layoutDescriptor, overlay); + return kcm; + } + + private void applyOverlay(@NonNull String layoutDescriptor, @NonNull String overlay) { + nativeApplyOverlay(mPtr, layoutDescriptor, overlay); + } + + /** + * Gets the mapped key for the provided scan code. Returns the provided default if no mapping + * found in the KeyCharacterMap. + * + * @hide + */ + public int getMappedKeyOrDefault(int scanCode, int defaultKeyCode) { + int keyCode = nativeGetMappedKey(mPtr, scanCode); + return keyCode == KeyEvent.KEYCODE_UNKNOWN ? defaultKeyCode : keyCode; + } + /** * Gets the Unicode character generated by the specified key and meta * key state combination. diff --git a/core/java/android/view/PendingInsetsController.java b/core/java/android/view/PendingInsetsController.java index e8f62fc0963f43e33bf4a50e6f271f7f3b70487a..a4cbc52416b322e13ca2ac0ba1d0d001e196095c 100644 --- a/core/java/android/view/PendingInsetsController.java +++ b/core/java/android/view/PendingInsetsController.java @@ -44,6 +44,7 @@ public class PendingInsetsController implements WindowInsetsController { private ArrayList mControllableInsetsChangedListeners = new ArrayList<>(); private int mCaptionInsetsHeight = 0; + private int mImeCaptionBarInsetsHeight = 0; private WindowInsetsAnimationControlListener mLoggingListener; private @InsetsType int mRequestedVisibleTypes = WindowInsets.Type.defaultVisible(); @@ -90,6 +91,11 @@ public class PendingInsetsController implements WindowInsetsController { mCaptionInsetsHeight = height; } + @Override + public void setImeCaptionBarInsetsHeight(int height) { + mImeCaptionBarInsetsHeight = height; + } + @Override public void setSystemBarsBehavior(int behavior) { if (mReplayedInsetsController != null) { @@ -168,6 +174,9 @@ public class PendingInsetsController implements WindowInsetsController { if (mCaptionInsetsHeight != 0) { controller.setCaptionInsetsHeight(mCaptionInsetsHeight); } + if (mImeCaptionBarInsetsHeight != 0) { + controller.setImeCaptionBarInsetsHeight(mImeCaptionBarInsetsHeight); + } if (mAnimationsDisabled) { controller.setAnimationsDisabled(true); } diff --git a/core/java/android/view/ScrollFeedbackProvider.java b/core/java/android/view/ScrollFeedbackProvider.java index 8d3491df5d9e17c8fb78aa2d21be9cfe993e64a1..78716f5646f69eace6d70d0da2934e6d3d6f4722 100644 --- a/core/java/android/view/ScrollFeedbackProvider.java +++ b/core/java/android/view/ScrollFeedbackProvider.java @@ -16,48 +16,111 @@ package android.view; +import android.annotation.FlaggedApi; +import android.annotation.NonNull; +import android.view.flags.Flags; + /** * Interface to represent an entity giving consistent feedback for different events surrounding view * scroll. * - * @hide + *

    The interface provides methods for the client to report different scroll events. The client + * should report all scroll events that they want to be considered for scroll feedback using the + * respective methods. The interface will process these events and provide scroll feedback based on + * its specific feedback implementation. + * + *

    Obtaining the correct arguments for methods in this interface

    + * + *

    Methods in this interface rely on the provision of valid {@link InputDevice} ID and source, as + * well as the {@link MotionEvent} axis that generated a specific scroll event. The + * {@link InputDevice} represented by the provided ID must have a {@link InputDevice.MotionRange} + * with the provided source and axis. See below for more details on obtaining the right arguments + * for your method call. + * + *

      + * + *
    • inputDeviceId: should always be the ID of the {@link InputDevice} that generated + * the scroll event. If calling this method in response to a {@link MotionEvent}, use the device ID + * that is reported by the event, which can be obtained using {@link MotionEvent#getDeviceId()}. + * Otherwise, use a valid ID that is obtained from {@link InputDevice#getId()}, or from an + * {@link InputManager} instance ({@link InputManager#getInputDeviceIds()} gives all the valid input + * device IDs). + * + *

    • source: should always be the {@link InputDevice} source that generated the scroll + * event. Use {@link MotionEvent#getSource()} if calling this method in response to a + * {@link MotionEvent}. Otherwise, use a valid source for the {@link InputDevice}. You can use + * {@link InputDevice#getMotionRanges()} to get all the {@link InputDevice.MotionRange}s for the + * {@link InputDevice}, from which you can derive all the valid sources for the device. + * + *

    • axis: should always be the axis whose axis value produced the scroll event. + * A {@link MotionEvent} may report data for multiple axes, and each axis may have multiple data + * points for different pointers. Use the axis whose movement produced the specific scroll event. + * The motion value for an axis can be obtained using {@link MotionEvent#getAxisValue(int)}. + * You can use {@link InputDevice#getMotionRanges()} to get all the {@link InputDevice.MotionRange}s + * for the {@link InputDevice}, from which you can derive all the valid axes for the device. + * + *

    + * + * Note that not all valid input device source and motion axis inputs are necessarily + * supported for scroll feedback. If you are implementing this interface, provide clear + * documentation in your implementation class about which input device source and motion axis are + * supported for your specific implementation. If you are using one of the implementations of this + * interface, please refer to the documentation of the implementation for details on which input + * device source and axis are supported. */ +@FlaggedApi(Flags.FLAG_SCROLL_FEEDBACK_API) public interface ScrollFeedbackProvider { /** - * The view has snapped to an item, with a motion from a given {@link MotionEvent} on a given - * {@code axis}. + * Call this when the view has snapped to an item. * - *

    The interface is not aware of the internal scroll states of the view for which scroll - * feedback is played. As such, the client should call - * {@link #onScrollLimit(MotionEvent, int, int)} when scrolling has reached limit. * - * @param event the {@link MotionEvent} that caused the item to snap. + * @param inputDeviceId the ID of the {@link InputDevice} that generated the motion triggering + * the snap. + * @param source the input source of the motion causing the snap. * @param axis the axis of {@code event} that caused the item to snap. */ - void onSnapToItem(MotionEvent event, int axis); + void onSnapToItem(int inputDeviceId, int source, int axis); /** - * The view has reached the scroll limit when scrolled by the motion from a given - * {@link MotionEvent} on a given {@code axis}. + * Call this when the view has reached the scroll limit. * - * @param event the {@link MotionEvent} that caused scrolling to hit the limit. + *

    Note that a feedback may not be provided on every call to this method. This interface, for + * instance, may provide feedback on every `N`th scroll limit event. For the interface to + * properly provide feedback when needed, call this method for each scroll limit event that you + * want to be accounted to scroll limit feedback. + * + * @param inputDeviceId the ID of the {@link InputDevice} that caused scrolling to hit limit. + * @param source the input source of the motion that caused scrolling to hit the limit. * @param axis the axis of {@code event} that caused scrolling to hit the limit. * @param isStart {@code true} if scrolling hit limit at the start of the scrolling list, and * {@code false} if the scrolling hit limit at the end of the scrolling list. + * start and end in this context are not geometrical references. + * Instead, they refer to the start and end of a scrolling experience. As such, + * "start" for some views may be at the bottom of a scrolling list, while it may + * be at the top of scrolling list for others. */ - void onScrollLimit(MotionEvent event, int axis, boolean isStart); + void onScrollLimit(int inputDeviceId, int source, int axis, boolean isStart); /** - * The view has scrolled by {@code deltaInPixels} due to the motion from a given - * {@link MotionEvent} on a given {@code axis}. + * Call this when the view has scrolled. + * + *

    Different axes have different ways to map their raw axis values to pixels for scrolling. + * When calling this method, use the scroll values in pixels by which the view was scrolled; do + * not use the raw axis values. That is, use whatever value is passed to one of View's scrolling + * methods (example: {@link View#scrollBy(int, int)}). For example, for vertical scrolling on + * {@link MotionEvent#AXIS_SCROLL}, convert the raw axis value to the equivalent pixels by using + * {@link ViewConfiguration#getScaledVerticalScrollFactor()}, and use that value for this method + * call. * - *

    The interface is not aware of the internal scroll states of the view for which scroll - * feedback is played. As such, the client should call - * {@link #onScrollLimit(MotionEvent, int, int)} when scrolling has reached limit. + *

    Note that a feedback may not be provided on every call to this method. This interface, for + * instance, may provide feedback for every `x` pixels scrolled. For the interface to properly + * track scroll progress and provide feedback when needed, call this method for each scroll + * event that you want to be accounted to scroll feedback. * - * @param event the {@link MotionEvent} that caused scroll progress. + * @param inputDeviceId the ID of the {@link InputDevice} that caused scroll progress. + * @param source the input source of the motion that caused scroll progress. * @param axis the axis of {@code event} that caused scroll progress. * @param deltaInPixels the amount of scroll progress, in pixels. */ - void onScrollProgress(MotionEvent event, int axis, int deltaInPixels); + void onScrollProgress(int inputDeviceId, int source, int axis, int deltaInPixels); } diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java index 2208f89a04c2d45a5f6a2297ad0ad92f29365e28..d0a4d1a30681d0372e9aa3249be0c1a431c1ee4a 100644 --- a/core/java/android/view/Surface.java +++ b/core/java/android/view/Surface.java @@ -261,6 +261,50 @@ public class Surface implements Parcelable { */ public static final int CHANGE_FRAME_RATE_ALWAYS = 1; + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = {"FRAME_RATE_CATEGORY_"}, + value = {FRAME_RATE_CATEGORY_DEFAULT, FRAME_RATE_CATEGORY_NO_PREFERENCE, + FRAME_RATE_CATEGORY_LOW, FRAME_RATE_CATEGORY_NORMAL, FRAME_RATE_CATEGORY_HIGH}) + public @interface FrameRateCategory {} + + // From native_window.h or window.h. Keep these in sync. + /** + * Default value. This value can also be set to return to default behavior, indicating that this + * layer has no data for the frame rate. + * @hide + */ + public static final int FRAME_RATE_CATEGORY_DEFAULT = 0; + + /** + * The layer will explicitly not influence the frame rate. + * This may indicate a frame rate suitable for no animation updates (such as a cursor blinking + * or a sporadic update). + * @hide + */ + public static final int FRAME_RATE_CATEGORY_NO_PREFERENCE = 1; + + /** + * Indicates a frame rate suitable for animations that looks fine even if played at a low frame + * rate. + * @hide + */ + public static final int FRAME_RATE_CATEGORY_LOW = 2; + + /** + * Indicates a middle frame rate suitable for animations that do not require higher frame + * rates, or do not benefit from high smoothness. This is normally 60 Hz or close to it. + * @hide + */ + public static final int FRAME_RATE_CATEGORY_NORMAL = 3; + + /** + * Indicates a frame rate suitable for animations that require a high frame rate, which may + * increase smoothness but may also increase power usage. + * @hide + */ + public static final int FRAME_RATE_CATEGORY_HIGH = 4; + /** * Create an empty surface, which will later be filled in by readFromParcel(). * @hide diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index e673676395144784d9b5dbad345127abd7830cf1..052c28325545a2503a1059b96e9c1170e1710338 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -261,6 +261,8 @@ public final class SurfaceControl implements Parcelable { float frameRate, int compatibility, int changeFrameRateStrategy); private static native void nativeSetDefaultFrameRateCompatibility(long transactionObj, long nativeObject, int compatibility); + private static native void nativeSetFrameRateCategory( + long transactionObj, long nativeObject, int category); private static native long nativeGetHandle(long nativeObject); private static native void nativeSetFixedTransformHint(long transactionObj, long nativeObject, @@ -3627,6 +3629,45 @@ public final class SurfaceControl implements Parcelable { return this; } + /** + * Sets the frame rate category for the {@link SurfaceControl}. + * + * This helps instruct the system on choosing a display refresh rate based on the surface's + * chosen category, which is a device-specific range of frame rates. + * {@link #setFrameRateCategory} should be used by components such as animations that do not + * require an exact frame rate, but has an opinion on an approximate desirable frame rate. + * The values of {@code category} gives example use cases for which category to choose. + * + * To instead specify an exact frame rate, use + * {@link #setFrameRate(SurfaceControl, float, int, int)}, which is more suitable for + * content that knows specifically which frame rate is optimal. + * Although not a common use case, {@link #setFrameRateCategory} and {@link #setFrameRate} + * can be called together, with both calls potentially influencing the display refresh rate. + * For example, considering only one {@link SurfaceControl}: if {@link #setFrameRate}'s + * value is 24 and {@link #setFrameRateCategory}'s value is + * {@link Surface#FRAME_RATE_CATEGORY_HIGH}, defined to be the range [90,120] fps for an + * example device, then the best refresh rate for the SurfaceControl should be 120 fps. + * This is because 120 fps is a multiple of 24 fps, and 120 fps is in the specified + * category's range. + * + * @param sc The SurfaceControl to specify the frame rate category of. + * @param category The frame rate category of this surface. The category value may influence + * the system's choice of display frame rate. + * + * @return This transaction object. + * + * @see #setFrameRate(SurfaceControl, float, int, int) + * + * @hide + */ + @NonNull + public Transaction setFrameRateCategory( + @NonNull SurfaceControl sc, @Surface.FrameRateCategory int category) { + checkPreconditions(sc); + nativeSetFrameRateCategory(mNativeObject, sc.mNativeObject, category); + return this; + } + /** * Sets focus on the window identified by the input {@code token} if the window is focusable * otherwise the request is dropped. diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 92509c969055634b0fa0b915f7d61dde7de2d19c..4d53b2c6b82175d0dbe8e9159eb76a62c03bc405 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -105,6 +105,8 @@ import android.os.RemoteCallback; import android.os.RemoteException; import android.os.SystemClock; import android.os.Trace; +import android.os.Vibrator; +import android.os.vibrator.Flags; import android.sysprop.DisplayProperties; import android.text.InputType; import android.text.TextUtils; @@ -1582,11 +1584,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, */ static final int DISABLED = 0x00000020; - /** - * Mask for use with setFlags indicating bits used for indicating whether - * this view is enabled - * {@hide} - */ + /** + * Mask for use with setFlags indicating bits used for indicating whether + * this view is enabled + * {@hide} + */ static final int ENABLED_MASK = 0x00000020; /** @@ -5318,11 +5320,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, @Retention(RetentionPolicy.SOURCE) public @interface LayerType {} - @ViewDebug.ExportedProperty(category = "drawing", mapping = { - @ViewDebug.IntToString(from = LAYER_TYPE_NONE, to = "NONE"), - @ViewDebug.IntToString(from = LAYER_TYPE_SOFTWARE, to = "SOFTWARE"), - @ViewDebug.IntToString(from = LAYER_TYPE_HARDWARE, to = "HARDWARE") - }) int mLayerType = LAYER_TYPE_NONE; Paint mLayerPaint; @@ -5416,6 +5413,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, */ private PointerIcon mMousePointerIcon; + /** Vibrator for haptic feedback. */ + private Vibrator mVibrator; + /** * @hide */ @@ -5488,7 +5488,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, (TEXT_ALIGNMENT_DEFAULT << PFLAG2_TEXT_ALIGNMENT_MASK_SHIFT) | (PFLAG2_TEXT_ALIGNMENT_RESOLVED_DEFAULT) | (IMPORTANT_FOR_ACCESSIBILITY_DEFAULT << PFLAG2_IMPORTANT_FOR_ACCESSIBILITY_SHIFT); - mPrivateFlags4 = PFLAG4_AUTO_HANDWRITING_ENABLED; final ViewConfiguration configuration = ViewConfiguration.get(context); mTouchSlop = configuration.getScaledTouchSlop(); @@ -6213,7 +6212,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, setPreferKeepClear(a.getBoolean(attr, false)); break; case R.styleable.View_autoHandwritingEnabled: - setAutoHandwritingEnabled(a.getBoolean(attr, true)); + setAutoHandwritingEnabled(a.getBoolean(attr, false)); break; case R.styleable.View_handwritingBoundsOffsetLeft: mHandwritingBoundsOffsetLeft = a.getDimension(attr, 0); @@ -9279,8 +9278,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } while (parentGroup != null && !parentGroup.isImportantForAutofill()) { - ignoredParentLeft += parentGroup.mLeft; - ignoredParentTop += parentGroup.mTop; + ignoredParentLeft += parentGroup.mLeft - parentGroup.mScrollX; + ignoredParentTop += parentGroup.mTop - parentGroup.mScrollY; viewParent = parentGroup.getParent(); if (viewParent instanceof View) { @@ -12150,7 +12149,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, if (getSystemGestureExclusionRects().isEmpty() && collectPreferKeepClearRects().isEmpty() && collectUnrestrictedPreferKeepClearRects().isEmpty() - && (info.mHandwritingArea == null || !isAutoHandwritingEnabled())) { + && (info.mHandwritingArea == null || !shouldInitiateHandwriting())) { if (info.mPositionUpdateListener != null) { mRenderNode.removePositionUpdateListener(info.mPositionUpdateListener); info.mPositionUpdateListener = null; @@ -12517,13 +12516,23 @@ public class View implements Drawable.Callback, KeyEvent.Callback, void updateHandwritingArea() { // If autoHandwritingArea is not enabled, do nothing. - if (!isAutoHandwritingEnabled()) return; + if (!shouldInitiateHandwriting()) return; final AttachInfo ai = mAttachInfo; if (ai != null) { ai.mViewRootImpl.getHandwritingInitiator().updateHandwritingAreasForView(this); } } + /** + * Returns true if a stylus {@link MotionEvent} within this view's bounds should initiate + * handwriting mode, either for this view ({@link #isAutoHandwritingEnabled()} is {@code true}) + * or for a handwriting delegate view ({@link #getHandwritingDelegatorCallback()} is not {@code + * null}). + */ + boolean shouldInitiateHandwriting() { + return isAutoHandwritingEnabled() || getHandwritingDelegatorCallback() != null; + } + /** * Sets a callback which should be called when a stylus {@link MotionEvent} occurs within this * view's bounds. The callback will be called from the UI thread. @@ -15242,13 +15251,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } } - /** - * @see #performAccessibilityAction(int, Bundle) - * - * Note: Called from the default {@link AccessibilityDelegate}. - * - * @hide - */ + /** + * @see #performAccessibilityAction(int, Bundle) + * + * Note: Called from the default {@link AccessibilityDelegate}. + * + * @hide + */ @UnsupportedAppUsage public boolean performAccessibilityActionInternal(int action, @Nullable Bundle arguments) { if (isNestedScrollingEnabled() @@ -17382,7 +17391,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, return attachInfo.mHandler.hasCallbacks(mPendingCheckForLongPress); } - /** + /** * Remove the pending click action */ @UnsupportedAppUsage @@ -22616,6 +22625,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, @EnumEntry(value = LAYER_TYPE_SOFTWARE, name = "software"), @EnumEntry(value = LAYER_TYPE_HARDWARE, name = "hardware") }) + @ViewDebug.ExportedProperty(category = "drawing", mapping = { + @ViewDebug.IntToString(from = LAYER_TYPE_NONE, to = "NONE"), + @ViewDebug.IntToString(from = LAYER_TYPE_SOFTWARE, to = "SOFTWARE"), + @ViewDebug.IntToString(from = LAYER_TYPE_HARDWARE, to = "HARDWARE") + }) @LayerType public int getLayerType() { return mLayerType; @@ -27749,8 +27763,24 @@ public class View implements Drawable.Callback, KeyEvent.Callback, && !isHapticFeedbackEnabled()) { return false; } - return mAttachInfo.mRootCallbacks.performHapticFeedback(feedbackConstant, - (flags & HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING) != 0); + + final boolean always = (flags & HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING) != 0; + if (Flags.useVibratorHapticFeedback()) { + if (!mAttachInfo.canPerformHapticFeedback()) { + return false; + } + getSystemVibrator().performHapticFeedback( + feedbackConstant, always, "View#performHapticFeedback"); + return true; + } + return mAttachInfo.mRootCallbacks.performHapticFeedback(feedbackConstant, always); + } + + private Vibrator getSystemVibrator() { + if (mVibrator != null) { + return mVibrator; + } + return mVibrator = mContext.getSystemService(Vibrator.class); } /** @@ -31230,6 +31260,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback, return events; } + private boolean canPerformHapticFeedback() { + return mSession != null + && (mDisplay.getFlags() & Display.FLAG_TOUCH_FEEDBACK_DISABLED) == 0; + } + @Nullable ScrollCaptureInternal getScrollCaptureInternal() { if (mScrollCaptureInternal != null) { diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java index 2a88cf074f9627f70a3acfe8935ac68a149bf287..a3ae6cf20725cd6c861aa3283abe6305bef2155a 100644 --- a/core/java/android/view/ViewConfiguration.java +++ b/core/java/android/view/ViewConfiguration.java @@ -16,6 +16,7 @@ package android.view; +import android.annotation.FlaggedApi; import android.annotation.FloatRange; import android.annotation.NonNull; import android.annotation.TestApi; @@ -37,6 +38,7 @@ import android.provider.Settings; import android.util.DisplayMetrics; import android.util.SparseArray; import android.util.TypedValue; +import android.view.flags.Flags; /** * Contains methods to standard constants used in the UI for timeouts, sizes, and distances. @@ -240,6 +242,9 @@ public class ViewConfiguration { /** Value used as a maximum fling velocity, when fling is not supported. */ private static final int NO_FLING_MAX_VELOCITY = Integer.MIN_VALUE; + /** @hide */ + public static final int NO_HAPTIC_SCROLL_TICK_INTERVAL = Integer.MAX_VALUE; + /** * Delay before dispatching a recurring accessibility event in milliseconds. * This delay guarantees that a recurring event will be send at most once @@ -343,6 +348,8 @@ public class ViewConfiguration { private final int mMaximumFlingVelocity; private final int mMinimumRotaryEncoderFlingVelocity; private final int mMaximumRotaryEncoderFlingVelocity; + private final int mRotaryEncoderHapticScrollFeedbackTickIntervalPixels; + private final boolean mRotaryEncoderHapticScrollFeedbackEnabled; private final int mScrollbarSize; private final int mTouchSlop; private final int mHandwritingSlop; @@ -390,6 +397,8 @@ public class ViewConfiguration { mMaximumFlingVelocity = MAXIMUM_FLING_VELOCITY; mMinimumRotaryEncoderFlingVelocity = MINIMUM_FLING_VELOCITY; mMaximumRotaryEncoderFlingVelocity = MAXIMUM_FLING_VELOCITY; + mRotaryEncoderHapticScrollFeedbackEnabled = false; + mRotaryEncoderHapticScrollFeedbackTickIntervalPixels = NO_HAPTIC_SCROLL_TICK_INTERVAL; mScrollbarSize = SCROLL_BAR_SIZE; mTouchSlop = TOUCH_SLOP; mHandwritingSlop = HANDWRITING_SLOP; @@ -529,6 +538,20 @@ public class ViewConfiguration { mMaximumRotaryEncoderFlingVelocity = configMaxRotaryEncoderFlingVelocity; } + int configRotaryEncoderHapticScrollFeedbackTickIntervalPixels = + res.getDimensionPixelSize( + com.android.internal.R.dimen + .config_rotaryEncoderAxisScrollTickInterval); + mRotaryEncoderHapticScrollFeedbackTickIntervalPixels = + configRotaryEncoderHapticScrollFeedbackTickIntervalPixels > 0 + ? configRotaryEncoderHapticScrollFeedbackTickIntervalPixels + : NO_HAPTIC_SCROLL_TICK_INTERVAL; + + mRotaryEncoderHapticScrollFeedbackEnabled = + res.getBoolean( + com.android.internal.R.bool + .config_viewRotaryEncoderHapticScrollFedbackEnabled); + mGlobalActionsKeyTimeout = res.getInteger( com.android.internal.R.integer.config_globalActionsKeyTimeout); @@ -1193,6 +1216,101 @@ public class ViewConfiguration { return mMaximumFlingVelocity; } + /** + * Checks if any kind of scroll haptic feedback is enabled for a motion generated by a specific + * input device configuration and motion axis. + * + *

    See {@link ScrollFeedbackProvider} for details on the arguments that should be passed to + * the methods in this class. + * + *

    If the provided input device ID, source, and motion axis are not supported by this Android + * device, this method returns {@code false}. In other words, if the {@link InputDevice} + * represented by the provided {code inputDeviceId} does not have a + * {@link InputDevice.MotionRange} with the provided {@code axis} and {@code source}, the method + * returns {@code false}. + * + *

    If the provided input device ID, source, and motion axis are supported by this Android + * device, this method returns {@code true} only if the provided arguments are supported for + * scroll haptics. Otherwise, this method returns {@code false}. + * + * @param inputDeviceId the ID of the {@link InputDevice} that generated the motion that may + * produce scroll haptics. + * @param source the input source of the motion that may produce scroll haptics. + * @param axis the axis of the motion that may produce scroll haptics. + * @return {@code true} if motions generated by the provided input and motion configuration + * can produce scroll haptics. {@code false} otherwise. + * + * @see #getHapticScrollFeedbackTickInterval(int, int, int) + * @see InputDevice#getMotionRanges() + * @see InputDevice#getMotionRange(int) + * @see InputDevice#getMotionRange(int, int) + */ + @FlaggedApi(Flags.FLAG_SCROLL_FEEDBACK_API) + public boolean isHapticScrollFeedbackEnabled( + int inputDeviceId, + @HapticScrollFeedbackProvider.HapticScrollFeedbackAxis int axis, + int source) { + if (!isInputDeviceInfoValid(inputDeviceId, axis, source)) return false; + + if (source == InputDevice.SOURCE_ROTARY_ENCODER && axis == MotionEvent.AXIS_SCROLL) { + return mRotaryEncoderHapticScrollFeedbackEnabled; + } + + return false; + } + + /** + * Provides the minimum scroll interval (in pixels) between consecutive scroll tick haptics for + * motions generated by a specific input device configuration and motion axis. + * + *

    Scroll tick here refers to an interval-based, consistent scroll feedback provided + * to the user as the user scrolls through a scrollable view. + * + *

    If you are supporting scroll tick haptics, use this interval as the minimum pixel scroll + * distance between consecutive scroll ticks. That is, once your view has scrolled for at least + * this interval, play a haptic, and wait again until the view has further scrolled with this + * interval in the same direction before playing the next scroll haptic. + * + *

    Some devices may support other types of scroll haptics but not interval based tick + * haptics. In those cases, this method will return {@code Integer.MAX_VALUE}. The same value + * will be returned if the device does not support scroll haptics at all (which can be checked + * via {@link #isHapticScrollFeedbackEnabled(int, int, int)}). + * + *

    See {@link #isHapticScrollFeedbackEnabled(int, int, int)} for more details about obtaining + * the correct arguments for this method. + * + * @param inputDeviceId the ID of the {@link InputDevice} that generated the motion that may + * produce scroll haptics. + * @param source the input source of the motion that may produce scroll haptics. + * @param axis the axis of the motion that may produce scroll haptics. + * @return the absolute value of the minimum scroll interval, in pixels, between consecutive + * scroll feedback haptics for motions generated by the provided input and motion + * configuration. If scroll haptics is disabled for the given configuration, or if the + * device does not support scroll tick haptics for the given configuration, this method + * returns {@code Integer.MAX_VALUE}. + * + * @see #isHapticScrollFeedbackEnabled(int, int, int) + */ + @FlaggedApi(Flags.FLAG_SCROLL_FEEDBACK_API) + public int getHapticScrollFeedbackTickInterval( + int inputDeviceId, + @HapticScrollFeedbackProvider.HapticScrollFeedbackAxis int axis, + int source) { + if (!mRotaryEncoderHapticScrollFeedbackEnabled) { + return NO_HAPTIC_SCROLL_TICK_INTERVAL; + } + + if (!isInputDeviceInfoValid(inputDeviceId, axis, source)) { + return NO_HAPTIC_SCROLL_TICK_INTERVAL; + } + + if (source == InputDevice.SOURCE_ROTARY_ENCODER && axis == MotionEvent.AXIS_SCROLL) { + return mRotaryEncoderHapticScrollFeedbackTickIntervalPixels; + } + + return NO_HAPTIC_SCROLL_TICK_INTERVAL; + } + private static boolean isInputDeviceInfoValid(int id, int axis, int source) { InputDevice device = InputManagerGlobal.getInstance().getInputDevice(id); return device != null && device.getMotionRange(axis, source) != null; diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 1b1098d9d57ac4f96bf61fab52f1b00721e32073..5720fc01abce760d7e3d8c4be0c0f747319dd020 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -73,6 +73,7 @@ import android.view.inspector.InspectableProperty.EnumEntry; import android.view.translation.TranslationCapability; import android.view.translation.TranslationSpec.DataFormat; import android.view.translation.ViewTranslationRequest; +import android.webkit.WebView; import android.window.OnBackInvokedDispatcher; import com.android.internal.R; @@ -3720,11 +3721,16 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager return afm.shouldIncludeAllChildrenViewsWithAutofillTypeNotNoneInAssistStructure(); } - private boolean shouldIncludeAllChildrenViews(AutofillManager afm){ + private boolean shouldIncludeAllChildrenViews(AutofillManager afm) { if (afm == null) return false; return afm.shouldIncludeAllChildrenViewInAssistStructure(); } + private boolean shouldAlwaysIncludeWebview(AutofillManager afm) { + if (afm == null) return false; + return afm.shouldAlwaysIncludeWebviewInAssistStructure(); + } + /** @hide */ private void populateChildrenForAutofill(ArrayList list, @AutofillFlags int flags) { final int childrenCount = mChildrenCount; @@ -3741,11 +3747,20 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager ? mChildren[childIndex] : preorderedList.get(childIndex); if ((flags & AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS) != 0 || child.isImportantForAutofill() + || (child instanceof WebView && shouldAlwaysIncludeWebview(afm)) || (child.isMatchingAutofillableHeuristics() && !child.isActivityDeniedForAutofillForUnimportantView()) || (shouldIncludeAllChildrenViewWithAutofillTypeNotNone(afm) && child.getAutofillType() != AUTOFILL_TYPE_NONE) - || shouldIncludeAllChildrenViews(afm)){ + || shouldIncludeAllChildrenViews(afm) + || (child instanceof ViewGroup && child.getVisibility() != View.VISIBLE)) { + // If the child is a ViewGroup object and its visibility is not visible, include + // it as part of the assist structure. The children of these invisible ViewGroup + // objects are parsed and included in the assist structure. When the Autofill + // Provider determines the visibility of these children, it looks at their + // visibility as well as their parent's visibility. Omitting invisible parents + // will lead to the Autofill Provider incorrectly assuming that these children + // of invisible parents are actually visible. list.add(child); } else if (child instanceof ViewGroup) { ((ViewGroup) child).populateChildrenForAutofill(list, flags); @@ -4430,7 +4445,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager * @param drawingPosition the drawing order position. * @return the container position of a child for this drawing order position. * - * @see #getChildDrawingOrder(int, int)} + * @see #getChildDrawingOrder(int, int) */ public final int getChildDrawingOrder(int drawingPosition) { return getChildDrawingOrder(getChildCount(), drawingPosition); @@ -7361,6 +7376,126 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager } } + /** + * @hide + */ + @Override + public boolean getChildLocalHitRegion(@NonNull View child, @NonNull Region region, + @NonNull Matrix matrix, boolean isHover) { + if (!child.hasIdentityMatrix()) { + matrix.preConcat(child.getInverseMatrix()); + } + + final int dx = child.mLeft - mScrollX; + final int dy = child.mTop - mScrollY; + matrix.preTranslate(-dx, -dy); + + final int width = mRight - mLeft; + final int height = mBottom - mTop; + + // Map the bounds of this view into the region's coordinates and clip the region. + final RectF rect = mAttachInfo != null ? mAttachInfo.mTmpTransformRect : new RectF(); + rect.set(0, 0, width, height); + matrix.mapRect(rect); + + boolean notEmpty = region.op(Math.round(rect.left), Math.round(rect.top), + Math.round(rect.right), Math.round(rect.bottom), Region.Op.INTERSECT); + + if (isHover) { + HoverTarget target = mFirstHoverTarget; + boolean childIsHit = false; + while (target != null) { + final HoverTarget next = target.next; + if (target.child == child) { + childIsHit = true; + break; + } + target = next; + } + if (!childIsHit && mFirstHoverTarget != null) { + target = mFirstHoverTarget; + final ArrayList preorderedList = buildTouchDispatchChildList(); + while (notEmpty && target != null) { + final HoverTarget next = target.next; + final View hoveredView = target.child; + + if (!isOnTop(child, hoveredView, preorderedList)) { + rect.set(hoveredView.mLeft, hoveredView.mTop, hoveredView.mRight, + hoveredView.mBottom); + matrix.mapRect(rect); + notEmpty = region.op(Math.round(rect.left), Math.round(rect.top), + Math.round(rect.right), Math.round(rect.bottom), + Region.Op.DIFFERENCE); + } + target = next; + } + if (preorderedList != null) { + preorderedList.clear(); + } + } + } else { + TouchTarget target = mFirstTouchTarget; + boolean childIsHit = false; + while (target != null) { + final TouchTarget next = target.next; + if (target.child == child) { + childIsHit = true; + break; + } + target = next; + } + if (!childIsHit && mFirstTouchTarget != null) { + target = mFirstTouchTarget; + final ArrayList preorderedList = buildOrderedChildList(); + while (notEmpty && target != null) { + final TouchTarget next = target.next; + final View touchedView = target.child; + + if (!isOnTop(child, touchedView, preorderedList)) { + rect.set(touchedView.mLeft, touchedView.mTop, touchedView.mRight, + touchedView.mBottom); + matrix.mapRect(rect); + notEmpty = region.op(Math.round(rect.left), Math.round(rect.top), + Math.round(rect.right), Math.round(rect.bottom), + Region.Op.DIFFERENCE); + } + target = next; + } + if (preorderedList != null) { + preorderedList.clear(); + } + } + } + + if (notEmpty && mParent != null) { + notEmpty = mParent.getChildLocalHitRegion(this, region, matrix, isHover); + } + return notEmpty; + } + + /** + * Return true if the given {@code view} is drawn on top of the {@code otherView}. + * Both the {@code view} and {@code otherView} must be children of this ViewGroup. + * Otherwise, the returned value is meaningless. + */ + private boolean isOnTop(View view, View otherView, ArrayList preorderedList) { + final int childrenCount = mChildrenCount; + final boolean customOrder = preorderedList == null && isChildrenDrawingOrderEnabled(); + final View[] children = mChildren; + for (int i = childrenCount - 1; i >= 0; i--) { + final int childIndex = getAndVerifyPreorderedIndex(childrenCount, i, customOrder); + final View child = getAndVerifyPreorderedView(preorderedList, children, childIndex); + if (child == view) { + return true; + } + if (child == otherView) { + return false; + } + } + // Can't find the view and otherView in the children list. Return value is meaningless. + return false; + } + private static void applyOpToRegionByBounds(Region region, View view, Region.Op op) { final int[] locationInWindow = new int[2]; view.getLocationInWindow(locationInWindow); diff --git a/core/java/android/view/ViewParent.java b/core/java/android/view/ViewParent.java index 1020d2ef02be38e859cb340025a2245c2677e480..54bc3484d2954cd9b26cc8f6ff9eb407bac958ff 100644 --- a/core/java/android/view/ViewParent.java +++ b/core/java/android/view/ViewParent.java @@ -18,6 +18,7 @@ package android.view; import android.annotation.NonNull; import android.annotation.Nullable; +import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.Region; import android.os.Bundle; @@ -685,6 +686,36 @@ public interface ViewParent { default void subtractObscuredTouchableRegion(Region touchableRegion, View view) { } + /** + * Compute the region where the child can receive the {@link MotionEvent}s from the root view. + * + *

    Given region where the child will accept {@link MotionEvent}s. + * Modify the region to the unblocked region where the child can receive the + * {@link MotionEvent}s from the view root. + *

    + * + *

    The given region is always clipped by the bounds of the parent views. When there are + * on-going {@link MotionEvent}s, this method also makes use of the event dispatching results to + * determine whether a sibling view will also block the child's hit region. + *

    + * + * @param child a child View, whose hit region we want to compute. + * @param region the initial hit region where the child view will handle {@link MotionEvent}s, + * defined in the child coordinates. Will be overwritten to the result hit region. + * @param matrix the matrix that maps the given child view's coordinates to the region + * coordinates. It will be modified to a matrix that maps window coordinates to + * the result region's coordinates. + * @param isHover if true it will return the hover events' hit region, otherwise it will + * return the touch events' hit region. + * @return true if the returned region is not empty. + * @hide + */ + default boolean getChildLocalHitRegion(@NonNull View child, @NonNull Region region, + @NonNull Matrix matrix, boolean isHover) { + region.setEmpty(); + return false; + } + /** * Unbuffered dispatch has been requested by a child of this view parent. * This method is called by the View hierarchy to signal ancestors that a View needs to diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 3aa610af60b07aa6cc1b278f1da0398294a196f9..ff6165b8a3ba6e11e542dab3115e09c67b1f1b39 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -128,6 +128,7 @@ import android.graphics.PointF; import android.graphics.PorterDuff; import android.graphics.RecordingCanvas; import android.graphics.Rect; +import android.graphics.RectF; import android.graphics.Region; import android.graphics.RenderNode; import android.graphics.drawable.Drawable; @@ -320,13 +321,6 @@ public final class ViewRootImpl implements ViewParent, public static final boolean CLIENT_IMMERSIVE_CONFIRMATION = SystemProperties.getBoolean("persist.wm.debug.client_immersive_confirmation", false); - /** - * Whether the client should compute the window frame on its own. - * @hide - */ - public static final boolean LOCAL_LAYOUT = - SystemProperties.getBoolean("persist.debug.local_layout", true); - /** * Set this system property to true to force the view hierarchy to render * at 60 Hz. This can be used to measure the potential framerate. @@ -467,6 +461,9 @@ public final class ViewRootImpl implements ViewParent, @NonNull Display mDisplay; final String mBasePackageName; + // If we would like to keep a particular eye on the corresponding package. + final boolean mExtraDisplayListenerLogging; + final int[] mTmpLocation = new int[2]; final TypedValue mTmpValue = new TypedValue(); @@ -1016,6 +1013,8 @@ public final class ViewRootImpl implements ViewParent, mWindowLayout = windowLayout; mDisplay = display; mBasePackageName = context.getBasePackageName(); + final String name = DisplayProperties.debug_vri_package().orElse(null); + mExtraDisplayListenerLogging = !TextUtils.isEmpty(name) && name.equals(mBasePackageName); mThread = Thread.currentThread(); mLocation = new WindowLeaked(null); mLocation.fillInStackTrace(); @@ -1450,6 +1449,10 @@ public final class ViewRootImpl implements ViewParent, // We should update mAttachInfo.mDisplayState after registerDisplayListener // because displayState might be changed before registerDisplayListener. mAttachInfo.mDisplayState = mDisplay.getState(); + if (mExtraDisplayListenerLogging) { + Slog.i(mTag, "(" + mBasePackageName + ") Initial DisplayState: " + + mAttachInfo.mDisplayState, new Throwable()); + } if ((res & WindowManagerGlobal.ADD_FLAG_USE_BLAST) != 0) { mUseBLASTAdapter = true; } @@ -1534,6 +1537,9 @@ public final class ViewRootImpl implements ViewParent, * Register any kind of listeners if setView was success. */ private void registerListeners() { + if (mExtraDisplayListenerLogging) { + Slog.i(mTag, "Register listeners: " + mBasePackageName); + } mAccessibilityManager.addAccessibilityStateChangeListener( mAccessibilityInteractionConnectionManager, mHandler); mAccessibilityManager.addHighTextContrastStateChangeListener( @@ -1559,6 +1565,9 @@ public final class ViewRootImpl implements ViewParent, DisplayManagerGlobal .getInstance() .unregisterDisplayListener(mDisplayListener); + if (mExtraDisplayListenerLogging) { + Slog.w(mTag, "Unregister listeners: " + mBasePackageName, new Throwable()); + } } private void setTag() { @@ -1911,8 +1920,8 @@ public final class ViewRootImpl implements ViewParent, final float compatScale = frames.compatScale; final boolean frameChanged = !mWinFrame.equals(frame); final boolean configChanged = !mLastReportedMergedConfiguration.equals(mergedConfiguration); - final boolean attachedFrameChanged = LOCAL_LAYOUT - && !Objects.equals(mTmpFrames.attachedFrame, attachedFrame); + final boolean attachedFrameChanged = + !Objects.equals(mTmpFrames.attachedFrame, attachedFrame); final boolean displayChanged = mDisplay.getDisplayId() != displayId; final boolean compatScaleChanged = mTmpFrames.compatScale != compatScale; final boolean dragResizingChanged = mPendingDragResizing != dragResizing; @@ -1966,9 +1975,16 @@ public final class ViewRootImpl implements ViewParent, private final DisplayListener mDisplayListener = new DisplayListener() { @Override public void onDisplayChanged(int displayId) { + if (mExtraDisplayListenerLogging) { + Slog.i(mTag, "Received onDisplayChanged - " + mView); + } if (mView != null && mDisplay.getDisplayId() == displayId) { final int oldDisplayState = mAttachInfo.mDisplayState; final int newDisplayState = mDisplay.getState(); + if (mExtraDisplayListenerLogging) { + Slog.i(mTag, "DisplayState - old: " + oldDisplayState + + ", new: " + newDisplayState); + } if (oldDisplayState != newDisplayState) { mAttachInfo.mDisplayState = newDisplayState; pokeDrawLockIfNeeded(); @@ -2396,6 +2412,22 @@ public final class ViewRootImpl implements ViewParent, return r.intersect(0, 0, mWidth, mHeight); } + @Override + public boolean getChildLocalHitRegion(@NonNull View child, @NonNull Region region, + @NonNull Matrix matrix, boolean isHover) { + if (child != mView) { + throw new IllegalArgumentException("child " + child + " is not the root view " + + mView + " managed by this ViewRootImpl"); + } + + RectF rectF = new RectF(0, 0, mWidth, mHeight); + matrix.mapRect(rectF); + // Note: don't apply scroll offset, because we want to know its + // visibility in the virtual canvas being given to the view hierarchy. + return region.op(Math.round(rectF.left), Math.round(rectF.top), + Math.round(rectF.right), Math.round(rectF.bottom), Region.Op.INTERSECT); + } + @Override public void bringChildToFront(View child) { } @@ -2838,16 +2870,15 @@ public final class ViewRootImpl implements ViewParent, if (mLastWindowInsets == null || forceConstruct) { final Configuration config = getConfiguration(); mLastWindowInsets = mInsetsController.calculateInsets( - config.isScreenRound(), mAttachInfo.mAlwaysConsumeSystemBars, - mWindowAttributes.type, config.windowConfiguration.getWindowingMode(), - mWindowAttributes.softInputMode, mWindowAttributes.flags, - (mWindowAttributes.systemUiVisibility + config.isScreenRound(), mWindowAttributes.type, + config.windowConfiguration.getActivityType(), mWindowAttributes.softInputMode, + mWindowAttributes.flags, (mWindowAttributes.systemUiVisibility | mWindowAttributes.subtreeSystemUiVisibility)); mAttachInfo.mContentInsets.set(mLastWindowInsets.getSystemWindowInsets().toRect()); mAttachInfo.mStableInsets.set(mLastWindowInsets.getStableInsets().toRect()); mAttachInfo.mVisibleInsets.set(mInsetsController.calculateVisibleInsets( - mWindowAttributes.type, config.windowConfiguration.getWindowingMode(), + mWindowAttributes.type, config.windowConfiguration.getActivityType(), mWindowAttributes.softInputMode, mWindowAttributes.flags).toRect()); } return mLastWindowInsets; @@ -3986,8 +4017,6 @@ public final class ViewRootImpl implements ViewParent, mWindowFocusChanged = false; hasWindowFocus = mUpcomingWindowFocus; } - // TODO (b/131181940): Make sure this doesn't leak Activity with mActivityConfigCallback - // config changes. if (hasWindowFocus) { mInsetsController.onWindowFocusGained( getFocusedViewOrNull() != null /* hasViewFocused */); @@ -4117,7 +4146,7 @@ public final class ViewRootImpl implements ViewParent, } private void fireAccessibilityFocusEventIfHasFocusedNode() { - if (!AccessibilityManager.getInstance(mContext).isEnabled()) { + if (!mAccessibilityManager.isEnabled()) { return; } final View focusedView = mView.findFocus(); @@ -5169,8 +5198,12 @@ public final class ViewRootImpl implements ViewParent, } private boolean getAccessibilityFocusedRect(Rect bounds) { - final AccessibilityManager manager = AccessibilityManager.getInstance(mView.mContext); - if (!manager.isEnabled() || !manager.isTouchExplorationEnabled()) { + if (mView == null) { + Slog.w(TAG, "calling getAccessibilityFocusedRect() while the mView is null"); + return false; + } + if (!mAccessibilityManager.isEnabled() + || !mAccessibilityManager.isTouchExplorationEnabled()) { return false; } @@ -7238,8 +7271,8 @@ public final class ViewRootImpl implements ViewParent, && action != MotionEvent.ACTION_HOVER_EXIT) { return; } - AccessibilityManager manager = AccessibilityManager.getInstance(mContext); - if (manager.isEnabled() && manager.isTouchExplorationEnabled()) { + if (mAccessibilityManager.isEnabled() + && mAccessibilityManager.isTouchExplorationEnabled()) { return; } if (mView == null) { @@ -8292,8 +8325,7 @@ public final class ViewRootImpl implements ViewParent, final int measuredWidth = mMeasuredWidth; final int measuredHeight = mMeasuredHeight; final boolean relayoutAsync; - if (LOCAL_LAYOUT - && (mViewFrameInfo.flags & FrameInfo.FLAG_WINDOW_VISIBILITY_CHANGED) == 0 + if ((mViewFrameInfo.flags & FrameInfo.FLAG_WINDOW_VISIBILITY_CHANGED) == 0 && mWindowAttributes.type != TYPE_APPLICATION_STARTING && mSyncSeqId <= mLastSyncSeqId && winConfigFromAm.diff(winConfigFromWm, false /* compareUndefined */) == 0) { @@ -8401,10 +8433,20 @@ public final class ViewRootImpl implements ViewParent, } } - if (mSurfaceControl.isValid() && !HardwareRenderer.isDrawingEnabled()) { - // When drawing is disabled the window layer won't have a valid buffer. - // Set a window crop so input can get delivered to the window. - mTransaction.setWindowCrop(mSurfaceControl, mSurfaceSize.x, mSurfaceSize.y).apply(); + if (mSurfaceControl.isValid()) { + if (mPendingDragResizing && !mSurfaceSize.equals( + mWinFrameInScreen.width(), mWinFrameInScreen.height())) { + // During drag-resize, a single fullscreen-sized surface is reused for optimization. + // Crop to the content size instead of the surface size to avoid exposing garbage + // content that is still on the surface from previous re-layouts (e.g. when + // resizing to a larger size). + mTransaction.setWindowCrop(mSurfaceControl, + mWinFrameInScreen.width(), mWinFrameInScreen.height()); + } else if (!HardwareRenderer.isDrawingEnabled()) { + // When drawing is disabled the window layer won't have a valid buffer. + // Set a window crop so input can get delivered to the window. + mTransaction.setWindowCrop(mSurfaceControl, mSurfaceSize.x, mSurfaceSize.y).apply(); + } } mLastTransformHint = transformHint; @@ -11040,7 +11082,7 @@ public final class ViewRootImpl implements ViewParent, return; } // The accessibility may be turned off while we were waiting so check again. - if (AccessibilityManager.getInstance(mContext).isEnabled()) { + if (mAccessibilityManager.isEnabled()) { mLastEventTimeMillis = SystemClock.uptimeMillis(); AccessibilityEvent event = AccessibilityEvent.obtain(); event.setEventType(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); diff --git a/core/java/android/view/WindowInsetsController.java b/core/java/android/view/WindowInsetsController.java index bc0bab7b5e9533fe2d41b287459497759aa06a5d..cc2cd7982841489b090a81b3964bd359cd243c53 100644 --- a/core/java/android/view/WindowInsetsController.java +++ b/core/java/android/view/WindowInsetsController.java @@ -249,6 +249,16 @@ public interface WindowInsetsController { */ void setCaptionInsetsHeight(int height); + /** + * Sets the insets height for the IME caption bar, which corresponds to the + * "fake" IME navigation bar. + * + * @param height the insets height of the IME caption bar. + * @hide + */ + default void setImeCaptionBarInsetsHeight(int height) { + } + /** * Controls the behavior of system bars. * diff --git a/core/java/android/view/WindowLayout.java b/core/java/android/view/WindowLayout.java index 3b8298ed3627d56f32699e1a09ec7f07f841bded..dda399357d8c8840e9dcfb1d57a2f690b6e6663b 100644 --- a/core/java/android/view/WindowLayout.java +++ b/core/java/android/view/WindowLayout.java @@ -124,16 +124,16 @@ public class WindowLayout { || cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES)) { final Insets systemBarsInsets = state.calculateInsets( displayFrame, systemBars(), requestedVisibleTypes); - if (systemBarsInsets.left > 0) { + if (systemBarsInsets.left >= cutout.getSafeInsetLeft()) { displayCutoutSafeExceptMaybeBars.left = MIN_X; } - if (systemBarsInsets.top > 0) { + if (systemBarsInsets.top >= cutout.getSafeInsetTop()) { displayCutoutSafeExceptMaybeBars.top = MIN_Y; } - if (systemBarsInsets.right > 0) { + if (systemBarsInsets.right >= cutout.getSafeInsetRight()) { displayCutoutSafeExceptMaybeBars.right = MAX_X; } - if (systemBarsInsets.bottom > 0) { + if (systemBarsInsets.bottom >= cutout.getSafeInsetBottom()) { displayCutoutSafeExceptMaybeBars.bottom = MAX_Y; } } diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java index bb1d5b16340c49f53bf3d73159293c89dbf2c09c..e64274ec38925f69b35f5758762c0ad3dcc36aa5 100644 --- a/core/java/android/view/WindowManager.java +++ b/core/java/android/view/WindowManager.java @@ -1318,8 +1318,8 @@ public interface WindowManager extends ViewManager { * that have the ignore orientation request display setting enabled by OEMs * (enables compatibility mode for fixed orientation on Android 12 (API * level 31) or higher; see - * - * Large screen app compatibility + * + * Large screen compatibility mode * for more details). * *

    To opt out of the user aspect ratio compatibility override, add this property @@ -1358,8 +1358,8 @@ public interface WindowManager extends ViewManager { * that have the ignore orientation request display setting enabled by OEMs * (enables compatibility mode for fixed orientation on Android 12 (API * level 31) or higher; see - * - * Large screen app compatibility + * + * Large screen compatibility mode * for more details). * *

    To opt out of the full-screen option of the user aspect ratio compatibility @@ -3138,15 +3138,6 @@ public interface WindowManager extends ViewManager { */ public static final int PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS = 1 << 10; - /** - * Flag to force the status bar window to be visible all the time. If the bar is hidden when - * this flag is set it will be shown again. - * This can only be set by {@link LayoutParams#TYPE_STATUS_BAR}. - * - * {@hide} - */ - public static final int PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR = 1 << 11; - /** * Flag to indicate that the window frame should be the requested frame adding the display * cutout frame. This will only be applied if a specific size smaller than the parent frame @@ -3237,15 +3228,6 @@ public interface WindowManager extends ViewManager { */ public static final int PRIVATE_FLAG_NOT_MAGNIFIABLE = 1 << 22; - /** - * Flag to indicate that the status bar window is in a state such that it forces showing - * the navigation bar unless the navigation bar window is explicitly set to - * {@link View#GONE}. - * It only takes effects if this is set by {@link LayoutParams#TYPE_STATUS_BAR}. - * @hide - */ - public static final int PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION = 1 << 23; - /** * Flag to indicate that the window is color space agnostic, and the color can be * interpreted to any color space. @@ -3334,7 +3316,6 @@ public interface WindowManager extends ViewManager { PRIVATE_FLAG_SYSTEM_ERROR, PRIVATE_FLAG_OPTIMIZE_MEASURE, PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS, - PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR, PRIVATE_FLAG_LAYOUT_SIZE_EXTENDED_BY_CUTOUT, PRIVATE_FLAG_FORCE_DECOR_VIEW_VISIBILITY, PRIVATE_FLAG_LAYOUT_CHILD_WINDOW_IN_PARENT_FRAME, @@ -3345,7 +3326,6 @@ public interface WindowManager extends ViewManager { PRIVATE_FLAG_IS_ROUNDED_CORNERS_OVERLAY, PRIVATE_FLAG_EXCLUDE_FROM_SCREEN_MAGNIFICATION, PRIVATE_FLAG_NOT_MAGNIFIABLE, - PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION, PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC, PRIVATE_FLAG_USE_BLAST, PRIVATE_FLAG_APPEARANCE_CONTROLLED, @@ -3400,10 +3380,6 @@ public interface WindowManager extends ViewManager { mask = PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS, equals = PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS, name = "DISABLE_WALLPAPER_TOUCH_EVENTS"), - @ViewDebug.FlagToString( - mask = PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR, - equals = PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR, - name = "FORCE_STATUS_BAR_VISIBLE"), @ViewDebug.FlagToString( mask = PRIVATE_FLAG_LAYOUT_SIZE_EXTENDED_BY_CUTOUT, equals = PRIVATE_FLAG_LAYOUT_SIZE_EXTENDED_BY_CUTOUT, @@ -3444,10 +3420,6 @@ public interface WindowManager extends ViewManager { mask = PRIVATE_FLAG_NOT_MAGNIFIABLE, equals = PRIVATE_FLAG_NOT_MAGNIFIABLE, name = "NOT_MAGNIFIABLE"), - @ViewDebug.FlagToString( - mask = PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION, - equals = PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION, - name = "STATUS_FORCE_SHOW_NAVIGATION"), @ViewDebug.FlagToString( mask = PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC, equals = PRIVATE_FLAG_COLOR_SPACE_AGNOSTIC, @@ -3839,6 +3811,7 @@ public interface WindowManager extends ViewManager { * @see #ROTATION_ANIMATION_ROTATE * @see #ROTATION_ANIMATION_CROSSFADE * @see #ROTATION_ANIMATION_JUMPCUT + * @see #ROTATION_ANIMATION_SEAMLESS */ public int rotationAnimation = ROTATION_ANIMATION_ROTATE; @@ -4410,6 +4383,16 @@ public interface WindowManager extends ViewManager { */ public InsetsFrameProvider[] providedInsets; + /** + * Specifies which {@link InsetsType}s should be forcibly shown. The types shown by this + * method won't affect the app's layout. This field only takes effects if the caller has + * {@link android.Manifest.permission#STATUS_BAR_SERVICE} or the caller has the same uid as + * the recents component. + * + * @hide + */ + public @InsetsType int forciblyShownTypes; + /** * {@link LayoutParams} to be applied to the window when layout with a assigned rotation. * This will make layout during rotation change smoothly. @@ -4868,6 +4851,7 @@ public interface WindowManager extends ViewManager { out.writeInt(mBlurBehindRadius); out.writeBoolean(mWallpaperTouchEventsEnabled); out.writeTypedArray(providedInsets, 0 /* parcelableFlags */); + out.writeInt(forciblyShownTypes); checkNonRecursiveParams(); out.writeTypedArray(paramsForRotation, 0 /* parcelableFlags */); out.writeInt(mDisplayFlags); @@ -4939,6 +4923,7 @@ public interface WindowManager extends ViewManager { mBlurBehindRadius = in.readInt(); mWallpaperTouchEventsEnabled = in.readBoolean(); providedInsets = in.createTypedArray(InsetsFrameProvider.CREATOR); + forciblyShownTypes = in.readInt(); paramsForRotation = in.createTypedArray(LayoutParams.CREATOR); mDisplayFlags = in.readInt(); } @@ -5244,6 +5229,11 @@ public interface WindowManager extends ViewManager { changes |= LAYOUT_CHANGED; } + if (forciblyShownTypes != o.forciblyShownTypes) { + forciblyShownTypes = o.forciblyShownTypes; + changes |= PRIVATE_FLAGS_CHANGED; + } + if (paramsForRotation != o.paramsForRotation) { if ((changes & LAYOUT_CHANGED) == 0) { if (paramsForRotation != null && o.paramsForRotation != null @@ -5481,6 +5471,11 @@ public interface WindowManager extends ViewManager { sb.append(prefix).append(" ").append(providedInsets[i]); } } + if (forciblyShownTypes != 0) { + sb.append(System.lineSeparator()); + sb.append(prefix).append(" forciblyShownTypes=").append( + WindowInsets.Type.toString(forciblyShownTypes)); + } if (paramsForRotation != null && paramsForRotation.length != 0) { sb.append(System.lineSeparator()); sb.append(prefix).append(" paramsForRotation:"); diff --git a/core/java/android/view/autofill/AutofillFeatureFlags.java b/core/java/android/view/autofill/AutofillFeatureFlags.java index 956230df524e48176e752c8473e48c0030260565..f543cab322bb2f1f309bb96f30d5b839047b9fe1 100644 --- a/core/java/android/view/autofill/AutofillFeatureFlags.java +++ b/core/java/android/view/autofill/AutofillFeatureFlags.java @@ -209,6 +209,17 @@ public class AutofillFeatureFlags { DEVICE_CONFIG_INCLUDE_ALL_VIEWS_IN_ASSIST_STRUCTURE = "include_all_views_in_assist_structure"; + /** + * Whether to always include WebView in assist structure. WebView is a container view that + * providers "virtual" views. We want to always include such a container view since it can + * contain arbitrary views in it, some of which could be fillable. + * + * @hide + */ + public static final String + DEVICE_CONFIG_ALWAYS_INCLUDE_WEBVIEW_IN_ASSIST_STRUCTURE = + "always_include_webview_in_assist_structure"; + // END AUTOFILL FOR ALL APPS FLAGS // @@ -441,6 +452,13 @@ public class AutofillFeatureFlags { DEVICE_CONFIG_INCLUDE_ALL_VIEWS_IN_ASSIST_STRUCTURE, false); } + /** @hide */ + public static boolean shouldAlwaysIncludeWebviewInAssistStructure() { + return DeviceConfig.getBoolean( + DeviceConfig.NAMESPACE_AUTOFILL, + DEVICE_CONFIG_ALWAYS_INCLUDE_WEBVIEW_IN_ASSIST_STRUCTURE, true); + } + /** * Whether should enable multi-line filter diff --git a/core/java/android/view/autofill/AutofillManager.java b/core/java/android/view/autofill/AutofillManager.java index 2405d4092a0df46a3ca808e7e252aa27df9a640d..432f6e183731faaa1e5c550ed7713be129a5e84c 100644 --- a/core/java/android/view/autofill/AutofillManager.java +++ b/core/java/android/view/autofill/AutofillManager.java @@ -728,6 +728,9 @@ public final class AutofillManager { // Indicate whether should include all view in assist structure private boolean mShouldIncludeAllChildrenViewInAssistStructure; + // Indicate whether WebView should always be included in the assist structure + private boolean mShouldAlwaysIncludeWebviewInAssistStructure; + // Indicates whether called the showAutofillDialog() method. private boolean mShowAutofillDialogCalled = false; @@ -946,6 +949,9 @@ public final class AutofillManager { mShouldIncludeAllChildrenViewInAssistStructure = AutofillFeatureFlags.shouldIncludeAllChildrenViewInAssistStructure(); + + mShouldAlwaysIncludeWebviewInAssistStructure = + AutofillFeatureFlags.shouldAlwaysIncludeWebviewInAssistStructure(); } /** @@ -1023,6 +1029,13 @@ public final class AutofillManager { return mShouldIncludeAllChildrenViewInAssistStructure; } + /** + * @hide + */ + public boolean shouldAlwaysIncludeWebviewInAssistStructure() { + return mShouldAlwaysIncludeWebviewInAssistStructure; + } + /** * Get the denied or allowed activitiy names under specified package from the list string and * set it in fields accordingly diff --git a/core/java/android/view/flags/scroll_feedback_flags.aconfig b/core/java/android/view/flags/scroll_feedback_flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..62c569152ee980b167d3e040a6b9000a4bb6b933 --- /dev/null +++ b/core/java/android/view/flags/scroll_feedback_flags.aconfig @@ -0,0 +1,8 @@ +package: "android.view.flags" + +flag { + namespace: "toolkit" + name: "scroll_feedback_api" + description: "Enable the scroll feedback APIs" + bug: "239594271" +} \ No newline at end of file diff --git a/core/java/android/view/flags/variable_refresh_rate_flags.aconfig b/core/java/android/view/flags/variable_refresh_rate_flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..e3972ade8aa3c7a311b2abf3123af806d6e2aa68 --- /dev/null +++ b/core/java/android/view/flags/variable_refresh_rate_flags.aconfig @@ -0,0 +1,15 @@ +package: "android.view.flags" + +flag { + name: "view_velocity_api" + namespace: "toolkit" + description: "Feature flag for view content velocity api" + bug: "293513816" +} + +flag { + name: "toolkit_set_frame_rate" + namespace: "toolkit" + description: "Feature flag for toolkit to set frame rate" + bug: "293512962" +} \ No newline at end of file diff --git a/core/java/android/view/inputmethod/ImeTracker.java b/core/java/android/view/inputmethod/ImeTracker.java index 03d1cd8f89e355a7b7ff2460c6d2d41854aff3ce..f9d8b083ee9ca7bed81a424cae35f1c28e056c4d 100644 --- a/core/java/android/view/inputmethod/ImeTracker.java +++ b/core/java/android/view/inputmethod/ImeTracker.java @@ -782,6 +782,7 @@ public interface ImeTracker { private boolean shouldMonitorLatency(@SoftInputShowHideReason int reason) { return reason == SoftInputShowHideReason.SHOW_SOFT_INPUT || reason == SoftInputShowHideReason.HIDE_SOFT_INPUT + || reason == SoftInputShowHideReason.HIDE_SOFT_INPUT_FROM_VIEW || reason == SoftInputShowHideReason.SHOW_SOFT_INPUT_BY_INSETS_API || reason == SoftInputShowHideReason.HIDE_SOFT_INPUT_BY_INSETS_API || reason == SoftInputShowHideReason.SHOW_SOFT_INPUT_FROM_IME diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index c8778732e6d5123b78b8f749ec52983602fb3f62..5bb1e93181755a55059bff1698f1c434cef7f2f2 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -2279,6 +2279,40 @@ public final class InputMethodManager { } } + /** + * Synonym for {@link #hideSoftInputFromWindow(IBinder, int)} but takes a {@link View} as a + * parameter to be a counterpart of {@link #showSoftInput(View, int)}. + * + * @param view {@link View} to be used to conditionally issue hide request when and only when + * this {@link View} is serving as an IME target. + * @hide + */ + public boolean hideSoftInputFromView(@NonNull View view, @HideFlags int flags) { + final var reason = SoftInputShowHideReason.HIDE_SOFT_INPUT_FROM_VIEW; + final ImeTracker.Token statsToken = ImeTracker.forLogging().onRequestHide( + null /* component */, Process.myUid(), + ImeTracker.ORIGIN_CLIENT_HIDE_SOFT_INPUT, reason); + ImeTracker.forLatency().onRequestHide(statsToken, ImeTracker.ORIGIN_CLIENT_HIDE_SOFT_INPUT, + reason, ActivityThread::currentApplication); + ImeTracing.getInstance().triggerClientDump("InputMethodManager#hideSoftInputFromView", + this, null /* icProto */); + synchronized (mH) { + if (!hasServedByInputMethodLocked(view)) { + ImeTracker.forLogging().onFailed(statsToken, ImeTracker.PHASE_CLIENT_VIEW_SERVED); + ImeTracker.forLatency().onShowFailed( + statsToken, ImeTracker.PHASE_CLIENT_VIEW_SERVED, + ActivityThread::currentApplication); + Log.w(TAG, "Ignoring hideSoftInputFromView() as view=" + view + " is not served."); + return false; + } + + ImeTracker.forLogging().onProgress(statsToken, ImeTracker.PHASE_CLIENT_VIEW_SERVED); + + return IInputMethodManagerGlobalInvoker.hideSoftInput(mClient, view.getWindowToken(), + statsToken, flags, null, reason); + } + } + /** * Start stylus handwriting session. * @@ -3019,9 +3053,10 @@ public final class InputMethodManager { void closeCurrentInput() { final ImeTracker.Token statsToken = ImeTracker.forLogging().onRequestHide( null /* component */, Process.myUid(), ImeTracker.ORIGIN_CLIENT_HIDE_SOFT_INPUT, - SoftInputShowHideReason.HIDE_SOFT_INPUT); + SoftInputShowHideReason.HIDE_CLOSE_CURRENT_SESSION); ImeTracker.forLatency().onRequestHide(statsToken, ImeTracker.ORIGIN_CLIENT_HIDE_SOFT_INPUT, - SoftInputShowHideReason.HIDE_SOFT_INPUT, ActivityThread::currentApplication); + SoftInputShowHideReason.HIDE_CLOSE_CURRENT_SESSION, + ActivityThread::currentApplication); synchronized (mH) { if (mCurRootView == null || mCurRootView.getView() == null) { @@ -3040,7 +3075,7 @@ public final class InputMethodManager { statsToken, HIDE_NOT_ALWAYS, null, - SoftInputShowHideReason.HIDE_SOFT_INPUT); + SoftInputShowHideReason.HIDE_CLOSE_CURRENT_SESSION); } } diff --git a/core/java/android/view/inputmethod/RemoteInputConnectionImpl.java b/core/java/android/view/inputmethod/RemoteInputConnectionImpl.java index f67a61be5879c26fe47d8514ac7b6ec815af8b8b..61470f2bc71a9da9bfa4b90e3c6078b05d4df8c2 100644 --- a/core/java/android/view/inputmethod/RemoteInputConnectionImpl.java +++ b/core/java/android/view/inputmethod/RemoteInputConnectionImpl.java @@ -28,7 +28,13 @@ import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.AnyThread; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.UiThread; +import android.app.UriGrantsManager; +import android.content.ContentProvider; +import android.content.Intent; import android.graphics.RectF; +import android.net.Uri; +import android.os.Binder; import android.os.Bundle; import android.os.CancellationSignal; import android.os.CancellationSignalBeamer; @@ -37,6 +43,7 @@ import android.os.IBinder; import android.os.Looper; import android.os.ResultReceiver; import android.os.Trace; +import android.os.UserHandle; import android.util.Log; import android.util.proto.ProtoOutputStream; import android.view.KeyEvent; @@ -1143,7 +1150,22 @@ final class RemoteInputConnectionImpl extends IRemoteInputConnection.Stub { public void commitContent(InputConnectionCommandHeader header, InputContentInfo inputContentInfo, int flags, Bundle opts, AndroidFuture future /* T=Boolean */) { + final int imeUid = Binder.getCallingUid(); dispatchWithTracing("commitContent", future, () -> { + // Check if the originator IME has the right permissions + try { + final int contentUriOwnerUserId = ContentProvider.getUserIdFromUri( + inputContentInfo.getContentUri(), UserHandle.getUserId(imeUid)); + final Uri contentUriWithoutUserId = ContentProvider.getUriWithoutUserId( + inputContentInfo.getContentUri()); + UriGrantsManager.getService().checkGrantUriPermission_ignoreNonSystem(imeUid, null, + contentUriWithoutUserId, Intent.FLAG_GRANT_READ_URI_PERMISSION, + contentUriOwnerUserId); + } catch (Exception e) { + Log.w(TAG, "commitContent with invalid Uri permission from IME:", e); + return false; + } + if (header.mSessionId != mCurrentSessionId.get()) { return false; // cancelled } diff --git a/core/java/android/view/inputmethod/TEST_MAPPING b/core/java/android/view/inputmethod/TEST_MAPPING index 4b2ea1a096c88663ed537d4b1d94b8409017927f..ad59463ea1f1b69ba0ac8321f3d0f017aeb13f32 100644 --- a/core/java/android/view/inputmethod/TEST_MAPPING +++ b/core/java/android/view/inputmethod/TEST_MAPPING @@ -11,6 +11,9 @@ }, { "exclude-annotation": "android.platform.test.annotations.AppModeFull" + }, + { + "exclude-annotation": "androidx.test.filters.LargeTest" } ] } diff --git a/core/java/android/view/inputmethod/flags.aconfig b/core/java/android/view/inputmethod/flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..c144289f1a290c814306085a158fddda982fe7b2 --- /dev/null +++ b/core/java/android/view/inputmethod/flags.aconfig @@ -0,0 +1,9 @@ +package: "android.view.inputmethod" + +flag { + name: "refactor_insets_controller" + namespace: "input_method" + description: "Feature flag for refactoring InsetsController and removing ImeInsetsSourceConsumer" + bug: "298172246" + is_fixed_read_only: true +} \ No newline at end of file diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 6523fffc4b91a2acf41f3629f65d311e47500d6f..f5b81b027134d78496c69dd2de48be76269a12ec 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -50,6 +50,7 @@ import android.util.SparseArray; import android.view.DragEvent; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.PointerIcon; import android.view.View; import android.view.ViewDebug; import android.view.ViewGroup; @@ -3139,4 +3140,15 @@ public class WebView extends AbsoluteLayout if (result == null) return super.onApplyWindowInsets(insets); return result; } + + @Override + @Nullable + public PointerIcon onResolvePointerIcon(@NonNull MotionEvent event, int pointerIndex) { + PointerIcon icon = + mProvider.getViewDelegate().onResolvePointerIcon(event, pointerIndex); + if (icon != null) { + return icon; + } + return super.onResolvePointerIcon(event, pointerIndex); + } } diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java index 26579c5dec6896e5fd322c4ff467c4135b99794f..ca423e03004428f340af3f23381966337b0ab8b2 100644 --- a/core/java/android/webkit/WebViewProvider.java +++ b/core/java/android/webkit/WebViewProvider.java @@ -39,6 +39,7 @@ import android.util.SparseArray; import android.view.DragEvent; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.PointerIcon; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.view.WindowInsets; @@ -496,6 +497,15 @@ public interface WebViewProvider { default WindowInsets onApplyWindowInsets(@Nullable WindowInsets insets) { return null; } + + /** + * @hide Only used by WebView. + */ + @SuppressWarnings("unused") + @Nullable + default PointerIcon onResolvePointerIcon(@NonNull MotionEvent event, int pointerIndex) { + return null; + } } interface ScrollDelegate { diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java index 03364b66b42e6eeabb47e05d54f45521d77c2ba0..26ceea6d1e4c688ab89c34c45b074b1721e42c96 100644 --- a/core/java/android/widget/AbsListView.java +++ b/core/java/android/widget/AbsListView.java @@ -53,6 +53,7 @@ import android.view.ActionMode; import android.view.ContextMenu.ContextMenuInfo; import android.view.Gravity; import android.view.HapticFeedbackConstants; +import android.view.HapticScrollFeedbackProvider; import android.view.InputDevice; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -91,6 +92,7 @@ import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.SurroundingText; import android.view.inspector.InspectableProperty; import android.view.inspector.InspectableProperty.EnumEntry; +import android.widget.flags.Flags; import android.widget.RemoteViews.InteractionHandler; import com.android.internal.R; @@ -918,6 +920,8 @@ public abstract class AbsListView extends AdapterView implements Te private DifferentialMotionFlingHelper mDifferentialMotionFlingHelper; + private HapticScrollFeedbackProvider mHapticScrollFeedbackProvider; + public AbsListView(Context context) { super(context); setupDeviceConfigProperties(); @@ -4502,10 +4506,6 @@ public abstract class AbsListView extends AdapterView implements Te final float axisValue = (axis == -1) ? 0 : event.getAxisValue(axis); final int delta = Math.round(axisValue * mVerticalScrollFactor); if (delta != 0) { - // Tracks whether or not we should attempt fling for this event. - // Fling should not be attempted if the view is already at the limit of scroll, - // since it conflicts with EdgeEffect. - boolean shouldAttemptFling = true; // If we're moving down, we want the top item. If we're moving up, bottom item. final int motionIndex = delta > 0 ? 0 : getChildCount() - 1; @@ -4518,10 +4518,13 @@ public abstract class AbsListView extends AdapterView implements Te final int overscrollMode = getOverScrollMode(); if (!trackMotionScroll(delta, delta)) { - if (shouldAttemptFling) { - initDifferentialFlingHelperIfNotExists(); - mDifferentialMotionFlingHelper.onMotionEvent(event, axis); + if (Flags.platformWidgetHapticScrollFeedback()) { + initHapticScrollFeedbackProviderIfNotExists(); + mHapticScrollFeedbackProvider.onScrollProgress( + event.getDeviceId(), event.getSource(), axis, delta); } + initDifferentialFlingHelperIfNotExists(); + mDifferentialMotionFlingHelper.onMotionEvent(event, axis); return true; } else if (!event.isFromSource(InputDevice.SOURCE_MOUSE) && motionView != null && (overscrollMode == OVER_SCROLL_ALWAYS @@ -4530,7 +4533,14 @@ public abstract class AbsListView extends AdapterView implements Te int motionViewRealTop = motionView.getTop(); float overscroll = (delta - (motionViewRealTop - motionViewPrevTop)) / ((float) getHeight()); - if (delta > 0) { + boolean hitTopLimit = delta > 0; + if (Flags.platformWidgetHapticScrollFeedback()) { + initHapticScrollFeedbackProviderIfNotExists(); + mHapticScrollFeedbackProvider.onScrollLimit( + event.getDeviceId(), event.getSource(), axis, + /* isStart= */ hitTopLimit); + } + if (hitTopLimit) { mEdgeGlowTop.onPullDistance(overscroll, 0.5f); mEdgeGlowTop.onRelease(); } else { @@ -4696,6 +4706,12 @@ public abstract class AbsListView extends AdapterView implements Te } } + private void initHapticScrollFeedbackProviderIfNotExists() { + if (mHapticScrollFeedbackProvider == null) { + mHapticScrollFeedbackProvider = new HapticScrollFeedbackProvider(this); + } + } + private void recycleVelocityTracker() { if (mVelocityTracker != null) { mVelocityTracker.recycle(); diff --git a/core/java/android/widget/AdapterViewFlipper.java b/core/java/android/widget/AdapterViewFlipper.java index 065089f5363304274d30f1281db01263f51c863c..53c73c6bf161e0c105f33e9447cb161f6b74b780 100644 --- a/core/java/android/widget/AdapterViewFlipper.java +++ b/core/java/android/widget/AdapterViewFlipper.java @@ -16,10 +16,7 @@ package android.widget; -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.content.res.TypedArray; import android.os.Message; import android.util.AttributeSet; @@ -48,7 +45,6 @@ public class AdapterViewFlipper extends AdapterViewAnimator { private boolean mRunning = false; private boolean mStarted = false; private boolean mVisible = false; - private boolean mUserPresent = true; private boolean mAdvancedByHost = false; public AdapterViewFlipper(Context context) { @@ -82,40 +78,10 @@ public class AdapterViewFlipper extends AdapterViewAnimator { a.recycle(); } - private final BroadcastReceiver mReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - final String action = intent.getAction(); - if (Intent.ACTION_SCREEN_OFF.equals(action)) { - mUserPresent = false; - updateRunning(); - } else if (Intent.ACTION_USER_PRESENT.equals(action)) { - mUserPresent = true; - updateRunning(false); - } - } - }; - @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); - // Listen for broadcasts related to user-presence - final IntentFilter filter = new IntentFilter(); - filter.addAction(Intent.ACTION_SCREEN_OFF); - filter.addAction(Intent.ACTION_USER_PRESENT); - - // OK, this is gross but needed. This class is supported by the - // remote views machanism and as a part of that the remote views - // can be inflated by a context for another user without the app - // having interact users permission - just for loading resources. - // For exmaple, when adding widgets from a user profile to the - // home screen. Therefore, we register the receiver as the current - // user not the one the context is for. - getContext().registerReceiverAsUser(mReceiver, android.os.Process.myUserHandle(), - filter, null, getHandler()); - - if (mAutoStart) { // Automatically start when requested startFlipping(); @@ -126,8 +92,6 @@ public class AdapterViewFlipper extends AdapterViewAnimator { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); mVisible = false; - - getContext().unregisterReceiver(mReceiver); updateRunning(); } @@ -235,8 +199,7 @@ public class AdapterViewFlipper extends AdapterViewAnimator { * true. */ private void updateRunning(boolean flipNow) { - boolean running = !mAdvancedByHost && mVisible && mStarted && mUserPresent - && mAdapter != null; + boolean running = !mAdvancedByHost && mVisible && mStarted && mAdapter != null; if (running != mRunning) { if (running) { showOnly(mWhichChild, flipNow); @@ -248,7 +211,7 @@ public class AdapterViewFlipper extends AdapterViewAnimator { } if (LOGD) { Log.d(TAG, "updateRunning() mVisible=" + mVisible + ", mStarted=" + mStarted - + ", mUserPresent=" + mUserPresent + ", mRunning=" + mRunning); + + ", mRunning=" + mRunning); } } diff --git a/core/java/android/widget/AnalogClock.java b/core/java/android/widget/AnalogClock.java index 1f0e95ea305ae8c92e931d5c3de2bbc4147f426b..e01583322979e81b68c44c6ee82bb48ec9d4d169 100644 --- a/core/java/android/widget/AnalogClock.java +++ b/core/java/android/widget/AnalogClock.java @@ -23,7 +23,6 @@ import android.compat.annotation.UnsupportedAppUsage; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.BlendMode; @@ -37,6 +36,9 @@ import android.view.RemotableViewMethod; import android.view.View; import android.view.inspector.InspectableProperty; import android.widget.RemoteViews.RemoteView; +import android.widget.TextClock.ClockEventDelegate; + +import com.android.internal.util.Preconditions; import java.time.Clock; import java.time.DateTimeException; @@ -112,6 +114,7 @@ public class AnalogClock extends View { public AnalogClock(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); + mClockEventDelegate = new ClockEventDelegate(context); mSecondsHandFps = AppGlobals.getIntCoreSetting( WidgetFlags.KEY_ANALOG_CLOCK_SECONDS_HAND_FPS, context.getResources() @@ -584,21 +587,9 @@ public class AnalogClock extends View { @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); - IntentFilter filter = new IntentFilter(); if (!mReceiverAttached) { - filter.addAction(Intent.ACTION_TIME_CHANGED); - filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); - - // OK, this is gross but needed. This class is supported by the - // remote views mechanism and as a part of that the remote views - // can be inflated by a context for another user without the app - // having interact users permission - just for loading resources. - // For example, when adding widgets from a user profile to the - // home screen. Therefore, we register the receiver as the current - // user not the one the context is for. - getContext().registerReceiverAsUser(mIntentReceiver, - android.os.Process.myUserHandle(), filter, null, getHandler()); + mClockEventDelegate.registerTimeChangeReceiver(mIntentReceiver, getHandler()); mReceiverAttached = true; } @@ -615,12 +606,23 @@ public class AnalogClock extends View { @Override protected void onDetachedFromWindow() { if (mReceiverAttached) { - getContext().unregisterReceiver(mIntentReceiver); + mClockEventDelegate.unregisterTimeChangeReceiver(mIntentReceiver); mReceiverAttached = false; } super.onDetachedFromWindow(); } + /** + * Sets a delegate to handle clock event registration. This must be called before the view is + * attached to the window + * + * @hide + */ + public void setClockEventDelegate(ClockEventDelegate delegate) { + Preconditions.checkState(!mReceiverAttached, "Clock events already registered"); + mClockEventDelegate = delegate; + } + private void onVisible() { if (!mVisible) { mVisible = true; @@ -797,6 +799,7 @@ public class AnalogClock extends View { } }; private boolean mReceiverAttached; + private ClockEventDelegate mClockEventDelegate; private final Runnable mTick = new Runnable() { @Override diff --git a/core/java/android/widget/DatePickerSpinnerDelegate.java b/core/java/android/widget/DatePickerSpinnerDelegate.java index c6d456d8cb01d52fa5f13c69f695069a61b397ee..788b4afce0174fe09ecb35b965446c1bb4c97067 100644 --- a/core/java/android/widget/DatePickerSpinnerDelegate.java +++ b/core/java/android/widget/DatePickerSpinnerDelegate.java @@ -640,15 +640,15 @@ class DatePickerSpinnerDelegate extends AbstractDatePickerDelegate { // value and having the IME up makes no sense. InputMethodManager inputMethodManager = mContext.getSystemService(InputMethodManager.class); if (inputMethodManager != null) { - if (inputMethodManager.isActive(mYearSpinnerInput)) { + if (mYearSpinnerInput.hasFocus()) { + inputMethodManager.hideSoftInputFromView(mYearSpinnerInput, 0); mYearSpinnerInput.clearFocus(); - inputMethodManager.hideSoftInputFromWindow(mDelegator.getWindowToken(), 0); - } else if (inputMethodManager.isActive(mMonthSpinnerInput)) { + } else if (mMonthSpinnerInput.hasFocus()) { + inputMethodManager.hideSoftInputFromView(mMonthSpinnerInput, 0); mMonthSpinnerInput.clearFocus(); - inputMethodManager.hideSoftInputFromWindow(mDelegator.getWindowToken(), 0); - } else if (inputMethodManager.isActive(mDaySpinnerInput)) { + } else if (mDaySpinnerInput.hasFocus()) { + inputMethodManager.hideSoftInputFromView(mDaySpinnerInput, 0); mDaySpinnerInput.clearFocus(); - inputMethodManager.hideSoftInputFromWindow(mDelegator.getWindowToken(), 0); } } } diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java index f99f13843bd7bd8ab611332b6e42f510cbc99738..ddcfb40e00ceee23bd5ef191f8dbc9bad2d8216d 100644 --- a/core/java/android/widget/Editor.java +++ b/core/java/android/widget/Editor.java @@ -2098,17 +2098,14 @@ public class Editor { final int selectionEnd = mTextView.getSelectionEnd(); final InputMethodState ims = mInputMethodState; - if (ims != null && ims.mBatchEditNesting == 0) { + if (ims != null && ims.mBatchEditNesting == 0 + && (ims.mContentChanged || ims.mSelectionModeChanged)) { InputMethodManager imm = getInputMethodManager(); - if (imm != null) { - if (imm.isActive(mTextView)) { - if (ims.mContentChanged || ims.mSelectionModeChanged) { - // We are in extract mode and the content has changed - // in some way... just report complete new text to the - // input method. - reportExtractedText(); - } - } + if (imm != null && imm.hasActiveInputConnection(mTextView)) { + // We are in extract mode and the content has changed + // in some way... just report complete new text to the + // input method. + reportExtractedText(); } } @@ -4830,7 +4827,7 @@ public class Editor { if (null == imm) { return; } - if (!imm.isActive(mTextView)) { + if (!imm.hasActiveInputConnection(mTextView)) { return; } // Skip if the IME has not requested the cursor/anchor position. diff --git a/core/java/android/widget/NumberPicker.java b/core/java/android/widget/NumberPicker.java index 4f1c40a8d1c2ef0dbe9e39e76203ae26e8c2501e..e600b4f0fe45acab932009f1a55b774a7e03775c 100644 --- a/core/java/android/widget/NumberPicker.java +++ b/core/java/android/widget/NumberPicker.java @@ -1328,8 +1328,8 @@ public class NumberPicker extends LinearLayout { private void hideSoftInput() { InputMethodManager inputMethodManager = getContext().getSystemService(InputMethodManager.class); - if (inputMethodManager != null && inputMethodManager.isActive(mInputText)) { - inputMethodManager.hideSoftInputFromWindow(getWindowToken(), 0); + if (inputMethodManager != null) { + inputMethodManager.hideSoftInputFromView(mInputText, 0); } if (mHasSelectorWheel) { mInputText.setVisibility(View.INVISIBLE); diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index e1de05bda9df3d65bcd87f20f1debfd4d7cf7096..79acfbb0b39c88ddc4554e99484b651e3273f747 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -801,6 +801,11 @@ public class RemoteViews implements Parcelable, Filter { mActions.set(i, new SetRemoteCollectionItemListAdapterAction(itemsAction.viewId, itemsAction.mServiceIntent)); isActionReplaced = true; + } else if (action instanceof SetRemoteViewsAdapterIntent intentAction + && intentAction.viewId == viewId) { + mActions.set(i, new SetRemoteCollectionItemListAdapterAction( + intentAction.viewId, intentAction.intent)); + isActionReplaced = true; } else if (action instanceof ViewGroupActionAdd groupAction && groupAction.mNestedViews != null) { isActionReplaced |= groupAction.mNestedViews.replaceRemoteCollections(viewId); @@ -822,6 +827,42 @@ public class RemoteViews implements Parcelable, Filter { return isActionReplaced; } + /** + * @return True if has set remote adapter using service intent + * @hide + */ + public boolean hasLegacyLists() { + if (mActions != null) { + for (int i = 0; i < mActions.size(); i++) { + Action action = mActions.get(i); + if ((action instanceof SetRemoteCollectionItemListAdapterAction itemsAction + && itemsAction.mServiceIntent != null) + || (action instanceof SetRemoteViewsAdapterIntent intentAction + && intentAction.intent != null) + || (action instanceof ViewGroupActionAdd groupAction + && groupAction.mNestedViews != null + && groupAction.mNestedViews.hasLegacyLists())) { + return true; + } + } + } + if (mSizedRemoteViews != null) { + for (int i = 0; i < mSizedRemoteViews.size(); i++) { + if (mSizedRemoteViews.get(i).hasLegacyLists()) { + return true; + } + } + } + if (mLandscape != null && mLandscape.hasLegacyLists()) { + return true; + } + if (mPortrait != null && mPortrait.hasLegacyLists()) { + return true; + } + + return false; + } + private static void visitIconUri(Icon icon, @NonNull Consumer visitor) { if (icon != null && (icon.getType() == Icon.TYPE_URI || icon.getType() == Icon.TYPE_URI_ADAPTIVE_BITMAP)) { diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java index d330ebf733233c94a3faebd08dcbc7d37b929a57..e0e72ba1b9db1cd07c917f3b6f03987b53c1ced6 100644 --- a/core/java/android/widget/ScrollView.java +++ b/core/java/android/widget/ScrollView.java @@ -33,6 +33,7 @@ import android.os.StrictMode; import android.util.AttributeSet; import android.util.Log; import android.view.FocusFinder; +import android.view.HapticScrollFeedbackProvider; import android.view.InputDevice; import android.view.KeyEvent; import android.view.MotionEvent; @@ -47,6 +48,7 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.view.animation.AnimationUtils; import android.view.inspector.InspectableProperty; +import android.widget.flags.Flags; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; @@ -206,6 +208,8 @@ public class ScrollView extends FrameLayout { private DifferentialMotionFlingHelper mDifferentialMotionFlingHelper; + private HapticScrollFeedbackProvider mHapticScrollFeedbackProvider; + /** * Sentinel value for no current active pointer. * Used by {@link #mActivePointerId}. @@ -604,6 +608,12 @@ public class ScrollView extends FrameLayout { } } + private void initHapticScrollFeedbackProviderIfNotExists() { + if (mHapticScrollFeedbackProvider == null) { + mHapticScrollFeedbackProvider = new HapticScrollFeedbackProvider(this); + } + } + private void recycleVelocityTracker() { if (mVelocityTracker != null) { mVelocityTracker.recycle(); @@ -967,7 +977,7 @@ public class ScrollView extends FrameLayout { // Tracks whether or not we should attempt fling for this event. // Fling should not be attempted if the view is already at the limit of scroll, // since it conflicts with EdgeEffect. - boolean shouldAttemptFling = true; + boolean hitLimit = false; final int range = getScrollRange(); int oldScrollY = mScrollY; int newScrollY = oldScrollY - delta; @@ -986,7 +996,7 @@ public class ScrollView extends FrameLayout { absorbed = true; } newScrollY = 0; - shouldAttemptFling = false; + hitLimit = true; } else if (newScrollY > range) { if (canOverscroll) { mEdgeGlowBottom.onPullDistance( @@ -996,11 +1006,23 @@ public class ScrollView extends FrameLayout { absorbed = true; } newScrollY = range; - shouldAttemptFling = false; + hitLimit = true; } if (newScrollY != oldScrollY) { super.scrollTo(mScrollX, newScrollY); - if (shouldAttemptFling) { + if (hitLimit) { + if (Flags.platformWidgetHapticScrollFeedback()) { + initHapticScrollFeedbackProviderIfNotExists(); + mHapticScrollFeedbackProvider.onScrollLimit( + event.getDeviceId(), event.getSource(), axis, + /* isStart= */ newScrollY == 0); + } + } else { + if (Flags.platformWidgetHapticScrollFeedback()) { + initHapticScrollFeedbackProviderIfNotExists(); + mHapticScrollFeedbackProvider.onScrollProgress( + event.getDeviceId(), event.getSource(), axis, delta); + } initDifferentialFlingHelperIfNotExists(); mDifferentialMotionFlingHelper.onMotionEvent(event, axis); } diff --git a/core/java/android/widget/SearchView.java b/core/java/android/widget/SearchView.java index da094893abb9e59d4631f3499314dacd7a37f696..b4d7a943ff17cf82dff4c2c060144a232670fc7e 100755 --- a/core/java/android/widget/SearchView.java +++ b/core/java/android/widget/SearchView.java @@ -2109,7 +2109,7 @@ public class SearchView extends LinearLayout implements CollapsibleActionView { return; } - if (imm.isActive(this)) { + if (imm.hasActiveInputConnection(this)) { // This means that SearchAutoComplete is already connected to the IME. // InputMethodManager#showSoftInput() is guaranteed to pass client-side focus check. mHasPendingShowSoftInputRequest = false; diff --git a/core/java/android/widget/TextClock.java b/core/java/android/widget/TextClock.java index e48afb2a3cc8b1e011bd27a043d475fc918e423d..255bd679dc355f7a75962d93d9cacd75ef4c8105 100644 --- a/core/java/android/widget/TextClock.java +++ b/core/java/android/widget/TextClock.java @@ -16,6 +16,7 @@ package android.widget; +import static android.os.Process.myUserHandle; import static android.view.ViewDebug.ExportedProperty; import static android.widget.RemoteViews.RemoteView; @@ -24,7 +25,6 @@ import android.annotation.TestApi; import android.app.ActivityManager; import android.compat.annotation.UnsupportedAppUsage; import android.content.BroadcastReceiver; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -43,6 +43,7 @@ import android.view.ViewHierarchyEncoder; import android.view.inspector.InspectableProperty; import com.android.internal.R; +import com.android.internal.util.Preconditions; import java.time.Duration; import java.time.Instant; @@ -141,6 +142,8 @@ public class TextClock extends TextView { private boolean mRegistered; private boolean mShouldRunTicker; + private ClockEventDelegate mClockEventDelegate; + private Calendar mTime; private String mTimeZone; @@ -178,8 +181,7 @@ public class TextClock extends TextView { if (mTimeZone == null && Intent.ACTION_TIMEZONE_CHANGED.equals(intent.getAction())) { final String timeZone = intent.getStringExtra(Intent.EXTRA_TIMEZONE); createTime(timeZone); - } else if (!mShouldRunTicker && (Intent.ACTION_TIME_TICK.equals(intent.getAction()) - || Intent.ACTION_TIME_CHANGED.equals(intent.getAction()))) { + } else if (!mShouldRunTicker && Intent.ACTION_TIME_CHANGED.equals(intent.getAction())) { return; } onTimeChanged(); @@ -282,6 +284,7 @@ public class TextClock extends TextView { if (mFormat24 == null) { mFormat24 = getBestDateTimePattern("Hm"); } + mClockEventDelegate = new ClockEventDelegate(getContext()); createTime(mTimeZone); chooseFormat(); @@ -430,6 +433,17 @@ public class TextClock extends TextView { registerObserver(); } + /** + * Sets a delegate to handle clock event registration. This must be called before the view is + * attached to the window + * + * @hide + */ + public void setClockEventDelegate(ClockEventDelegate delegate) { + Preconditions.checkState(!mRegistered, "Clock events already registered"); + mClockEventDelegate = delegate; + } + /** * Update the displayed time if necessary and invalidate the view. */ @@ -557,7 +571,7 @@ public class TextClock extends TextView { if (!mRegistered) { mRegistered = true; - registerReceiver(); + mClockEventDelegate.registerTimeChangeReceiver(mIntentReceiver, getHandler()); registerObserver(); createTime(mTimeZone); @@ -582,7 +596,7 @@ public class TextClock extends TextView { super.onDetachedFromWindow(); if (mRegistered) { - unregisterReceiver(); + mClockEventDelegate.unregisterTimeChangeReceiver(mIntentReceiver); unregisterObserver(); mRegistered = false; @@ -598,56 +612,27 @@ public class TextClock extends TextView { mStopTicking = true; } - private void registerReceiver() { - final IntentFilter filter = new IntentFilter(); - - filter.addAction(Intent.ACTION_TIME_CHANGED); - filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); - - // OK, this is gross but needed. This class is supported by the - // remote views mechanism and as a part of that the remote views - // can be inflated by a context for another user without the app - // having interact users permission - just for loading resources. - // For example, when adding widgets from a managed profile to the - // home screen. Therefore, we register the receiver as the user - // the app is running as not the one the context is for. - getContext().registerReceiverAsUser(mIntentReceiver, android.os.Process.myUserHandle(), - filter, null, getHandler()); - } - private void registerObserver() { if (mRegistered) { if (mFormatChangeObserver == null) { mFormatChangeObserver = new FormatChangeObserver(getHandler()); } - final ContentResolver resolver = getContext().getContentResolver(); - Uri uri = Settings.System.getUriFor(Settings.System.TIME_12_24); - if (mShowCurrentUserTime) { - resolver.registerContentObserver(uri, true, - mFormatChangeObserver, UserHandle.USER_ALL); - } else { - // UserHandle.myUserId() is needed. This class is supported by the - // remote views mechanism and as a part of that the remote views - // can be inflated by a context for another user without the app - // having interact users permission - just for loading resources. - // For example, when adding widgets from a managed profile to the - // home screen. Therefore, we register the ContentObserver with the user - // the app is running (e.g. the launcher) and not the user of the - // context (e.g. the widget's profile). - resolver.registerContentObserver(uri, true, - mFormatChangeObserver, UserHandle.myUserId()); - } + // UserHandle.myUserId() is needed. This class is supported by the + // remote views mechanism and as a part of that the remote views + // can be inflated by a context for another user without the app + // having interact users permission - just for loading resources. + // For example, when adding widgets from a managed profile to the + // home screen. Therefore, we register the ContentObserver with the user + // the app is running (e.g. the launcher) and not the user of the + // context (e.g. the widget's profile). + int userHandle = mShowCurrentUserTime ? UserHandle.USER_ALL : UserHandle.myUserId(); + mClockEventDelegate.registerFormatChangeObserver(mFormatChangeObserver, userHandle); } } - private void unregisterReceiver() { - getContext().unregisterReceiver(mIntentReceiver); - } - private void unregisterObserver() { if (mFormatChangeObserver != null) { - final ContentResolver resolver = getContext().getContentResolver(); - resolver.unregisterContentObserver(mFormatChangeObserver); + mClockEventDelegate.unregisterFormatChangeObserver(mFormatChangeObserver); } } @@ -674,4 +659,59 @@ public class TextClock extends TextView { stream.addProperty("format", mFormat == null ? null : mFormat.toString()); stream.addProperty("hasSeconds", mHasSeconds); } + + /** + * Utility class to delegate some system event handling to allow overring the default behavior + * + * @hide + */ + public static class ClockEventDelegate { + + private final Context mContext; + + public ClockEventDelegate(Context context) { + mContext = context; + } + + /** + * Registers a receiver for actions {@link Intent#ACTION_TIME_CHANGED} and + * {@link Intent#ACTION_TIMEZONE_CHANGED} + * + * OK, this is gross but needed. This class is supported by the remote views mechanism and + * as a part of that the remote views can be inflated by a context for another user without + * the app having interact users permission - just for loading resources. For example, + * when adding widgets from a managed profile to the home screen. Therefore, we register + * the receiver as the user the app is running as not the one the context is for. + */ + public void registerTimeChangeReceiver(BroadcastReceiver receiver, Handler handler) { + final IntentFilter filter = new IntentFilter(); + + filter.addAction(Intent.ACTION_TIME_CHANGED); + filter.addAction(Intent.ACTION_TIMEZONE_CHANGED); + + mContext.registerReceiverAsUser(receiver, myUserHandle(), filter, null, handler); + } + + /** + * Unregisters a previously registered receiver + */ + public void unregisterTimeChangeReceiver(BroadcastReceiver receiver) { + mContext.unregisterReceiver(receiver); + } + + /** + * Registers an observer for time format changes + */ + public void registerFormatChangeObserver(ContentObserver observer, int userHandle) { + Uri uri = Settings.System.getUriFor(Settings.System.TIME_12_24); + mContext.getContentResolver().registerContentObserver(uri, true, observer, userHandle); + } + + /** + * Unregisters a previously registered observer + */ + public void unregisterFormatChangeObserver(ContentObserver observer) { + mContext.getContentResolver().unregisterContentObserver(observer); + } + } } diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index afe755924e0828b0ff9134e6459ed5e41073e707..a0d0656a4e50f1a237f4bbc99acfabf48321533b 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -28,11 +28,14 @@ import static android.view.accessibility.AccessibilityNodeInfo.EXTRA_DATA_TEXT_C import static android.view.accessibility.AccessibilityNodeInfo.EXTRA_DATA_TEXT_CHARACTER_LOCATION_KEY; import static android.view.inputmethod.CursorAnchorInfo.FLAG_HAS_VISIBLE_REGION; +import static com.android.text.flags.Flags.FLAG_USE_BOUNDS_FOR_WIDTH; + import android.R; import android.annotation.CallSuper; import android.annotation.CheckResult; import android.annotation.ColorInt; import android.annotation.DrawableRes; +import android.annotation.FlaggedApi; import android.annotation.FloatRange; import android.annotation.IntDef; import android.annotation.IntRange; @@ -523,6 +526,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @EnabledSince(targetSdkVersion = Build.VERSION_CODES.P) public static final long STATICLAYOUT_FALLBACK_LINESPACING = 37756858; // buganizer id + + /** + * This change ID enables the bounding box based layout. + * @hide + */ + @ChangeId + @EnabledSince(targetSdkVersion = VERSION_CODES.VANILLA_ICE_CREAM) + public static final long USE_BOUNDS_FOR_WIDTH = 63938206; // buganizer id + // System wide time for last cut, copy or text changed action. static long sLastCutCopyOrTextChangedTime; @@ -849,6 +861,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // True if the view text can be padded for compat reasons, when the view is translated. private final boolean mUseTextPaddingForUiTranslation; + private boolean mUseBoundsForWidth; + @ViewDebug.ExportedProperty(category = "text") @UnsupportedAppUsage private int mGravity = Gravity.TOP | Gravity.START; @@ -1618,6 +1632,13 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } else { mUseFallbackLineSpacing = FALLBACK_LINE_SPACING_NONE; } + + if (CompatChanges.isChangeEnabled(USE_BOUNDS_FOR_WIDTH)) { + mUseBoundsForWidth = false; // TODO: Connect to the flag. + } else { + mUseBoundsForWidth = false; + } + // TODO(b/179693024): Use a ChangeId instead. mUseTextPaddingForUiTranslation = targetSdkVersion <= Build.VERSION_CODES.R; @@ -1856,6 +1877,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener boolean clickable = canInputOrMove || isClickable(); boolean longClickable = canInputOrMove || isLongClickable(); int focusable = getFocusable(); + boolean isAutoHandwritingEnabled = true; n = a.getIndexCount(); for (int i = 0; i < n; i++) { @@ -1878,6 +1900,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener case com.android.internal.R.styleable.View_longClickable: longClickable = a.getBoolean(attr, longClickable); break; + + case com.android.internal.R.styleable.View_autoHandwritingEnabled: + isAutoHandwritingEnabled = a.getBoolean(attr, true); + break; } } a.recycle(); @@ -1891,6 +1917,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } setClickable(clickable); setLongClickable(longClickable); + setAutoHandwritingEnabled(isAutoHandwritingEnabled); if (mEditor != null) mEditor.prepareCursorControllers(); @@ -2436,8 +2463,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (!enabled) { // Hide the soft input if the currently active TextView is disabled InputMethodManager imm = getInputMethodManager(); - if (imm != null && imm.isActive(this)) { - imm.hideSoftInputFromWindow(getWindowToken(), 0); + if (imm != null) { + imm.hideSoftInputFromView(this, 0); } } @@ -4819,6 +4846,47 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } } + /** + * Set true for using width of bounding box as a source of automatic line breaking and drawing. + * + * If this value is false, the TextView determines the View width, drawing offset and automatic + * line breaking based on total advances as text widths. By setting true, use glyph bound's as a + * source of text width. + * + * If the font used for this TextView has glyphs that has negative bearing X or glyph xMax is + * greater than advance, the glyph clipping can be happened because the drawing area may be + * bigger than advance. By setting this to true, the TextView will reserve more spaces for + * drawing are, so clipping can be prevented. + * + * This value is true by default if the target API version is 35 or later. + * + * @param useBoundsForWidth true for using bounding box for width. false for using advances for + * width. + * @see #getUseBoundsForWidth() + */ + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) + public void setUseBoundsForWidth(boolean useBoundsForWidth) { + if (mUseBoundsForWidth != useBoundsForWidth) { + mUseBoundsForWidth = useBoundsForWidth; + if (mLayout != null) { + nullLayouts(); + requestLayout(); + invalidate(); + } + } + } + + /** + * Returns true if using bounding box as a width, false for using advance as a width. + * + * @see #setUseBoundsForWidth(boolean) + * @return True if using bounding box for width, false if using advance for width. + */ + @FlaggedApi(FLAG_USE_BOUNDS_FOR_WIDTH) + public boolean getUseBoundsForWidth() { + return mUseBoundsForWidth; + } + /** * @return whether fallback line spacing is enabled, {@code true} by default * @@ -8008,8 +8076,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } else if (actionCode == EditorInfo.IME_ACTION_DONE) { InputMethodManager imm = getInputMethodManager(); - if (imm != null && imm.isActive(this)) { - imm.hideSoftInputFromWindow(getWindowToken(), 0); + if (imm != null) { + imm.hideSoftInputFromView(this, 0); } return; } @@ -9672,8 +9740,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener // No target for next focus, but make sure the IME // if this came from it. InputMethodManager imm = getInputMethodManager(); - if (imm != null && imm.isActive(this)) { - imm.hideSoftInputFromWindow(getWindowToken(), 0); + if (imm != null) { + imm.hideSoftInputFromView(this, 0); } } } @@ -10647,7 +10715,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener .setJustificationMode(mJustificationMode) .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setLineBreakConfig(LineBreakConfig.getLineBreakConfig( - mLineBreakStyle, mLineBreakWordStyle)); + mLineBreakStyle, mLineBreakWordStyle)) + .setUseBoundsForWidth(mUseBoundsForWidth); if (shouldEllipsize) { builder.setEllipsize(mEllipsize) .setEllipsizedWidth(ellipsisWidth); @@ -10709,6 +10778,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener .setJustificationMode(mJustificationMode) .setLineBreakConfig(LineBreakConfig.getLineBreakConfig( mLineBreakStyle, mLineBreakWordStyle)) + .setUseBoundsForWidth(mUseBoundsForWidth) .setEllipsize(getKeyListener() == null ? effectiveEllipsize : null) .setEllipsizedWidth(ellipsisWidth); result = builder.build(); @@ -10727,11 +10797,23 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (useSaved && mSavedLayout != null) { result = mSavedLayout.replaceOrMake(mTransformed, mTextPaint, wantWidth, alignment, mSpacingMult, mSpacingAdd, - boring, mIncludePad); + boring, mIncludePad, null, wantWidth, + isFallbackLineSpacingForBoringLayout(), + mUseBoundsForWidth); } else { - result = BoringLayout.make(mTransformed, mTextPaint, - wantWidth, alignment, mSpacingMult, mSpacingAdd, - boring, mIncludePad); + result = new BoringLayout( + mTransformed, + mTextPaint, + wantWidth, + alignment, + mSpacingMult, + mSpacingAdd, + mIncludePad, + isFallbackLineSpacingForBoringLayout(), + wantWidth, + null, + boring, + mUseBoundsForWidth); } if (useSaved) { @@ -10742,12 +10824,22 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener result = mSavedLayout.replaceOrMake(mTransformed, mTextPaint, wantWidth, alignment, mSpacingMult, mSpacingAdd, boring, mIncludePad, effectiveEllipsize, - ellipsisWidth); + ellipsisWidth, isFallbackLineSpacingForBoringLayout(), + mUseBoundsForWidth); } else { - result = BoringLayout.make(mTransformed, mTextPaint, - wantWidth, alignment, mSpacingMult, mSpacingAdd, - boring, mIncludePad, effectiveEllipsize, - ellipsisWidth); + result = new BoringLayout( + mTransformed, + mTextPaint, + wantWidth, + alignment, + mSpacingMult, + mSpacingAdd, + mIncludePad, + isFallbackLineSpacingForBoringLayout(), + ellipsisWidth, + effectiveEllipsize, + boring, + mUseBoundsForWidth); } } } @@ -10765,7 +10857,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener .setJustificationMode(mJustificationMode) .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setLineBreakConfig(LineBreakConfig.getLineBreakConfig( - mLineBreakStyle, mLineBreakWordStyle)); + mLineBreakStyle, mLineBreakWordStyle)) + .setUseBoundsForWidth(mUseBoundsForWidth); if (shouldEllipsize) { builder.setEllipsize(effectiveEllipsize) .setEllipsizedWidth(ellipsisWidth); @@ -10798,7 +10891,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return false; } - private static int desired(Layout layout) { + private static int desired(Layout layout, boolean useBoundsForWidth) { int n = layout.getLineCount(); CharSequence text = layout.getText(); float max = 0; @@ -10816,6 +10909,10 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener max = Math.max(max, layout.getLineMax(i)); } + if (useBoundsForWidth) { + max = Math.max(max, layout.computeDrawingBoundingBox().width()); + } + return (int) Math.ceil(max); } @@ -10884,7 +10981,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener width = widthSize; } else { if (mLayout != null && mEllipsize == null) { - des = desired(mLayout); + des = desired(mLayout, mUseBoundsForWidth); } if (des < 0) { @@ -10900,11 +10997,17 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (boring == null || boring == UNKNOWN_BORING) { if (des < 0) { des = (int) Math.ceil(Layout.getDesiredWidthWithLimit(mTransformed, 0, - mTransformed.length(), mTextPaint, mTextDir, widthLimit)); + mTransformed.length(), mTextPaint, mTextDir, widthLimit, + mUseBoundsForWidth)); } width = des; } else { - width = boring.width; + if (mUseBoundsForWidth) { + width = Math.max(boring.width, + (int) Math.ceil(boring.getDrawingBoundingBox().width())); + } else { + width = boring.width; + } } final Drawables dr = mDrawables; @@ -10918,7 +11021,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener int hintWidth; if (mHintLayout != null && mEllipsize == null) { - hintDes = desired(mHintLayout); + hintDes = desired(mHintLayout, mUseBoundsForWidth); } if (hintDes < 0) { @@ -10932,7 +11035,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (hintBoring == null || hintBoring == UNKNOWN_BORING) { if (hintDes < 0) { hintDes = (int) Math.ceil(Layout.getDesiredWidthWithLimit(mHint, 0, - mHint.length(), mTextPaint, mTextDir, widthLimit)); + mHint.length(), mTextPaint, mTextDir, widthLimit, + mUseBoundsForWidth)); } hintWidth = hintDes; } else { @@ -11133,7 +11237,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener .setMaxLines(mMaxMode == LINES ? mMaximum : Integer.MAX_VALUE) .setTextDirection(getTextDirectionHeuristic()) .setLineBreakConfig(LineBreakConfig.getLineBreakConfig( - mLineBreakStyle, mLineBreakWordStyle)); + mLineBreakStyle, mLineBreakWordStyle)) + .setUseBoundsForWidth(mUseBoundsForWidth); final StaticLayout layout = layoutBuilder.build(); @@ -12883,6 +12988,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener return mText instanceof Editable && onCheckIsTextEditor() && isEnabled(); } + /** + * @return true if this TextView could be filled by an Autofill service. Note that disabled + * fields can still be filled. + */ + @UnsupportedAppUsage + boolean isTextAutofillable() { + return mText instanceof Editable && onCheckIsTextEditor(); + } + /** * Returns true, only while processing a touch gesture, if the initial * touch down event caused focus to move to the text view and as a result @@ -13605,7 +13719,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override public void autofill(AutofillValue value) { - if (!isTextEditable()) { + if (!isTextAutofillable()) { Log.w(LOG_TAG, "cannot autofill non-editable TextView: " + this); return; } @@ -13621,7 +13735,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override public @AutofillType int getAutofillType() { - return isTextEditable() ? AUTOFILL_TYPE_TEXT : AUTOFILL_TYPE_NONE; + return isTextAutofillable() ? AUTOFILL_TYPE_TEXT : AUTOFILL_TYPE_NONE; } /** @@ -13635,7 +13749,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener @Override @Nullable public AutofillValue getAutofillValue() { - if (isTextEditable()) { + if (isTextAutofillable()) { final CharSequence text = TextUtils.trimToParcelableSize(getText()); return AutofillValue.forText(text); } @@ -14037,7 +14151,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener selectionStart, OffsetMapping.MAP_STRATEGY_CURSOR); final int line = layout.getLineForOffset(offsetTransformed); final float insertionMarkerX = - layout.getPrimaryHorizontal(offsetTransformed) + layout.getPrimaryHorizontal( + offsetTransformed, layout.shouldClampCursor(line)) + viewportToContentHorizontalOffset; final float insertionMarkerTop = layout.getLineTop(line) + viewportToContentVerticalOffset; @@ -15029,6 +15144,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener final ClipDescription description = getClipboardManagerForUser().getPrimaryClipDescription(); + if (description == null) { + return false; + } final boolean isPlainType = description.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN); return (isPlainType && description.isStyledText()) || description.hasMimeType(ClipDescription.MIMETYPE_TEXT_HTML); diff --git a/core/java/android/widget/TimePickerSpinnerDelegate.java b/core/java/android/widget/TimePickerSpinnerDelegate.java index bd2fa5965bc9975363dd2b3311324afab8dfdeac..1a660be64c99e26187e724ad56a7f97a6e9ad793 100644 --- a/core/java/android/widget/TimePickerSpinnerDelegate.java +++ b/core/java/android/widget/TimePickerSpinnerDelegate.java @@ -471,15 +471,15 @@ class TimePickerSpinnerDelegate extends TimePicker.AbstractTimePickerDelegate { // value and having the IME up makes no sense. InputMethodManager inputMethodManager = mContext.getSystemService(InputMethodManager.class); if (inputMethodManager != null) { - if (inputMethodManager.isActive(mHourSpinnerInput)) { + if (mHourSpinnerInput.hasFocus()) { + inputMethodManager.hideSoftInputFromView(mHourSpinnerInput, 0); mHourSpinnerInput.clearFocus(); - inputMethodManager.hideSoftInputFromWindow(mDelegator.getWindowToken(), 0); - } else if (inputMethodManager.isActive(mMinuteSpinnerInput)) { + } else if (mMinuteSpinnerInput.hasFocus()) { + inputMethodManager.hideSoftInputFromView(mMinuteSpinnerInput, 0); mMinuteSpinnerInput.clearFocus(); - inputMethodManager.hideSoftInputFromWindow(mDelegator.getWindowToken(), 0); - } else if (inputMethodManager.isActive(mAmPmSpinnerInput)) { + } else if (mAmPmSpinnerInput.hasFocus()) { + inputMethodManager.hideSoftInputFromView(mAmPmSpinnerInput, 0); mAmPmSpinnerInput.clearFocus(); - inputMethodManager.hideSoftInputFromWindow(mDelegator.getWindowToken(), 0); } } } diff --git a/core/java/android/widget/ToastPresenter.java b/core/java/android/widget/ToastPresenter.java index 7cb61fe597db8b67ec32f8e2eb191035e47a92fa..6884e639f9c7d53d874a478638fa33161235f281 100644 --- a/core/java/android/widget/ToastPresenter.java +++ b/core/java/android/widget/ToastPresenter.java @@ -89,9 +89,10 @@ public class ToastPresenter { return view; } + private final WeakReference mContext; private final Resources mResources; private final WeakReference mWindowManager; - private final WeakReference mAccessibilityManager; + private final IAccessibilityManager mAccessibilityManagerService; private final INotificationManager mNotificationManager; private final String mPackageName; private final String mContextPackageName; @@ -101,21 +102,14 @@ public class ToastPresenter { public ToastPresenter(Context context, IAccessibilityManager accessibilityManager, INotificationManager notificationManager, String packageName) { + mContext = new WeakReference<>(context); mResources = context.getResources(); mWindowManager = new WeakReference<>(context.getSystemService(WindowManager.class)); mNotificationManager = notificationManager; mPackageName = packageName; mContextPackageName = context.getPackageName(); mParams = createLayoutParams(); - - // We obtain AccessibilityManager manually via its constructor instead of using method - // AccessibilityManager.getInstance() for 2 reasons: - // 1. We want to be able to inject IAccessibilityManager in tests to verify behavior. - // 2. getInstance() caches the instance for the process even if we pass a different - // context to it. This is problematic for multi-user because callers can pass a context - // created via Context.createContextAsUser(). - mAccessibilityManager = new WeakReference<>( - new AccessibilityManager(context, accessibilityManager, context.getUserId())); + mAccessibilityManagerService = accessibilityManager; } public String getPackageName() { @@ -306,11 +300,20 @@ public class ToastPresenter { * enabled. */ public void trySendAccessibilityEvent(View view, String packageName) { - final AccessibilityManager accessibilityManager = mAccessibilityManager.get(); - if (accessibilityManager == null) { + final Context context = mContext.get(); + if (context == null) { return; } + // We obtain AccessibilityManager manually via its constructor instead of using method + // AccessibilityManager.getInstance() for 2 reasons: + // 1. We want to be able to inject IAccessibilityManager in tests to verify behavior. + // 2. getInstance() caches the instance for the process even if we pass a different + // context to it. This is problematic for multi-user because callers can pass a context + // created via Context.createContextAsUser(). + final AccessibilityManager accessibilityManager = new AccessibilityManager(context, + mAccessibilityManagerService, context.getUserId()); + if (!accessibilityManager.isEnabled()) { accessibilityManager.removeClient(); return; @@ -342,7 +345,10 @@ public class ToastPresenter { // to cancel the toast there is an inherent race and we may attempt to add a window // after the token has been invalidated. Let us hedge against that. Log.w(TAG, "Error while attempting to show toast from " + mPackageName, e); - return; + } catch (WindowManager.InvalidDisplayException e) { + // Display the toast was scheduled on might have been meanwhile removed. + Log.w(TAG, "Cannot show toast from " + mPackageName + + " on display it was scheduled on.", e); } } } diff --git a/core/java/android/widget/ViewFlipper.java b/core/java/android/widget/ViewFlipper.java index 5abb6e1637e705572c1f89c76561c272fa080eb4..eaf037e689765f87cf3bf9e7efdbba84f3afb2a9 100644 --- a/core/java/android/widget/ViewFlipper.java +++ b/core/java/android/widget/ViewFlipper.java @@ -18,10 +18,7 @@ package android.widget; import android.annotation.IntRange; import android.compat.annotation.UnsupportedAppUsage; -import android.content.BroadcastReceiver; import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; import android.content.res.TypedArray; import android.os.Build; import android.os.Message; @@ -51,8 +48,6 @@ public class ViewFlipper extends ViewAnimator { private boolean mRunning = false; private boolean mStarted = false; private boolean mVisible = false; - @UnsupportedAppUsage - private boolean mUserPresent = true; public ViewFlipper(Context context) { super(context); @@ -70,39 +65,10 @@ public class ViewFlipper extends ViewAnimator { a.recycle(); } - private final BroadcastReceiver mReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - final String action = intent.getAction(); - if (Intent.ACTION_SCREEN_OFF.equals(action)) { - mUserPresent = false; - updateRunning(); - } else if (Intent.ACTION_USER_PRESENT.equals(action)) { - mUserPresent = true; - updateRunning(false); - } - } - }; - @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); - // Listen for broadcasts related to user-presence - final IntentFilter filter = new IntentFilter(); - filter.addAction(Intent.ACTION_SCREEN_OFF); - filter.addAction(Intent.ACTION_USER_PRESENT); - - // OK, this is gross but needed. This class is supported by the - // remote views machanism and as a part of that the remote views - // can be inflated by a context for another user without the app - // having interact users permission - just for loading resources. - // For exmaple, when adding widgets from a user profile to the - // home screen. Therefore, we register the receiver as the current - // user not the one the context is for. - getContext().registerReceiverAsUser(mReceiver, android.os.Process.myUserHandle(), - filter, null, getHandler()); - if (mAutoStart) { // Automatically start when requested startFlipping(); @@ -113,8 +79,6 @@ public class ViewFlipper extends ViewAnimator { protected void onDetachedFromWindow() { super.onDetachedFromWindow(); mVisible = false; - - getContext().unregisterReceiver(mReceiver); updateRunning(); } @@ -186,7 +150,7 @@ public class ViewFlipper extends ViewAnimator { */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private void updateRunning(boolean flipNow) { - boolean running = mVisible && mStarted && mUserPresent; + boolean running = mVisible && mStarted; if (running != mRunning) { if (running) { showOnly(mWhichChild, flipNow); @@ -198,7 +162,7 @@ public class ViewFlipper extends ViewAnimator { } if (LOGD) { Log.d(TAG, "updateRunning() mVisible=" + mVisible + ", mStarted=" + mStarted - + ", mUserPresent=" + mUserPresent + ", mRunning=" + mRunning); + + ", mRunning=" + mRunning); } } diff --git a/core/java/android/widget/flags/scroll_view_flags.aconfig b/core/java/android/widget/flags/scroll_view_flags.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..f93ade28750b6129080d6dd756e5ccf8edf880fe --- /dev/null +++ b/core/java/android/widget/flags/scroll_view_flags.aconfig @@ -0,0 +1,8 @@ +package: "android.widget.flags" + +flag { + namespace: "widget" + name: "platform_widget_haptic_scroll_feedback" + description: "Enables haptic scroll feedback in platform widgets" + bug: "287914819" +} \ No newline at end of file diff --git a/core/java/android/widget/inline/TEST_MAPPING b/core/java/android/widget/inline/TEST_MAPPING index 26a556906dd1b488201a734cf532cf19d257f5d7..82c6f61c3486cdf8c45f9e980cc84c120e395b99 100644 --- a/core/java/android/widget/inline/TEST_MAPPING +++ b/core/java/android/widget/inline/TEST_MAPPING @@ -8,6 +8,9 @@ }, { "exclude-annotation": "androidx.test.filters.FlakyTest" + }, + { + "exclude-annotation": "androidx.test.filters.LargeTest" } ] } diff --git a/core/java/android/window/DisplayWindowPolicyController.java b/core/java/android/window/DisplayWindowPolicyController.java index c2700536f8490e6abaff219284409b413a9db013..2747233a4bf17263ef5398ed346a330f5e7433ad 100644 --- a/core/java/android/window/DisplayWindowPolicyController.java +++ b/core/java/android/window/DisplayWindowPolicyController.java @@ -17,8 +17,10 @@ package android.window; import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; +import static android.view.Display.INVALID_DISPLAY; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.WindowConfiguration; import android.content.ComponentName; @@ -107,18 +109,38 @@ public abstract class DisplayWindowPolicyController { } /** - * Returns {@code true} if the given activities can be displayed on this virtual display and - * the windowing mode is supported. + * Returns {@code true} if all of the given activities can be launched on this virtual display + * in the configuration defined by the rest of the arguments. + * + * @see #canContainActivity + */ + public boolean canContainActivities(@NonNull List activities, + @WindowConfiguration.WindowingMode int windowingMode) { + for (int i = 0; i < activities.size(); i++) { + if (!canContainActivity(activities.get(i), windowingMode, + /*launchingFromDisplayId=*/ INVALID_DISPLAY, /*isNewTask=*/ false)) { + return false; + } + } + return true; + } + + /** + * Returns {@code true} if the given activity can be launched on this virtual display in the + * configuration defined by the rest of the arguments. If the given intent would be intercepted + * by the display owner then this means that the activity cannot be launched. */ - public abstract boolean canContainActivities(@NonNull List activities, - @WindowConfiguration.WindowingMode int windowingMode); + public abstract boolean canActivityBeLaunched(@NonNull ActivityInfo activityInfo, + @Nullable Intent intent, @WindowConfiguration.WindowingMode int windowingMode, + int launchingFromDisplayId, boolean isNewTask); /** - * Returns {@code true} if the given new task can be launched on this virtual display. + * Returns {@code true} if the given activity can be launched on this virtual display in the + * configuration defined by the rest of the arguments. */ - public abstract boolean canActivityBeLaunched(@NonNull ActivityInfo activityInfo, Intent intent, - @WindowConfiguration.WindowingMode int windowingMode, int launchingFromDisplayId, - boolean isNewTask); + protected abstract boolean canContainActivity(@NonNull ActivityInfo activityInfo, + @WindowConfiguration.WindowingMode int windowingMode, + int launchingFromDisplayId, boolean isNewTask); /** * Called when an Activity window is layouted with the new changes where contains the diff --git a/core/java/android/window/ScreenCapture.java b/core/java/android/window/ScreenCapture.java index 95e9e861bea276babebc3c6996c09aef0d5e781e..e42193d459498b2442fa3e33b5a9c8fa677947c8 100644 --- a/core/java/android/window/ScreenCapture.java +++ b/core/java/android/window/ScreenCapture.java @@ -24,7 +24,6 @@ import android.graphics.PixelFormat; import android.graphics.Rect; import android.hardware.HardwareBuffer; import android.os.Build; -import android.os.IBinder; import android.os.Parcel; import android.os.Parcelable; import android.util.Log; @@ -35,7 +34,6 @@ import libcore.util.NativeAllocationRegistry; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.function.ObjIntConsumer; - /** * Handles display and layer captures for the system. * @@ -45,8 +43,6 @@ public class ScreenCapture { private static final String TAG = "ScreenCapture"; private static final int SCREENSHOT_WAIT_TIME_S = 4 * Build.HW_TIMEOUT_MULTIPLIER; - private static native int nativeCaptureDisplay(DisplayCaptureArgs captureArgs, - long captureListener); private static native int nativeCaptureLayers(LayerCaptureArgs captureArgs, long captureListener); private static native long nativeCreateScreenCaptureListener( @@ -55,37 +51,6 @@ public class ScreenCapture { private static native long nativeReadListenerFromParcel(Parcel in); private static native long getNativeListenerFinalizer(); - /** - * @param captureArgs Arguments about how to take the screenshot - * @param captureListener A listener to receive the screenshot callback - * @hide - */ - public static int captureDisplay(@NonNull DisplayCaptureArgs captureArgs, - @NonNull ScreenCaptureListener captureListener) { - return nativeCaptureDisplay(captureArgs, captureListener.mNativeObject); - } - - /** - * Captures all the surfaces in a display and returns a {@link ScreenshotHardwareBuffer} with - * the content. - * - * @hide - */ - public static ScreenshotHardwareBuffer captureDisplay( - DisplayCaptureArgs captureArgs) { - SynchronousScreenCaptureListener syncScreenCapture = createSyncCaptureListener(); - int status = captureDisplay(captureArgs, syncScreenCapture); - if (status != 0) { - return null; - } - - try { - return syncScreenCapture.getBuffer(); - } catch (Exception e) { - return null; - } - } - /** * Captures a layer and its children and returns a {@link HardwareBuffer} with the content. * @@ -518,92 +483,6 @@ public class ScreenCapture { }; } - /** - * The arguments class used to make display capture requests. - * - * @hide - * @see #nativeCaptureDisplay(DisplayCaptureArgs, long) - */ - public static class DisplayCaptureArgs extends CaptureArgs { - private final IBinder mDisplayToken; - private final int mWidth; - private final int mHeight; - private final boolean mUseIdentityTransform; - - private DisplayCaptureArgs(Builder builder) { - super(builder); - mDisplayToken = builder.mDisplayToken; - mWidth = builder.mWidth; - mHeight = builder.mHeight; - mUseIdentityTransform = builder.mUseIdentityTransform; - } - - /** - * The Builder class used to construct {@link DisplayCaptureArgs} - */ - public static class Builder extends CaptureArgs.Builder { - private IBinder mDisplayToken; - private int mWidth; - private int mHeight; - private boolean mUseIdentityTransform; - - /** - * Construct a new {@link LayerCaptureArgs} with the set parameters. The builder - * remains valid. - */ - public DisplayCaptureArgs build() { - if (mDisplayToken == null) { - throw new IllegalStateException( - "Can't take screenshot with null display token"); - } - return new DisplayCaptureArgs(this); - } - - public Builder(IBinder displayToken) { - setDisplayToken(displayToken); - } - - /** - * The display to take the screenshot of. - */ - public Builder setDisplayToken(IBinder displayToken) { - mDisplayToken = displayToken; - return this; - } - - /** - * Set the desired size of the returned buffer. The raw screen will be scaled down to - * this size - * - * @param width The desired width of the returned buffer. Caller may pass in 0 if no - * scaling is desired. - * @param height The desired height of the returned buffer. Caller may pass in 0 if no - * scaling is desired. - */ - public Builder setSize(int width, int height) { - mWidth = width; - mHeight = height; - return this; - } - - /** - * Replace the rotation transform of the display with the identity transformation while - * taking the screenshot. This ensures the screenshot is taken in the ROTATION_0 - * orientation. Set this value to false if the screenshot should be taken in the - * current screen orientation. - */ - public Builder setUseIdentityTransform(boolean useIdentityTransform) { - mUseIdentityTransform = useIdentityTransform; - return this; - } - - @Override - Builder getThis() { - return this; - } - } - } - /** * The arguments class used to make layer capture requests. * @@ -682,7 +561,6 @@ public class ScreenCapture { /** * The object used to receive the results when invoking screen capture requests via - * {@link #captureDisplay(DisplayCaptureArgs, ScreenCaptureListener)} or * {@link #captureLayers(LayerCaptureArgs, ScreenCaptureListener)} * * This listener can only be used for a single call to capture content call. @@ -784,8 +662,7 @@ public class ScreenCapture { /** * Helper class to synchronously get the {@link ScreenshotHardwareBuffer} when calling - * {@link #captureLayers(LayerCaptureArgs, ScreenCaptureListener)} or - * {@link #captureDisplay(DisplayCaptureArgs, ScreenCaptureListener)} + * {@link #captureLayers(LayerCaptureArgs, ScreenCaptureListener)} */ public abstract static class SynchronousScreenCaptureListener extends ScreenCaptureListener { SynchronousScreenCaptureListener(ObjIntConsumer consumer) { diff --git a/core/java/android/window/SnapshotDrawerUtils.java b/core/java/android/window/SnapshotDrawerUtils.java index f40874b775361a63a846895992cd9faf10370da8..758582615a46fca31e188d3c340a2ea81766dd1c 100644 --- a/core/java/android/window/SnapshotDrawerUtils.java +++ b/core/java/android/window/SnapshotDrawerUtils.java @@ -237,13 +237,14 @@ public class SnapshotDrawerUtils { PixelFormat.RGBA_8888, GraphicBuffer.USAGE_HW_TEXTURE | GraphicBuffer.USAGE_HW_COMPOSER | GraphicBuffer.USAGE_SW_WRITE_RARELY); - if (background == null) { + final Canvas c = background != null ? background.lockCanvas() : null; + if (c == null) { Log.e(TAG, "Unable to draw snapshot: failed to allocate graphic buffer for " + mTitle); + mTransaction.clear(); + childSurfaceControl.release(); return; } - // TODO: Support this on HardwareBuffer - final Canvas c = background.lockCanvas(); drawBackgroundAndBars(c, frame); background.unlockCanvasAndPost(c); mTransaction.setBuffer(mRootSurface, diff --git a/core/java/android/window/StartingWindowInfo.java b/core/java/android/window/StartingWindowInfo.java index 451acbe84a6055fb39781c2370fbc66bb16b8ed4..a88e394c0985dc1cefc64c594b649ad16ff45a12 100644 --- a/core/java/android/window/StartingWindowInfo.java +++ b/core/java/android/window/StartingWindowInfo.java @@ -122,7 +122,7 @@ public final class StartingWindowInfo implements Parcelable { TYPE_PARAMETER_PROCESS_RUNNING, TYPE_PARAMETER_ALLOW_TASK_SNAPSHOT, TYPE_PARAMETER_ACTIVITY_CREATED, - TYPE_PARAMETER_USE_SOLID_COLOR_SPLASH_SCREEN, + TYPE_PARAMETER_ALLOW_ICON, TYPE_PARAMETER_ALLOW_HANDLE_SOLID_COLOR_SCREEN, TYPE_PARAMETER_WINDOWLESS, TYPE_PARAMETER_LEGACY_SPLASH_SCREEN @@ -143,7 +143,7 @@ public final class StartingWindowInfo implements Parcelable { /** @hide */ public static final int TYPE_PARAMETER_ACTIVITY_CREATED = 0x00000010; /** @hide */ - public static final int TYPE_PARAMETER_USE_SOLID_COLOR_SPLASH_SCREEN = 0x00000020; + public static final int TYPE_PARAMETER_ALLOW_ICON = 0x00000020; /** * The parameter which indicates if the activity has finished drawing. * @hide diff --git a/core/java/android/window/TaskConstants.java b/core/java/android/window/TaskConstants.java index 69d79b449615e47708cb96aabc03a8830f068712..44bb33db6347f28d6bd10f42cd5929e181f6c6b3 100644 --- a/core/java/android/window/TaskConstants.java +++ b/core/java/android/window/TaskConstants.java @@ -80,6 +80,12 @@ public class TaskConstants { */ public static final int TASK_CHILD_LAYER_RESIZE_VEIL = 6 * TASK_CHILD_LAYER_REGION_SIZE; + /** + * Floating menus belonging to a task (e.g. maximize menu). + * @hide + */ + public static final int TASK_CHILD_LAYER_FLOATING_MENU = 7 * TASK_CHILD_LAYER_REGION_SIZE; + /** * Z-orders of task child layers other than activities, task fragments and layers interleaved * with them, e.g. IME windows. [-10000, 10000) is reserved for these layers. diff --git a/core/java/android/window/TransitionRequestInfo.java b/core/java/android/window/TransitionRequestInfo.java index 14046945ede0eb5ed531f0e7ba492eef49937a5d..9b10a7ff5d12c6f33c60954fc115c343bd764798 100644 --- a/core/java/android/window/TransitionRequestInfo.java +++ b/core/java/android/window/TransitionRequestInfo.java @@ -16,8 +16,6 @@ package android.window; -import static android.view.WindowManager.transitTypeToString; - import android.annotation.Nullable; import android.app.ActivityManager; import android.app.WindowConfiguration; @@ -38,11 +36,17 @@ public final class TransitionRequestInfo implements Parcelable { private final @WindowManager.TransitionType int mType; /** - * If non-null, If non-null, the task containing the activity whose lifecycle change (start or + * If non-null, the task containing the activity whose lifecycle change (start or * finish) has caused this transition to occur. */ private @Nullable ActivityManager.RunningTaskInfo mTriggerTask; + /** + * If non-null, the task containing the pip activity that participates in this + * transition. + */ + private @Nullable ActivityManager.RunningTaskInfo mPipTask; + /** If non-null, a remote-transition associated with the source of this transition. */ private @Nullable RemoteTransition mRemoteTransition; @@ -51,14 +55,37 @@ public final class TransitionRequestInfo implements Parcelable { * The reliable parts should be flags, rotation start/end (if rotating), and start/end bounds * (if size is changing). */ - private @Nullable DisplayChange mDisplayChange; + private @Nullable TransitionRequestInfo.DisplayChange mDisplayChange; + + /** The transition flags known at the time of the request. These may not be complete. */ + private final int mFlags; /** constructor override */ public TransitionRequestInfo( @WindowManager.TransitionType int type, @Nullable ActivityManager.RunningTaskInfo triggerTask, @Nullable RemoteTransition remoteTransition) { - this(type, triggerTask, remoteTransition, null /* displayChange */); + this(type, triggerTask, null /* pipTask */, + remoteTransition, null /* displayChange */, 0 /* flags */); + } + + /** constructor override */ + public TransitionRequestInfo( + @WindowManager.TransitionType int type, + @Nullable ActivityManager.RunningTaskInfo triggerTask, + @Nullable RemoteTransition remoteTransition, + int flags) { + this(type, triggerTask, null /* pipTask */, + remoteTransition, null /* displayChange */, flags); + } + + public TransitionRequestInfo( + @WindowManager.TransitionType int type, + @Nullable ActivityManager.RunningTaskInfo triggerTask, + @Nullable RemoteTransition remoteTransition, + @Nullable TransitionRequestInfo.DisplayChange displayChange, + int flags) { + this(type, triggerTask, null /* pipTask */, remoteTransition, displayChange, flags); } /** Requested change to a display. */ @@ -236,7 +263,7 @@ public final class TransitionRequestInfo implements Parcelable { }; @DataClass.Generated( - time = 1648141181315L, + time = 1693425051905L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/window/TransitionRequestInfo.java", inputSignatures = "private final int mDisplayId\nprivate @android.annotation.Nullable android.graphics.Rect mStartAbsBounds\nprivate @android.annotation.Nullable android.graphics.Rect mEndAbsBounds\nprivate int mStartRotation\nprivate int mEndRotation\nprivate boolean mPhysicalDisplayChanged\nclass DisplayChange extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genSetters=true, genBuilder=false, genConstructor=false)") @@ -273,25 +300,34 @@ public final class TransitionRequestInfo implements Parcelable { * @param triggerTask * If non-null, If non-null, the task containing the activity whose lifecycle change (start or * finish) has caused this transition to occur. + * @param pipTask + * If non-null, If non-null, the task containing the activity whose lifecycle change (start or + * finish) has caused this transition to occur. * @param remoteTransition * If non-null, a remote-transition associated with the source of this transition. * @param displayChange * If non-null, this request was triggered by this display change. This will not be complete: * The reliable parts should be flags, rotation start/end (if rotating), and start/end bounds * (if size is changing). + * @param flags + * The transition flags known at the time of the request. These may not be complete. */ @DataClass.Generated.Member public TransitionRequestInfo( @WindowManager.TransitionType int type, @Nullable ActivityManager.RunningTaskInfo triggerTask, + @Nullable ActivityManager.RunningTaskInfo pipTask, @Nullable RemoteTransition remoteTransition, - @Nullable DisplayChange displayChange) { + @Nullable TransitionRequestInfo.DisplayChange displayChange, + int flags) { this.mType = type; com.android.internal.util.AnnotationValidations.validate( WindowManager.TransitionType.class, null, mType); this.mTriggerTask = triggerTask; + this.mPipTask = pipTask; this.mRemoteTransition = remoteTransition; this.mDisplayChange = displayChange; + this.mFlags = flags; // onConstructed(); // You can define this method to get a callback } @@ -305,7 +341,7 @@ public final class TransitionRequestInfo implements Parcelable { } /** - * If non-null, If non-null, the task containing the activity whose lifecycle change (start or + * If non-null, the task containing the activity whose lifecycle change (start or * finish) has caused this transition to occur. */ @DataClass.Generated.Member @@ -313,6 +349,15 @@ public final class TransitionRequestInfo implements Parcelable { return mTriggerTask; } + /** + * If non-null, the task containing the pip activity that participates in this + * transition. + */ + @DataClass.Generated.Member + public @Nullable ActivityManager.RunningTaskInfo getPipTask() { + return mPipTask; + } + /** * If non-null, a remote-transition associated with the source of this transition. */ @@ -327,12 +372,20 @@ public final class TransitionRequestInfo implements Parcelable { * (if size is changing). */ @DataClass.Generated.Member - public @Nullable DisplayChange getDisplayChange() { + public @Nullable TransitionRequestInfo.DisplayChange getDisplayChange() { return mDisplayChange; } /** - * If non-null, If non-null, the task containing the activity whose lifecycle change (start or + * The transition flags known at the time of the request. These may not be complete. + */ + @DataClass.Generated.Member + public int getFlags() { + return mFlags; + } + + /** + * If non-null, the task containing the activity whose lifecycle change (start or * finish) has caused this transition to occur. */ @DataClass.Generated.Member @@ -341,6 +394,16 @@ public final class TransitionRequestInfo implements Parcelable { return this; } + /** + * If non-null, the task containing the pip activity that participates in this + * transition. + */ + @DataClass.Generated.Member + public @android.annotation.NonNull TransitionRequestInfo setPipTask(@android.annotation.NonNull ActivityManager.RunningTaskInfo value) { + mPipTask = value; + return this; + } + /** * If non-null, a remote-transition associated with the source of this transition. */ @@ -356,7 +419,7 @@ public final class TransitionRequestInfo implements Parcelable { * (if size is changing). */ @DataClass.Generated.Member - public @android.annotation.NonNull TransitionRequestInfo setDisplayChange(@android.annotation.NonNull DisplayChange value) { + public @android.annotation.NonNull TransitionRequestInfo setDisplayChange(@android.annotation.NonNull TransitionRequestInfo.DisplayChange value) { mDisplayChange = value; return this; } @@ -368,10 +431,12 @@ public final class TransitionRequestInfo implements Parcelable { // String fieldNameToString() { ... } return "TransitionRequestInfo { " + - "type = " + transitTypeToString(mType) + ", " + + "type = " + mType + ", " + "triggerTask = " + mTriggerTask + ", " + + "pipTask = " + mPipTask + ", " + "remoteTransition = " + mRemoteTransition + ", " + - "displayChange = " + mDisplayChange + + "displayChange = " + mDisplayChange + ", " + + "flags = " + mFlags + " }"; } @@ -383,13 +448,16 @@ public final class TransitionRequestInfo implements Parcelable { byte flg = 0; if (mTriggerTask != null) flg |= 0x2; - if (mRemoteTransition != null) flg |= 0x4; - if (mDisplayChange != null) flg |= 0x8; + if (mPipTask != null) flg |= 0x4; + if (mRemoteTransition != null) flg |= 0x8; + if (mDisplayChange != null) flg |= 0x10; dest.writeByte(flg); dest.writeInt(mType); if (mTriggerTask != null) dest.writeTypedObject(mTriggerTask, flags); + if (mPipTask != null) dest.writeTypedObject(mPipTask, flags); if (mRemoteTransition != null) dest.writeTypedObject(mRemoteTransition, flags); if (mDisplayChange != null) dest.writeTypedObject(mDisplayChange, flags); + dest.writeInt(mFlags); } @Override @@ -406,15 +474,19 @@ public final class TransitionRequestInfo implements Parcelable { byte flg = in.readByte(); int type = in.readInt(); ActivityManager.RunningTaskInfo triggerTask = (flg & 0x2) == 0 ? null : (ActivityManager.RunningTaskInfo) in.readTypedObject(ActivityManager.RunningTaskInfo.CREATOR); - RemoteTransition remoteTransition = (flg & 0x4) == 0 ? null : (RemoteTransition) in.readTypedObject(RemoteTransition.CREATOR); - DisplayChange displayChange = (flg & 0x8) == 0 ? null : (DisplayChange) in.readTypedObject(DisplayChange.CREATOR); + ActivityManager.RunningTaskInfo pipTask = (flg & 0x4) == 0 ? null : (ActivityManager.RunningTaskInfo) in.readTypedObject(ActivityManager.RunningTaskInfo.CREATOR); + RemoteTransition remoteTransition = (flg & 0x8) == 0 ? null : (RemoteTransition) in.readTypedObject(RemoteTransition.CREATOR); + TransitionRequestInfo.DisplayChange displayChange = (flg & 0x10) == 0 ? null : (TransitionRequestInfo.DisplayChange) in.readTypedObject(TransitionRequestInfo.DisplayChange.CREATOR); + int flags = in.readInt(); this.mType = type; com.android.internal.util.AnnotationValidations.validate( WindowManager.TransitionType.class, null, mType); this.mTriggerTask = triggerTask; + this.mPipTask = pipTask; this.mRemoteTransition = remoteTransition; this.mDisplayChange = displayChange; + this.mFlags = flags; // onConstructed(); // You can define this method to get a callback } @@ -434,10 +506,10 @@ public final class TransitionRequestInfo implements Parcelable { }; @DataClass.Generated( - time = 1639445520938L, + time = 1693425051928L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/window/TransitionRequestInfo.java", - inputSignatures = "private final @android.view.WindowManager.TransitionType int mType\nprivate @android.annotation.Nullable android.app.ActivityManager.RunningTaskInfo mTriggerTask\nprivate @android.annotation.Nullable android.window.RemoteTransition mRemoteTransition\nprivate @android.annotation.Nullable android.window.TransitionRequestInfo.DisplayChange mDisplayChange\nclass TransitionRequestInfo extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genSetters=true, genAidl=true)") + inputSignatures = "private final @android.view.WindowManager.TransitionType int mType\nprivate @android.annotation.Nullable android.app.ActivityManager.RunningTaskInfo mTriggerTask\nprivate @android.annotation.Nullable android.app.ActivityManager.RunningTaskInfo mPipTask\nprivate @android.annotation.Nullable android.window.RemoteTransition mRemoteTransition\nprivate @android.annotation.Nullable android.window.TransitionRequestInfo.DisplayChange mDisplayChange\nprivate final int mFlags\nclass TransitionRequestInfo extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genSetters=true, genAidl=true)") @Deprecated private void __metadata() {} diff --git a/core/java/android/window/WindowInfosListenerForTest.java b/core/java/android/window/WindowInfosListenerForTest.java index be88e53ad507c964a0e800cddbbf9a1ec7ea4136..35ce72620d09d4ab26acb26d938e4137ffc8cb31 100644 --- a/core/java/android/window/WindowInfosListenerForTest.java +++ b/core/java/android/window/WindowInfosListenerForTest.java @@ -22,11 +22,13 @@ import android.annotation.RequiresPermission; import android.annotation.TestApi; import android.graphics.Matrix; import android.graphics.Rect; +import android.graphics.RectF; import android.os.IBinder; import android.os.InputConfig; import android.util.ArrayMap; import android.util.Log; import android.util.Pair; +import android.util.SparseArray; import android.view.InputWindowHandle; import java.util.ArrayList; @@ -137,13 +139,13 @@ public class WindowInfosListenerForTest { "Exception thrown while waiting for listener to be called with " + "initial state"); } - consumer.accept(buildWindowInfos(windowHandles)); + consumer.accept(buildWindowInfos(windowHandles, displayInfos)); } }; mListeners.put(consumer, listener); Pair initialState = listener.register(); - consumer.accept(buildWindowInfos(initialState.first)); + consumer.accept(buildWindowInfos(initialState.first, initialState.second)); calledWithInitialState.countDown(); } @@ -158,11 +160,27 @@ public class WindowInfosListenerForTest { listener.unregister(); } - private static List buildWindowInfos(InputWindowHandle[] windowHandles) { + private static List buildWindowInfos( + InputWindowHandle[] windowHandles, WindowInfosListener.DisplayInfo[] displayInfos) { var windowInfos = new ArrayList(windowHandles.length); + + var displayInfoById = new SparseArray(displayInfos.length); + for (var displayInfo : displayInfos) { + displayInfoById.put(displayInfo.mDisplayId, displayInfo); + } + + var tmp = new RectF(); for (var handle : windowHandles) { - var bounds = new Rect(handle.frameLeft, handle.frameTop, handle.frameRight, - handle.frameBottom); + var bounds = new Rect(handle.frame); + + // Transform bounds from physical display coordinates to logical display coordinates. + var display = displayInfoById.get(handle.displayId); + if (display != null) { + tmp.set(bounds); + display.mTransform.mapRect(tmp); + tmp.round(bounds); + } + windowInfos.add(new WindowInfo(handle.getWindowToken(), handle.name, handle.displayId, bounds, handle.inputConfig, handle.transform)); } diff --git a/core/java/android/window/WindowMetricsController.java b/core/java/android/window/WindowMetricsController.java index 2858f0a1a725b38efad964e57382c239323ab464..e32c8e58bb21a2849c28f67e59ecdd589cdfef16 100644 --- a/core/java/android/window/WindowMetricsController.java +++ b/core/java/android/window/WindowMetricsController.java @@ -16,7 +16,7 @@ package android.window; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.view.View.SYSTEM_UI_FLAG_VISIBLE; import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING; @@ -80,7 +80,7 @@ public final class WindowMetricsController { final Rect bounds; final float density; final boolean isScreenRound; - final int windowingMode; + final int activityType; synchronized (ResourcesManager.getInstance()) { final Configuration config = mContext.getResources().getConfiguration(); final WindowConfiguration winConfig = config.windowConfiguration; @@ -90,11 +90,11 @@ public final class WindowMetricsController { // as DisplayMetrics#density density = config.densityDpi * DisplayMetrics.DENSITY_DEFAULT_SCALE; isScreenRound = config.isScreenRound(); - windowingMode = winConfig.getWindowingMode(); + activityType = winConfig.getActivityType(); } final IBinder token = Context.getToken(mContext); final Supplier insetsSupplier = () -> getWindowInsetsFromServerForDisplay( - mContext.getDisplayId(), token, bounds, isScreenRound, windowingMode); + mContext.getDisplayId(), token, bounds, isScreenRound, activityType); return new WindowMetrics(new Rect(bounds), insetsSupplier, density); } @@ -105,23 +105,22 @@ public final class WindowMetricsController { * @param token the token of Activity or WindowContext * @param bounds the window bounds to calculate insets for * @param isScreenRound if the display identified by displayId is round - * @param windowingMode the windowing mode of the window to calculate insets for + * @param activityType the activity type of the window to calculate insets for * @return WindowInsets calculated for the given window bounds, on the given display */ private static WindowInsets getWindowInsetsFromServerForDisplay(int displayId, IBinder token, - Rect bounds, boolean isScreenRound, int windowingMode) { + Rect bounds, boolean isScreenRound, int activityType) { try { final InsetsState insetsState = new InsetsState(); - final boolean alwaysConsumeSystemBars = WindowManagerGlobal.getWindowManagerService() - .getWindowInsets(displayId, token, insetsState); + WindowManagerGlobal.getWindowManagerService().getWindowInsets( + displayId, token, insetsState); final float overrideInvScale = CompatibilityInfo.getOverrideInvertedScale(); if (overrideInvScale != 1f) { insetsState.scale(overrideInvScale); } return insetsState.calculateInsets(bounds, null /* ignoringVisibilityState */, - isScreenRound, alwaysConsumeSystemBars, SOFT_INPUT_ADJUST_NOTHING, - 0 /* flags */, SYSTEM_UI_FLAG_VISIBLE, - WindowManager.LayoutParams.INVALID_WINDOW_TYPE, windowingMode, + isScreenRound, SOFT_INPUT_ADJUST_NOTHING, 0 /* flags */, SYSTEM_UI_FLAG_VISIBLE, + WindowManager.LayoutParams.INVALID_WINDOW_TYPE, activityType, null /* idSideMap */); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); @@ -157,7 +156,7 @@ public final class WindowMetricsController { currentDisplayInfo.displayId, null /* token */, new Rect(0, 0, currentDisplayInfo.getNaturalWidth(), currentDisplayInfo.getNaturalHeight()), isScreenRound, - WINDOWING_MODE_FULLSCREEN); + ACTIVITY_TYPE_UNDEFINED); // Set the hardware-provided insets. windowInsets = new WindowInsets.Builder(windowInsets).setRoundedCorners( currentDisplayInfo.roundedCorners) diff --git a/core/java/android/window/WindowTokenClient.java b/core/java/android/window/WindowTokenClient.java index c1d1b27548959f38fdf3a2dfdd3e9d46bdb0b209..f4f1b3b9b27b9a53984f35bead9b8291838d2839 100644 --- a/core/java/android/window/WindowTokenClient.java +++ b/core/java/android/window/WindowTokenClient.java @@ -22,6 +22,7 @@ import static android.window.ConfigurationHelper.shouldUpdateResources; import android.annotation.AnyThread; import android.annotation.MainThread; import android.annotation.NonNull; +import android.annotation.Nullable; import android.app.ActivityThread; import android.app.ResourcesManager; import android.content.Context; @@ -90,6 +91,15 @@ public class WindowTokenClient extends Binder { && context instanceof AbstractInputMethodService; } + /** + * Gets the {@link Context} that this {@link WindowTokenClient} is attached through + * {@link #attachContext(Context)}. + */ + @Nullable + public Context getContext() { + return mContextRef != null ? mContextRef.get() : null; + } + /** * Called when {@link Configuration} updates from the server side receive. * diff --git a/core/java/android/window/WindowTokenClientController.java b/core/java/android/window/WindowTokenClientController.java index 10f6d5e7abaa9cf1a779264a21e6ba18a6d1f285..abf7bb15b3d85be9e1ead0ca3ddd52d7dad5fc7d 100644 --- a/core/java/android/window/WindowTokenClientController.java +++ b/core/java/android/window/WindowTokenClientController.java @@ -82,6 +82,16 @@ public class WindowTokenClientController { private WindowTokenClientController() {} + /** Gets the {@link WindowContext} instance for the token. */ + @Nullable + public Context getWindowContext(@NonNull IBinder clientToken) { + final WindowTokenClient windowTokenClient; + synchronized (mLock) { + windowTokenClient = mWindowTokenClientMap.get(clientToken); + } + return windowTokenClient != null ? windowTokenClient.getContext() : null; + } + /** * Attaches a {@link WindowTokenClient} to a {@link com.android.server.wm.DisplayArea}. * diff --git a/core/java/android/window/flags/windowing_frontend.aconfig b/core/java/android/window/flags/windowing_frontend.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..7a4c5bc669fc5a2d363f52f0809f5c5bf18ca9d1 --- /dev/null +++ b/core/java/android/window/flags/windowing_frontend.aconfig @@ -0,0 +1,8 @@ +package: "com.android.window.flags" + +flag { + name: "nav_bar_transparent_by_default" + namespace: "windowing_frontend" + description: "Make nav bar color transparent by default when targeting SDK 35 or greater" + bug: "232195501" +} diff --git a/core/java/android/window/flags/windowing_sdk.aconfig b/core/java/android/window/flags/windowing_sdk.aconfig new file mode 100644 index 0000000000000000000000000000000000000000..b8d251fc5cc5e8f46d56351cf2a799a404113ba4 --- /dev/null +++ b/core/java/android/window/flags/windowing_sdk.aconfig @@ -0,0 +1,17 @@ +package: "com.android.window.flags" + +# Project link: https://gantry.corp.google.com/projects/android_platform_windowing_sdk/changes + +flag { + namespace: "windowing_sdk" + name: "sync_window_config_update_flag" + description: "Whether the feature to sync different window-related config updates is enabled" + bug: "260873529" +} + +flag { + namespace: "windowing_sdk" + name: "activity_embedding_overlay_presentation_flag" + description: "Whether the overlay presentation feature is enabled" + bug: "243518738" +} diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java index 5e2eceb23789d328f060a8672cbc8fc7bff7216b..dee49350d93e385ceb0dc9aedde0e92c80cc429d 100644 --- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java @@ -177,7 +177,7 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { * 1 would return the work profile {@link ProfileDescriptor}.

  • * */ - abstract ProfileDescriptor getItem(int pageIndex); + public abstract ProfileDescriptor getItem(int pageIndex); /** * Returns the number of {@link ProfileDescriptor} objects. @@ -438,8 +438,8 @@ public abstract class AbstractMultiProfilePagerAdapter extends PagerAdapter { && isQuietModeEnabled(mWorkProfileUserHandle)); } - protected class ProfileDescriptor { - final ViewGroup rootView; + public static class ProfileDescriptor { + public final ViewGroup rootView; private final ViewGroup mEmptyStateView; ProfileDescriptor(ViewGroup rootView) { this.rootView = rootView; diff --git a/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java b/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java index b9f02365bbe74b0041e0bb1e789f2b8489ac3ba1..d2fdc65b2c36761074f0d1be8225a8d12cb968fa 100644 --- a/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java +++ b/core/java/com/android/internal/app/AppPredictionServiceResolverComparator.java @@ -61,6 +61,8 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator private final ModelBuilder mModelBuilder; private ResolverComparatorModel mComparatorModel; + private ResolverAppPredictorCallback mSortingCallback; + // If this is non-null (and this is not destroyed), it means APS is disabled and we should fall // back to using the ResolverRankerService. // TODO: responsibility for this fallback behavior can live outside of the AppPrediction client. @@ -94,6 +96,9 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator // TODO: may not be necessary to build a new model, since we're destroying anyways. mComparatorModel = mModelBuilder.buildFallbackModel(mResolverRankerService); } + if (mSortingCallback != null) { + mSortingCallback.destroy(); + } } @Override @@ -140,22 +145,27 @@ class AppPredictionServiceResolverComparator extends AbstractResolverComparator .setClassName(target.name.getClassName()) .build()); } + + if (mSortingCallback != null) { + mSortingCallback.destroy(); + } + mSortingCallback = new ResolverAppPredictorCallback(sortedAppTargets -> { + if (sortedAppTargets.isEmpty()) { + Log.i(TAG, "AppPredictionService disabled. Using resolver."); + setupFallbackModel(targets); + } else { + Log.i(TAG, "AppPredictionService response received"); + // Skip sending to Handler which takes extra time to dispatch messages. + // TODO: the Handler guards some concurrency conditions, so this could + // probably result in a race (we're not currently on the Handler thread?). + // We'll leave this as-is since we intend to remove the Handler design + // shortly, but this is still an unsound shortcut. + handleResult(sortedAppTargets); + } + }); + mAppPredictor.sortTargets(appTargets, Executors.newSingleThreadExecutor(), - sortedAppTargets -> { - if (sortedAppTargets.isEmpty()) { - Log.i(TAG, "AppPredictionService disabled. Using resolver."); - setupFallbackModel(targets); - } else { - Log.i(TAG, "AppPredictionService response received"); - // Skip sending to Handler which takes extra time to dispatch messages. - // TODO: the Handler guards some concurrency conditions, so this could - // probably result in a race (we're not currently on the Handler thread?). - // We'll leave this as-is since we intend to remove the Handler design - // shortly, but this is still an unsound shortcut. - handleResult(sortedAppTargets); - } - } - ); + mSortingCallback.asConsumer()); } private void setupFallbackModel(List targets) { diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java index 2b39bb4eb7a50ac974c1a69c939af45ffcb11192..7e2c0179b327ba2c8783df6e8d7f205394154acf 100644 --- a/core/java/com/android/internal/app/ChooserActivity.java +++ b/core/java/com/android/internal/app/ChooserActivity.java @@ -24,9 +24,7 @@ import static android.app.admin.DevicePolicyResources.Strings.Core.RESOLVER_CROS import static android.content.ContentProvider.getUserIdFromUri; import static android.stats.devicepolicy.DevicePolicyEnums.RESOLVER_EMPTY_STATE_NO_SHARING_TO_PERSONAL; import static android.stats.devicepolicy.DevicePolicyEnums.RESOLVER_EMPTY_STATE_NO_SHARING_TO_WORK; - import static com.android.internal.util.LatencyTracker.ACTION_LOAD_SHARE_SHEET; - import static java.lang.annotation.RetentionPolicy.SOURCE; import android.animation.Animator; @@ -777,9 +775,9 @@ public class ChooserActivity extends ResolverActivity implements return appPredictor; } - private AppPredictor.Callback createAppPredictorCallback( + private ResolverAppPredictorCallback createAppPredictorCallback( ChooserListAdapter chooserListAdapter) { - return resultList -> { + return new ResolverAppPredictorCallback(resultList -> { if (isFinishing() || isDestroyed()) { return; } @@ -811,7 +809,7 @@ public class ChooserActivity extends ResolverActivity implements } sendShareShortcutInfoList(shareShortcutInfos, chooserListAdapter, resultList, chooserListAdapter.getUserHandle()); - }; + }); } static SharedPreferences getPinnedSharedPrefs(Context context) { @@ -2559,10 +2557,13 @@ public class ChooserActivity extends ResolverActivity implements boolean filterLastUsed, UserHandle userHandle) { ChooserListAdapter chooserListAdapter = createChooserListAdapter(context, payloadIntents, initialIntents, rList, filterLastUsed, userHandle); - AppPredictor.Callback appPredictorCallback = createAppPredictorCallback(chooserListAdapter); + ResolverAppPredictorCallback appPredictorCallbackWrapper = + createAppPredictorCallback(chooserListAdapter); + AppPredictor.Callback appPredictorCallback = appPredictorCallbackWrapper.asCallback(); AppPredictor appPredictor = setupAppPredictorForUser(userHandle, appPredictorCallback); chooserListAdapter.setAppPredictor(appPredictor); - chooserListAdapter.setAppPredictorCallback(appPredictorCallback); + chooserListAdapter.setAppPredictorCallback( + appPredictorCallback, appPredictorCallbackWrapper); return new ChooserGridAdapter(chooserListAdapter); } @@ -3023,28 +3024,31 @@ public class ChooserActivity extends ResolverActivity implements return shouldShowTabs() && (mMultiProfilePagerAdapter.getListAdapterForUserHandle( UserHandle.of(UserHandle.myUserId())).getCount() > 0 - || shouldShowContentPreviewWhenEmpty()) + || shouldShowStickyContentPreviewWhenEmpty()) && shouldShowContentPreview(); } /** - * This method could be used to override the default behavior when we hide the preview area - * when the current tab doesn't have any items. + * This method could be used to override the default behavior when we hide the sticky preview + * area when the current tab doesn't have any items. * - * @return true if we want to show the content preview area even if the tab for the current - * user is empty + * @return {@code true} if we want to show the sticky content preview area even if the tab for + * the current user is empty */ - protected boolean shouldShowContentPreviewWhenEmpty() { + protected boolean shouldShowStickyContentPreviewWhenEmpty() { return false; } - /** - * @return true if we want to show the content preview area - */ - protected boolean shouldShowContentPreview() { + @Override + public boolean shouldShowContentPreview() { return isSendAction(getTargetIntent()); } + @Override + public boolean shouldShowServiceTargets() { + return shouldShowContentPreview() && !ActivityManager.isLowRamDeviceStatic(); + } + private void updateStickyContentPreview() { if (shouldShowStickyContentPreviewNoOrientationCheck()) { // The sticky content preview is only shown when we show the work and personal tabs. @@ -3406,11 +3410,7 @@ public class ChooserActivity extends ResolverActivity implements // There can be at most one row in the listview, that is internally // a ViewGroup with 2 rows public int getServiceTargetRowCount() { - if (shouldShowContentPreview() - && !ActivityManager.isLowRamDeviceStatic()) { - return 1; - } - return 0; + return shouldShowServiceTargets() ? 1 : 0; } public int getAzLabelRowCount() { diff --git a/core/java/com/android/internal/app/ChooserListAdapter.java b/core/java/com/android/internal/app/ChooserListAdapter.java index 1eecb413adcbf15c0d6916669c45509cf3533821..b3e828d157370124642854b809abc89bbd194519 100644 --- a/core/java/com/android/internal/app/ChooserListAdapter.java +++ b/core/java/com/android/internal/app/ChooserListAdapter.java @@ -19,7 +19,6 @@ package com.android.internal.app; import static com.android.internal.app.ChooserActivity.TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE; import static com.android.internal.app.ChooserActivity.TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER; -import android.app.ActivityManager; import android.app.prediction.AppPredictor; import android.content.ComponentName; import android.content.Context; @@ -103,6 +102,7 @@ public class ChooserListAdapter extends ResolverListAdapter { // Sorted list of DisplayResolveInfos for the alphabetical app section. private List mSortedList = new ArrayList<>(); private AppPredictor mAppPredictor; + private ResolverAppPredictorCallback mAppPredictorCallbackWrapper; private AppPredictor.Callback mAppPredictorCallback; // Represents the UserSpace in which the Initial Intents should be resolved. @@ -425,11 +425,9 @@ public class ChooserListAdapter extends ResolverListAdapter { } public int getServiceTargetCount() { - if (mChooserListCommunicator.isSendAction(mChooserListCommunicator.getTargetIntent()) - && !ActivityManager.isLowRamDeviceStatic()) { + if (mChooserListCommunicator.shouldShowServiceTargets()) { return Math.min(mServiceTargets.size(), mChooserListCommunicator.getMaxRankedTargets()); } - return 0; } @@ -747,8 +745,11 @@ public class ChooserListAdapter extends ResolverListAdapter { mAppPredictor = appPredictor; } - public void setAppPredictorCallback(AppPredictor.Callback appPredictorCallback) { + public void setAppPredictorCallback( + AppPredictor.Callback appPredictorCallback, + ResolverAppPredictorCallback appPredictorCallbackWrapper) { mAppPredictorCallback = appPredictorCallback; + mAppPredictorCallbackWrapper = appPredictorCallbackWrapper; } public void destroyAppPredictor() { @@ -757,6 +758,10 @@ public class ChooserListAdapter extends ResolverListAdapter { getAppPredictor().destroy(); setAppPredictor(null); } + + if (mAppPredictorCallbackWrapper != null) { + mAppPredictorCallbackWrapper.destroy(); + } } /** @@ -771,6 +776,10 @@ public class ChooserListAdapter extends ResolverListAdapter { void sendListViewUpdateMessage(UserHandle userHandle); boolean isSendAction(Intent targetIntent); + + boolean shouldShowContentPreview(); + + boolean shouldShowServiceTargets(); } /** diff --git a/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java index 7beb059fb6484c908aab34c15a693601593edc4f..8197e265ca29385dc5b5a466ada9c7b42bf48359 100644 --- a/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java @@ -94,7 +94,7 @@ public class ChooserMultiProfilePagerAdapter extends AbstractMultiProfilePagerAd } @Override - ChooserProfileDescriptor getItem(int pageIndex) { + public ChooserProfileDescriptor getItem(int pageIndex) { return mItems[pageIndex]; } diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl index 2dcac824406a84efa4950ba036822ff8365d7b9b..584dd806361ce93a18b7edb4a0cdb0aba3cac851 100644 --- a/core/java/com/android/internal/app/IAppOpsService.aidl +++ b/core/java/com/android/internal/app/IAppOpsService.aidl @@ -20,7 +20,7 @@ import android.app.AppOpsManager; import android.app.AsyncNotedAppOp; import android.app.SyncNotedAppOp; import android.app.RuntimeAppOpAccessMessage; -import android.content.AttributionSource; +import android.content.AttributionSourceState; import android.content.pm.ParceledListSlice; import android.os.Bundle; import android.os.PackageTagsList; @@ -57,16 +57,16 @@ interface IAppOpsService { // End of methods also called by native code. // Any new method exposed to native must be added after the last one, do not reorder - SyncNotedAppOp noteProxyOperation(int code, in AttributionSource attributionSource, + SyncNotedAppOp noteProxyOperation(int code, in AttributionSourceState attributionSourceState, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage, boolean skipProxyOperation); SyncNotedAppOp startProxyOperation(IBinder clientId, int code, - in AttributionSource attributionSource, boolean startIfModeDefault, + in AttributionSourceState attributionSourceState, boolean startIfModeDefault, boolean shouldCollectAsyncNotedOp, String message, boolean shouldCollectMessage, boolean skipProxyOperation, int proxyAttributionFlags, int proxiedAttributionFlags, int attributionChainId); - void finishProxyOperation(IBinder clientId, int code, in AttributionSource attributionSource, - boolean skipProxyOperation); + void finishProxyOperation(IBinder clientId, int code, + in AttributionSourceState attributionSourceState, boolean skipProxyOperation); // Remaining methods are only used in Java. int checkPackage(int uid, String packageName); diff --git a/core/java/com/android/internal/app/IHotwordRecognitionStatusCallback.aidl b/core/java/com/android/internal/app/IHotwordRecognitionStatusCallback.aidl index 380118846dc7c3bd52a37bc38cf06749fb89d09c..ba87caa0697c6ba144b9066eed37c2c9734ad435 100644 --- a/core/java/com/android/internal/app/IHotwordRecognitionStatusCallback.aidl +++ b/core/java/com/android/internal/app/IHotwordRecognitionStatusCallback.aidl @@ -22,6 +22,7 @@ import android.service.voice.HotwordDetectionServiceFailure; import android.service.voice.HotwordRejectedResult; import android.service.voice.SoundTriggerFailure; import android.service.voice.VisualQueryDetectionServiceFailure; +import com.android.internal.infra.AndroidFuture; /** * @hide @@ -113,4 +114,9 @@ oneway interface IHotwordRecognitionStatusCallback { /** Called when the hotword detection process is restarted */ void onProcessRestarted(); + + /** + * Called when a file open request is sent. + */ + void onOpenFile(in String filename, in AndroidFuture future); } diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java index ac15f11ee98970afada4d1e5f0d995b123a6a9a9..7534d2960b7c7599c048ae485d399a48945594cc 100644 --- a/core/java/com/android/internal/app/ResolverActivity.java +++ b/core/java/com/android/internal/app/ResolverActivity.java @@ -2623,13 +2623,13 @@ public class ResolverActivity extends Activity implements * An a11y delegate that expands resolver drawer when gesture navigation reaches a partially * invisible target in the list. */ - private static class AppListAccessibilityDelegate extends View.AccessibilityDelegate { + public static class AppListAccessibilityDelegate extends View.AccessibilityDelegate { private final ResolverDrawerLayout mDrawer; @Nullable private final View mBottomBar; private final Rect mRect = new Rect(); - private AppListAccessibilityDelegate(ResolverDrawerLayout drawer) { + public AppListAccessibilityDelegate(ResolverDrawerLayout drawer) { mDrawer = drawer; mBottomBar = mDrawer.findViewById(R.id.button_bar_container); } diff --git a/core/java/com/android/internal/app/ResolverAppPredictorCallback.java b/core/java/com/android/internal/app/ResolverAppPredictorCallback.java new file mode 100644 index 0000000000000000000000000000000000000000..c35e536275f06177fc70eee7e8961e50b2284d0c --- /dev/null +++ b/core/java/com/android/internal/app/ResolverAppPredictorCallback.java @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2023 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.internal.app; + +import android.app.prediction.AppPredictor; +import android.app.prediction.AppTarget; + +import java.util.List; +import java.util.Objects; +import java.util.function.Consumer; + +/** + * Callback wrapper that works around potential memory leaks in app predictor. + * + * Nulls the callback itself when destroyed, so at worst you'll leak just this object. + */ +public class ResolverAppPredictorCallback { + private volatile Consumer> mCallback; + + public ResolverAppPredictorCallback(Consumer> callback) { + mCallback = callback; + } + + private void notifyCallback(List list) { + Consumer> callback = mCallback; + if (callback != null) { + callback.accept(Objects.requireNonNullElseGet(list, List::of)); + } + } + + public Consumer> asConsumer() { + return this::notifyCallback; + } + + public AppPredictor.Callback asCallback() { + return this::notifyCallback; + } + + public void destroy() { + mCallback = null; + } +} diff --git a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java index 767791263673982aaa30a14c074b91405ba20423..031f9d3168bff1e00fe607710e8756a70ad45c11 100644 --- a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java +++ b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java @@ -79,7 +79,7 @@ public class ResolverMultiProfilePagerAdapter extends AbstractMultiProfilePagerA } @Override - ResolverProfileDescriptor getItem(int pageIndex) { + public ResolverProfileDescriptor getItem(int pageIndex) { return mItems[pageIndex]; } diff --git a/core/java/com/android/internal/app/procstats/ProcessState.java b/core/java/com/android/internal/app/procstats/ProcessState.java index fff778c616eeca10eca4ce9fd08b4ae2af93f23b..755113b22088b2a308d69a17a529328d536789a7 100644 --- a/core/java/com/android/internal/app/procstats/ProcessState.java +++ b/core/java/com/android/internal/app/procstats/ProcessState.java @@ -33,6 +33,7 @@ import static com.android.internal.app.procstats.ProcessStats.STATE_BOUND_TOP; import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED; import static com.android.internal.app.procstats.ProcessStats.STATE_COUNT; import static com.android.internal.app.procstats.ProcessStats.STATE_FGS; +import static com.android.internal.app.procstats.ProcessStats.STATE_FROZEN; import static com.android.internal.app.procstats.ProcessStats.STATE_HEAVY_WEIGHT; import static com.android.internal.app.procstats.ProcessStats.STATE_HOME; import static com.android.internal.app.procstats.ProcessStats.STATE_IMPORTANT_BACKGROUND; @@ -142,6 +143,7 @@ public final class ProcessState { private ProcessState mCommonProcess; private int mCurCombinedState = STATE_NOTHING; private long mStartTime; + private int mStateBeforeFrozen = STATE_NOTHING; private int mLastPssState = STATE_NOTHING; private long mLastPssTime; @@ -422,6 +424,27 @@ public final class ProcessState { && mTotalRunningPss[PSS_SAMPLE_COUNT] == 0); } + /** + * Used to notify that this process was frozen. + */ + public void onProcessFrozen(long now, + ArrayMap pkgList) { + mStateBeforeFrozen = mCurCombinedState % STATE_COUNT; + int currentMemFactor = mCurCombinedState / STATE_COUNT; + int combinedState = STATE_FROZEN + (currentMemFactor * STATE_COUNT); + setCombinedState(combinedState, now, pkgList); + } + + /** + * Used to notify that this process was unfrozen. + */ + public void onProcessUnfrozen(long now, + ArrayMap pkgList) { + int currentMemFactor = mCurCombinedState / STATE_COUNT; + int combinedState = mStateBeforeFrozen + (currentMemFactor * STATE_COUNT); + setCombinedState(combinedState, now, pkgList); + } + /** * Update the current state of the given list of processes. * @@ -434,13 +457,20 @@ public final class ProcessState { ArrayMap pkgList) { if (state < 0) { state = mNumStartedServices > 0 - ? (STATE_SERVICE_RESTARTING+(memFactor*STATE_COUNT)) : STATE_NOTHING; + ? (STATE_SERVICE_RESTARTING + (memFactor * STATE_COUNT)) : STATE_NOTHING; } else { - state = PROCESS_STATE_TO_STATE[state] + (memFactor*STATE_COUNT); + state = PROCESS_STATE_TO_STATE[state] + (memFactor * STATE_COUNT); } + setCombinedState(state, now, pkgList); + } + /** + * Sets combined state on the corresponding ProcessState objects. + */ + void setCombinedState(int state, long now, + ArrayMap pkgList) { // First update the common process. - mCommonProcess.setCombinedState(state, now); + mCommonProcess.setCombinedStateIdv(state, now); // If the common process is not multi-package, there is nothing else to do. if (!mCommonProcess.mMultiPackage) { @@ -449,12 +479,15 @@ public final class ProcessState { if (pkgList != null) { for (int ip=pkgList.size()-1; ip>=0; ip--) { - pullFixedProc(pkgList, ip).setCombinedState(state, now); + pullFixedProc(pkgList, ip).setCombinedStateIdv(state, now); } } } - public void setCombinedState(int state, long now) { + /** + * Sets the combined state for this individual ProcessState object. + */ + void setCombinedStateIdv(int state, long now) { ensureNotDead(); if (!mDead && (mCurCombinedState != state)) { //Slog.i(TAG, "Setting state in " + mName + "/" + mPackage + ": " + state); @@ -545,7 +578,7 @@ public final class ProcessState { } mNumStartedServices++; if (mNumStartedServices == 1 && mCurCombinedState == STATE_NOTHING) { - setCombinedState(STATE_SERVICE_RESTARTING + (memFactor*STATE_COUNT), now); + setCombinedStateIdv(STATE_SERVICE_RESTARTING + (memFactor * STATE_COUNT), now); } } @@ -561,7 +594,7 @@ public final class ProcessState { } mNumStartedServices--; if (mNumStartedServices == 0 && (mCurCombinedState %STATE_COUNT) == STATE_SERVICE_RESTARTING) { - setCombinedState(STATE_NOTHING, now); + setCombinedStateIdv(STATE_NOTHING, now); } else if (mNumStartedServices < 0) { Slog.wtfStack(TAG, "Proc started services underrun: pkg=" + mPackage + " uid=" + mUid + " name=" + mName); @@ -1588,7 +1621,9 @@ public final class ProcessState { case STATE_CACHED: cachedMs += duration; break; - // TODO (b/261910877) Add support for tracking frozenMs. + case STATE_FROZEN: + frozenMs += duration; + break; } } statsEventOutput.write( diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java index 0a69ea8ce63376b9bd29f42719396b59ab51fb87..2909b6a488b86b0acef53b9be71d239811963808 100644 --- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java +++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java @@ -118,9 +118,6 @@ public final class SystemUiDeviceConfigFlags { */ public static final String NAS_DEFAULT_SERVICE = "nas_default_service"; - /** (boolean) Whether notify() calls to NMS should acquire and hold WakeLocks. */ - public static final String NOTIFY_WAKELOCK = "nms_notify_wakelock"; - // Flags related to media notifications /** @@ -130,11 +127,6 @@ public final class SystemUiDeviceConfigFlags { // Flag related to Privacy Indicators - /** - * Whether to show the complete ongoing app ops chip. - */ - public static final String PROPERTY_PERMISSIONS_HUB_ENABLED = "permissions_hub_2_enabled"; - /** * Whether to show app ops chip for just microphone + camera. */ diff --git a/core/java/com/android/internal/config/sysui/SystemUiSystemPropertiesFlags.java b/core/java/com/android/internal/config/sysui/SystemUiSystemPropertiesFlags.java index 9233050c97ad851af22ec00a92fc4101dbb6a0f0..8de448be440b60900004a9fcd582efcf6cc5111a 100644 --- a/core/java/com/android/internal/config/sysui/SystemUiSystemPropertiesFlags.java +++ b/core/java/com/android/internal/config/sysui/SystemUiSystemPropertiesFlags.java @@ -74,10 +74,6 @@ public class SystemUiSystemPropertiesFlags { public static final Flag LOG_DND_STATE_EVENTS = releasedFlag("persist.sysui.notification.log_dnd_state_events"); - /** Gating the holding of WakeLocks until NLSes are told about a new notification. */ - public static final Flag WAKE_LOCK_FOR_POSTING_NOTIFICATION = - releasedFlag("persist.sysui.notification.wake_lock_for_posting_notification"); - /** Gating storing NotificationRankingUpdate ranking map in shared memory. */ public static final Flag RANKING_UPDATE_ASHMEM = devFlag( "persist.sysui.notification.ranking_update_ashmem"); diff --git a/core/java/com/android/internal/content/InstallLocationUtils.java b/core/java/com/android/internal/content/InstallLocationUtils.java index a173ce16feea8da61b0de6f69292d8a357d4c11c..f3dd0f8f6993346ef9c7bed43529bbcc5d68dd0f 100644 --- a/core/java/com/android/internal/content/InstallLocationUtils.java +++ b/core/java/com/android/internal/content/InstallLocationUtils.java @@ -454,8 +454,10 @@ public class InstallLocationUtils { // Include raw dex metadata files sizeBytes += DexMetadataHelper.getPackageDexMetadataSize(pkg); - // Include all relevant native code - sizeBytes += NativeLibraryHelper.sumNativeBinariesWithOverride(handle, abiOverride); + if (pkg.isExtractNativeLibs()) { + // Include all relevant native code + sizeBytes += NativeLibraryHelper.sumNativeBinariesWithOverride(handle, abiOverride); + } return sizeBytes; } diff --git a/core/java/com/android/internal/inputmethod/InputMethodDebug.java b/core/java/com/android/internal/inputmethod/InputMethodDebug.java index bb8bdf57ac628812d4198fb64812b12788351fa3..9b7fa2f4f9e91b9d55e28face6c833b0473ce57c 100644 --- a/core/java/com/android/internal/inputmethod/InputMethodDebug.java +++ b/core/java/com/android/internal/inputmethod/InputMethodDebug.java @@ -261,6 +261,10 @@ public final class InputMethodDebug { return "REMOVE_IME_SCREENSHOT_FROM_IMMS"; case SoftInputShowHideReason.HIDE_WHEN_INPUT_TARGET_INVISIBLE: return "HIDE_WHEN_INPUT_TARGET_INVISIBLE"; + case SoftInputShowHideReason.HIDE_CLOSE_CURRENT_SESSION: + return "HIDE_SOFT_INPUT_CLOSE_CURRENT_SESSION"; + case SoftInputShowHideReason.HIDE_SOFT_INPUT_FROM_VIEW: + return "HIDE_SOFT_INPUT_FROM_VIEW"; default: return "Unknown=" + reason; } diff --git a/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java b/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java index 6e9cd44b78187ca63c19cb4c90fdcc5116179fcb..861b8a75f730ce0ce1a28823b09a0d71fe2aecdb 100644 --- a/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java +++ b/core/java/com/android/internal/inputmethod/SoftInputShowHideReason.java @@ -20,6 +20,7 @@ import static java.lang.annotation.RetentionPolicy.SOURCE; import android.annotation.IntDef; import android.os.IBinder; +import android.view.View; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.inputmethod.EditorInfo; @@ -69,6 +70,8 @@ import java.lang.annotation.Retention; SoftInputShowHideReason.SHOW_IME_SCREENSHOT_FROM_IMMS, SoftInputShowHideReason.REMOVE_IME_SCREENSHOT_FROM_IMMS, SoftInputShowHideReason.HIDE_WHEN_INPUT_TARGET_INVISIBLE, + SoftInputShowHideReason.HIDE_CLOSE_CURRENT_SESSION, + SoftInputShowHideReason.HIDE_SOFT_INPUT_FROM_VIEW, }) public @interface SoftInputShowHideReason { /** Show soft input by {@link android.view.inputmethod.InputMethodManager#showSoftInput}. */ @@ -278,4 +281,14 @@ public @interface SoftInputShowHideReason { * focusable overlay window. */ int HIDE_WHEN_INPUT_TARGET_INVISIBLE = ImeProtoEnums.REASON_HIDE_WHEN_INPUT_TARGET_INVISIBLE; + + /** + * Hide soft input when {@link InputMethodManager#closeCurrentInput()} gets called. + */ + int HIDE_CLOSE_CURRENT_SESSION = ImeProtoEnums.REASON_HIDE_CLOSE_CURRENT_SESSION; + + /** + * Hide soft input when {@link InputMethodManager#hideSoftInputFromView(View, int)} gets called. + */ + int HIDE_SOFT_INPUT_FROM_VIEW = ImeProtoEnums.REASON_HIDE_SOFT_INPUT_FROM_VIEW; } diff --git a/core/java/com/android/internal/jank/InteractionJankMonitor.java b/core/java/com/android/internal/jank/InteractionJankMonitor.java index 03d74502e19125c47fcd8c54d750c483e719f4f2..1bfb51cc4b82148169643cfcb6d16c0ca8cc30a2 100644 --- a/core/java/com/android/internal/jank/InteractionJankMonitor.java +++ b/core/java/com/android/internal/jank/InteractionJankMonitor.java @@ -70,7 +70,6 @@ import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_IN import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_APP_LAUNCH_FROM_SETTINGS_BUTTON; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_CLEAR_ALL; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_DIALOG_OPEN; -import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_EXPAND_FROM_STATUS_BAR; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_HEADS_UP_APPEAR; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_HEADS_UP_DISAPPEAR; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_NOTIFICATION_ADD; @@ -82,6 +81,7 @@ import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_IN import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_SCROLL_FLING; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SPLASHSCREEN_AVD; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SPLASHSCREEN_EXIT_ANIM; +import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SPLIT_SCREEN_DOUBLE_TAP_DIVIDER; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SPLIT_SCREEN_ENTER; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SPLIT_SCREEN_EXIT; import static com.android.internal.util.FrameworkStatsLog.UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SPLIT_SCREEN_RESIZE; @@ -268,11 +268,12 @@ public class InteractionJankMonitor { * eg: Exit the app using back gesture. */ public static final int CUJ_LAUNCHER_APP_CLOSE_TO_HOME_FALLBACK = 78; - public static final int CUJ_SHADE_EXPAND_FROM_STATUS_BAR = 79; public static final int CUJ_IME_INSETS_SHOW_ANIMATION = 80; public static final int CUJ_IME_INSETS_HIDE_ANIMATION = 81; - private static final int LAST_CUJ = CUJ_IME_INSETS_HIDE_ANIMATION; + public static final int CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER = 82; + + private static final int LAST_CUJ = CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER; private static final int NO_STATSD_LOGGING = -1; // Used to convert CujType to InteractionType enum value for statsd logging. @@ -361,9 +362,10 @@ public class InteractionJankMonitor { CUJ_TO_STATSD_INTERACTION_TYPE[76] = NO_STATSD_LOGGING; CUJ_TO_STATSD_INTERACTION_TYPE[77] = NO_STATSD_LOGGING; CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_LAUNCHER_APP_CLOSE_TO_HOME_FALLBACK] = UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__LAUNCHER_APP_CLOSE_TO_HOME_FALLBACK; - CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_SHADE_EXPAND_FROM_STATUS_BAR] = UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SHADE_EXPAND_FROM_STATUS_BAR; + CUJ_TO_STATSD_INTERACTION_TYPE[79] = NO_STATSD_LOGGING; // This is deprecated. CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_IME_INSETS_SHOW_ANIMATION] = UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__IME_INSETS_SHOW_ANIMATION; CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_IME_INSETS_HIDE_ANIMATION] = UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__IME_INSETS_HIDE_ANIMATION; + CUJ_TO_STATSD_INTERACTION_TYPE[CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER] = UIINTERACTION_FRAME_INFO_REPORTED__INTERACTION_TYPE__SPLIT_SCREEN_DOUBLE_TAP_DIVIDER; } private static class InstanceHolder { @@ -463,9 +465,9 @@ public class InteractionJankMonitor { CUJ_LOCKSCREEN_CLOCK_MOVE_ANIMATION, CUJ_LAUNCHER_OPEN_SEARCH_RESULT, CUJ_LAUNCHER_APP_CLOSE_TO_HOME_FALLBACK, - CUJ_SHADE_EXPAND_FROM_STATUS_BAR, CUJ_IME_INSETS_SHOW_ANIMATION, CUJ_IME_INSETS_HIDE_ANIMATION, + CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER, }) @Retention(RetentionPolicy.SOURCE) public @interface CujType { @@ -1077,12 +1079,12 @@ public class InteractionJankMonitor { return "LAUNCHER_OPEN_SEARCH_RESULT"; case CUJ_LAUNCHER_APP_CLOSE_TO_HOME_FALLBACK: return "LAUNCHER_APP_CLOSE_TO_HOME_FALLBACK"; - case CUJ_SHADE_EXPAND_FROM_STATUS_BAR: - return "SHADE_EXPAND_FROM_STATUS_BAR"; case CUJ_IME_INSETS_SHOW_ANIMATION: return "IME_INSETS_SHOW_ANIMATION"; case CUJ_IME_INSETS_HIDE_ANIMATION: return "IME_INSETS_HIDE_ANIMATION"; + case CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER: + return "SPLIT_SCREEN_DOUBLE_TAP_DIVIDER"; } return "UNKNOWN"; } diff --git a/core/java/com/android/internal/os/BatteryStatsHistory.java b/core/java/com/android/internal/os/BatteryStatsHistory.java index 79152b4b618f02bb51cf0ff7fe3bc299975e78b3..d3103f1ed24b9b628b27bf493221b21d8ba98e6a 100644 --- a/core/java/com/android/internal/os/BatteryStatsHistory.java +++ b/core/java/com/android/internal/os/BatteryStatsHistory.java @@ -18,11 +18,10 @@ package com.android.internal.os; import android.annotation.NonNull; import android.annotation.Nullable; +import android.os.BatteryConsumer; import android.os.BatteryManager; import android.os.BatteryStats; import android.os.BatteryStats.BitDescription; -import android.os.BatteryStats.CpuUsageDetails; -import android.os.BatteryStats.EnergyConsumerDetails; import android.os.BatteryStats.HistoryItem; import android.os.BatteryStats.HistoryStepDetails; import android.os.BatteryStats.HistoryTag; @@ -42,7 +41,6 @@ import android.util.TimeUtils; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.util.ParseUtils; import java.io.File; import java.io.FileOutputStream; @@ -83,7 +81,7 @@ public class BatteryStatsHistory { private static final int VERSION = 209; private static final String HISTORY_DIR = "battery-history"; - private static final String FILE_SUFFIX = ".bin"; + private static final String FILE_SUFFIX = ".bh"; private static final int MIN_FREE_SPACE = 100 * 1024 * 1024; // Part of initial delta int that specifies the time delta. @@ -124,10 +122,9 @@ public class BatteryStatsHistory { // therefore the tag value is written in the parcel static final int TAG_FIRST_OCCURRENCE_FLAG = 0x8000; - static final int EXTENSION_MEASURED_ENERGY_HEADER_FLAG = 0x00000001; - static final int EXTENSION_MEASURED_ENERGY_FLAG = 0x00000002; - static final int EXTENSION_CPU_USAGE_HEADER_FLAG = 0x00000004; - static final int EXTENSION_CPU_USAGE_FLAG = 0x00000008; + static final int EXTENSION_POWER_STATS_DESCRIPTOR_FLAG = 0x00000001; + static final int EXTENSION_POWER_STATS_FLAG = 0x00000002; + static final int EXTENSION_PROCESS_STATE_CHANGE_FLAG = 0x00000004; // For state1, trace everything except the wakelock bit (which can race with // suspend) and the running bit (which isn't meaningful in traces). @@ -149,10 +146,11 @@ public class BatteryStatsHistory { * The active history file that the history buffer is backed up into. */ private AtomicFile mActiveFile; + /** - * A list of history files with incremental indexes. + * A list of history files with increasing timestamps. */ - private final List mFileNumbers = new ArrayList<>(); + private final List mHistoryFiles = new ArrayList<>(); /** * A list of small history parcels, used when BatteryStatsImpl object is created from @@ -200,14 +198,42 @@ public class BatteryStatsHistory { private long mTrackRunningHistoryElapsedRealtimeMs = 0; private long mTrackRunningHistoryUptimeMs = 0; private long mHistoryBaseTimeMs; - private boolean mMeasuredEnergyHeaderWritten = false; - private boolean mCpuUsageHeaderWritten = false; - private final VarintParceler mVarintParceler = new VarintParceler(); + private final ArraySet mWrittenPowerStatsDescriptors = new ArraySet<>(); private byte mLastHistoryStepLevel = 0; private boolean mMutable = true; private final BatteryStatsHistory mWritableHistory; private boolean mCleanupEnabled = true; + private static class BatteryHistoryFile implements Comparable { + public final long monotonicTimeMs; + public final AtomicFile atomicFile; + + private BatteryHistoryFile(File directory, long monotonicTimeMs) { + this.monotonicTimeMs = monotonicTimeMs; + atomicFile = new AtomicFile(new File(directory, monotonicTimeMs + FILE_SUFFIX)); + } + + @Override + public int compareTo(BatteryHistoryFile o) { + return Long.compare(monotonicTimeMs, o.monotonicTimeMs); + } + + @Override + public boolean equals(Object o) { + return monotonicTimeMs == ((BatteryHistoryFile) o).monotonicTimeMs; + } + + @Override + public int hashCode() { + return Long.hashCode(monotonicTimeMs); + } + + @Override + public String toString() { + return atomicFile.getBaseFile().toString(); + } + } + /** * A delegate responsible for computing additional details for a step in battery history. */ @@ -317,32 +343,47 @@ public class BatteryStatsHistory { Slog.wtf(TAG, "HistoryDir does not exist:" + mHistoryDir.getPath()); } - final Set dedup = new ArraySet<>(); - // scan directory, fill mFileNumbers and mActiveFile. + final List toRemove = new ArrayList<>(); + final Set dedup = new ArraySet<>(); mHistoryDir.listFiles((dir, name) -> { final int b = name.lastIndexOf(FILE_SUFFIX); if (b <= 0) { + toRemove.add(new File(dir, name)); return false; } - final int c = ParseUtils.parseInt(name.substring(0, b), -1); - if (c != -1) { - dedup.add(c); - return true; - } else { + try { + long monotonicTime = Long.parseLong(name.substring(0, b)); + dedup.add(new BatteryHistoryFile(mHistoryDir, monotonicTime)); + } catch (NumberFormatException e) { + toRemove.add(new File(dir, name)); return false; } + return true; }); if (!dedup.isEmpty()) { - mFileNumbers.addAll(dedup); - Collections.sort(mFileNumbers); - setActiveFile(mFileNumbers.get(mFileNumbers.size() - 1)); - } else { - // No file found, default to have file 0. - mFileNumbers.add(0); - setActiveFile(0); + mHistoryFiles.addAll(dedup); + Collections.sort(mHistoryFiles); + setActiveFile(mHistoryFiles.get(mHistoryFiles.size() - 1)); + } else if (mMutable) { + // No file found, default to have the initial file. + BatteryHistoryFile name = makeBatteryHistoryFile(); + mHistoryFiles.add(name); + setActiveFile(name); + } + if (!toRemove.isEmpty()) { + // Clear out legacy history files, which did not follow the X-Y.bin naming format. + BackgroundThread.getHandler().post(() -> { + for (File file : toRemove) { + file.delete(); + } + }); } } + private BatteryHistoryFile makeBatteryHistoryFile() { + return new BatteryHistoryFile(mHistoryDir, mClock.elapsedRealtime() + mHistoryBaseTimeMs); + } + public BatteryStatsHistory(int maxHistoryFiles, int maxHistoryBufferSize, HistoryStepDetailsCalculator stepDetailsCalculator, Clock clock) { mMaxHistoryFiles = maxHistoryFiles; @@ -384,8 +425,7 @@ public class BatteryStatsHistory { mLastHistoryElapsedRealtimeMs = 0; mTrackRunningHistoryElapsedRealtimeMs = 0; mTrackRunningHistoryUptimeMs = 0; - mMeasuredEnergyHeaderWritten = false; - mCpuUsageHeaderWritten = false; + mWrittenPowerStatsDescriptors.clear(); mHistoryBuffer.setDataSize(0); mHistoryBuffer.setDataPosition(0); @@ -439,27 +479,14 @@ public class BatteryStatsHistory { /** * Set the active file that mHistoryBuffer is backed up into. - * - * @param fileNumber the history file that mHistoryBuffer is backed up into. */ - private void setActiveFile(int fileNumber) { - mActiveFile = getFile(fileNumber); + private void setActiveFile(BatteryHistoryFile file) { + mActiveFile = file.atomicFile; if (DEBUG) { Slog.d(TAG, "activeHistoryFile:" + mActiveFile.getBaseFile().getPath()); } } - /** - * Create history AtomicFile from file number. - * - * @param num file number. - * @return AtomicFile object. - */ - private AtomicFile getFile(int num) { - return new AtomicFile( - new File(mHistoryDir, num + FILE_SUFFIX)); - } - /** * When {@link #mHistoryBuffer} reaches {@link BatteryStatsImpl.Constants#MAX_HISTORY_BUFFER}, * create next history file. @@ -470,15 +497,19 @@ public class BatteryStatsHistory { return; } - if (mFileNumbers.isEmpty()) { + if (mHistoryFiles.isEmpty()) { Slog.wtf(TAG, "mFileNumbers should never be empty"); return; } - // The last number in mFileNumbers is the highest number. The next file number is highest - // number plus one. - final int next = mFileNumbers.get(mFileNumbers.size() - 1) + 1; - mFileNumbers.add(next); + final long start = SystemClock.uptimeMillis(); + writeHistory(); + if (DEBUG) { + Slog.d(TAG, "writeHistory took ms:" + (SystemClock.uptimeMillis() - start)); + } + + final BatteryHistoryFile next = makeBatteryHistoryFile(); + mHistoryFiles.add(next); setActiveFile(next); try { mActiveFile.getBaseFile().createNewFile(); @@ -486,6 +517,21 @@ public class BatteryStatsHistory { Slog.e(TAG, "Could not create history file: " + mActiveFile.getBaseFile()); } + mHistoryBuffer.setDataSize(0); + mHistoryBuffer.setDataPosition(0); + mHistoryBuffer.setDataCapacity(mMaxHistoryBufferSize / 2); + mHistoryBufferLastPos = -1; + mHistoryLastWritten.clear(); + mHistoryLastLastWritten.clear(); + + // Mark every entry in the pool with a flag indicating that the tag + // has not yet been encountered while writing the current history buffer. + for (Map.Entry entry : mHistoryTagPool.entrySet()) { + entry.setValue(entry.getValue() | BatteryStatsHistory.TAG_FIRST_OCCURRENCE_FLAG); + } + + mWrittenPowerStatsDescriptors.clear(); + synchronized (this) { cleanupLocked(); } @@ -507,17 +553,17 @@ public class BatteryStatsHistory { // if free disk space is less than 100MB, delete oldest history file. if (!hasFreeDiskSpace()) { - int oldest = mFileNumbers.remove(0); - getFile(oldest).delete(); + BatteryHistoryFile oldest = mHistoryFiles.remove(0); + oldest.atomicFile.delete(); } // if there are more history files than allowed, delete oldest history files. // mMaxHistoryFiles comes from Constants.MAX_HISTORY_FILES and can be updated by GService // config at run time. - while (mFileNumbers.size() > mMaxHistoryFiles) { - int oldest = mFileNumbers.get(0); - getFile(oldest).delete(); - mFileNumbers.remove(0); + while (mHistoryFiles.size() > mMaxHistoryFiles) { + BatteryHistoryFile oldest = mHistoryFiles.get(0); + oldest.atomicFile.delete(); + mHistoryFiles.remove(0); } } @@ -537,12 +583,14 @@ public class BatteryStatsHistory { */ public void reset() { if (DEBUG) Slog.i(TAG, "********** CLEARING HISTORY!"); - for (Integer i : mFileNumbers) { - getFile(i).delete(); + for (BatteryHistoryFile file : mHistoryFiles) { + file.atomicFile.delete(); } - mFileNumbers.clear(); - mFileNumbers.add(0); - setActiveFile(0); + mHistoryFiles.clear(); + + BatteryHistoryFile name = makeBatteryHistoryFile(); + mHistoryFiles.add(name); + setActiveFile(name); initHistoryBuffer(); } @@ -550,9 +598,13 @@ public class BatteryStatsHistory { /** * Start iterating history files and history buffer. * - * @return always return true. + * @param startTimeMs monotonic time (the HistoryItem.time field) to start iterating from, + * inclusive + * @param endTimeMs monotonic time to stop iterating, exclusive. + * Pass 0 to indicate current time. */ - public BatteryStatsHistoryIterator iterate() { + @NonNull + public BatteryStatsHistoryIterator iterate(long startTimeMs, long endTimeMs) { mCurrentFileIndex = 0; mCurrentParcel = null; mCurrentParcelEnd = 0; @@ -563,7 +615,7 @@ public class BatteryStatsHistory { mWritableHistory.setCleanupEnabledLocked(false); } } - return new BatteryStatsHistoryIterator(this); + return new BatteryStatsHistoryIterator(this, startTimeMs, endTimeMs); } /** @@ -590,7 +642,7 @@ public class BatteryStatsHistory { * buffer */ @Nullable - public Parcel getNextParcel() { + public Parcel getNextParcel(long startTimeMs, long endTimeMs) { // First iterate through all records in current parcel. if (mCurrentParcel != null) { if (mCurrentParcel.dataPosition() < mCurrentParcelEnd) { @@ -606,13 +658,29 @@ public class BatteryStatsHistory { } } - // Try next available history file. + int firstFileIndex = 0; // skip the last file because its data is in history buffer. - while (mCurrentFileIndex < mFileNumbers.size() - 1) { + int lastFileIndex = mHistoryFiles.size() - 1; + for (int i = mHistoryFiles.size() - 1; i >= 0; i--) { + BatteryHistoryFile file = mHistoryFiles.get(i); + if (file.monotonicTimeMs >= endTimeMs) { + lastFileIndex = i; + } + if (file.monotonicTimeMs <= startTimeMs) { + firstFileIndex = i; + break; + } + } + + if (mCurrentFileIndex < firstFileIndex) { + mCurrentFileIndex = firstFileIndex; + } + + while (mCurrentFileIndex < lastFileIndex) { mCurrentParcel = null; mCurrentParcelEnd = 0; final Parcel p = Parcel.obtain(); - AtomicFile file = getFile(mFileNumbers.get(mCurrentFileIndex++)); + AtomicFile file = mHistoryFiles.get(mCurrentFileIndex++).atomicFile; if (readFileToParcel(p, file)) { int bufSize = p.readInt(); int curPos = p.dataPosition(); @@ -769,9 +837,9 @@ public class BatteryStatsHistory { private void writeToParcel(Parcel out, boolean useBlobs) { final long start = SystemClock.uptimeMillis(); - out.writeInt(mFileNumbers.size() - 1); - for (int i = 0; i < mFileNumbers.size() - 1; i++) { - AtomicFile file = getFile(mFileNumbers.get(i)); + out.writeInt(mHistoryFiles.size() - 1); + for (int i = 0; i < mHistoryFiles.size() - 1; i++) { + AtomicFile file = mHistoryFiles.get(i).atomicFile; byte[] raw = new byte[0]; try { raw = file.readFully(); @@ -872,8 +940,12 @@ public class BatteryStatsHistory { } @VisibleForTesting - public List getFilesNumbers() { - return mFileNumbers; + public List getFilesNames() { + List names = new ArrayList<>(); + for (BatteryHistoryFile historyFile : mHistoryFiles) { + names.add(historyFile.atomicFile.getBaseFile().getName()); + } + return names; } @VisibleForTesting @@ -886,8 +958,8 @@ public class BatteryStatsHistory { */ public int getHistoryUsedSize() { int ret = 0; - for (int i = 0; i < mFileNumbers.size() - 1; i++) { - ret += getFile(mFileNumbers.get(i)).getBaseFile().length(); + for (int i = 0; i < mHistoryFiles.size() - 1; i++) { + ret += mHistoryFiles.get(i).atomicFile.getBaseFile().length(); } ret += mHistoryBuffer.dataSize(); if (mHistoryParcels != null) { @@ -937,7 +1009,7 @@ public class BatteryStatsHistory { * Prepares to continue recording after restoring previous history from persistent storage. */ public void continueRecordingHistory() { - if (mHistoryBuffer.dataPosition() <= 0 && mFileNumbers.size() <= 1) { + if (mHistoryBuffer.dataPosition() <= 0 && mHistoryFiles.size() <= 1) { return; } @@ -1050,11 +1122,23 @@ public class BatteryStatsHistory { } /** - * Records measured energy data. + * Records a PowerStats snapshot. */ - public void recordEnergyConsumerDetails(long elapsedRealtimeMs, long uptimeMs, - EnergyConsumerDetails energyConsumerDetails) { - mHistoryCur.energyConsumerDetails = energyConsumerDetails; + public void recordPowerStats(long elapsedRealtimeMs, long uptimeMs, + PowerStats powerStats) { + mHistoryCur.powerStats = powerStats; + mHistoryCur.states2 |= HistoryItem.STATE2_EXTENSIONS_FLAG; + writeHistoryItem(elapsedRealtimeMs, uptimeMs); + } + + /** + * Records the change of a UID's proc state. + */ + public void recordProcessStateChange(long elapsedRealtimeMs, long uptimeMs, + int uid, @BatteryConsumer.ProcessState int processState) { + mHistoryCur.processStateChange = mHistoryCur.localProcessStateChange; + mHistoryCur.processStateChange.uid = uid; + mHistoryCur.processStateChange.processState = processState; mHistoryCur.states2 |= HistoryItem.STATE2_EXTENSIONS_FLAG; writeHistoryItem(elapsedRealtimeMs, uptimeMs); } @@ -1278,17 +1362,6 @@ public class BatteryStatsHistory { mTracer.traceInstantEvent(track, name); } - /** - * Records CPU usage by a specific UID. The recorded data is the delta from - * the previous record for the same UID. - */ - public void recordCpuUsage(long elapsedRealtimeMs, long uptimeMs, - CpuUsageDetails cpuUsageDetails) { - mHistoryCur.cpuUsageDetails = cpuUsageDetails; - mHistoryCur.states2 |= HistoryItem.STATE2_EXTENSIONS_FLAG; - writeHistoryItem(elapsedRealtimeMs, uptimeMs); - } - /** * Writes changes to a HistoryItem state bitmap to Atrace. */ @@ -1355,7 +1428,9 @@ public class BatteryStatsHistory { mTraceLastState2 = cur.states2; } - if (!mHaveBatteryLevel || !mRecordingHistory) { + if ((!mHaveBatteryLevel || !mRecordingHistory) + && cur.powerStats == null + && cur.processStateChange == null) { return; } @@ -1391,8 +1466,8 @@ public class BatteryStatsHistory { && mHistoryLastWritten.batteryPlugType == cur.batteryPlugType && mHistoryLastWritten.batteryTemperature == cur.batteryTemperature && mHistoryLastWritten.batteryVoltage == cur.batteryVoltage - && mHistoryLastWritten.energyConsumerDetails == null - && mHistoryLastWritten.cpuUsageDetails == null) { + && mHistoryLastWritten.powerStats == null + && mHistoryLastWritten.processStateChange == null) { // We can merge this new change in with the last one. Merging is // allowed as long as only the states have changed, and within those states // as long as no bit has changed both between now and the last entry, as @@ -1434,34 +1509,15 @@ public class BatteryStatsHistory { mMaxHistoryBufferSize = 1024; } - //open a new history file. - final long start = SystemClock.uptimeMillis(); - writeHistory(); - if (DEBUG) { - Slog.d(TAG, "addHistoryBufferLocked writeHistory took ms:" - + (SystemClock.uptimeMillis() - start)); - } - startNextFile(); - mHistoryBuffer.setDataSize(0); - mHistoryBuffer.setDataPosition(0); - mHistoryBuffer.setDataCapacity(mMaxHistoryBufferSize / 2); - mHistoryBufferLastPos = -1; - mHistoryLastWritten.clear(); - mHistoryLastLastWritten.clear(); - - // Mark every entry in the pool with a flag indicating that the tag - // has not yet been encountered while writing the current history buffer. - for (Map.Entry entry : mHistoryTagPool.entrySet()) { - entry.setValue(entry.getValue() | BatteryStatsHistory.TAG_FIRST_OCCURRENCE_FLAG); - } - mMeasuredEnergyHeaderWritten = false; - mCpuUsageHeaderWritten = false; - // Make a copy of mHistoryCur. HistoryItem copy = new HistoryItem(); copy.setTo(cur); + + startNextFile(); + // startRecordingHistory will reset mHistoryCur. startRecordingHistory(elapsedRealtimeMs, uptimeMs, false); + // Add the copy into history buffer. writeHistoryItem(elapsedRealtimeMs, uptimeMs, copy, HistoryItem.CMD_UPDATE); return; @@ -1477,8 +1533,8 @@ public class BatteryStatsHistory { copy.eventCode = HistoryItem.EVENT_NONE; copy.eventTag = null; copy.tagsFirstOccurrence = false; - copy.energyConsumerDetails = null; - copy.cpuUsageDetails = null; + copy.powerStats = null; + copy.processStateChange = null; writeHistoryItem(elapsedRealtimeMs, uptimeMs, copy, HistoryItem.CMD_RESET); } writeHistoryItem(elapsedRealtimeMs, uptimeMs, cur, HistoryItem.CMD_UPDATE); @@ -1506,8 +1562,8 @@ public class BatteryStatsHistory { cur.eventCode = HistoryItem.EVENT_NONE; cur.eventTag = null; cur.tagsFirstOccurrence = false; - cur.energyConsumerDetails = null; - cur.cpuUsageDetails = null; + cur.powerStats = null; + cur.processStateChange = null; if (DEBUG) { Slog.i(TAG, "Writing history buffer: was " + mHistoryBufferLastPos + " now " + mHistoryBuffer.dataPosition() @@ -1638,17 +1694,14 @@ public class BatteryStatsHistory { if (stateIntChanged) { firstToken |= BatteryStatsHistory.DELTA_STATE_FLAG; } - if (cur.energyConsumerDetails != null) { - extensionFlags |= BatteryStatsHistory.EXTENSION_MEASURED_ENERGY_FLAG; - if (!mMeasuredEnergyHeaderWritten) { - extensionFlags |= BatteryStatsHistory.EXTENSION_MEASURED_ENERGY_HEADER_FLAG; + if (cur.powerStats != null) { + extensionFlags |= BatteryStatsHistory.EXTENSION_POWER_STATS_FLAG; + if (!mWrittenPowerStatsDescriptors.contains(cur.powerStats.descriptor)) { + extensionFlags |= BatteryStatsHistory.EXTENSION_POWER_STATS_DESCRIPTOR_FLAG; } } - if (cur.cpuUsageDetails != null) { - extensionFlags |= EXTENSION_CPU_USAGE_FLAG; - if (!mCpuUsageHeaderWritten) { - extensionFlags |= BatteryStatsHistory.EXTENSION_CPU_USAGE_HEADER_FLAG; - } + if (cur.processStateChange != null) { + extensionFlags |= BatteryStatsHistory.EXTENSION_PROCESS_STATE_CHANGE_FLAG; } if (extensionFlags != 0) { cur.states2 |= HistoryItem.STATE2_EXTENSIONS_FLAG; @@ -1773,37 +1826,16 @@ public class BatteryStatsHistory { dest.writeDouble(cur.wifiRailChargeMah); if (extensionFlags != 0) { dest.writeInt(extensionFlags); - if (cur.energyConsumerDetails != null) { - if (DEBUG) { - Slog.i(TAG, "WRITE DELTA: measuredEnergyDetails=" + cur.energyConsumerDetails); - } - if (!mMeasuredEnergyHeaderWritten) { - EnergyConsumerDetails.EnergyConsumer[] consumers = - cur.energyConsumerDetails.consumers; - dest.writeInt(consumers.length); - for (EnergyConsumerDetails.EnergyConsumer consumer : consumers) { - dest.writeInt(consumer.type); - dest.writeInt(consumer.ordinal); - dest.writeString(consumer.name); - } - mMeasuredEnergyHeaderWritten = true; + if (cur.powerStats != null) { + if ((extensionFlags & BatteryStatsHistory.EXTENSION_POWER_STATS_DESCRIPTOR_FLAG) + != 0) { + cur.powerStats.descriptor.writeSummaryToParcel(dest); + mWrittenPowerStatsDescriptors.add(cur.powerStats.descriptor); } - mVarintParceler.writeLongArray(dest, cur.energyConsumerDetails.chargeUC); + cur.powerStats.writeToParcel(dest); } - - if (cur.cpuUsageDetails != null) { - if (DEBUG) { - Slog.i(TAG, "WRITE DELTA: cpuUsageDetails=" + cur.cpuUsageDetails); - } - if (!mCpuUsageHeaderWritten) { - dest.writeInt(cur.cpuUsageDetails.cpuBracketDescriptions.length); - for (String desc: cur.cpuUsageDetails.cpuBracketDescriptions) { - dest.writeString(desc); - } - mCpuUsageHeaderWritten = true; - } - dest.writeInt(cur.cpuUsageDetails.uid); - mVarintParceler.writeLongArray(dest, cur.cpuUsageDetails.cpuUsageMs); + if (cur.processStateChange != null) { + cur.processStateChange.writeToParcel(dest); } } } @@ -2054,13 +2086,15 @@ public class BatteryStatsHistory { * fewer bytes. It is a bit more expensive than just writing the long into the parcel, * but at scale saves a lot of storage and allows recording of longer battery history. */ - @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) public static final class VarintParceler { /** * Writes an array of longs into Parcel using the varint format, see * https://developers.google.com/protocol-buffers/docs/encoding#varints */ public void writeLongArray(Parcel parcel, long[] values) { + if (values.length == 0) { + return; + } int out = 0; int shift = 0; for (long value : values) { @@ -2092,6 +2126,9 @@ public class BatteryStatsHistory { * Reads a long written with {@link #writeLongArray} */ public void readLongArray(Parcel parcel, long[] values) { + if (values.length == 0) { + return; + } int in = parcel.readInt(); int available = 4; for (int i = 0; i < values.length; i++) { diff --git a/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java b/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java index 4c2b2854df88bfcf0dd8b40013a578b4a524673b..a5d2d0fc1a016136980dfc1ab07bc211b4bc41d7 100644 --- a/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java +++ b/core/java/com/android/internal/os/BatteryStatsHistoryIterator.java @@ -16,6 +16,7 @@ package com.android.internal.os; +import android.annotation.CurrentTimeMillisLong; import android.annotation.NonNull; import android.os.BatteryManager; import android.os.BatteryStats; @@ -33,32 +34,32 @@ public class BatteryStatsHistoryIterator implements Iterator mHistoryTags = new SparseArray<>(); - private BatteryStats.EnergyConsumerDetails mEnergyConsumerDetails; - private BatteryStats.CpuUsageDetails mCpuUsageDetails; - private final BatteryStatsHistory.VarintParceler mVarintParceler = - new BatteryStatsHistory.VarintParceler(); + private final PowerStats.DescriptorRegistry mDescriptorRegistry = + new PowerStats.DescriptorRegistry(); + private BatteryStats.HistoryItem mHistoryItem = new BatteryStats.HistoryItem(); + private boolean mNextItemReady; - private final BatteryStats.HistoryItem mHistoryItem = new BatteryStats.HistoryItem(); - - private static final int MAX_ENERGY_CONSUMER_COUNT = 100; - private static final int MAX_CPU_BRACKET_COUNT = 100; - - public BatteryStatsHistoryIterator(@NonNull BatteryStatsHistory history) { + public BatteryStatsHistoryIterator(@NonNull BatteryStatsHistory history, + @CurrentTimeMillisLong long startTimeMs, + @CurrentTimeMillisLong long endTimeMs) { mBatteryStatsHistory = history; + mStartTimeMs = startTimeMs; + mEndTimeMs = (endTimeMs != 0) ? endTimeMs : Long.MAX_VALUE; mHistoryItem.clear(); } @Override public boolean hasNext() { - Parcel p = mBatteryStatsHistory.getNextParcel(); - if (p == null) { - close(); - return false; + if (!mNextItemReady) { + advance(); } - return true; + + return mHistoryItem != null; } /** @@ -67,25 +68,45 @@ public class BatteryStatsHistoryIterator implements Iterator= mEndTimeMs) { + break; + } + if (mHistoryItem.currentTime >= mStartTimeMs) { + mNextItemReady = true; + return; + } } - return mHistoryItem; + + mHistoryItem = null; + mNextItemReady = true; + close(); } private void readHistoryDelta(Parcel src, BatteryStats.HistoryItem cur) { @@ -229,74 +250,24 @@ public class BatteryStatsHistoryIterator implements Iterator MAX_ENERGY_CONSUMER_COUNT) { - // Check to avoid a heap explosion in case the parcel is corrupted - throw new IllegalStateException( - "EnergyConsumer count too high: " + consumerCount - + ". Max = " + MAX_ENERGY_CONSUMER_COUNT); - } - mEnergyConsumerDetails.consumers = - new BatteryStats.EnergyConsumerDetails.EnergyConsumer[consumerCount]; - mEnergyConsumerDetails.chargeUC = new long[consumerCount]; - for (int i = 0; i < consumerCount; i++) { - BatteryStats.EnergyConsumerDetails.EnergyConsumer consumer = - new BatteryStats.EnergyConsumerDetails.EnergyConsumer(); - consumer.type = src.readInt(); - consumer.ordinal = src.readInt(); - consumer.name = src.readString(); - mEnergyConsumerDetails.consumers[i] = consumer; - } + if ((extensionFlags & BatteryStatsHistory.EXTENSION_POWER_STATS_DESCRIPTOR_FLAG) != 0) { + PowerStats.Descriptor descriptor = PowerStats.Descriptor.readSummaryFromParcel(src); + mDescriptorRegistry.register(descriptor); } - - if ((extensionFlags & BatteryStatsHistory.EXTENSION_MEASURED_ENERGY_FLAG) != 0) { - if (mEnergyConsumerDetails == null) { - throw new IllegalStateException("MeasuredEnergyDetails without a header"); - } - - mVarintParceler.readLongArray(src, mEnergyConsumerDetails.chargeUC); - cur.energyConsumerDetails = mEnergyConsumerDetails; + if ((extensionFlags & BatteryStatsHistory.EXTENSION_POWER_STATS_FLAG) != 0) { + cur.powerStats = PowerStats.readFromParcel(src, mDescriptorRegistry); } else { - cur.energyConsumerDetails = null; - } - - if ((extensionFlags & BatteryStatsHistory.EXTENSION_CPU_USAGE_HEADER_FLAG) != 0) { - mCpuUsageDetails = new BatteryStats.CpuUsageDetails(); - final int cpuBracketCount = src.readInt(); - if (cpuBracketCount > MAX_CPU_BRACKET_COUNT) { - // Check to avoid a heap explosion in case the parcel is corrupted - throw new IllegalStateException("Too many CPU brackets: " + cpuBracketCount - + ". Max = " + MAX_CPU_BRACKET_COUNT); - } - mCpuUsageDetails.cpuBracketDescriptions = new String[cpuBracketCount]; - for (int i = 0; i < cpuBracketCount; i++) { - mCpuUsageDetails.cpuBracketDescriptions[i] = src.readString(); - } - mCpuUsageDetails.cpuUsageMs = - new long[mCpuUsageDetails.cpuBracketDescriptions.length]; - } else if (mCpuUsageDetails != null) { - mCpuUsageDetails.cpuBracketDescriptions = null; + cur.powerStats = null; } - - if ((extensionFlags & BatteryStatsHistory.EXTENSION_CPU_USAGE_FLAG) != 0) { - if (mCpuUsageDetails == null) { - throw new IllegalStateException("CpuUsageDetails without a header"); - } - - mCpuUsageDetails.uid = src.readInt(); - mVarintParceler.readLongArray(src, mCpuUsageDetails.cpuUsageMs); - cur.cpuUsageDetails = mCpuUsageDetails; + if ((extensionFlags & BatteryStatsHistory.EXTENSION_PROCESS_STATE_CHANGE_FLAG) != 0) { + cur.processStateChange = cur.localProcessStateChange; + cur.processStateChange.readFromParcel(src); } else { - cur.cpuUsageDetails = null; + cur.processStateChange = null; } } else { - cur.energyConsumerDetails = null; - cur.cpuUsageDetails = null; + cur.powerStats = null; + cur.processStateChange = null; } } diff --git a/core/java/com/android/internal/os/LongArrayMultiStateCounter.java b/core/java/com/android/internal/os/LongArrayMultiStateCounter.java index 664aeee6e299f5f2a7568cbfa850d1d6bd1afd7c..5ea6ba86da71efb57c5a3009ccb9585d90884c73 100644 --- a/core/java/com/android/internal/os/LongArrayMultiStateCounter.java +++ b/core/java/com/android/internal/os/LongArrayMultiStateCounter.java @@ -190,6 +190,34 @@ public final class LongArrayMultiStateCounter implements Parcelable { native_setState(mNativeObject, state, timestampMs); } + /** + * Sets the new values. The delta between the previously set values and these values + * is distributed among the state according to the time the object spent in those states + * since the previous call to updateValues. + */ + public void updateValues(long[] values, long timestampMs) { + LongArrayContainer container = sTmpArrayContainer.getAndSet(null); + if (container == null || container.mLength != values.length) { + container = new LongArrayContainer(values.length); + } + container.setValues(values); + updateValues(container, timestampMs); + sTmpArrayContainer.set(container); + } + + /** + * Adds the supplied values to the current accumulated values in the counter. + */ + public void incrementValues(long[] values, long timestampMs) { + LongArrayContainer container = sTmpArrayContainer.getAndSet(null); + if (container == null || container.mLength != values.length) { + container = new LongArrayContainer(values.length); + } + container.setValues(values); + native_incrementValues(mNativeObject, container.mNativeObject, timestampMs); + sTmpArrayContainer.set(container); + } + /** * Sets the new values. The delta between the previously set values and these values * is distributed among the state according to the time the object spent in those states @@ -292,6 +320,10 @@ public final class LongArrayMultiStateCounter implements Parcelable { private static native void native_updateValues(long nativeObject, long longArrayContainerNativeObject, long timestampMs); + @CriticalNative + private static native void native_incrementValues(long nativeObject, + long longArrayContainerNativeObject, long timestampMs); + @CriticalNative private static native void native_addCounts(long nativeObject, long longArrayContainerNativeObject); diff --git a/core/java/com/android/internal/os/MultiStateStats.java b/core/java/com/android/internal/os/MultiStateStats.java new file mode 100644 index 0000000000000000000000000000000000000000..f971849987dd48490ae5d74da87bb65de58ffa64 --- /dev/null +++ b/core/java/com/android/internal/os/MultiStateStats.java @@ -0,0 +1,303 @@ +/* + * Copyright (C) 2023 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.internal.os; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.Preconditions; + +import java.io.PrintWriter; +import java.util.Arrays; + +/** + * Maintains multidimensional multi-state stats. States could be something like on-battery (0,1), + * screen-on (0,1), process state etc. Dimensions refer to the metrics themselves, e.g. + * CPU residency, Network packet counts etc. All metrics must be represented as long + * values; + */ +public class MultiStateStats { + /** + * A set of states, e.g. on-battery, screen-on, procstate. The state values are integers + * from 0 to States.mLabels.length + */ + public static class States { + final boolean mTracked; + final String[] mLabels; + + public States(boolean tracked, String... labels) { + this.mTracked = tracked; + this.mLabels = labels; + } + + public boolean isTracked() { + return mTracked; + } + } + + /** + * Factory for MultiStateStats containers. All generated containers retain their connection + * to the Factory and the corresponding configuration. + */ + public static class Factory { + private static final int INVALID_SERIAL_STATE = -1; + final int mDimensionCount; + final States[] mStates; + /* + * The LongArrayMultiStateCounter object that is used for accumulation of per-state + * stats thinks of "state" as a simple 0-based index. This Factory object's job is to + * map a combination of individual states (e.g. on-battery, process state etc) to + * such a simple index. + * + * This task is performed in two steps: + * 1) We define "composite state" as an integer that combines all constituent States + * into one integer as bit fields. This gives us a convenient mechanism for updating a + * single constituent State at a time. We maintain an array of bit field masks + * corresponding to each constituent State. + * + * 2) We map composite states to "serial states", i.e. simple integer indexes, taking + * into account which constituent states are configured as tracked. If a state is not + * tracked, there is no need to maintain separate counts for its values, thus + * all values of that constituent state can be mapped to the same serial state. + */ + private final int[] mStateBitFieldMasks; + private final short[] mStateBitFieldShifts; + final int[] mCompositeToSerialState; + final int mSerialStateCount; + + public Factory(int dimensionCount, States... states) { + mDimensionCount = dimensionCount; + mStates = states; + + int serialStateCount = 1; + for (States state : mStates) { + if (state.mTracked) { + serialStateCount *= state.mLabels.length; + } + } + mSerialStateCount = serialStateCount; + + mStateBitFieldMasks = new int[mStates.length]; + mStateBitFieldShifts = new short[mStates.length]; + + int shift = 0; + for (int i = 0; i < mStates.length; i++) { + mStateBitFieldShifts[i] = (short) shift; + if (mStates[i].mLabels.length < 2) { + throw new IllegalArgumentException("Invalid state: " + Arrays.toString( + mStates[i].mLabels) + ". Should have at least two values."); + } + int max = mStates[i].mLabels.length - 1; + int bitcount = Integer.SIZE - Integer.numberOfLeadingZeros(max); + mStateBitFieldMasks[i] = ((1 << bitcount) - 1) << shift; + shift = shift + bitcount; + } + + if (shift >= Integer.SIZE - 1) { + throw new IllegalArgumentException("Too many states: " + shift + + " bits are required to represent the composite state, but only " + + (Integer.SIZE - 1) + " are available"); + } + + // Create a mask that filters out all non tracked states + int trackedMask = 0xFFFFFFFF; + for (int state = 0; state < mStates.length; state++) { + if (!mStates[state].mTracked) { + trackedMask &= ~mStateBitFieldMasks[state]; + } + } + + mCompositeToSerialState = new int[1 << shift]; + Arrays.fill(mCompositeToSerialState, INVALID_SERIAL_STATE); + + int nextSerialState = 0; + for (int composite = 0; composite < mCompositeToSerialState.length; composite++) { + if (!isValidCompositeState(composite)) continue; + + // Values of an untracked State map to different composite states, but must map to + // the same serial state. Achieve that by computing a "base composite", which + // is equivalent to the current composite, but has 0 for all untracked States. + // See if the base composite already has a serial state assigned. If so, just use + // the same one for the current composite. + int baseComposite = composite & trackedMask; + if (mCompositeToSerialState[baseComposite] != INVALID_SERIAL_STATE) { + mCompositeToSerialState[composite] = mCompositeToSerialState[baseComposite]; + } else { + mCompositeToSerialState[composite] = nextSerialState++; + } + } + } + + private boolean isValidCompositeState(int composite) { + for (int stateIndex = 0; stateIndex < mStates.length; stateIndex++) { + int state = extractStateFromComposite(composite, stateIndex); + if (state >= mStates[stateIndex].mLabels.length) { + return false; + } + } + return true; + } + + private int extractStateFromComposite(int compositeState, int stateIndex) { + return (compositeState & mStateBitFieldMasks[stateIndex]) + >>> mStateBitFieldShifts[stateIndex]; + } + + private int setStateInComposite(int baseCompositeState, int stateIndex, int value) { + return (baseCompositeState & ~mStateBitFieldMasks[stateIndex]) + | (value << mStateBitFieldShifts[stateIndex]); + } + + /** + * Allocates a new stats container using this Factory's configuration. + */ + public MultiStateStats create() { + return new MultiStateStats(this, mDimensionCount); + } + + /** + * Returns the total number of composite states handled by this container. For example, + * if there are two states: on-battery (0,1) and screen-on (0,1), both tracked, then the + * serial state count will be 2 * 2 = 4 + */ + @VisibleForTesting + public int getSerialStateCount() { + return mSerialStateCount; + } + + /** + * Returns the integer index used by this container to represent the supplied composite + * state. + */ + @VisibleForTesting + public int getSerialState(int[] states) { + Preconditions.checkArgument(states.length == mStates.length); + int compositeState = 0; + for (int i = 0; i < states.length; i++) { + compositeState = setStateInComposite(compositeState, i, states[i]); + } + int serialState = mCompositeToSerialState[compositeState]; + if (serialState == INVALID_SERIAL_STATE) { + throw new IllegalArgumentException("State values out of bounds: " + + Arrays.toString(states)); + } + return serialState; + } + } + + private final Factory mFactory; + private final LongArrayMultiStateCounter mCounter; + private int mCompositeState; + private boolean mTracking; + + public MultiStateStats(Factory factory, int dimensionCount) { + this.mFactory = factory; + mCounter = new LongArrayMultiStateCounter(factory.mSerialStateCount, dimensionCount); + } + + /** + * Updates the current composite state by changing one of the States supplied to the Factory + * constructor. + * + * @param stateIndex Corresponds to the index of the States supplied to the Factory constructor + * @param state The new value of the state (e.g. 0 or 1 for "on-battery") + * @param timestampMs The time when the state change occurred + */ + public void setState(int stateIndex, int state, long timestampMs) { + if (!mTracking) { + mCounter.updateValues(new long[mCounter.getArrayLength()], timestampMs); + mTracking = true; + } + mCompositeState = mFactory.setStateInComposite(mCompositeState, stateIndex, state); + mCounter.setState(mFactory.mCompositeToSerialState[mCompositeState], timestampMs); + } + + /** + * Adds the delta to the metrics. The number of values must correspond to the dimension count + * supplied to the Factory constructor + */ + public void increment(long[] values, long timestampMs) { + mCounter.incrementValues(values, timestampMs); + mTracking = true; + } + + /** + * Returns accumulated stats for the specified composite state. + */ + public void getStats(long[] outValues, int[] states) { + mCounter.getCounts(outValues, mFactory.getSerialState(states)); + } + + /** + * Resets the counters. + */ + public void reset() { + mCounter.reset(); + mTracking = false; + } + + @Override + public String toString() { + return mCounter.toString(); + } + + /** + * Prints the accumulated stats, one line of every combination of states that has data. + */ + public void dump(PrintWriter pw) { + long[] tmpArray = new long[mCounter.getArrayLength()]; + dumpAllStates(pw, new int[mFactory.mStates.length], 0, tmpArray); + } + + private void dumpAllStates(PrintWriter pw, int[] states, int stateIndex, long[] values) { + if (stateIndex < states.length) { + if (!mFactory.mStates[stateIndex].mTracked) { + dumpAllStates(pw, states, stateIndex + 1, values); + return; + } + + for (int i = 0; i < mFactory.mStates[stateIndex].mLabels.length; i++) { + states[stateIndex] = i; + dumpAllStates(pw, states, stateIndex + 1, values); + } + return; + } + + mCounter.getCounts(values, mFactory.getSerialState(states)); + boolean nonZero = false; + for (long value : values) { + if (value != 0) { + nonZero = true; + break; + } + } + if (!nonZero) { + return; + } + + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < states.length; i++) { + if (mFactory.mStates[i].mTracked) { + if (sb.length() != 0) { + sb.append(" "); + } + sb.append(mFactory.mStates[i].mLabels[states[i]]); + } + } + sb.append(" "); + sb.append(Arrays.toString(values)); + pw.println(sb); + } +} diff --git a/core/java/com/android/internal/os/OWNERS b/core/java/com/android/internal/os/OWNERS index 0b9773e2c9076e1a4a645b0b50351ef2c976c61a..e35b7f1846636e764db94258d91aa31f0bcc742c 100644 --- a/core/java/com/android/internal/os/OWNERS +++ b/core/java/com/android/internal/os/OWNERS @@ -11,6 +11,7 @@ per-file BatteryUsageStats* = file:/BATTERY_STATS_OWNERS per-file *ChargeCalculator* = file:/BATTERY_STATS_OWNERS per-file *PowerCalculator* = file:/BATTERY_STATS_OWNERS per-file *PowerEstimator* = file:/BATTERY_STATS_OWNERS +per-file *PowerStats* = file:/BATTERY_STATS_OWNERS per-file *Kernel* = file:/BATTERY_STATS_OWNERS per-file *MultiState* = file:/BATTERY_STATS_OWNERS per-file *PowerProfile* = file:/BATTERY_STATS_OWNERS diff --git a/core/java/com/android/internal/os/PowerStats.java b/core/java/com/android/internal/os/PowerStats.java new file mode 100644 index 0000000000000000000000000000000000000000..8f66d1f9365c29bb2d129a74330fa033e3a7892b --- /dev/null +++ b/core/java/com/android/internal/os/PowerStats.java @@ -0,0 +1,327 @@ +/* + * Copyright (C) 2023 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.internal.os; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.os.BatteryConsumer; +import android.os.Bundle; +import android.os.Parcel; +import android.os.PersistableBundle; +import android.os.UserHandle; +import android.util.IndentingPrintWriter; +import android.util.Log; +import android.util.SparseArray; + +import java.util.Arrays; +import java.util.Objects; + +/** + * Container for power stats, acquired by various PowerStatsCollector classes. See subclasses for + * details. + */ +public final class PowerStats { + private static final String TAG = "PowerStats"; + + private static final BatteryStatsHistory.VarintParceler VARINT_PARCELER = + new BatteryStatsHistory.VarintParceler(); + private static final byte PARCEL_FORMAT_VERSION = 1; + + private static final int PARCEL_FORMAT_VERSION_MASK = 0x000000FF; + private static final int PARCEL_FORMAT_VERSION_SHIFT = + Integer.numberOfTrailingZeros(PARCEL_FORMAT_VERSION_MASK); + private static final int STATS_ARRAY_LENGTH_MASK = 0x0000FF00; + private static final int STATS_ARRAY_LENGTH_SHIFT = + Integer.numberOfTrailingZeros(STATS_ARRAY_LENGTH_MASK); + public static final int MAX_STATS_ARRAY_LENGTH = + 2 ^ Integer.bitCount(STATS_ARRAY_LENGTH_MASK) - 1; + private static final int UID_STATS_ARRAY_LENGTH_MASK = 0x00FF0000; + private static final int UID_STATS_ARRAY_LENGTH_SHIFT = + Integer.numberOfTrailingZeros(UID_STATS_ARRAY_LENGTH_MASK); + public static final int MAX_UID_STATS_ARRAY_LENGTH = + (2 ^ Integer.bitCount(UID_STATS_ARRAY_LENGTH_MASK)) - 1; + + /** + * Descriptor of the stats collected for a given power component (e.g. CPU, WiFi etc). + * This descriptor is used for storing PowerStats and can also be used by power models + * to adjust the algorithm in accordance with the stats available on the device. + */ + public static class Descriptor { + /** + * {@link BatteryConsumer.PowerComponent} (e.g. CPU, WIFI etc) that this snapshot relates + * to; or a custom power component ID (if the value + * is >= {@link BatteryConsumer#FIRST_CUSTOM_POWER_COMPONENT_ID}). + */ + public final int powerComponentId; + public final String name; + + public final int statsArrayLength; + public final int uidStatsArrayLength; + + /** + * Extra parameters specific to the power component, e.g. the availability of power + * monitors. + */ + public final PersistableBundle extras; + + public Descriptor(@BatteryConsumer.PowerComponent int powerComponentId, + int statsArrayLength, int uidStatsArrayLength, @NonNull PersistableBundle extras) { + this(powerComponentId, BatteryConsumer.powerComponentIdToString(powerComponentId), + statsArrayLength, uidStatsArrayLength, extras); + } + + public Descriptor(int customPowerComponentId, String name, int statsArrayLength, + int uidStatsArrayLength, PersistableBundle extras) { + if (statsArrayLength > MAX_STATS_ARRAY_LENGTH) { + throw new IllegalArgumentException( + "statsArrayLength is too high. Max = " + MAX_STATS_ARRAY_LENGTH); + } + if (uidStatsArrayLength > MAX_UID_STATS_ARRAY_LENGTH) { + throw new IllegalArgumentException( + "uidStatsArrayLength is too high. Max = " + MAX_UID_STATS_ARRAY_LENGTH); + } + this.powerComponentId = customPowerComponentId; + this.name = name; + this.statsArrayLength = statsArrayLength; + this.uidStatsArrayLength = uidStatsArrayLength; + this.extras = extras; + } + + /** + * Writes the Descriptor into the parcel. + */ + public void writeSummaryToParcel(Parcel parcel) { + int firstWord = ((PARCEL_FORMAT_VERSION << PARCEL_FORMAT_VERSION_SHIFT) + & PARCEL_FORMAT_VERSION_MASK) + | ((statsArrayLength << STATS_ARRAY_LENGTH_SHIFT) + & STATS_ARRAY_LENGTH_MASK) + | ((uidStatsArrayLength << UID_STATS_ARRAY_LENGTH_SHIFT) + & UID_STATS_ARRAY_LENGTH_MASK); + parcel.writeInt(firstWord); + parcel.writeInt(powerComponentId); + parcel.writeString(name); + extras.writeToParcel(parcel, 0); + } + + /** + * Reads a Descriptor from the parcel. If the parcel has an incompatible format, + * returns null. + */ + @Nullable + public static Descriptor readSummaryFromParcel(Parcel parcel) { + int firstWord = parcel.readInt(); + int version = (firstWord & PARCEL_FORMAT_VERSION_MASK) >>> PARCEL_FORMAT_VERSION_SHIFT; + if (version != PARCEL_FORMAT_VERSION) { + Log.w(TAG, "Cannot read PowerStats from Parcel - the parcel format version has " + + "changed from " + version + " to " + PARCEL_FORMAT_VERSION); + return null; + } + int statsArrayLength = + (firstWord & STATS_ARRAY_LENGTH_MASK) >>> STATS_ARRAY_LENGTH_SHIFT; + int uidStatsArrayLength = + (firstWord & UID_STATS_ARRAY_LENGTH_MASK) >>> UID_STATS_ARRAY_LENGTH_SHIFT; + int powerComponentId = parcel.readInt(); + String name = parcel.readString(); + PersistableBundle extras = parcel.readPersistableBundle(); + return new Descriptor(powerComponentId, name, statsArrayLength, uidStatsArrayLength, + extras); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof Descriptor)) return false; + Descriptor that = (Descriptor) o; + return powerComponentId == that.powerComponentId + && statsArrayLength == that.statsArrayLength + && uidStatsArrayLength == that.uidStatsArrayLength + && Objects.equals(name, that.name) + && extras.size() == that.extras.size() // Unparcel the Parcel if not yet + && Bundle.kindofEquals(extras, + that.extras); // Since the Parcel is now unparceled, do a deep comparison + } + + @Override + public int hashCode() { + return Objects.hash(powerComponentId); + } + + @Override + public String toString() { + if (extras != null) { + extras.size(); // Unparcel + } + return "PowerStats.Descriptor{" + + "powerComponentId=" + powerComponentId + + ", name='" + name + '\'' + + ", statsArrayLength=" + statsArrayLength + + ", uidStatsArrayLength=" + uidStatsArrayLength + + ", extras=" + extras + + '}'; + } + } + + /** + * A registry for all supported power component types (e.g. CPU, WiFi). + */ + public static class DescriptorRegistry { + private final SparseArray mDescriptors = new SparseArray<>(); + + /** + * Adds the specified descriptor to the registry. If the registry already + * contained a descriptor for the same power component, then the new one replaces + * the old one. + */ + public void register(Descriptor descriptor) { + mDescriptors.put(descriptor.powerComponentId, descriptor); + } + + /** + * @param powerComponentId either a BatteryConsumer.PowerComponent or a custom power + * component ID + */ + public Descriptor get(int powerComponentId) { + return mDescriptors.get(powerComponentId); + } + } + + public final Descriptor descriptor; + + /** + * Duration, in milliseconds, covered by this snapshot. + */ + public long durationMs; + + /** + * Device-wide stats. + */ + public long[] stats; + + /** + * Per-UID CPU stats. + */ + public final SparseArray uidStats = new SparseArray<>(); + + public PowerStats(Descriptor descriptor) { + this.descriptor = descriptor; + stats = new long[descriptor.statsArrayLength]; + } + + /** + * Writes the object into the parcel. + */ + public void writeToParcel(Parcel parcel) { + int lengthPos = parcel.dataPosition(); + parcel.writeInt(0); // Placeholder for length + + int startPos = parcel.dataPosition(); + parcel.writeInt(descriptor.powerComponentId); + parcel.writeLong(durationMs); + VARINT_PARCELER.writeLongArray(parcel, stats); + parcel.writeInt(uidStats.size()); + for (int i = 0; i < uidStats.size(); i++) { + parcel.writeInt(uidStats.keyAt(i)); + VARINT_PARCELER.writeLongArray(parcel, uidStats.valueAt(i)); + } + + int endPos = parcel.dataPosition(); + parcel.setDataPosition(lengthPos); + parcel.writeInt(endPos - startPos); + parcel.setDataPosition(endPos); + } + + /** + * Reads a PowerStats object from the supplied Parcel. If the parcel has an incompatible + * format, returns null. + */ + @Nullable + public static PowerStats readFromParcel(Parcel parcel, DescriptorRegistry registry) { + int length = parcel.readInt(); + int startPos = parcel.dataPosition(); + int endPos = startPos + length; + + try { + int powerComponentId = parcel.readInt(); + + Descriptor descriptor = registry.get(powerComponentId); + if (descriptor == null) { + Log.e(TAG, "Unsupported PowerStats for power component ID: " + powerComponentId); + return null; + } + PowerStats stats = new PowerStats(descriptor); + stats.durationMs = parcel.readLong(); + stats.stats = new long[descriptor.statsArrayLength]; + VARINT_PARCELER.readLongArray(parcel, stats.stats); + int uidCount = parcel.readInt(); + for (int i = 0; i < uidCount; i++) { + int uid = parcel.readInt(); + long[] uidStats = new long[descriptor.uidStatsArrayLength]; + VARINT_PARCELER.readLongArray(parcel, uidStats); + stats.uidStats.put(uid, uidStats); + } + if (parcel.dataPosition() != endPos) { + Log.e(TAG, "Corrupted PowerStats parcel. Expected length: " + length + + ", actual length: " + (parcel.dataPosition() - startPos)); + return null; + } + return stats; + } finally { + // Unconditionally skip to the end of the written data, even if the actual parcel + // format is incompatible + parcel.setDataPosition(endPos); + } + } + + /** + * Formats the stats as a string suitable to be included in the Battery History dump. + */ + public String formatForBatteryHistory(String uidPrefix) { + StringBuilder sb = new StringBuilder(); + sb.append("duration=").append(durationMs).append(" ").append(descriptor.name); + if (stats.length > 0) { + sb.append("=").append(Arrays.toString(stats)); + } + for (int i = 0; i < uidStats.size(); i++) { + sb.append(uidPrefix) + .append(UserHandle.formatUid(uidStats.keyAt(i))) + .append(": ").append(Arrays.toString(uidStats.valueAt(i))); + } + return sb.toString(); + } + + /** + * Prints the contents of the stats snapshot. + */ + public void dump(IndentingPrintWriter pw) { + pw.println("PowerStats: " + descriptor.name + " (" + descriptor.powerComponentId + ')'); + pw.increaseIndent(); + pw.print("duration", durationMs).println(); + for (int i = 0; i < uidStats.size(); i++) { + pw.print("UID "); + pw.print(uidStats.keyAt(i)); + pw.print(": "); + pw.print(Arrays.toString(uidStats.valueAt(i))); + pw.println(); + } + pw.decreaseIndent(); + } + + @Override + public String toString() { + return "PowerStats: " + formatForBatteryHistory(" UID "); + } +} diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java index bb868018bc95e76d13215e33cb7c0e03fa208a05..1be916f44f5b86cef6b9d7f538157800d83931e3 100644 --- a/core/java/com/android/internal/policy/DecorView.java +++ b/core/java/com/android/internal/policy/DecorView.java @@ -1113,15 +1113,14 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind if (insets != null) { mLastForceConsumingTypes = insets.getForceConsumingTypes(); - @InsetsType int compatInsetsTypes = + final boolean clearsCompatInsets = clearsCompatInsets(attrs.type, attrs.flags, + getResources().getConfiguration().windowConfiguration.getActivityType(), + mLastForceConsumingTypes); + final @InsetsType int compatInsetsTypes = WindowInsets.Type.systemBars() | WindowInsets.Type.displayCutout(); - if (clearsCompatInsets(attrs.type, attrs.flags, - getResources().getConfiguration().windowConfiguration.getWindowingMode())) { - compatInsetsTypes &= mLastForceConsumingTypes; - } final Insets stableBarInsets = insets.getInsetsIgnoringVisibility( WindowInsets.Type.systemBars()); - final Insets systemInsets = compatInsetsTypes == 0 + final Insets systemInsets = clearsCompatInsets ? Insets.NONE : Insets.min(insets.getInsets(compatInsetsTypes), stableBarInsets); mLastTopInset = systemInsets.top; @@ -1161,7 +1160,9 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind mForceWindowDrawsBarBackgrounds, requestedVisibleTypes); boolean oldDrawLegacy = mDrawLegacyNavigationBarBackground; mDrawLegacyNavigationBarBackground = - (mWindow.getAttributes().flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) == 0; + ((requestedVisibleTypes | mLastForceConsumingTypes) + & WindowInsets.Type.navigationBars()) != 0 + && (mWindow.getAttributes().flags & FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS) == 0; if (oldDrawLegacy != mDrawLegacyNavigationBarBackground) { mDrawLegacyNavigationBarBackgroundHandled = mWindow.onDrawLegacyNavigationBarBackgroundChanged( @@ -2625,8 +2626,7 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind @Override public String toString() { - return "DecorView@" + Integer.toHexString(this.hashCode()) + "[" - + getTitleSuffix(mWindow.getAttributes()) + "]"; + return super.toString() + "[" + getTitleSuffix(mWindow.getAttributes()) + "]"; } private static class ColorViewState { diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java index 9b9e010039a67f879062fcbb41b8ac28b5677370..e014ab05765375eefd59b04efeef8cd1058c0ae3 100644 --- a/core/java/com/android/internal/policy/PhoneWindow.java +++ b/core/java/com/android/internal/policy/PhoneWindow.java @@ -40,6 +40,9 @@ import android.annotation.UiContext; import android.app.ActivityManager; import android.app.KeyguardManager; import android.app.SearchManager; +import android.app.compat.CompatChanges; +import android.compat.annotation.ChangeId; +import android.compat.annotation.EnabledSince; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; import android.content.Intent; @@ -123,6 +126,7 @@ import com.android.internal.view.menu.MenuHelper; import com.android.internal.view.menu.MenuPresenter; import com.android.internal.view.menu.MenuView; import com.android.internal.widget.DecorContentParent; +import com.android.window.flags.Flags; import java.lang.ref.WeakReference; import java.util.ArrayList; @@ -162,6 +166,14 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { private final static int DEFAULT_BACKGROUND_FADE_DURATION_MS = 300; + /** + * Makes navigation bar color transparent by default if the target SDK is + * {@link Build.VERSION_CODES#VANILLA_ICE_CREAM} or above. + */ + @ChangeId + @EnabledSince(targetSdkVersion = Build.VERSION_CODES.VANILLA_ICE_CREAM) + private static final long NAV_BAR_COLOR_DEFAULT_TRANSPARENT = 232195501L; + private static final int CUSTOM_TITLE_COMPATIBLE_FEATURES = DEFAULT_FEATURES | (1 << FEATURE_CUSTOM_TITLE) | (1 << FEATURE_CONTENT_TRANSITIONS) | @@ -333,6 +345,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { private long mBackgroundFadeDurationMillis = -1; private Boolean mSharedElementsUseOverlay; + private Boolean mAllowFloatingWindowsFillScreen; + private boolean mIsStartingWindow; private int mTheme = -1; @@ -361,6 +375,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { mRenderShadowsInCompositor = Settings.Global.getInt(context.getContentResolver(), DEVELOPMENT_RENDER_SHADOWS_IN_COMPOSITOR, 1) != 0; mProxyOnBackInvokedDispatcher = new ProxyOnBackInvokedDispatcher(context); + mAllowFloatingWindowsFillScreen = context.getResources().getBoolean( + com.android.internal.R.bool.config_allowFloatingWindowsFillScreen); } /** @@ -2422,7 +2438,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { mIsFloating = a.getBoolean(R.styleable.Window_windowIsFloating, false); int flagsToUpdate = (FLAG_LAYOUT_IN_SCREEN|FLAG_LAYOUT_INSET_DECOR) & (~getForcedWindowFlags()); - if (mIsFloating) { + if (mIsFloating && !mAllowFloatingWindowsFillScreen) { setLayout(WRAP_CONTENT, WRAP_CONTENT); setFlags(0, flagsToUpdate); } else { @@ -2521,6 +2537,8 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { mNavigationBarColor = navBarColor == navBarDefaultColor + && !(CompatChanges.isChangeEnabled(NAV_BAR_COLOR_DEFAULT_TRANSPARENT) + && Flags.navBarTransparentByDefault()) && !context.getResources().getBoolean( R.bool.config_navBarDefaultTransparent) ? navBarCompatibleColor diff --git a/core/java/com/android/internal/policy/TransitionAnimation.java b/core/java/com/android/internal/policy/TransitionAnimation.java index aa2318d219f80ae4f3e00cc1eb9982b78b918a3c..8f4df806296e2431dfd632df36368536a16f8917 100644 --- a/core/java/com/android/internal/policy/TransitionAnimation.java +++ b/core/java/com/android/internal/policy/TransitionAnimation.java @@ -1303,7 +1303,7 @@ public class TransitionAnimation { ScreenCapture.ScreenshotHardwareBuffer buffer) { t.setBuffer(layer, buffer.getHardwareBuffer()); t.setDataSpace(layer, buffer.getColorSpace().getDataSpace()); - // Avoid showing dimming effect for HDR content when running animation. + // Avoid showing dimming effect for HDR content when running animations. if (buffer.containsHdrLayers()) { t.setDimmingEnabled(layer, false); } diff --git a/core/java/com/android/internal/security/TEST_MAPPING b/core/java/com/android/internal/security/TEST_MAPPING index 2d598dc576137ed299d1f4c94b056823df0ba64f..0af3b03edefcfd6bcf7a5a11221c41562cfc9d4e 100644 --- a/core/java/com/android/internal/security/TEST_MAPPING +++ b/core/java/com/android/internal/security/TEST_MAPPING @@ -11,10 +11,6 @@ } ] }, - { - "name": "ApkVerityTest", - "file_patterns": ["VerityUtils\\.java"] - }, { "name": "UpdatableSystemFontTest", "file_patterns": ["VerityUtils\\.java"] @@ -23,5 +19,11 @@ "name": "CtsApkVerityInstallHostTestCases", "file_patterns": ["VerityUtils\\.java"] } + ], + "postsubmit": [ + { + "name": "FsVerityTest", + "file_patterns": ["VerityUtils\\.java"] + } ] } diff --git a/core/java/com/android/internal/usb/DumpUtils.java b/core/java/com/android/internal/usb/DumpUtils.java index f974d9d10efd36b8c25fbe971e405726c47011f5..21c3e7b5c6b829b4ff9fb34f80a92cd7b6a50a1e 100644 --- a/core/java/com/android/internal/usb/DumpUtils.java +++ b/core/java/com/android/internal/usb/DumpUtils.java @@ -16,6 +16,7 @@ package com.android.internal.usb; +import static android.hardware.usb.UsbPort.FLAG_ALT_MODE_TYPE_DISPLAYPORT; import static android.hardware.usb.UsbPortStatus.MODE_AUDIO_ACCESSORY; import static android.hardware.usb.UsbPortStatus.MODE_DEBUG_ACCESSORY; import static android.hardware.usb.UsbPortStatus.MODE_DFP; @@ -26,6 +27,7 @@ import static android.hardware.usb.UsbPortStatus.MODE_UFP; import static com.android.internal.util.dump.DumpUtils.writeStringIfNotNull; import android.annotation.NonNull; +import android.hardware.usb.DisplayPortAltModeInfo; import android.hardware.usb.UsbAccessory; import android.hardware.usb.UsbConfiguration; import android.hardware.usb.UsbDevice; @@ -177,6 +179,10 @@ public class DumpUtils { dump.write("supports_compliance_warnings", UsbPortProto.SUPPORTS_COMPLIANCE_WARNINGS, port.supportsComplianceWarnings()); + if (port.isAltModeSupported(FLAG_ALT_MODE_TYPE_DISPLAYPORT)) { + dump.write("supported_alt_modes", UsbPortProto.SUPPORTED_ALT_MODES, + FLAG_ALT_MODE_TYPE_DISPLAYPORT); + } dump.end(token); } @@ -255,6 +261,12 @@ public class DumpUtils { UsbPort.powerBrickConnectionStatusToString(status.getPowerBrickConnectionStatus())); dump.write("compliance_warning_status", UsbPortStatusProto.COMPLIANCE_WARNINGS_STRING, UsbPort.complianceWarningsToString(status.getComplianceWarnings())); + DisplayPortAltModeInfo displayPortAltModeInfo = status.getDisplayPortAltModeInfo(); + if (displayPortAltModeInfo != null) { + dump.write("displayport_alt_mode_status", + UsbPortStatusProto.DISPLAYPORT_ALT_MODE_STATUS, + status.getDisplayPortAltModeInfo().toString()); + } dump.end(token); } } diff --git a/core/java/com/android/internal/util/FileRotator.java b/core/java/com/android/internal/util/FileRotator.java index 5bc48c5172f0d0fbcebd2bc1111521f42b371b26..c9d9926ba75a6596e39e84f8dc5135d0c97eee84 100644 --- a/core/java/com/android/internal/util/FileRotator.java +++ b/core/java/com/android/internal/util/FileRotator.java @@ -19,6 +19,9 @@ package com.android.internal.util; import android.annotation.NonNull; import android.os.FileUtils; import android.util.Log; +import android.util.Pair; + +import libcore.io.IoUtils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -28,12 +31,12 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Comparator; import java.util.Objects; +import java.util.TreeSet; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; -import libcore.io.IoUtils; - /** * Utility that rotates files over time, similar to {@code logrotate}. There is * a single "active" file, which is periodically rotated into historical files, @@ -302,17 +305,24 @@ public class FileRotator { public void readMatching(Reader reader, long matchStartMillis, long matchEndMillis) throws IOException { final FileInfo info = new FileInfo(mPrefix); + final TreeSet> readSet = new TreeSet<>( + Comparator.comparingLong(o -> o.first)); for (String name : mBasePath.list()) { if (!info.parse(name)) continue; - // read file when it overlaps + // Add file to set when it overlaps. if (info.startMillis <= matchEndMillis && matchStartMillis <= info.endMillis) { - if (LOGD) Log.d(TAG, "reading matching " + name); - - final File file = new File(mBasePath, name); - readFile(file, reader); + readSet.add(new Pair(info.startMillis, name)); } } + + // Read files in ascending order of start timestamp. + for (Pair pair : readSet) { + final String name = pair.second; + if (LOGD) Log.d(TAG, "reading matching " + name); + final File file = new File(mBasePath, name); + readFile(file, reader); + } } /** diff --git a/core/java/com/android/internal/util/LatencyTracker.java b/core/java/com/android/internal/util/LatencyTracker.java index 116c301c28f034b59200e3b18a178b3a757aad21..3e9458dcb7d8d1c1d6741c5062ad78e8a17825d2 100644 --- a/core/java/com/android/internal/util/LatencyTracker.java +++ b/core/java/com/android/internal/util/LatencyTracker.java @@ -342,7 +342,11 @@ public class LatencyTracker { synchronized (mLock) { int samplingInterval = properties.getInt(SETTINGS_SAMPLING_INTERVAL_KEY, DEFAULT_SAMPLING_INTERVAL); + boolean wasEnabled = mEnabled; mEnabled = properties.getBoolean(SETTINGS_ENABLED_KEY, DEFAULT_ENABLED); + if (wasEnabled != mEnabled) { + Log.d(TAG, "Latency tracker " + (mEnabled ? "enabled" : "disabled") + "."); + } for (int action : ACTIONS_ALL) { String actionName = getNameOfAction(STATSD_ACTION[action]).toLowerCase(Locale.ROOT); int legacyActionTraceThreshold = properties.getInt( diff --git a/core/java/com/android/internal/util/SettingsWrapper.java b/core/java/com/android/internal/util/SettingsWrapper.java new file mode 100644 index 0000000000000000000000000000000000000000..8cf6c18adb3a08a4cb811f7dd77c271e1961aab0 --- /dev/null +++ b/core/java/com/android/internal/util/SettingsWrapper.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2023 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.internal.util; + +import android.content.ContentResolver; +import android.provider.Settings; + +/** + * A wrapper class for accessing and modifying system settings that would help with testing. + */ +public class SettingsWrapper { + + /** Retrieves the string value of a system setting */ + public String getStringForUser(ContentResolver contentResolver, String name, int userHandle) { + return Settings.System.getStringForUser(contentResolver, name, userHandle); + } + + /** Updates the string value of a system setting */ + public String putStringForUser(ContentResolver contentResolver, String name, int userHandle) { + return Settings.System.getStringForUser(contentResolver, name, userHandle); + } +} diff --git a/core/java/com/android/internal/vibrator/persistence/XmlConstants.java b/core/java/com/android/internal/vibrator/persistence/XmlConstants.java index d1c78f0b54eaef7f3863d344046a43c5a3e46b03..6b69a158220cd53bb4904f4e66301e5a8af8bc97 100644 --- a/core/java/com/android/internal/vibrator/persistence/XmlConstants.java +++ b/core/java/com/android/internal/vibrator/persistence/XmlConstants.java @@ -36,6 +36,7 @@ public final class XmlConstants { public static final String NAMESPACE = null; public static final String TAG_VIBRATION = "vibration"; + public static final String TAG_VIBRATION_SELECT = "vibration-select"; public static final String TAG_PREDEFINED_EFFECT = "predefined-effect"; public static final String TAG_PRIMITIVE_EFFECT = "primitive-effect"; diff --git a/core/java/com/android/internal/vibrator/persistence/XmlReader.java b/core/java/com/android/internal/vibrator/persistence/XmlReader.java index 75073387c14351e7957e443ac2a80a1fcc0e03dd..a5ace8438142465f3fc1e1f4712a4f3e9167fff5 100644 --- a/core/java/com/android/internal/vibrator/persistence/XmlReader.java +++ b/core/java/com/android/internal/vibrator/persistence/XmlReader.java @@ -41,17 +41,26 @@ public final class XmlReader { */ public static void readDocumentStartTag(TypedXmlPullParser parser, String expectedRootTag) throws XmlParserException, IOException { - try { - int type = parser.getEventType(); - checkArgument(type == XmlPullParser.START_DOCUMENT, "Document already started"); + readDocumentStart(parser); - type = parser.nextTag(); // skips comments, instruction tokens and whitespace only - XmlValidator.checkParserCondition(type == XmlPullParser.START_TAG, - "Unexpected element at document start, expected root tag %s", expectedRootTag); + String tagName = parser.getName(); + XmlValidator.checkParserCondition(expectedRootTag.equals(tagName), + "Unexpected root tag found %s, expected %s", tagName, expectedRootTag); + } - String tagName = parser.getName(); - XmlValidator.checkParserCondition(expectedRootTag.equals(tagName), - "Unexpected root tag found %s, expected %s", tagName, expectedRootTag); + /** + * Check parser is currently at {@link XmlPullParser#START_DOCUMENT}. + * + *

    The parser will be pointing to the first tag in the document. + */ + public static void readDocumentStart(TypedXmlPullParser parser) + throws XmlParserException, IOException { + try { + int type = parser.getEventType(); + checkArgument( + type == XmlPullParser.START_DOCUMENT, + "Unexpected type, expected %d", type); + parser.nextTag(); // skips comments, instruction tokens and whitespace only } catch (XmlPullParserException e) { throw XmlParserException.createFromPullParserException("document start tag", e); } diff --git a/core/java/com/android/internal/vibrator/persistence/XmlValidator.java b/core/java/com/android/internal/vibrator/persistence/XmlValidator.java index ba95e35d2a35ba92aa71e8425bc8c7a6fb0ba5cd..84d4f3f49e8aded6ba093919186f6e8436509195 100644 --- a/core/java/com/android/internal/vibrator/persistence/XmlValidator.java +++ b/core/java/com/android/internal/vibrator/persistence/XmlValidator.java @@ -42,13 +42,20 @@ public final class XmlValidator { */ public static void checkStartTag(TypedXmlPullParser parser, String expectedTag) throws XmlParserException { - String tagName = parser.getName(); + checkStartTag(parser); + checkParserCondition( + expectedTag.equals(parser.getName()), + "Unexpected start tag found %s, expected %s", parser.getName(), expectedTag); + } + + /** Check parser is currently at {@link XmlPullParser#START_TAG}. */ + public static void checkStartTag(TypedXmlPullParser parser) throws XmlParserException { try { checkParserCondition( - parser.getEventType() == parser.START_TAG && expectedTag.equals(tagName), - "Unexpected tag found %s, expected %s", tagName, expectedTag); + parser.getEventType() == parser.START_TAG, + "Expected start tag, got " + parser.getEventType()); } catch (XmlPullParserException e) { - throw XmlParserException.createFromPullParserException(tagName, e); + throw XmlParserException.createFromPullParserException(parser.getName(), e); } } diff --git a/core/java/com/android/internal/widget/BigPictureNotificationImageView.java b/core/java/com/android/internal/widget/BigPictureNotificationImageView.java index 3a7cf74df4a886a7df3203633a9b2e5adc0a108b..f95f5db8358e7e42f8396b8f81f742348f78357d 100644 --- a/core/java/com/android/internal/widget/BigPictureNotificationImageView.java +++ b/core/java/com/android/internal/widget/BigPictureNotificationImageView.java @@ -37,13 +37,16 @@ import com.android.internal.R; * Icon.loadDrawable(). */ @RemoteViews.RemoteView -public class BigPictureNotificationImageView extends ImageView { +public class BigPictureNotificationImageView extends ImageView implements + NotificationDrawableConsumer { private static final String TAG = BigPictureNotificationImageView.class.getSimpleName(); private final int mMaximumDrawableWidth; private final int mMaximumDrawableHeight; + private NotificationIconManager mIconManager; + public BigPictureNotificationImageView(@NonNull Context context) { this(context, null, 0, 0); } @@ -69,6 +72,19 @@ public class BigPictureNotificationImageView extends ImageView { : R.dimen.notification_big_picture_max_height); } + + /** + * Sets an {@link NotificationIconManager} on this ImageView, which handles the loading of + * icons, instead of using the {@link LocalImageResolver} directly. + * If set, it overrides the behaviour of {@link #setImageIconAsync} and {@link #setImageIcon}, + * and it expects that the content of this imageView is only updated calling these two methods. + * + * @param iconManager to be called, when the icon is updated + */ + public void setIconManager(NotificationIconManager iconManager) { + mIconManager = iconManager; + } + @Override @android.view.RemotableViewMethod(asyncImpl = "setImageURIAsync") public void setImageURI(@Nullable Uri uri) { @@ -84,11 +100,20 @@ public class BigPictureNotificationImageView extends ImageView { @Override @android.view.RemotableViewMethod(asyncImpl = "setImageIconAsync") public void setImageIcon(@Nullable Icon icon) { + if (mIconManager != null) { + mIconManager.updateIcon(this, icon).run(); + return; + } + // old code path setImageDrawable(loadImage(icon)); } /** @hide **/ public Runnable setImageIconAsync(@Nullable Icon icon) { + if (mIconManager != null) { + return mIconManager.updateIcon(this, icon); + } + // old code path final Drawable drawable = loadImage(icon); return () -> setImageDrawable(drawable); } diff --git a/core/java/com/android/internal/widget/ConversationLayout.java b/core/java/com/android/internal/widget/ConversationLayout.java index 7dda91d7b25e2168de26d6fd3d8ac4aade5e46e6..42be784d8baa3280745f13d2213232f858147f11 100644 --- a/core/java/com/android/internal/widget/ConversationLayout.java +++ b/core/java/com/android/internal/widget/ConversationLayout.java @@ -149,6 +149,7 @@ public class ConversationLayout extends FrameLayout private View mAppNameDivider; private TouchDelegateComposite mTouchDelegate = new TouchDelegateComposite(this); private ArrayList mToRecycle = new ArrayList<>(); + private boolean mPrecomputedTextEnabled = false; public ConversationLayout(@NonNull Context context) { super(context); @@ -389,34 +390,37 @@ public class ConversationLayout extends FrameLayout */ @RemotableViewMethod(asyncImpl = "setDataAsync") public void setData(Bundle extras) { + bind(parseMessagingData(extras, /* usePrecomputedText= */ false)); + } + + @NonNull + private MessagingData parseMessagingData(Bundle extras, boolean usePrecomputedText) { Parcelable[] messages = extras.getParcelableArray(Notification.EXTRA_MESSAGES); - List newMessages - = Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages); + List newMessages = + Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages); Parcelable[] histMessages = extras.getParcelableArray(Notification.EXTRA_HISTORIC_MESSAGES); - List newHistoricMessages - = Notification.MessagingStyle.Message.getMessagesFromBundleArray(histMessages); + List newHistoricMessages = + Notification.MessagingStyle.Message.getMessagesFromBundleArray(histMessages); // mUser now set (would be nice to avoid the side effect but WHATEVER) final Person user = extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, Person.class); // Append remote input history to newMessages (again, side effect is lame but WHATEVS) RemoteInputHistoryItem[] history = (RemoteInputHistoryItem[]) - extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, android.app.RemoteInputHistoryItem.class); + extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, + RemoteInputHistoryItem.class); addRemoteInputHistoryToMessages(newMessages, history); boolean showSpinner = extras.getBoolean(Notification.EXTRA_SHOW_REMOTE_INPUT_SPINNER, false); int unreadCount = extras.getInt(Notification.EXTRA_CONVERSATION_UNREAD_MESSAGE_COUNT); - // convert MessagingStyle.Message to MessagingMessage, re-using ones from a previous binding - // if they exist final List newMessagingMessages = - createMessages(newMessages, false /* isHistoric */); + createMessages(newMessages, /* isHistoric= */false, usePrecomputedText); final List newHistoricMessagingMessages = - createMessages(newHistoricMessages, true /* isHistoric */); - // bind it, baby - bindViews(user, showSpinner, unreadCount, - newMessagingMessages, - newHistoricMessagingMessages); + createMessages(newHistoricMessages, /* isHistoric= */true, usePrecomputedText); + + return new MessagingData(user, showSpinner, unreadCount, + newHistoricMessagingMessages, newMessagingMessages); } /** @@ -428,7 +432,33 @@ public class ConversationLayout extends FrameLayout */ @NonNull public Runnable setDataAsync(Bundle extras) { - return () -> setData(extras); + if (!mPrecomputedTextEnabled) { + return () -> setData(extras); + } + + final MessagingData messagingData = + parseMessagingData(extras, /* usePrecomputedText= */ true); + + return () -> { + finalizeInflate(messagingData.getHistoricMessagingMessages()); + finalizeInflate(messagingData.getNewMessagingMessages()); + + bind(messagingData); + }; + } + + /** + * enable/disable precomputed text usage + * @hide + */ + public void setPrecomputedTextEnabled(boolean precomputedTextEnabled) { + mPrecomputedTextEnabled = precomputedTextEnabled; + } + + private void finalizeInflate(List historicMessagingMessages) { + for (MessagingMessage messagingMessage : historicMessagingMessages) { + messagingMessage.finalizeInflate(); + } } @Override @@ -458,17 +488,12 @@ public class ConversationLayout extends FrameLayout } } + private void bind(MessagingData messagingData) { + setUser(messagingData.getUser()); + setUnreadCount(messagingData.getUnreadCount()); - private void bindViews(Person user, - boolean showSpinner, int unreadCount, List newMessagingMessages, - List newHistoricMessagingMessages) { - setUser(user); - setUnreadCount(unreadCount); - bind(showSpinner, newMessagingMessages, newHistoricMessagingMessages); - } - - private void bind(boolean showSpinner, List messages, - List historicMessages) { + List messages = messagingData.getNewMessagingMessages(); + List historicMessages = messagingData.getHistoricMessagingMessages(); // Copy our groups, before they get clobbered ArrayList oldGroups = new ArrayList<>(mGroups); @@ -481,7 +506,7 @@ public class ConversationLayout extends FrameLayout // Let's now create the views and reorder them accordingly // side-effect: updates mGroups, mAddedGroups - createGroupViews(groups, senders, showSpinner); + createGroupViews(groups, senders, messagingData.getShowSpinner()); // Let's first check which groups were removed altogether and remove them in one animation removeGroups(oldGroups); @@ -583,7 +608,7 @@ public class ConversationLayout extends FrameLayout // When collapsed, we're displaying the image message in a dedicated container // on the right of the layout instead of inline. Let's add the isolated image there - MessagingGroup messagingGroup = mGroups.get(mGroups.size() -1); + MessagingGroup messagingGroup = mGroups.get(mGroups.size() - 1); MessagingImageMessage isolatedMessage = messagingGroup.getIsolatedMessage(); if (isolatedMessage != null) { newMessage = isolatedMessage.getView(); @@ -981,15 +1006,17 @@ public class ConversationLayout extends FrameLayout * @param newMessages the messages to parse. */ private List createMessages( - List newMessages, boolean historic) { + List newMessages, boolean isHistoric, + boolean usePrecomputedText) { List result = new ArrayList<>(); for (int i = 0; i < newMessages.size(); i++) { Notification.MessagingStyle.Message m = newMessages.get(i); MessagingMessage message = findAndRemoveMatchingMessage(m); if (message == null) { - message = MessagingMessage.createMessage(this, m, mImageResolver); + message = MessagingMessage.createMessage(this, m, + mImageResolver, usePrecomputedText); } - message.setIsHistoric(historic); + message.setIsHistoric(isHistoric); result.add(message); } return result; @@ -1038,7 +1065,7 @@ public class ConversationLayout extends FrameLayout } if (visibleChildren > 0 && group.getVisibility() == GONE) { group.setVisibility(VISIBLE); - } else if (visibleChildren == 0 && group.getVisibility() != GONE) { + } else if (visibleChildren == 0 && group.getVisibility() != GONE) { group.setVisibility(GONE); } } @@ -1255,7 +1282,7 @@ public class ConversationLayout extends FrameLayout public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); - for (TouchDelegate delegate: mDelegates) { + for (TouchDelegate delegate : mDelegates) { event.setLocation(x, y); if (delegate.onTouchEvent(event)) { return true; diff --git a/core/java/com/android/internal/widget/MessagingData.java b/core/java/com/android/internal/widget/MessagingData.java new file mode 100644 index 0000000000000000000000000000000000000000..85b02018e7c7e7f6332307544f63e159d6a0d54f --- /dev/null +++ b/core/java/com/android/internal/widget/MessagingData.java @@ -0,0 +1,70 @@ +/* + * Copyright (C) 2023 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.internal.widget; + +import android.app.Person; + +import java.util.List; + +/** + * @hide + */ +final class MessagingData { + private final Person mUser; + private final boolean mShowSpinner; + private final List mHistoricMessagingMessages; + private final List mNewMessagingMessages; + private final int mUnreadCount; + + MessagingData(Person user, boolean showSpinner, + List historicMessagingMessages, + List newMessagingMessages) { + this(user, showSpinner, /* unreadCount= */0, + historicMessagingMessages, newMessagingMessages); + } + + MessagingData(Person user, boolean showSpinner, + int unreadCount, + List historicMessagingMessages, + List newMessagingMessages) { + mUser = user; + mShowSpinner = showSpinner; + mUnreadCount = unreadCount; + mHistoricMessagingMessages = historicMessagingMessages; + mNewMessagingMessages = newMessagingMessages; + } + + public Person getUser() { + return mUser; + } + + public boolean getShowSpinner() { + return mShowSpinner; + } + + public List getHistoricMessagingMessages() { + return mHistoricMessagingMessages; + } + + public List getNewMessagingMessages() { + return mNewMessagingMessages; + } + + public int getUnreadCount() { + return mUnreadCount; + } +} diff --git a/core/java/com/android/internal/widget/MessagingImageMessage.java b/core/java/com/android/internal/widget/MessagingImageMessage.java index 098bce14e619299a715bccd99dfb97ace0ff074b..c132d6a90f6c77857a549d31f1dce8356641e184 100644 --- a/core/java/com/android/internal/widget/MessagingImageMessage.java +++ b/core/java/com/android/internal/widget/MessagingImageMessage.java @@ -93,8 +93,9 @@ public class MessagingImageMessage extends ImageView implements MessagingMessage } @Override - public boolean setMessage(Notification.MessagingStyle.Message message) { - MessagingMessage.super.setMessage(message); + public boolean setMessage(Notification.MessagingStyle.Message message, + boolean usePrecomputedText) { + MessagingMessage.super.setMessage(message, usePrecomputedText); Drawable drawable; try { Uri uri = message.getDataUri(); @@ -114,32 +115,42 @@ public class MessagingImageMessage extends ImageView implements MessagingMessage } mDrawable = drawable; mAspectRatio = ((float) mDrawable.getIntrinsicWidth()) / intrinsicHeight; - setImageDrawable(drawable); - setContentDescription(message.getText()); + if (!usePrecomputedText) { + finalizeInflate(); + } return true; } static MessagingMessage createMessage(IMessagingLayout layout, - Notification.MessagingStyle.Message m, ImageResolver resolver) { + Notification.MessagingStyle.Message m, ImageResolver resolver, + boolean usePrecomputedText) { MessagingLinearLayout messagingLinearLayout = layout.getMessagingLinearLayout(); MessagingImageMessage createdMessage = sInstancePool.acquire(); if (createdMessage == null) { createdMessage = (MessagingImageMessage) LayoutInflater.from( layout.getContext()).inflate( - R.layout.notification_template_messaging_image_message, - messagingLinearLayout, - false); + R.layout.notification_template_messaging_image_message, + messagingLinearLayout, + false); createdMessage.addOnLayoutChangeListener(MessagingLayout.MESSAGING_PROPERTY_ANIMATOR); } createdMessage.setImageResolver(resolver); - boolean created = createdMessage.setMessage(m); - if (!created) { + // MessagingImageMessage does not use usePrecomputedText. + boolean populated = createdMessage.setMessage(m, /* usePrecomputedText= */false); + if (!populated) { createdMessage.recycle(); - return MessagingTextMessage.createMessage(layout, m); + return MessagingTextMessage.createMessage(layout, m, usePrecomputedText); } return createdMessage; } + + @Override + public void finalizeInflate() { + setImageDrawable(mDrawable); + setContentDescription(getMessage().getText()); + } + private void setImageResolver(ImageResolver resolver) { mImageResolver = resolver; } diff --git a/core/java/com/android/internal/widget/MessagingLayout.java b/core/java/com/android/internal/widget/MessagingLayout.java index 8345c5cc9ef9dc7c05c086fc582dc4058eb8869f..b6d7503119fe07da80788bd04cb887dba960dcf4 100644 --- a/core/java/com/android/internal/widget/MessagingLayout.java +++ b/core/java/com/android/internal/widget/MessagingLayout.java @@ -87,7 +87,7 @@ public class MessagingLayout extends FrameLayout private ImageResolver mImageResolver; private CharSequence mConversationTitle; private ArrayList mToRecycle = new ArrayList<>(); - + private boolean mPrecomputedTextEnabled = false; public MessagingLayout(@NonNull Context context) { super(context); } @@ -162,15 +162,23 @@ public class MessagingLayout extends FrameLayout */ @RemotableViewMethod(asyncImpl = "setDataAsync") public void setData(Bundle extras) { + bind(parseMessagingData(extras, /* usePrecomputedText= */false)); + } + + @NonNull + private MessagingData parseMessagingData(Bundle extras, boolean usePrecomputedText) { Parcelable[] messages = extras.getParcelableArray(Notification.EXTRA_MESSAGES); - List newMessages - = Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages); + List newMessages = + Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages); Parcelable[] histMessages = extras.getParcelableArray(Notification.EXTRA_HISTORIC_MESSAGES); - List newHistoricMessages - = Notification.MessagingStyle.Message.getMessagesFromBundleArray(histMessages); - setUser(extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, android.app.Person.class)); - RemoteInputHistoryItem[] history = (RemoteInputHistoryItem[]) - extras.getParcelableArray(Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, android.app.RemoteInputHistoryItem.class); + List newHistoricMessages = + Notification.MessagingStyle.Message.getMessagesFromBundleArray(histMessages); + setUser(extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, + Person.class)); + RemoteInputHistoryItem[] history = + (RemoteInputHistoryItem[]) extras.getParcelableArray( + Notification.EXTRA_REMOTE_INPUT_HISTORY_ITEMS, + RemoteInputHistoryItem.class); addRemoteInputHistoryToMessages(newMessages, history); final Person user = extras.getParcelable(Notification.EXTRA_MESSAGING_PERSON, Person.class); @@ -178,10 +186,12 @@ public class MessagingLayout extends FrameLayout extras.getBoolean(Notification.EXTRA_SHOW_REMOTE_INPUT_SPINNER, false); final List historicMessagingMessages = createMessages(newHistoricMessages, - true /* isHistoric */); + /* isHistoric= */true, usePrecomputedText); final List newMessagingMessages = - createMessages(newMessages, false /* isHistoric */); - bindViews(user, showSpinner, historicMessagingMessages, newMessagingMessages); + createMessages(newMessages, /* isHistoric */false, usePrecomputedText); + + return new MessagingData(user, showSpinner, + historicMessagingMessages, newMessagingMessages); } /** @@ -193,7 +203,32 @@ public class MessagingLayout extends FrameLayout */ @NonNull public Runnable setDataAsync(Bundle extras) { - return () -> setData(extras); + if (!mPrecomputedTextEnabled) { + return () -> setData(extras); + } + + final MessagingData messagingData = + parseMessagingData(extras, /* usePrecomputedText= */true); + + return () -> { + finalizeInflate(messagingData.getHistoricMessagingMessages()); + finalizeInflate(messagingData.getNewMessagingMessages()); + bind(messagingData); + }; + } + + /** + * enable/disable precomputed text usage + * @hide + */ + public void setPrecomputedTextEnabled(boolean precomputedTextEnabled) { + mPrecomputedTextEnabled = precomputedTextEnabled; + } + + private void finalizeInflate(List historicMessagingMessages) { + for (MessagingMessage messagingMessage: historicMessagingMessages) { + messagingMessage.finalizeInflate(); + } } @Override @@ -218,17 +253,13 @@ public class MessagingLayout extends FrameLayout } } - private void bindViews(Person user, boolean showSpinner, - List historicMessagingMessages, - List newMessagingMessages) { - setUser(user); - bind(showSpinner, historicMessagingMessages, newMessagingMessages); - } + private void bind(MessagingData messagingData) { + setUser(messagingData.getUser()); - private void bind(boolean showSpinner, List historicMessages, - List messages) { + List historicMessages = messagingData.getHistoricMessagingMessages(); + List messages = messagingData.getNewMessagingMessages(); ArrayList oldGroups = new ArrayList<>(mGroups); - addMessagesToGroups(historicMessages, messages, showSpinner); + addMessagesToGroups(historicMessages, messages, messagingData.getShowSpinner()); // Let's first check which groups were removed altogether and remove them in one animation removeGroups(oldGroups); @@ -518,15 +549,17 @@ public class MessagingLayout extends FrameLayout * @param newMessages the messages to parse. */ private List createMessages( - List newMessages, boolean historic) { + List newMessages, boolean isHistoric, + boolean usePrecomputedText) { List result = new ArrayList<>(); for (int i = 0; i < newMessages.size(); i++) { Notification.MessagingStyle.Message m = newMessages.get(i); MessagingMessage message = findAndRemoveMatchingMessage(m); if (message == null) { - message = MessagingMessage.createMessage(this, m, mImageResolver); + message = MessagingMessage.createMessage(this, m, + mImageResolver, usePrecomputedText); } - message.setIsHistoric(historic); + message.setIsHistoric(isHistoric); result.add(message); } return result; diff --git a/core/java/com/android/internal/widget/MessagingMessage.java b/core/java/com/android/internal/widget/MessagingMessage.java index 5ecd3b82053dd69ad28b84a195c27edd01338adf..ad90a63ab1877bfa50ac1a0c8f66d8d32fad91c4 100644 --- a/core/java/com/android/internal/widget/MessagingMessage.java +++ b/core/java/com/android/internal/widget/MessagingMessage.java @@ -34,11 +34,12 @@ public interface MessagingMessage extends MessagingLinearLayout.MessagingChild { String IMAGE_MIME_TYPE_PREFIX = "image/"; static MessagingMessage createMessage(IMessagingLayout layout, - Notification.MessagingStyle.Message m, ImageResolver resolver) { + Notification.MessagingStyle.Message m, ImageResolver resolver, + boolean usePrecomputedText) { if (hasImage(m) && !ActivityManager.isLowRamDeviceStatic()) { - return MessagingImageMessage.createMessage(layout, m, resolver); + return MessagingImageMessage.createMessage(layout, m, resolver, usePrecomputedText); } else { - return MessagingTextMessage.createMessage(layout, m); + return MessagingTextMessage.createMessage(layout, m, usePrecomputedText); } } @@ -55,9 +56,11 @@ public interface MessagingMessage extends MessagingLinearLayout.MessagingChild { /** * Set a message for this view. + * * @return true if setting the message worked */ - default boolean setMessage(Notification.MessagingStyle.Message message) { + default boolean setMessage(Notification.MessagingStyle.Message message, + boolean usePrecomputedText) { getState().setMessage(message); return true; } @@ -151,4 +154,10 @@ public interface MessagingMessage extends MessagingLinearLayout.MessagingChild { void setVisibility(int visibility); int getVisibility(); + + /** + * Finalize inflation of the MessagingMessages, which should be called on Main Thread. + * @hide + */ + void finalizeInflate(); } diff --git a/core/java/com/android/internal/widget/MessagingTextMessage.java b/core/java/com/android/internal/widget/MessagingTextMessage.java index 19791dbad31ede297cbc13c6341762f6c2fefa95..bd62aad15b349b4f637dfe6426dedcd1705e8a64 100644 --- a/core/java/com/android/internal/widget/MessagingTextMessage.java +++ b/core/java/com/android/internal/widget/MessagingTextMessage.java @@ -23,7 +23,9 @@ import android.annotation.StyleRes; import android.app.Notification; import android.content.Context; import android.text.Layout; +import android.text.PrecomputedText; import android.util.AttributeSet; +import android.util.Log; import android.view.LayoutInflater; import android.widget.RemoteViews; @@ -35,10 +37,13 @@ import com.android.internal.R; @RemoteViews.RemoteView public class MessagingTextMessage extends ImageFloatingTextView implements MessagingMessage { + private static final String TAG = "MessagingTextMessage"; private static final MessagingPool sInstancePool = new MessagingPool<>(20); private final MessagingMessageState mState = new MessagingMessageState(this); + private PrecomputedText mPrecomputedText = null; + public MessagingTextMessage(@NonNull Context context) { super(context); } @@ -63,25 +68,32 @@ public class MessagingTextMessage extends ImageFloatingTextView implements Messa } @Override - public boolean setMessage(Notification.MessagingStyle.Message message) { - MessagingMessage.super.setMessage(message); - setText(message.getText()); + public boolean setMessage(Notification.MessagingStyle.Message message, + boolean usePrecomputedText) { + MessagingMessage.super.setMessage(message, usePrecomputedText); + if (usePrecomputedText) { + mPrecomputedText = PrecomputedText.create(message.getText(), getTextMetricsParams()); + } else { + setText(message.getText()); + mPrecomputedText = null; + } + return true; } static MessagingMessage createMessage(IMessagingLayout layout, - Notification.MessagingStyle.Message m) { + Notification.MessagingStyle.Message m, boolean usePrecomputedText) { MessagingLinearLayout messagingLinearLayout = layout.getMessagingLinearLayout(); MessagingTextMessage createdMessage = sInstancePool.acquire(); if (createdMessage == null) { createdMessage = (MessagingTextMessage) LayoutInflater.from( layout.getContext()).inflate( - R.layout.notification_template_messaging_text_message, - messagingLinearLayout, - false); + R.layout.notification_template_messaging_text_message, + messagingLinearLayout, + false); createdMessage.addOnLayoutChangeListener(MessagingLayout.MESSAGING_PROPERTY_ANIMATOR); } - createdMessage.setMessage(m); + createdMessage.setMessage(m, usePrecomputedText); return createdMessage; } @@ -135,4 +147,20 @@ public class MessagingTextMessage extends ImageFloatingTextView implements Messa public void setColor(int color) { setTextColor(color); } + + @Override + public void finalizeInflate() { + try { + setText(mPrecomputedText != null ? mPrecomputedText + : getState().getMessage().getText()); + } catch (IllegalArgumentException exception) { + Log.wtf( + /* tag = */ TAG, + /* msg = */ "PrecomputedText setText failed for TextView:" + this, + /* tr = */ exception + ); + mPrecomputedText = null; + setText(getState().getMessage().getText()); + } + } } diff --git a/core/java/com/android/internal/widget/NotificationDrawableConsumer.java b/core/java/com/android/internal/widget/NotificationDrawableConsumer.java new file mode 100644 index 0000000000000000000000000000000000000000..7c4d92968afb366c28a2bbd26277e59f8e8f1788 --- /dev/null +++ b/core/java/com/android/internal/widget/NotificationDrawableConsumer.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2023 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.internal.widget; + +import android.graphics.drawable.Drawable; + +import androidx.annotation.Nullable; + +/** + * An interface for the class, who will use {@link NotificationIconManager} to load icons. + */ +public interface NotificationDrawableConsumer { + + /** + * Sets a drawable as the content of this consumer. + * + * @param drawable the {@link Drawable} to set, or {@code null} to clear the content + */ + void setImageDrawable(@Nullable Drawable drawable); +} diff --git a/core/java/com/android/internal/widget/NotificationIconManager.java b/core/java/com/android/internal/widget/NotificationIconManager.java new file mode 100644 index 0000000000000000000000000000000000000000..221845cbbfd99d132bbc480bac9686f5bf76aa83 --- /dev/null +++ b/core/java/com/android/internal/widget/NotificationIconManager.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2023 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.internal.widget; + +import android.graphics.drawable.Icon; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +/** + * An interface used for Notification views to delegate handling the loading of icons. + */ +public interface NotificationIconManager { + + /** + * Called when a new icon is provided to display. + * + * @param drawableConsumer a consumer, which can display the loaded drawable. + * @param icon the updated icon to be displayed. + * + * @return a {@link Runnable} that sets the drawable on the consumer + */ + @NonNull + Runnable updateIcon( + @NonNull NotificationDrawableConsumer drawableConsumer, + @Nullable Icon icon + ); +} diff --git a/core/java/com/android/internal/widget/ResolverDrawerLayout.java b/core/java/com/android/internal/widget/ResolverDrawerLayout.java index 52ffc984c41e3f1d57c898f81ffc339ce16512bf..a513ca535620ffcef7f05d19f5b04fe62962f29a 100644 --- a/core/java/com/android/internal/widget/ResolverDrawerLayout.java +++ b/core/java/com/android/internal/widget/ResolverDrawerLayout.java @@ -21,6 +21,7 @@ import static android.content.res.Resources.ID_NULL; import android.annotation.IdRes; import android.content.Context; +import android.content.res.Configuration; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Rect; @@ -53,10 +54,13 @@ public class ResolverDrawerLayout extends ViewGroup { private static final String TAG = "ResolverDrawerLayout"; private MetricsLogger mMetricsLogger; + + /** - * Max width of the whole drawer layout + * Max width of the whole drawer layout and its res id */ - private final int mMaxWidth; + private int mMaxWidthResId; + private int mMaxWidth; /** * Max total visible height of views not marked always-show when in the closed/initial state @@ -152,6 +156,7 @@ public class ResolverDrawerLayout extends ViewGroup { final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ResolverDrawerLayout, defStyleAttr, 0); + mMaxWidthResId = a.getResourceId(R.styleable.ResolverDrawerLayout_maxWidth, -1); mMaxWidth = a.getDimensionPixelSize(R.styleable.ResolverDrawerLayout_maxWidth, -1); mMaxCollapsedHeight = a.getDimensionPixelSize( R.styleable.ResolverDrawerLayout_maxCollapsedHeight, 0); @@ -1042,6 +1047,18 @@ public class ResolverDrawerLayout extends ViewGroup { return mAlwaysShowHeight; } + /** + * Max width of the drawer needs to be updated after the configuration is changed. + * For example, foldables have different layout width when the device is folded and unfolded. + */ + @Override + protected void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + if (mMaxWidthResId > 0) { + mMaxWidth = getResources().getDimensionPixelSize(mMaxWidthResId); + } + } + @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { final int width = getWidth(); diff --git a/core/jni/Android.bp b/core/jni/Android.bp index c19265a8344187f5f1e9edbf50ed50d172fa5bcb..ad196c014decad4e87bfb144eafc43117273dc4f 100644 --- a/core/jni/Android.bp +++ b/core/jni/Android.bp @@ -78,6 +78,7 @@ cc_library_shared { "liblog", "libminikin", "libz", + "server_configurable_flags", ], static_libs: [ diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp index 9aa992bae72c176d43e80636366233034f6003d8..b5d70d379e0cebee42d3f1e412aaa79411043cf6 100644 --- a/core/jni/AndroidRuntime.cpp +++ b/core/jni/AndroidRuntime.cpp @@ -353,7 +353,7 @@ status_t AndroidRuntime::callMain(const String8& className, jclass clazz, JNIEnv* env; jmethodID methodId; - ALOGD("Calling main entry %s", className.string()); + ALOGD("Calling main entry %s", className.c_str()); env = getJNIEnv(); if (clazz == NULL || env == NULL) { @@ -362,7 +362,7 @@ status_t AndroidRuntime::callMain(const String8& className, jclass clazz, methodId = env->GetStaticMethodID(clazz, "main", "([Ljava/lang/String;)V"); if (methodId == NULL) { - ALOGE("ERROR: could not find method %s.main(String[])\n", className.string()); + ALOGE("ERROR: could not find method %s.main(String[])\n", className.c_str()); return UNKNOWN_ERROR; } @@ -378,7 +378,7 @@ status_t AndroidRuntime::callMain(const String8& className, jclass clazz, strArray = env->NewObjectArray(numArgs, stringClass, NULL); for (size_t i = 0; i < numArgs; i++) { - jstring argStr = env->NewStringUTF(args[i].string()); + jstring argStr = env->NewStringUTF(args[i].c_str()); env->SetObjectArrayElement(strArray, i, argStr); } @@ -1269,7 +1269,7 @@ void AndroidRuntime::start(const char* className, const Vector& options env->SetObjectArrayElement(strArray, 0, classNameStr); for (size_t i = 0; i < options.size(); ++i) { - jstring optionsStr = env->NewStringUTF(options.itemAt(i).string()); + jstring optionsStr = env->NewStringUTF(options.itemAt(i).c_str()); assert(optionsStr != NULL); env->SetObjectArrayElement(strArray, i + 1, optionsStr); } diff --git a/core/jni/android_app_NativeActivity.cpp b/core/jni/android_app_NativeActivity.cpp index 21369f9cf5f8c5903c3d5c6d54551041025a3269..d6c559322ef1420e210804ca441e322ed383803c 100644 --- a/core/jni/android_app_NativeActivity.cpp +++ b/core/jni/android_app_NativeActivity.cpp @@ -352,7 +352,7 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName const char* dirStr = env->GetStringUTFChars(internalDataDir, NULL); code->internalDataPathObj = dirStr; - code->internalDataPath = code->internalDataPathObj.string(); + code->internalDataPath = code->internalDataPathObj.c_str(); env->ReleaseStringUTFChars(internalDataDir, dirStr); if (externalDataDir != NULL) { @@ -360,7 +360,7 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName code->externalDataPathObj = dirStr; env->ReleaseStringUTFChars(externalDataDir, dirStr); } - code->externalDataPath = code->externalDataPathObj.string(); + code->externalDataPath = code->externalDataPathObj.c_str(); code->sdkVersion = sdkVersion; @@ -372,7 +372,7 @@ loadNativeCode_native(JNIEnv* env, jobject clazz, jstring path, jstring funcName code->obbPathObj = dirStr; env->ReleaseStringUTFChars(obbDir, dirStr); } - code->obbPath = code->obbPathObj.string(); + code->obbPath = code->obbPathObj.c_str(); jbyte* rawSavedState = NULL; jsize rawSavedSize = 0; diff --git a/core/jni/android_app_backup_FullBackup.cpp b/core/jni/android_app_backup_FullBackup.cpp index 339a7d30e4072e47e3af3b15b1ba4c9316d1f503..5e096d7623addfb7c1f26b302b59a2310f1e76c8 100644 --- a/core/jni/android_app_backup_FullBackup.cpp +++ b/core/jni/android_app_backup_FullBackup.cpp @@ -106,15 +106,14 @@ static jint backupToTar(JNIEnv* env, jobject clazz, jstring packageNameObj, : NULL; if (path.length() < rootpath.length()) { - ALOGE("file path [%s] shorter than root path [%s]", - path.string(), rootpath.string()); + ALOGE("file path [%s] shorter than root path [%s]", path.c_str(), rootpath.c_str()); return (jint) -1; } off64_t tarSize = 0; jint err = write_tarfile(packageName, domain, rootpath, path, &tarSize, writer); if (!err) { - ALOGI("measured [%s] at %lld", path.string(), (long long)tarSize); + ALOGI("measured [%s] at %lld", path.c_str(), (long long)tarSize); env->CallVoidMethod(dataOutputObj, sFullBackupDataOutput.addSize, (jlong) tarSize); } diff --git a/core/jni/android_backup_BackupDataInput.cpp b/core/jni/android_backup_BackupDataInput.cpp index 79fa2a28666c3726de7728c2e57f78a1f3c509fe..fc081a782b4a6335b14ac5cbf67ca982bd51fc8e 100644 --- a/core/jni/android_backup_BackupDataInput.cpp +++ b/core/jni/android_backup_BackupDataInput.cpp @@ -76,7 +76,7 @@ readNextHeader_native(JNIEnv* env, jobject clazz, jlong r, jobject entity) return err < 0 ? err : -1; } // TODO: Set the fields in the entity object - jstring keyStr = env->NewStringUTF(key.string()); + jstring keyStr = env->NewStringUTF(key.c_str()); env->SetObjectField(entity, s_keyField, keyStr); env->SetIntField(entity, s_dataSizeField, dataSize); return 0; diff --git a/core/jni/android_backup_BackupHelperDispatcher.cpp b/core/jni/android_backup_BackupHelperDispatcher.cpp index efe7d0b6ad0aecf14475f9b5f37f63e058e04ff0..efce8e164817691b2573eeb276eef90ca19a30ee 100644 --- a/core/jni/android_backup_BackupHelperDispatcher.cpp +++ b/core/jni/android_backup_BackupHelperDispatcher.cpp @@ -118,7 +118,7 @@ readHeader_native(JNIEnv* env, jobject clazz, jobject headerObj, jobject fdObj) } env->SetIntField(headerObj, s_chunkSizeField, flattenedHeader.dataSize); - env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.string())); + env->SetObjectField(headerObj, s_keyPrefixField, env->NewStringUTF(keyPrefix.c_str())); return (jint) 0; } diff --git a/core/jni/android_content_res_ObbScanner.cpp b/core/jni/android_content_res_ObbScanner.cpp index de429a07d0f68297a7ffd25f1dceb3fe2f2d3ad1..760037f63195dbb2ac9e589ac0a3771a4d6842a8 100644 --- a/core/jni/android_content_res_ObbScanner.cpp +++ b/core/jni/android_content_res_ObbScanner.cpp @@ -52,7 +52,7 @@ static void android_content_res_ObbScanner_getObbInfo(JNIEnv* env, jobject clazz env->ReleaseStringUTFChars(file, filePath); - const char* packageNameStr = obb->getPackageName().string(); + const char* packageNameStr = obb->getPackageName().c_str(); jstring packageName = env->NewStringUTF(packageNameStr); if (packageName == NULL) { diff --git a/core/jni/android_database_CursorWindow.cpp b/core/jni/android_database_CursorWindow.cpp index 2435406937856c7ab3b744f714b2078135f77751..c0e9215267e60341b56d66b15065544d69fc8e4e 100644 --- a/core/jni/android_database_CursorWindow.cpp +++ b/core/jni/android_database_CursorWindow.cpp @@ -58,13 +58,13 @@ static void throwExceptionWithRowCol(JNIEnv* env, jint row, jint column) { msg.appendFormat("Couldn't read row %d, col %d from CursorWindow. " "Make sure the Cursor is initialized correctly before accessing data from it.", row, column); - jniThrowException(env, "java/lang/IllegalStateException", msg.string()); + jniThrowException(env, "java/lang/IllegalStateException", msg.c_str()); } static void throwUnknownTypeException(JNIEnv * env, jint type) { String8 msg; msg.appendFormat("UNKNOWN type %d", type); - jniThrowException(env, "java/lang/IllegalStateException", msg.string()); + jniThrowException(env, "java/lang/IllegalStateException", msg.c_str()); } static int getFdCount() { @@ -89,7 +89,7 @@ static jlong nativeCreate(JNIEnv* env, jclass clazz, jstring nameObj, jint curso CursorWindow* window; const char* nameStr = env->GetStringUTFChars(nameObj, NULL); - name.setTo(nameStr); + name = nameStr; env->ReleaseStringUTFChars(nameObj, nameStr); if (cursorWindowSize < 0) { @@ -107,7 +107,7 @@ static jlong nativeCreate(JNIEnv* env, jclass clazz, jstring nameObj, jint curso fail: jniThrowExceptionFmt(env, "android/database/CursorWindowAllocationException", "Could not allocate CursorWindow '%s' of size %d due to error %d.", - name.string(), cursorWindowSize, status); + name.c_str(), cursorWindowSize, status); return 0; } @@ -139,7 +139,7 @@ static void nativeDispose(JNIEnv* env, jclass clazz, jlong windowPtr) { static jstring nativeGetName(JNIEnv* env, jclass clazz, jlong windowPtr) { CursorWindow* window = reinterpret_cast(windowPtr); - return env->NewStringUTF(window->name().string()); + return env->NewStringUTF(window->name().c_str()); } static void nativeWriteToParcel(JNIEnv * env, jclass clazz, jlong windowPtr, @@ -151,7 +151,7 @@ static void nativeWriteToParcel(JNIEnv * env, jclass clazz, jlong windowPtr, if (status) { String8 msg; msg.appendFormat("Could not write CursorWindow to Parcel due to error %d.", status); - jniThrowRuntimeException(env, msg.string()); + jniThrowRuntimeException(env, msg.c_str()); } } @@ -267,7 +267,7 @@ static jstring nativeGetString(JNIEnv* env, jclass clazz, jlong windowPtr, // doesn't like UTF-8 strings with high codepoints. It actually expects // Modified UTF-8 with encoded surrogate pairs. String16 utf16(value, sizeIncludingNull - 1); - return env->NewString(reinterpret_cast(utf16.string()), utf16.size()); + return env->NewString(reinterpret_cast(utf16.c_str()), utf16.size()); } else if (type == CursorWindow::FIELD_TYPE_INTEGER) { int64_t value = window->getFieldSlotValueLong(fieldSlot); char buf[32]; diff --git a/core/jni/android_database_SQLiteCommon.cpp b/core/jni/android_database_SQLiteCommon.cpp index daa20876ba65424f7c279ae8d41baeb06715bb5c..c6a75112d1854324a9799d81de5dcc9a3c5cae0c 100644 --- a/core/jni/android_database_SQLiteCommon.cpp +++ b/core/jni/android_database_SQLiteCommon.cpp @@ -229,7 +229,7 @@ void throw_sqlite3_exception(JNIEnv* env, int errcode, fullMessage.append(": "); fullMessage.append(message); } - jniThrowException(env, exceptionClass, fullMessage.string()); + jniThrowException(env, exceptionClass, fullMessage.c_str()); } else { jniThrowException(env, exceptionClass, message); } diff --git a/core/jni/android_database_SQLiteConnection.cpp b/core/jni/android_database_SQLiteConnection.cpp index 29520c24da75c1561a8e8bf6a0f701c544a6bc54..893cc98ff9b10b95bba611fe11963c2a5c81bbd1 100644 --- a/core/jni/android_database_SQLiteConnection.cpp +++ b/core/jni/android_database_SQLiteConnection.cpp @@ -91,15 +91,14 @@ struct SQLiteConnection { // Called each time a statement begins execution, when tracing is enabled. static void sqliteTraceCallback(void *data, const char *sql) { SQLiteConnection* connection = static_cast(data); - ALOG(LOG_VERBOSE, SQLITE_TRACE_TAG, "%s: \"%s\"\n", - connection->label.string(), sql); + ALOG(LOG_VERBOSE, SQLITE_TRACE_TAG, "%s: \"%s\"\n", connection->label.c_str(), sql); } // Called each time a statement finishes execution, when profiling is enabled. static void sqliteProfileCallback(void *data, const char *sql, sqlite3_uint64 tm) { SQLiteConnection* connection = static_cast(data); - ALOG(LOG_VERBOSE, SQLITE_PROFILE_TAG, "%s: \"%s\" took %0.3f ms\n", - connection->label.string(), sql, tm * 0.000001f); + ALOG(LOG_VERBOSE, SQLITE_PROFILE_TAG, "%s: \"%s\" took %0.3f ms\n", connection->label.c_str(), + sql, tm * 0.000001f); } // Called after each SQLite VM instruction when cancelation is enabled. @@ -130,7 +129,7 @@ static jlong nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFla env->ReleaseStringUTFChars(labelStr, labelChars); sqlite3* db; - int err = sqlite3_open_v2(path.string(), &db, sqliteFlags, NULL); + int err = sqlite3_open_v2(path.c_str(), &db, sqliteFlags, NULL); if (err != SQLITE_OK) { throw_sqlite3_exception_errcode(env, err, "Could not open database"); return 0; @@ -180,7 +179,7 @@ static jlong nativeOpen(JNIEnv* env, jclass clazz, jstring pathStr, jint openFla sqlite3_profile(db, &sqliteProfileCallback, connection); } - ALOGV("Opened connection %p with label '%s'", db, label.string()); + ALOGV("Opened connection %p with label '%s'", db, label.c_str()); return reinterpret_cast(connection); } @@ -760,7 +759,7 @@ static jlong nativeExecuteForCursorWindow(JNIEnv* env, jclass clazz, if (status) { String8 msg; msg.appendFormat("Failed to clear the cursor window, status=%d", status); - throw_sqlite3_exception(env, connection->db, msg.string()); + throw_sqlite3_exception(env, connection->db, msg.c_str()); return 0; } @@ -770,7 +769,7 @@ static jlong nativeExecuteForCursorWindow(JNIEnv* env, jclass clazz, String8 msg; msg.appendFormat("Failed to set the cursor window column count to %d, status=%d", numColumns, status); - throw_sqlite3_exception(env, connection->db, msg.string()); + throw_sqlite3_exception(env, connection->db, msg.c_str()); return 0; } @@ -845,7 +844,7 @@ static jlong nativeExecuteForCursorWindow(JNIEnv* env, jclass clazz, String8 msg; msg.appendFormat("Row too big to fit into CursorWindow requiredPos=%d, totalRows=%d", requiredPos, totalRows); - throw_sqlite3_exception(env, SQLITE_TOOBIG, NULL, msg.string()); + throw_sqlite3_exception(env, SQLITE_TOOBIG, NULL, msg.c_str()); return 0; } diff --git a/core/jni/android_ddm_DdmHandleNativeHeap.cpp b/core/jni/android_ddm_DdmHandleNativeHeap.cpp index 2ca4500991fac1e2eb6adb51bd332c222764e244..d36d29ca301d5acba51403850c72cb333b2a1ce0 100644 --- a/core/jni/android_ddm_DdmHandleNativeHeap.cpp +++ b/core/jni/android_ddm_DdmHandleNativeHeap.cpp @@ -100,8 +100,8 @@ static jbyteArray DdmHandleNativeHeap_getLeakInfo(JNIEnv* env, jobject) { if (array != NULL) { env->SetByteArrayRegion(array, 0, sizeof(header), reinterpret_cast(&header)); - env->SetByteArrayRegion(array, sizeof(header), - maps.size(), reinterpret_cast(maps.string())); + env->SetByteArrayRegion(array, sizeof(header), maps.size(), + reinterpret_cast(maps.c_str())); env->SetByteArrayRegion(array, sizeof(header) + maps.size(), header.allocSize, reinterpret_cast(leak_info.buffer)); } diff --git a/core/jni/android_hardware_Camera.cpp b/core/jni/android_hardware_Camera.cpp index 1c597424f221025819a61cffba6f50a5e508d83d..5f3a1b5be154c9107ea20171bab9c8e5d787da21 100644 --- a/core/jni/android_hardware_Camera.cpp +++ b/core/jni/android_hardware_Camera.cpp @@ -874,11 +874,11 @@ static jstring android_hardware_Camera_getParameters(JNIEnv *env, jobject thiz) if (camera == 0) return 0; String8 params8 = camera->getParameters(); - if (params8.isEmpty()) { + if (params8.empty()) { jniThrowRuntimeException(env, "getParameters failed (empty parameters)"); return 0; } - return env->NewStringUTF(params8.string()); + return env->NewStringUTF(params8.c_str()); } static void android_hardware_Camera_reconnect(JNIEnv *env, jobject thiz) diff --git a/core/jni/android_hardware_SensorManager.cpp b/core/jni/android_hardware_SensorManager.cpp index 9c6a534c3bbb6b149cf31ef4c1d0dab3134247ed..deb138fda8679cc7990ea688978ba725593444b7 100644 --- a/core/jni/android_hardware_SensorManager.cpp +++ b/core/jni/android_hardware_SensorManager.cpp @@ -150,7 +150,7 @@ static jstring getJavaInternedString(JNIEnv *env, const String8 &string) { return gStringOffsets.emptyString; } - ScopedLocalRef javaString(env, env->NewStringUTF(string.string())); + ScopedLocalRef javaString(env, env->NewStringUTF(string.c_str())); jstring internedString = (jstring) env->CallObjectMethod(javaString.get(), gStringOffsets.intern); return internedString; diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp index 5293c583cfd0e1ddc9fae3eec36eda1fee6c2710..041fed74c57397cc8e83b82c7284b3606e3ec1a0 100644 --- a/core/jni/android_hardware_camera2_CameraMetadata.cpp +++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp @@ -514,7 +514,7 @@ static void CameraMetadata_dump(JNIEnv *env, jclass thiz, jlong ptr) { ssize_t res; while ((res = TEMP_FAILURE_RETRY(read(readFd, &out[0], /*count*/1))) > 0) { if (out[0] == '\n') { - ALOGD("%s", logLine.string()); + ALOGD("%s", logLine.c_str()); logLine.clear(); } else { logLine.append(out); @@ -526,8 +526,8 @@ static void CameraMetadata_dump(JNIEnv *env, jclass thiz, jlong ptr) { "Failed to read from fd (errno = %#x, message = '%s')", errno, strerror(errno)); //return; - } else if (!logLine.isEmpty()) { - ALOGD("%s", logLine.string()); + } else if (!logLine.empty()) { + ALOGD("%s", logLine.c_str()); } close(readFd); @@ -956,8 +956,8 @@ static jint CameraMetadata_setupGlobalVendorTagDescriptor(JNIEnv *env, jclass th return OK; } else if (!res.isOk()) { VendorTagDescriptor::clearGlobalVendorTagDescriptor(); - ALOGE("%s: Failed to setup vendor tag descriptors: %s", - __FUNCTION__, res.toString8().string()); + ALOGE("%s: Failed to setup vendor tag descriptors: %s", __FUNCTION__, + res.toString8().c_str()); return res.serviceSpecificErrorCode(); } if (0 < desc->getTagCount()) { @@ -971,8 +971,8 @@ static jint CameraMetadata_setupGlobalVendorTagDescriptor(JNIEnv *env, jclass th return OK; } else if (!res.isOk()) { VendorTagDescriptorCache::clearGlobalVendorTagCache(); - ALOGE("%s: Failed to setup vendor tag cache: %s", - __FUNCTION__, res.toString8().string()); + ALOGE("%s: Failed to setup vendor tag cache: %s", __FUNCTION__, + res.toString8().c_str()); return res.serviceSpecificErrorCode(); } diff --git a/core/jni/android_hardware_camera2_DngCreator.cpp b/core/jni/android_hardware_camera2_DngCreator.cpp index c947fba2dbd921de52d7998d8ed9e0f4aaf8968a..30e546cc290d33deac1ad46a4a8f588d9d813960 100644 --- a/core/jni/android_hardware_camera2_DngCreator.cpp +++ b/core/jni/android_hardware_camera2_DngCreator.cpp @@ -1543,7 +1543,8 @@ static sp DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image String8 captureTime = nativeContext->getCaptureTime(); if (writer->addEntry(TAG_DATETIME, NativeContext::DATETIME_COUNT, - reinterpret_cast(captureTime.string()), TIFF_IFD_0) != OK) { + reinterpret_cast(captureTime.c_str()), + TIFF_IFD_0) != OK) { jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException", "Invalid metadata for tag %x", TAG_DATETIME); return nullptr; @@ -1551,7 +1552,8 @@ static sp DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image // datetime original if (writer->addEntry(TAG_DATETIMEORIGINAL, NativeContext::DATETIME_COUNT, - reinterpret_cast(captureTime.string()), TIFF_IFD_0) != OK) { + reinterpret_cast(captureTime.c_str()), + TIFF_IFD_0) != OK) { jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException", "Invalid metadata for tag %x", TAG_DATETIMEORIGINAL); return nullptr; @@ -1879,8 +1881,10 @@ static sp DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image cameraModel += brand.c_str(); BAIL_IF_INVALID_RET_NULL_SP(writer->addEntry(TAG_UNIQUECAMERAMODEL, cameraModel.size() + 1, - reinterpret_cast(cameraModel.string()), TIFF_IFD_0), env, - TAG_UNIQUECAMERAMODEL, writer); + reinterpret_cast( + cameraModel.c_str()), + TIFF_IFD_0), + env, TAG_UNIQUECAMERAMODEL, writer); } { @@ -2165,7 +2169,8 @@ static sp DngCreator_setup(JNIEnv* env, jobject thiz, uint32_t image String8 description = nativeContext->getDescription(); size_t len = description.bytes() + 1; if (writer->addEntry(TAG_IMAGEDESCRIPTION, len, - reinterpret_cast(description.string()), TIFF_IFD_0) != OK) { + reinterpret_cast(description.c_str()), + TIFF_IFD_0) != OK) { jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException", "Invalid metadata for tag %x", TAG_IMAGEDESCRIPTION); } diff --git a/core/jni/android_hardware_input_InputWindowHandle.cpp b/core/jni/android_hardware_input_InputWindowHandle.cpp index eb5f2977e22163cd0c3606817b9c02764665d829..ea3c70f5e60b36f6bcfd0178119b3fcc20386555 100644 --- a/core/jni/android_hardware_input_InputWindowHandle.cpp +++ b/core/jni/android_hardware_input_InputWindowHandle.cpp @@ -35,6 +35,7 @@ #include "android_util_Binder.h" #include "core_jni_helpers.h" #include "jni.h" +#include "jni_common.h" namespace android { @@ -57,10 +58,7 @@ static struct { jfieldID layoutParamsFlags; jfieldID layoutParamsType; jfieldID dispatchingTimeoutMillis; - jfieldID frameLeft; - jfieldID frameTop; - jfieldID frameRight; - jfieldID frameBottom; + jfieldID frame; jfieldID surfaceInset; jfieldID scaleFactor; jfieldID touchableRegion; @@ -128,14 +126,11 @@ bool NativeInputWindowHandle::updateInfo() { mInfo.dispatchingTimeout = std::chrono::milliseconds( env->GetLongField(obj, gInputWindowHandleClassInfo.dispatchingTimeoutMillis)); - mInfo.frameLeft = env->GetIntField(obj, - gInputWindowHandleClassInfo.frameLeft); - mInfo.frameTop = env->GetIntField(obj, - gInputWindowHandleClassInfo.frameTop); - mInfo.frameRight = env->GetIntField(obj, - gInputWindowHandleClassInfo.frameRight); - mInfo.frameBottom = env->GetIntField(obj, - gInputWindowHandleClassInfo.frameBottom); + + ScopedLocalRef frameObj(env, + env->GetObjectField(obj, gInputWindowHandleClassInfo.frame)); + mInfo.frame = JNICommon::rectFromObj(env, frameObj.get()); + mInfo.surfaceInset = env->GetIntField(obj, gInputWindowHandleClassInfo.surfaceInset); mInfo.globalScaleFactor = env->GetFloatField(obj, @@ -283,13 +278,9 @@ jobject android_view_InputWindowHandle_fromWindowInfo(JNIEnv* env, gui::WindowIn std::chrono::duration_cast( windowInfo.dispatchingTimeout) .count()); - env->SetIntField(inputWindowHandle, gInputWindowHandleClassInfo.frameLeft, - windowInfo.frameLeft); - env->SetIntField(inputWindowHandle, gInputWindowHandleClassInfo.frameTop, windowInfo.frameTop); - env->SetIntField(inputWindowHandle, gInputWindowHandleClassInfo.frameRight, - windowInfo.frameRight); - env->SetIntField(inputWindowHandle, gInputWindowHandleClassInfo.frameBottom, - windowInfo.frameBottom); + ScopedLocalRef rectObj(env, JNICommon::objFromRect(env, windowInfo.frame)); + env->SetObjectField(inputWindowHandle, gInputWindowHandleClassInfo.frame, rectObj.get()); + env->SetIntField(inputWindowHandle, gInputWindowHandleClassInfo.surfaceInset, windowInfo.surfaceInset); env->SetFloatField(inputWindowHandle, gInputWindowHandleClassInfo.scaleFactor, @@ -400,17 +391,7 @@ int register_android_view_InputWindowHandle(JNIEnv* env) { GET_FIELD_ID(gInputWindowHandleClassInfo.dispatchingTimeoutMillis, clazz, "dispatchingTimeoutMillis", "J"); - GET_FIELD_ID(gInputWindowHandleClassInfo.frameLeft, clazz, - "frameLeft", "I"); - - GET_FIELD_ID(gInputWindowHandleClassInfo.frameTop, clazz, - "frameTop", "I"); - - GET_FIELD_ID(gInputWindowHandleClassInfo.frameRight, clazz, - "frameRight", "I"); - - GET_FIELD_ID(gInputWindowHandleClassInfo.frameBottom, clazz, - "frameBottom", "I"); + GET_FIELD_ID(gInputWindowHandleClassInfo.frame, clazz, "frame", "Landroid/graphics/Rect;"); GET_FIELD_ID(gInputWindowHandleClassInfo.surfaceInset, clazz, "surfaceInset", "I"); diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp index 199854818989f95d16feaf8dee8027da1a799498..6440cc3952f84ed53c68c39577e218ccba1331cc 100644 --- a/core/jni/android_media_AudioSystem.cpp +++ b/core/jni/android_media_AudioSystem.cpp @@ -494,7 +494,7 @@ android_media_AudioSystem_getParameters(JNIEnv *env, jobject thiz, jstring keys) env->GetStringLength(keys)); env->ReleaseStringCritical(keys, c_keys); } - return env->NewStringUTF(AudioSystem::getParameters(c_keys8).string()); + return env->NewStringUTF(AudioSystem::getParameters(c_keys8).c_str()); } static void @@ -523,7 +523,7 @@ android_media_AudioSystem_dyn_policy_callback(int event, String8 regId, int val) } jclass clazz = env->FindClass(kClassPathName); - const char *regIdString = regId.string(); + const char *regIdString = regId.c_str(); jstring regIdJString = env->NewStringUTF(regIdString); env->CallStaticVoidMethod(clazz, gAudioPolicyEventHandlerMethods.postDynPolicyEventFromNative, @@ -2071,10 +2071,67 @@ jobject convertAudioMixerAttributesFromNative(JNIEnv *env, mixerBehavior); } -static jint convertAudioMixToNative(JNIEnv *env, - AudioMix *nAudioMix, - const jobject jAudioMix) -{ +static jint convertAudioMixingRuleToNative(JNIEnv *env, const jobject audioMixingRule, + std::vector *nCriteria) { + jobject jRuleCriteria = env->GetObjectField(audioMixingRule, gAudioMixingRuleFields.mCriteria); + + jobjectArray jCriteria = static_cast( + env->CallObjectMethod(jRuleCriteria, gArrayListMethods.toArray)); + env->DeleteLocalRef(jRuleCriteria); + + jint numCriteria = env->GetArrayLength(jCriteria); + if (numCriteria > MAX_CRITERIA_PER_MIX) { + numCriteria = MAX_CRITERIA_PER_MIX; + } + + nCriteria->resize(numCriteria); + for (jint i = 0; i < numCriteria; i++) { + AudioMixMatchCriterion &nCriterion = (*nCriteria)[i]; + + jobject jCriterion = env->GetObjectArrayElement(jCriteria, i); + + nCriterion.mRule = env->GetIntField(jCriterion, gAudioMixMatchCriterionFields.mRule); + + const uint32_t match_rule = nCriterion.mRule & ~RULE_EXCLUSION_MASK; + switch (match_rule) { + case RULE_MATCH_UID: + nCriterion.mValue.mUid = + env->GetIntField(jCriterion, gAudioMixMatchCriterionFields.mIntProp); + break; + case RULE_MATCH_USERID: + nCriterion.mValue.mUserId = + env->GetIntField(jCriterion, gAudioMixMatchCriterionFields.mIntProp); + break; + case RULE_MATCH_AUDIO_SESSION_ID: { + jint jAudioSessionId = + env->GetIntField(jCriterion, gAudioMixMatchCriterionFields.mIntProp); + nCriterion.mValue.mAudioSessionId = static_cast(jAudioSessionId); + } break; + case RULE_MATCH_ATTRIBUTE_USAGE: + case RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET: { + jobject jAttributes = + env->GetObjectField(jCriterion, gAudioMixMatchCriterionFields.mAttr); + + auto paa = JNIAudioAttributeHelper::makeUnique(); + jint jStatus = JNIAudioAttributeHelper::nativeFromJava(env, jAttributes, paa.get()); + if (jStatus != AUDIO_JAVA_SUCCESS) { + return jStatus; + } + if (match_rule == RULE_MATCH_ATTRIBUTE_USAGE) { + nCriterion.mValue.mUsage = paa->usage; + } else { + nCriterion.mValue.mSource = paa->source; + } + env->DeleteLocalRef(jAttributes); + } break; + } + env->DeleteLocalRef(jCriterion); + } + env->DeleteLocalRef(jCriteria); + return AUDIO_JAVA_SUCCESS; +} + +static jint convertAudioMixToNative(JNIEnv *env, AudioMix *nAudioMix, const jobject jAudioMix) { nAudioMix->mMixType = env->GetIntField(jAudioMix, gAudioMixFields.mMixType); nAudioMix->mRouteFlags = env->GetIntField(jAudioMix, gAudioMixFields.mRouteFlags); nAudioMix->mDeviceType = @@ -2094,69 +2151,16 @@ static jint convertAudioMixToNative(JNIEnv *env, env->DeleteLocalRef(jFormat); jobject jRule = env->GetObjectField(jAudioMix, gAudioMixFields.mRule); - jobject jRuleCriteria = env->GetObjectField(jRule, gAudioMixingRuleFields.mCriteria); nAudioMix->mAllowPrivilegedMediaPlaybackCapture = env->GetBooleanField(jRule, gAudioMixingRuleFields.mAllowPrivilegedPlaybackCapture); nAudioMix->mVoiceCommunicationCaptureAllowed = env->GetBooleanField(jRule, gAudioMixingRuleFields.mVoiceCommunicationCaptureAllowed); - env->DeleteLocalRef(jRule); - jobjectArray jCriteria = static_cast( - env->CallObjectMethod(jRuleCriteria, gArrayListMethods.toArray)); - env->DeleteLocalRef(jRuleCriteria); - - jint numCriteria = env->GetArrayLength(jCriteria); - if (numCriteria > MAX_CRITERIA_PER_MIX) { - numCriteria = MAX_CRITERIA_PER_MIX; - } - for (jint i = 0; i < numCriteria; i++) { - AudioMixMatchCriterion nCriterion; + jint status = convertAudioMixingRuleToNative(env, jRule, &(nAudioMix->mCriteria)); - jobject jCriterion = env->GetObjectArrayElement(jCriteria, i); - - nCriterion.mRule = env->GetIntField(jCriterion, gAudioMixMatchCriterionFields.mRule); - - const uint32_t match_rule = nCriterion.mRule & ~RULE_EXCLUSION_MASK; - switch (match_rule) { - case RULE_MATCH_UID: - nCriterion.mValue.mUid = env->GetIntField(jCriterion, - gAudioMixMatchCriterionFields.mIntProp); - break; - case RULE_MATCH_USERID: - nCriterion.mValue.mUserId = - env->GetIntField(jCriterion, gAudioMixMatchCriterionFields.mIntProp); - break; - case RULE_MATCH_AUDIO_SESSION_ID: { - jint jAudioSessionId = - env->GetIntField(jCriterion, gAudioMixMatchCriterionFields.mIntProp); - nCriterion.mValue.mAudioSessionId = static_cast(jAudioSessionId); - } break; - case RULE_MATCH_ATTRIBUTE_USAGE: - case RULE_MATCH_ATTRIBUTE_CAPTURE_PRESET: { - jobject jAttributes = env->GetObjectField(jCriterion, gAudioMixMatchCriterionFields.mAttr); - - auto paa = JNIAudioAttributeHelper::makeUnique(); - jint jStatus = JNIAudioAttributeHelper::nativeFromJava(env, jAttributes, paa.get()); - if (jStatus != AUDIO_JAVA_SUCCESS) { - return jStatus; - } - if (match_rule == RULE_MATCH_ATTRIBUTE_USAGE) { - nCriterion.mValue.mUsage = paa->usage; - } else { - nCriterion.mValue.mSource = paa->source; - } - env->DeleteLocalRef(jAttributes); - } - break; - } - - nAudioMix->mCriteria.push_back(nCriterion); - env->DeleteLocalRef(jCriterion); - } - - env->DeleteLocalRef(jCriteria); + env->DeleteLocalRef(jRule); - return AUDIO_JAVA_SUCCESS; + return status; } static jint @@ -2200,6 +2204,45 @@ android_media_AudioSystem_registerPolicyMixes(JNIEnv *env, jobject clazz, return nativeToJavaStatus(status); } +static jint android_media_AudioSystem_updatePolicyMixes(JNIEnv *env, jobject clazz, + jobjectArray mixes, + jobjectArray updatedMixingRules) { + if (mixes == nullptr || updatedMixingRules == nullptr) { + return AUDIO_JAVA_BAD_VALUE; + } + + jsize updatesCount = env->GetArrayLength(mixes); + if (updatesCount == 0 || updatesCount != env->GetArrayLength(updatedMixingRules)) { + return AUDIO_JAVA_BAD_VALUE; + } + + std::vector>> updates(updatesCount); + for (int i = 0; i < updatesCount; i++) { + jobject jAudioMix = env->GetObjectArrayElement(mixes, i); + jobject jAudioMixingRule = env->GetObjectArrayElement(updatedMixingRules, i); + if (!env->IsInstanceOf(jAudioMix, gAudioMixClass) || + !env->IsInstanceOf(jAudioMixingRule, gAudioMixingRuleClass)) { + return AUDIO_JAVA_BAD_VALUE; + } + + jint ret; + if ((ret = convertAudioMixToNative(env, &updates[i].first, jAudioMix)) != + AUDIO_JAVA_SUCCESS) { + return ret; + } + if ((ret = convertAudioMixingRuleToNative(env, jAudioMixingRule, &updates[i].second)) != + AUDIO_JAVA_SUCCESS) { + return ret; + } + } + + ALOGV("AudioSystem::updatePolicyMixes numMixes %d", updatesCount); + int status = AudioSystem::updatePolicyMixes(updates); + ALOGV("AudioSystem::updatePolicyMixes returned %d", status); + + return nativeToJavaStatus(status); +} + static jint android_media_AudioSystem_setUidDeviceAffinities(JNIEnv *env, jobject clazz, jint uid, jintArray deviceTypes, jobjectArray deviceAddresses) { AudioDeviceTypeAddrVector deviceVector; @@ -3158,6 +3201,10 @@ static const JNINativeMethod gMethods[] = MAKE_AUDIO_SYSTEM_METHOD(getAudioHwSyncForSession), MAKE_JNI_NATIVE_METHOD("registerPolicyMixes", "(Ljava/util/ArrayList;Z)I", android_media_AudioSystem_registerPolicyMixes), + MAKE_JNI_NATIVE_METHOD("updatePolicyMixes", + "([Landroid/media/audiopolicy/AudioMix;[Landroid/media/audiopolicy/" + "AudioMixingRule;)I", + android_media_AudioSystem_updatePolicyMixes), MAKE_JNI_NATIVE_METHOD("setUidDeviceAffinities", "(I[I[Ljava/lang/String;)I", android_media_AudioSystem_setUidDeviceAffinities), MAKE_AUDIO_SYSTEM_METHOD(removeUidDeviceAffinities), diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp index fe957624cf4bc58febf36ea64c285c5553326bad..e0bcef642d82b492836a19ace5038acfb9d80317 100644 --- a/core/jni/android_os_Debug.cpp +++ b/core/jni/android_os_Debug.cpp @@ -565,6 +565,51 @@ static jlong android_os_Debug_getPss(JNIEnv *env, jobject clazz) return android_os_Debug_getPssPid(env, clazz, getpid(), NULL, NULL); } +static jlong android_os_Debug_getRssPid(JNIEnv* env, jobject clazz, jint pid, + jlongArray outMemtrack) { + jlong rss = 0; + jlong memtrack = 0; + + struct graphics_memory_pss graphics_mem; + if (read_memtrack_memory(pid, &graphics_mem) == 0) { + rss = memtrack = graphics_mem.graphics + graphics_mem.gl + graphics_mem.other; + } + + ::android::meminfo::ProcMemInfo proc_mem(pid); + uint64_t status_rss; + if (proc_mem.StatusVmRSS(&status_rss)) { + rss += status_rss; + } else { + return 0; + } + + if (outMemtrack != NULL) { + int outLen = env->GetArrayLength(outMemtrack); + if (outLen >= 1) { + jlong* outMemtrackArray = env->GetLongArrayElements(outMemtrack, 0); + if (outMemtrackArray != NULL) { + outMemtrackArray[0] = memtrack; + if (outLen >= 2) { + outMemtrackArray[1] = graphics_mem.graphics; + } + if (outLen >= 3) { + outMemtrackArray[2] = graphics_mem.gl; + } + if (outLen >= 4) { + outMemtrackArray[3] = graphics_mem.other; + } + } + env->ReleaseLongArrayElements(outMemtrack, outMemtrackArray, 0); + } + } + + return rss; +} + +static jlong android_os_Debug_getRss(JNIEnv* env, jobject clazz) { + return android_os_Debug_getRssPid(env, clazz, getpid(), NULL); +} + // The 1:1 mapping of MEMINFO_* enums here must match with the constants from // Debug.java. enum { @@ -974,62 +1019,43 @@ static jboolean android_os_Debug_isVmapStack(JNIEnv *env, jobject clazz) */ static const JNINativeMethod gMethods[] = { - { "getNativeHeapSize", "()J", - (void*) android_os_Debug_getNativeHeapSize }, - { "getNativeHeapAllocatedSize", "()J", - (void*) android_os_Debug_getNativeHeapAllocatedSize }, - { "getNativeHeapFreeSize", "()J", - (void*) android_os_Debug_getNativeHeapFreeSize }, - { "getMemoryInfo", "(Landroid/os/Debug$MemoryInfo;)V", - (void*) android_os_Debug_getDirtyPages }, - { "getMemoryInfo", "(ILandroid/os/Debug$MemoryInfo;)Z", - (void*) android_os_Debug_getDirtyPagesPid }, - { "getPss", "()J", - (void*) android_os_Debug_getPss }, - { "getPss", "(I[J[J)J", - (void*) android_os_Debug_getPssPid }, - { "getMemInfo", "([J)V", - (void*) android_os_Debug_getMemInfo }, - { "dumpNativeHeap", "(Ljava/io/FileDescriptor;)V", - (void*) android_os_Debug_dumpNativeHeap }, - { "dumpNativeMallocInfo", "(Ljava/io/FileDescriptor;)V", - (void*) android_os_Debug_dumpNativeMallocInfo }, - { "getBinderSentTransactions", "()I", - (void*) android_os_Debug_getBinderSentTransactions }, - { "getBinderReceivedTransactions", "()I", - (void*) android_os_getBinderReceivedTransactions }, - { "getBinderLocalObjectCount", "()I", - (void*)android_os_Debug_getLocalObjectCount }, - { "getBinderProxyObjectCount", "()I", - (void*)android_os_Debug_getProxyObjectCount }, - { "getBinderDeathObjectCount", "()I", - (void*)android_os_Debug_getDeathObjectCount }, - { "dumpJavaBacktraceToFileTimeout", "(ILjava/lang/String;I)Z", - (void*)android_os_Debug_dumpJavaBacktraceToFileTimeout }, - { "dumpNativeBacktraceToFileTimeout", "(ILjava/lang/String;I)Z", - (void*)android_os_Debug_dumpNativeBacktraceToFileTimeout }, - { "getUnreachableMemory", "(IZ)Ljava/lang/String;", - (void*)android_os_Debug_getUnreachableMemory }, - { "getZramFreeKb", "()J", - (void*)android_os_Debug_getFreeZramKb }, - { "getIonHeapsSizeKb", "()J", - (void*)android_os_Debug_getIonHeapsSizeKb }, - { "getDmabufTotalExportedKb", "()J", - (void*)android_os_Debug_getDmabufTotalExportedKb }, - { "getGpuPrivateMemoryKb", "()J", - (void*)android_os_Debug_getGpuPrivateMemoryKb }, - { "getDmabufHeapTotalExportedKb", "()J", - (void*)android_os_Debug_getDmabufHeapTotalExportedKb }, - { "getIonPoolsSizeKb", "()J", - (void*)android_os_Debug_getIonPoolsSizeKb }, - { "getDmabufMappedSizeKb", "()J", - (void*)android_os_Debug_getDmabufMappedSizeKb }, - { "getDmabufHeapPoolsSizeKb", "()J", - (void*)android_os_Debug_getDmabufHeapPoolsSizeKb }, - { "getGpuTotalUsageKb", "()J", - (void*)android_os_Debug_getGpuTotalUsageKb }, - { "isVmapStack", "()Z", - (void*)android_os_Debug_isVmapStack }, + {"getNativeHeapSize", "()J", (void*)android_os_Debug_getNativeHeapSize}, + {"getNativeHeapAllocatedSize", "()J", (void*)android_os_Debug_getNativeHeapAllocatedSize}, + {"getNativeHeapFreeSize", "()J", (void*)android_os_Debug_getNativeHeapFreeSize}, + {"getMemoryInfo", "(Landroid/os/Debug$MemoryInfo;)V", + (void*)android_os_Debug_getDirtyPages}, + {"getMemoryInfo", "(ILandroid/os/Debug$MemoryInfo;)Z", + (void*)android_os_Debug_getDirtyPagesPid}, + {"getPss", "()J", (void*)android_os_Debug_getPss}, + {"getPss", "(I[J[J)J", (void*)android_os_Debug_getPssPid}, + {"getRss", "()J", (void*)android_os_Debug_getRss}, + {"getRss", "(I[J)J", (void*)android_os_Debug_getRssPid}, + {"getMemInfo", "([J)V", (void*)android_os_Debug_getMemInfo}, + {"dumpNativeHeap", "(Ljava/io/FileDescriptor;)V", (void*)android_os_Debug_dumpNativeHeap}, + {"dumpNativeMallocInfo", "(Ljava/io/FileDescriptor;)V", + (void*)android_os_Debug_dumpNativeMallocInfo}, + {"getBinderSentTransactions", "()I", (void*)android_os_Debug_getBinderSentTransactions}, + {"getBinderReceivedTransactions", "()I", (void*)android_os_getBinderReceivedTransactions}, + {"getBinderLocalObjectCount", "()I", (void*)android_os_Debug_getLocalObjectCount}, + {"getBinderProxyObjectCount", "()I", (void*)android_os_Debug_getProxyObjectCount}, + {"getBinderDeathObjectCount", "()I", (void*)android_os_Debug_getDeathObjectCount}, + {"dumpJavaBacktraceToFileTimeout", "(ILjava/lang/String;I)Z", + (void*)android_os_Debug_dumpJavaBacktraceToFileTimeout}, + {"dumpNativeBacktraceToFileTimeout", "(ILjava/lang/String;I)Z", + (void*)android_os_Debug_dumpNativeBacktraceToFileTimeout}, + {"getUnreachableMemory", "(IZ)Ljava/lang/String;", + (void*)android_os_Debug_getUnreachableMemory}, + {"getZramFreeKb", "()J", (void*)android_os_Debug_getFreeZramKb}, + {"getIonHeapsSizeKb", "()J", (void*)android_os_Debug_getIonHeapsSizeKb}, + {"getDmabufTotalExportedKb", "()J", (void*)android_os_Debug_getDmabufTotalExportedKb}, + {"getGpuPrivateMemoryKb", "()J", (void*)android_os_Debug_getGpuPrivateMemoryKb}, + {"getDmabufHeapTotalExportedKb", "()J", + (void*)android_os_Debug_getDmabufHeapTotalExportedKb}, + {"getIonPoolsSizeKb", "()J", (void*)android_os_Debug_getIonPoolsSizeKb}, + {"getDmabufMappedSizeKb", "()J", (void*)android_os_Debug_getDmabufMappedSizeKb}, + {"getDmabufHeapPoolsSizeKb", "()J", (void*)android_os_Debug_getDmabufHeapPoolsSizeKb}, + {"getGpuTotalUsageKb", "()J", (void*)android_os_Debug_getGpuTotalUsageKb}, + {"isVmapStack", "()Z", (void*)android_os_Debug_isVmapStack}, }; int register_android_os_Debug(JNIEnv *env) diff --git a/core/jni/android_os_HwParcel.cpp b/core/jni/android_os_HwParcel.cpp index 4c4443fc29c3d0bca0b378d006f17e4d9faa821e..0e3c51047b31cb71caec08d9009d824613f32824 100644 --- a/core/jni/android_os_HwParcel.cpp +++ b/core/jni/android_os_HwParcel.cpp @@ -285,7 +285,7 @@ static void JHwParcel_native_writeInterfaceToken( hardware::Parcel *parcel = JHwParcel::GetNativeContext(env, thiz)->getParcel(); - status_t err = parcel->writeInterfaceToken(nameCopy.string()); + status_t err = parcel->writeInterfaceToken(nameCopy.c_str()); signalExceptionForError(env, err); } } @@ -687,9 +687,7 @@ static void JHwParcel_native_writeHidlMemory( static jstring MakeStringObjFromHidlString(JNIEnv *env, const hidl_string &s) { String16 utf16String(s.c_str(), s.size()); - return env->NewString( - reinterpret_cast(utf16String.string()), - utf16String.size()); + return env->NewString(reinterpret_cast(utf16String.c_str()), utf16String.size()); } static jstring JHwParcel_native_readString(JNIEnv *env, jobject thiz) { diff --git a/core/jni/android_os_UEventObserver.cpp b/core/jni/android_os_UEventObserver.cpp index eda50758bca9b3632a3d9f76828e301c122cfabe..43a8be1ddc2656bbf57147435e35e813704f20b3 100644 --- a/core/jni/android_os_UEventObserver.cpp +++ b/core/jni/android_os_UEventObserver.cpp @@ -51,8 +51,8 @@ static bool isMatch(const char* buffer, size_t length) { const char* field = buffer; const char* end = buffer + length + 1; do { - if (strstr(field, match.string())) { - ALOGV("Matched uevent message with pattern: %s", match.string()); + if (strstr(field, match.c_str())) { + ALOGV("Matched uevent message with pattern: %s", match.c_str()); return true; } field += strlen(field) + 1; diff --git a/core/jni/android_util_AssetManager.cpp b/core/jni/android_util_AssetManager.cpp index 979c9e3ea7a3a37041a57b5b664ee91a75f77db6..3ee15ab734b9db78e76fd13cfc881d2956d37dca 100644 --- a/core/jni/android_util_AssetManager.cpp +++ b/core/jni/android_util_AssetManager.cpp @@ -295,7 +295,7 @@ static jobject NativeGetAssetAllocations(JNIEnv* env, jobject /*clazz*/) { if (alloc.length() <= 0) { return nullptr; } - return env->NewStringUTF(alloc.string()); + return env->NewStringUTF(alloc.c_str()); } static jint NativeGetGlobalAssetManagerCount(JNIEnv* /*env*/, jobject /*clazz*/) { @@ -347,14 +347,23 @@ static void NativeSetApkAssets(JNIEnv* env, jclass /*clazz*/, jlong ptr, } static void NativeSetConfiguration(JNIEnv* env, jclass /*clazz*/, jlong ptr, jint mcc, jint mnc, - jstring locale, jint orientation, jint touchscreen, jint density, - jint keyboard, jint keyboard_hidden, jint navigation, - jint screen_width, jint screen_height, - jint smallest_screen_width_dp, jint screen_width_dp, - jint screen_height_dp, jint screen_layout, jint ui_mode, - jint color_mode, jint grammatical_gender, jint major_version) { + jstring default_locale, jobjectArray locales, jint orientation, + jint touchscreen, jint density, jint keyboard, + jint keyboard_hidden, jint navigation, jint screen_width, + jint screen_height, jint smallest_screen_width_dp, + jint screen_width_dp, jint screen_height_dp, jint screen_layout, + jint ui_mode, jint color_mode, jint grammatical_gender, + jint major_version) { ATRACE_NAME("AssetManager::SetConfiguration"); + const jsize locale_count = (locales == NULL) ? 0 : env->GetArrayLength(locales); + + // Constants duplicated from Java class android.content.res.Configuration. + static const jint kScreenLayoutRoundMask = 0x300; + static const jint kScreenLayoutRoundShift = 8; + + std::vector configs; + ResTable_config configuration; memset(&configuration, 0, sizeof(configuration)); configuration.mcc = static_cast(mcc); @@ -375,25 +384,37 @@ static void NativeSetConfiguration(JNIEnv* env, jclass /*clazz*/, jlong ptr, jin configuration.colorMode = static_cast(color_mode); configuration.grammaticalInflection = static_cast(grammatical_gender); configuration.sdkVersion = static_cast(major_version); - - if (locale != nullptr) { - ScopedUtfChars locale_utf8(env, locale); - CHECK(locale_utf8.c_str() != nullptr); - configuration.setBcp47Locale(locale_utf8.c_str()); - } - - // Constants duplicated from Java class android.content.res.Configuration. - static const jint kScreenLayoutRoundMask = 0x300; - static const jint kScreenLayoutRoundShift = 8; - // In Java, we use a 32bit integer for screenLayout, while we only use an 8bit integer // in C++. We must extract the round qualifier out of the Java screenLayout and put it // into screenLayout2. configuration.screenLayout2 = - static_cast((screen_layout & kScreenLayoutRoundMask) >> kScreenLayoutRoundShift); + static_cast((screen_layout & kScreenLayoutRoundMask) >> kScreenLayoutRoundShift); + + if (locale_count > 0) { + configs.resize(locale_count, configuration); + for (int i = 0; i < locale_count; i++) { + jstring locale = (jstring)(env->GetObjectArrayElement(locales, i)); + ScopedUtfChars locale_utf8(env, locale); + CHECK(locale_utf8.c_str() != nullptr); + configs[i].setBcp47Locale(locale_utf8.c_str()); + } + } else { + configs.push_back(configuration); + } + + uint32_t default_locale_int = 0; + if (default_locale != nullptr) { + ResTable_config config; + static_assert(std::is_same_v); + ScopedUtfChars locale_utf8(env, default_locale); + CHECK(locale_utf8.c_str() != nullptr); + config.setBcp47Locale(locale_utf8.c_str()); + default_locale_int = config.locale; + } auto assetmanager = LockAndStartAssetManager(ptr); - assetmanager->SetConfiguration(configuration); + assetmanager->SetConfigurations(configs); + assetmanager->SetDefaultLocale(default_locale_int); } static jobject NativeGetAssignedPackageIdentifiers(JNIEnv* env, jclass /*clazz*/, jlong ptr, @@ -456,7 +477,7 @@ static jobjectArray NativeList(JNIEnv* env, jclass /*clazz*/, jlong ptr, jstring } for (size_t i = 0; i < file_count; i++) { - jstring java_string = env->NewStringUTF(asset_dir->getFileName(i).string()); + jstring java_string = env->NewStringUTF(asset_dir->getFileName(i).c_str()); // Check for errors creating the strings (if malformed or no memory). if (env->ExceptionCheck()) { @@ -1498,94 +1519,97 @@ static jlong NativeAssetGetRemainingLength(JNIEnv* /*env*/, jclass /*clazz*/, jl // JNI registration. static const JNINativeMethod gAssetManagerMethods[] = { - // AssetManager setup methods. - {"nativeCreate", "()J", (void*)NativeCreate}, - {"nativeDestroy", "(J)V", (void*)NativeDestroy}, - {"nativeSetApkAssets", "(J[Landroid/content/res/ApkAssets;Z)V", (void*)NativeSetApkAssets}, - {"nativeSetConfiguration", "(JIILjava/lang/String;IIIIIIIIIIIIIIII)V", - (void*)NativeSetConfiguration}, - {"nativeGetAssignedPackageIdentifiers", "(JZZ)Landroid/util/SparseArray;", - (void*)NativeGetAssignedPackageIdentifiers}, - - // AssetManager file methods. - {"nativeContainsAllocatedTable", "(J)Z", (void*)ContainsAllocatedTable}, - {"nativeList", "(JLjava/lang/String;)[Ljava/lang/String;", (void*)NativeList}, - {"nativeOpenAsset", "(JLjava/lang/String;I)J", (void*)NativeOpenAsset}, - {"nativeOpenAssetFd", "(JLjava/lang/String;[J)Landroid/os/ParcelFileDescriptor;", - (void*)NativeOpenAssetFd}, - {"nativeOpenNonAsset", "(JILjava/lang/String;I)J", (void*)NativeOpenNonAsset}, - {"nativeOpenNonAssetFd", "(JILjava/lang/String;[J)Landroid/os/ParcelFileDescriptor;", - (void*)NativeOpenNonAssetFd}, - {"nativeOpenXmlAsset", "(JILjava/lang/String;)J", (void*)NativeOpenXmlAsset}, - {"nativeOpenXmlAssetFd", "(JILjava/io/FileDescriptor;)J", (void*)NativeOpenXmlAssetFd}, - - // AssetManager resource methods. - {"nativeGetResourceValue", "(JISLandroid/util/TypedValue;Z)I", (void*)NativeGetResourceValue}, - {"nativeGetResourceBagValue", "(JIILandroid/util/TypedValue;)I", - (void*)NativeGetResourceBagValue}, - {"nativeGetStyleAttributes", "(JI)[I", (void*)NativeGetStyleAttributes}, - {"nativeGetResourceStringArray", "(JI)[Ljava/lang/String;", - (void*)NativeGetResourceStringArray}, - {"nativeGetResourceStringArrayInfo", "(JI)[I", (void*)NativeGetResourceStringArrayInfo}, - {"nativeGetResourceIntArray", "(JI)[I", (void*)NativeGetResourceIntArray}, - {"nativeGetResourceArraySize", "(JI)I", (void*)NativeGetResourceArraySize}, - {"nativeGetResourceArray", "(JI[I)I", (void*)NativeGetResourceArray}, - {"nativeGetParentThemeIdentifier", "(JI)I", - (void*)NativeGetParentThemeIdentifier}, - - // AssetManager resource name/ID methods. - {"nativeGetResourceIdentifier", "(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", - (void*)NativeGetResourceIdentifier}, - {"nativeGetResourceName", "(JI)Ljava/lang/String;", (void*)NativeGetResourceName}, - {"nativeGetResourcePackageName", "(JI)Ljava/lang/String;", (void*)NativeGetResourcePackageName}, - {"nativeGetResourceTypeName", "(JI)Ljava/lang/String;", (void*)NativeGetResourceTypeName}, - {"nativeGetResourceEntryName", "(JI)Ljava/lang/String;", (void*)NativeGetResourceEntryName}, - {"nativeSetResourceResolutionLoggingEnabled", "(JZ)V", - (void*) NativeSetResourceResolutionLoggingEnabled}, - {"nativeGetLastResourceResolution", "(J)Ljava/lang/String;", - (void*) NativeGetLastResourceResolution}, - {"nativeGetLocales", "(JZ)[Ljava/lang/String;", (void*)NativeGetLocales}, - {"nativeGetSizeConfigurations", "(J)[Landroid/content/res/Configuration;", - (void*)NativeGetSizeConfigurations}, - {"nativeGetSizeAndUiModeConfigurations", "(J)[Landroid/content/res/Configuration;", - (void*)NativeGetSizeAndUiModeConfigurations}, - - // Style attribute related methods. - {"nativeAttributeResolutionStack", "(JJIII)[I", (void*)NativeAttributeResolutionStack}, - {"nativeApplyStyle", "(JJIIJ[IJJ)V", (void*)NativeApplyStyle}, - {"nativeResolveAttrs", "(JJII[I[I[I[I)Z", (void*)NativeResolveAttrs}, - {"nativeRetrieveAttributes", "(JJ[I[I[I)Z", (void*)NativeRetrieveAttributes}, - - // Theme related methods. - {"nativeThemeCreate", "(J)J", (void*)NativeThemeCreate}, - {"nativeGetThemeFreeFunction", "()J", (void*)NativeGetThemeFreeFunction}, - {"nativeThemeApplyStyle", "(JJIZ)V", (void*)NativeThemeApplyStyle}, - {"nativeThemeRebase", "(JJ[I[ZI)V", (void*)NativeThemeRebase}, - - {"nativeThemeCopy", "(JJJJ)V", (void*)NativeThemeCopy}, - {"nativeThemeGetAttributeValue", "(JJILandroid/util/TypedValue;Z)I", - (void*)NativeThemeGetAttributeValue}, - {"nativeThemeDump", "(JJILjava/lang/String;Ljava/lang/String;)V", (void*)NativeThemeDump}, - {"nativeThemeGetChangingConfigurations", "(J)I", (void*)NativeThemeGetChangingConfigurations}, - - // AssetInputStream methods. - {"nativeAssetDestroy", "(J)V", (void*)NativeAssetDestroy}, - {"nativeAssetReadChar", "(J)I", (void*)NativeAssetReadChar}, - {"nativeAssetRead", "(J[BII)I", (void*)NativeAssetRead}, - {"nativeAssetSeek", "(JJI)J", (void*)NativeAssetSeek}, - {"nativeAssetGetLength", "(J)J", (void*)NativeAssetGetLength}, - {"nativeAssetGetRemainingLength", "(J)J", (void*)NativeAssetGetRemainingLength}, - - // System/idmap related methods. - {"nativeGetOverlayableMap", "(JLjava/lang/String;)Ljava/util/Map;", - (void*)NativeGetOverlayableMap}, - {"nativeGetOverlayablesToString", "(JLjava/lang/String;)Ljava/lang/String;", - (void*)NativeGetOverlayablesToString}, - - // Global management/debug methods. - {"getGlobalAssetCount", "()I", (void*)NativeGetGlobalAssetCount}, - {"getAssetAllocations", "()Ljava/lang/String;", (void*)NativeGetAssetAllocations}, - {"getGlobalAssetManagerCount", "()I", (void*)NativeGetGlobalAssetManagerCount}, + // AssetManager setup methods. + {"nativeCreate", "()J", (void*)NativeCreate}, + {"nativeDestroy", "(J)V", (void*)NativeDestroy}, + {"nativeSetApkAssets", "(J[Landroid/content/res/ApkAssets;Z)V", (void*)NativeSetApkAssets}, + {"nativeSetConfiguration", "(JIILjava/lang/String;[Ljava/lang/String;IIIIIIIIIIIIIIII)V", + (void*)NativeSetConfiguration}, + {"nativeGetAssignedPackageIdentifiers", "(JZZ)Landroid/util/SparseArray;", + (void*)NativeGetAssignedPackageIdentifiers}, + + // AssetManager file methods. + {"nativeContainsAllocatedTable", "(J)Z", (void*)ContainsAllocatedTable}, + {"nativeList", "(JLjava/lang/String;)[Ljava/lang/String;", (void*)NativeList}, + {"nativeOpenAsset", "(JLjava/lang/String;I)J", (void*)NativeOpenAsset}, + {"nativeOpenAssetFd", "(JLjava/lang/String;[J)Landroid/os/ParcelFileDescriptor;", + (void*)NativeOpenAssetFd}, + {"nativeOpenNonAsset", "(JILjava/lang/String;I)J", (void*)NativeOpenNonAsset}, + {"nativeOpenNonAssetFd", "(JILjava/lang/String;[J)Landroid/os/ParcelFileDescriptor;", + (void*)NativeOpenNonAssetFd}, + {"nativeOpenXmlAsset", "(JILjava/lang/String;)J", (void*)NativeOpenXmlAsset}, + {"nativeOpenXmlAssetFd", "(JILjava/io/FileDescriptor;)J", (void*)NativeOpenXmlAssetFd}, + + // AssetManager resource methods. + {"nativeGetResourceValue", "(JISLandroid/util/TypedValue;Z)I", + (void*)NativeGetResourceValue}, + {"nativeGetResourceBagValue", "(JIILandroid/util/TypedValue;)I", + (void*)NativeGetResourceBagValue}, + {"nativeGetStyleAttributes", "(JI)[I", (void*)NativeGetStyleAttributes}, + {"nativeGetResourceStringArray", "(JI)[Ljava/lang/String;", + (void*)NativeGetResourceStringArray}, + {"nativeGetResourceStringArrayInfo", "(JI)[I", (void*)NativeGetResourceStringArrayInfo}, + {"nativeGetResourceIntArray", "(JI)[I", (void*)NativeGetResourceIntArray}, + {"nativeGetResourceArraySize", "(JI)I", (void*)NativeGetResourceArraySize}, + {"nativeGetResourceArray", "(JI[I)I", (void*)NativeGetResourceArray}, + {"nativeGetParentThemeIdentifier", "(JI)I", (void*)NativeGetParentThemeIdentifier}, + + // AssetManager resource name/ID methods. + {"nativeGetResourceIdentifier", + "(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I", + (void*)NativeGetResourceIdentifier}, + {"nativeGetResourceName", "(JI)Ljava/lang/String;", (void*)NativeGetResourceName}, + {"nativeGetResourcePackageName", "(JI)Ljava/lang/String;", + (void*)NativeGetResourcePackageName}, + {"nativeGetResourceTypeName", "(JI)Ljava/lang/String;", (void*)NativeGetResourceTypeName}, + {"nativeGetResourceEntryName", "(JI)Ljava/lang/String;", (void*)NativeGetResourceEntryName}, + {"nativeSetResourceResolutionLoggingEnabled", "(JZ)V", + (void*)NativeSetResourceResolutionLoggingEnabled}, + {"nativeGetLastResourceResolution", "(J)Ljava/lang/String;", + (void*)NativeGetLastResourceResolution}, + {"nativeGetLocales", "(JZ)[Ljava/lang/String;", (void*)NativeGetLocales}, + {"nativeGetSizeConfigurations", "(J)[Landroid/content/res/Configuration;", + (void*)NativeGetSizeConfigurations}, + {"nativeGetSizeAndUiModeConfigurations", "(J)[Landroid/content/res/Configuration;", + (void*)NativeGetSizeAndUiModeConfigurations}, + + // Style attribute related methods. + {"nativeAttributeResolutionStack", "(JJIII)[I", (void*)NativeAttributeResolutionStack}, + {"nativeApplyStyle", "(JJIIJ[IJJ)V", (void*)NativeApplyStyle}, + {"nativeResolveAttrs", "(JJII[I[I[I[I)Z", (void*)NativeResolveAttrs}, + {"nativeRetrieveAttributes", "(JJ[I[I[I)Z", (void*)NativeRetrieveAttributes}, + + // Theme related methods. + {"nativeThemeCreate", "(J)J", (void*)NativeThemeCreate}, + {"nativeGetThemeFreeFunction", "()J", (void*)NativeGetThemeFreeFunction}, + {"nativeThemeApplyStyle", "(JJIZ)V", (void*)NativeThemeApplyStyle}, + {"nativeThemeRebase", "(JJ[I[ZI)V", (void*)NativeThemeRebase}, + + {"nativeThemeCopy", "(JJJJ)V", (void*)NativeThemeCopy}, + {"nativeThemeGetAttributeValue", "(JJILandroid/util/TypedValue;Z)I", + (void*)NativeThemeGetAttributeValue}, + {"nativeThemeDump", "(JJILjava/lang/String;Ljava/lang/String;)V", (void*)NativeThemeDump}, + {"nativeThemeGetChangingConfigurations", "(J)I", + (void*)NativeThemeGetChangingConfigurations}, + + // AssetInputStream methods. + {"nativeAssetDestroy", "(J)V", (void*)NativeAssetDestroy}, + {"nativeAssetReadChar", "(J)I", (void*)NativeAssetReadChar}, + {"nativeAssetRead", "(J[BII)I", (void*)NativeAssetRead}, + {"nativeAssetSeek", "(JJI)J", (void*)NativeAssetSeek}, + {"nativeAssetGetLength", "(J)J", (void*)NativeAssetGetLength}, + {"nativeAssetGetRemainingLength", "(J)J", (void*)NativeAssetGetRemainingLength}, + + // System/idmap related methods. + {"nativeGetOverlayableMap", "(JLjava/lang/String;)Ljava/util/Map;", + (void*)NativeGetOverlayableMap}, + {"nativeGetOverlayablesToString", "(JLjava/lang/String;)Ljava/lang/String;", + (void*)NativeGetOverlayablesToString}, + + // Global management/debug methods. + {"getGlobalAssetCount", "()I", (void*)NativeGetGlobalAssetCount}, + {"getAssetAllocations", "()Ljava/lang/String;", (void*)NativeGetAssetAllocations}, + {"getGlobalAssetManagerCount", "()I", (void*)NativeGetGlobalAssetManagerCount}, }; int register_android_content_AssetManager(JNIEnv* env) { diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp index 9dce5e3a10f34f6d20a34c73c2726fdb101fc9aa..6ed0a8a047f5d744036ad792dcb7981de587bdcb 100644 --- a/core/jni/android_util_Binder.cpp +++ b/core/jni/android_util_Binder.cpp @@ -953,8 +953,10 @@ void signalExceptionForError(JNIEnv* env, jobject obj, status_t err, String8 msg; msg.appendFormat("Unknown binder error code. 0x%" PRIx32, err); // RemoteException is a checked exception, only throw from certain methods. - jniThrowException(env, canThrowRemoteException - ? "android/os/RemoteException" : "java/lang/RuntimeException", msg.string()); + jniThrowException(env, + canThrowRemoteException ? "android/os/RemoteException" + : "java/lang/RuntimeException", + msg.c_str()); break; } } @@ -1286,8 +1288,7 @@ static jstring android_os_BinderProxy_getInterfaceDescriptor(JNIEnv* env, jobjec IBinder* target = getBPNativeData(env, obj)->mObject.get(); if (target != NULL) { const String16& desc = target->getInterfaceDescriptor(); - return env->NewString(reinterpret_cast(desc.string()), - desc.size()); + return env->NewString(reinterpret_cast(desc.c_str()), desc.size()); } jniThrowException(env, "java/lang/RuntimeException", "No binder found for object"); diff --git a/core/jni/android_util_Process.cpp b/core/jni/android_util_Process.cpp index 4f2bf4a4f6cb59c677c32ebe15c9e675b194724e..18c60a7931669c8d8b5fe12920da53fd1243ead3 100644 --- a/core/jni/android_util_Process.cpp +++ b/core/jni/android_util_Process.cpp @@ -148,7 +148,7 @@ jint android_os_Process_getUidForName(JNIEnv* env, jobject clazz, jstring name) const size_t N = name8.size(); if (N > 0) { - const char* str = name8.string(); + const char* str = name8.c_str(); for (size_t i=0; i '9') { struct passwd* pwd = getpwnam(str); @@ -180,7 +180,7 @@ jint android_os_Process_getGidForName(JNIEnv* env, jobject clazz, jstring name) const size_t N = name8.size(); if (N > 0) { - const char* str = name8.string(); + const char* str = name8.c_str(); for (size_t i=0; i '9') { struct group* grp = getgrnam(str); @@ -583,8 +583,8 @@ void android_os_Process_setArgV0(JNIEnv* env, jobject clazz, jstring name) env->ReleaseStringCritical(name, str); } - if (!name8.isEmpty()) { - AndroidRuntime::getRuntime()->setArgv0(name8.string(), true /* setProcName */); + if (!name8.empty()) { + AndroidRuntime::getRuntime()->setArgv0(name8.c_str(), true /* setProcName */); } } @@ -690,7 +690,7 @@ void android_os_Process_readProcLines(JNIEnv* env, jobject clazz, jstring fileSt return; } - int fd = open(file.string(), O_RDONLY | O_CLOEXEC); + int fd = open(file.c_str(), O_RDONLY | O_CLOEXEC); if (fd >= 0) { //ALOGI("Clearing %" PRId32 " sizes", count); @@ -704,7 +704,7 @@ void android_os_Process_readProcLines(JNIEnv* env, jobject clazz, jstring fileSt close(fd); if (len < 0) { - ALOGW("Unable to read %s", file.string()); + ALOGW("Unable to read %s", file.c_str()); len = 0; } buffer[len] = 0; @@ -717,7 +717,7 @@ void android_os_Process_readProcLines(JNIEnv* env, jobject clazz, jstring fileSt //ALOGI("Parsing at: %s", p); for (i=0; i(*map1 == *map2); } +static void nativeApplyOverlay(JNIEnv* env, jobject clazz, jlong ptr, jstring nameObj, + jstring overlayObj) { + NativeKeyCharacterMap* map = reinterpret_cast(ptr); + if (!map || !map->getMap()) { + return; + } + ScopedUtfChars nameChars(env, nameObj); + ScopedUtfChars overlayChars(env, overlayObj); + base::Result> ret = + KeyCharacterMap::loadContents(nameChars.c_str(), overlayChars.c_str(), + KeyCharacterMap::Format::OVERLAY); + if (ret.ok()) { + std::shared_ptr overlay = *ret; + map->getMap()->combine(*overlay); + } +} + +static jint nativeGetMappedKey(JNIEnv* env, jobject clazz, jlong ptr, jint scanCode) { + NativeKeyCharacterMap* map = reinterpret_cast(ptr); + if (!map || !map->getMap()) { + return 0; + } + int32_t outKeyCode; + status_t mapKeyRes = map->getMap()->mapKey(scanCode, /*usageCode=*/0, &outKeyCode); + if (mapKeyRes != OK) { + return 0; + } + return static_cast(outKeyCode); +} + /* * JNI registration. */ @@ -260,7 +290,9 @@ static const JNINativeMethod g_methods[] = { {"nativeObtainEmptyKeyCharacterMap", "(I)Landroid/view/KeyCharacterMap;", (void*)nativeObtainEmptyKeyCharacterMap}, {"nativeEquals", "(JJ)Z", (void*)nativeEquals}, -}; + {"nativeApplyOverlay", "(JLjava/lang/String;Ljava/lang/String;)V", + (void*)nativeApplyOverlay}, + {"nativeGetMappedKey", "(JI)I", (void*)nativeGetMappedKey}}; int register_android_view_KeyCharacterMap(JNIEnv* env) { diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index dbe03386a9cf15d2f7cdc2bc2c772570f060380e..74f64b758ff78433f51836ccf9db868e3ccff5f0 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -960,6 +960,13 @@ static void nativeSetDefaultFrameRateCompatibility(JNIEnv* env, jclass clazz, jl transaction->setDefaultFrameRateCompatibility(ctrl, static_cast(compatibility)); } +static void nativeSetFrameRateCategory(JNIEnv* env, jclass clazz, jlong transactionObj, + jlong nativeObject, jint category) { + auto transaction = reinterpret_cast(transactionObj); + const auto ctrl = reinterpret_cast(nativeObject); + transaction->setFrameRateCategory(ctrl, static_cast(category)); +} + static void nativeSetFixedTransformHint(JNIEnv* env, jclass clazz, jlong transactionObj, jlong nativeObject, jint transformHint) { auto transaction = reinterpret_cast(transactionObj); @@ -2164,6 +2171,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeSetFrameRate }, {"nativeSetDefaultFrameRateCompatibility", "(JJI)V", (void*)nativeSetDefaultFrameRateCompatibility}, + {"nativeSetFrameRateCategory", "(JJI)V", + (void*)nativeSetFrameRateCategory}, {"nativeSetDisplaySurface", "(JLandroid/os/IBinder;J)V", (void*)nativeSetDisplaySurface }, {"nativeSetDisplayLayerStack", "(JLandroid/os/IBinder;I)V", diff --git a/core/jni/android_window_ScreenCapture.cpp b/core/jni/android_window_ScreenCapture.cpp index bdf7eaa8aace954d0a84bb53d4b75b8ba58433a3..beb8c9b2d12f9e3d8b4e64310c99884b40bc4fe6 100644 --- a/core/jni/android_window_ScreenCapture.cpp +++ b/core/jni/android_window_ScreenCapture.cpp @@ -49,13 +49,6 @@ static struct { jfieldID hintForSeamlessTransition; } gCaptureArgsClassInfo; -static struct { - jfieldID displayToken; - jfieldID width; - jfieldID height; - jfieldID useIdentityTransform; -} gDisplayCaptureArgsClassInfo; - static struct { jfieldID layer; jfieldID childrenOnly; @@ -181,39 +174,6 @@ static void getCaptureArgs(JNIEnv* env, jobject captureArgsObject, CaptureArgs& gCaptureArgsClassInfo.hintForSeamlessTransition); } -static DisplayCaptureArgs displayCaptureArgsFromObject(JNIEnv* env, - jobject displayCaptureArgsObject) { - DisplayCaptureArgs captureArgs; - getCaptureArgs(env, displayCaptureArgsObject, captureArgs); - - captureArgs.displayToken = - ibinderForJavaObject(env, - env->GetObjectField(displayCaptureArgsObject, - gDisplayCaptureArgsClassInfo.displayToken)); - captureArgs.width = - env->GetIntField(displayCaptureArgsObject, gDisplayCaptureArgsClassInfo.width); - captureArgs.height = - env->GetIntField(displayCaptureArgsObject, gDisplayCaptureArgsClassInfo.height); - captureArgs.useIdentityTransform = - env->GetBooleanField(displayCaptureArgsObject, - gDisplayCaptureArgsClassInfo.useIdentityTransform); - return captureArgs; -} - -static jint nativeCaptureDisplay(JNIEnv* env, jclass clazz, jobject displayCaptureArgsObject, - jlong screenCaptureListenerObject) { - const DisplayCaptureArgs captureArgs = - displayCaptureArgsFromObject(env, displayCaptureArgsObject); - - if (captureArgs.displayToken == nullptr) { - return BAD_VALUE; - } - - sp captureListener = - reinterpret_cast(screenCaptureListenerObject); - return ScreenshotClient::captureDisplay(captureArgs, captureListener); -} - static jint nativeCaptureLayers(JNIEnv* env, jclass clazz, jobject layerCaptureArgsObject, jlong screenCaptureListenerObject) { LayerCaptureArgs captureArgs; @@ -283,8 +243,6 @@ static jlong getNativeListenerFinalizer(JNIEnv* env, jclass clazz) { static const JNINativeMethod sScreenCaptureMethods[] = { // clang-format off - {"nativeCaptureDisplay", "(Landroid/window/ScreenCapture$DisplayCaptureArgs;J)I", - (void*)nativeCaptureDisplay }, {"nativeCaptureLayers", "(Landroid/window/ScreenCapture$LayerCaptureArgs;J)I", (void*)nativeCaptureLayers }, {"nativeCreateScreenCaptureListener", "(Ljava/util/function/ObjIntConsumer;)J", @@ -317,17 +275,6 @@ int register_android_window_ScreenCapture(JNIEnv* env) { gCaptureArgsClassInfo.hintForSeamlessTransition = GetFieldIDOrDie(env, captureArgsClazz, "mHintForSeamlessTransition", "Z"); - jclass displayCaptureArgsClazz = - FindClassOrDie(env, "android/window/ScreenCapture$DisplayCaptureArgs"); - gDisplayCaptureArgsClassInfo.displayToken = - GetFieldIDOrDie(env, displayCaptureArgsClazz, "mDisplayToken", "Landroid/os/IBinder;"); - gDisplayCaptureArgsClassInfo.width = - GetFieldIDOrDie(env, displayCaptureArgsClazz, "mWidth", "I"); - gDisplayCaptureArgsClassInfo.height = - GetFieldIDOrDie(env, displayCaptureArgsClazz, "mHeight", "I"); - gDisplayCaptureArgsClassInfo.useIdentityTransform = - GetFieldIDOrDie(env, displayCaptureArgsClazz, "mUseIdentityTransform", "Z"); - jclass layerCaptureArgsClazz = FindClassOrDie(env, "android/window/ScreenCapture$LayerCaptureArgs"); gLayerCaptureArgsClassInfo.layer = diff --git a/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp b/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp index 76f5c107c970d392eede79afdff0deaddf2d2b26..69202111f74caca4586d8d88d9593f3df4910226 100644 --- a/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp +++ b/core/jni/com_android_internal_os_LongArrayMultiStateCounter.cpp @@ -65,6 +65,16 @@ static void native_updateValues(jlong nativePtr, jlong longArrayContainerNativeP counter->updateValue(*vector, timestamp); } +static void native_incrementValues(jlong nativePtr, jlong longArrayContainerNativePtr, + jlong timestamp) { + battery::LongArrayMultiStateCounter *counter = + reinterpret_cast(nativePtr); + std::vector *vector = + reinterpret_cast *>(longArrayContainerNativePtr); + + counter->incrementValue(*vector, timestamp); +} + static void native_addCounts(jlong nativePtr, jlong longArrayContainerNativePtr) { battery::LongArrayMultiStateCounter *counter = reinterpret_cast(nativePtr); @@ -202,6 +212,8 @@ static const JNINativeMethod g_LongArrayMultiStateCounter_methods[] = { // @CriticalNative {"native_updateValues", "(JJJ)V", (void *)native_updateValues}, // @CriticalNative + {"native_incrementValues", "(JJJ)V", (void *)native_incrementValues}, + // @CriticalNative {"native_addCounts", "(JJ)V", (void *)native_addCounts}, // @CriticalNative {"native_reset", "(J)V", (void *)native_reset}, diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index c368fa85c3791460079a1cefca062b61e3beb10e..56066b2d813c778c270eefc359651fbcf9ffa3b7 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -1806,15 +1806,10 @@ static void SpecializeCommon(JNIEnv* env, uid_t uid, gid_t gid, jintArray gids, if (!is_system_server && getuid() == 0) { const int rc = createProcessGroup(uid, getpid()); if (rc != 0) { - if (rc == -ESRCH) { - // If process is dead, treat this as a non-fatal error - ALOGE("createProcessGroup(%d, %d) failed: %s", uid, /* pid= */ 0, strerror(-rc)); - } else { - fail_fn(rc == -EROFS ? CREATE_ERROR("createProcessGroup failed, kernel missing " - "CONFIG_CGROUP_CPUACCT?") - : CREATE_ERROR("createProcessGroup(%d, %d) failed: %s", uid, - /* pid= */ 0, strerror(-rc))); - } + fail_fn(rc == -EROFS ? CREATE_ERROR("createProcessGroup failed, kernel missing " + "CONFIG_CGROUP_CPUACCT?") + : CREATE_ERROR("createProcessGroup(%d, %d) failed: %s", uid, + /* pid= */ 0, strerror(-rc))); } } diff --git a/core/jni/jni_common.cpp b/core/jni/jni_common.cpp index 8d376cf2c7f947c5a9c9bbdc5497959674f63a67..b81c9b6eed95416e2195581a6937f6fa58c43da2 100644 --- a/core/jni/jni_common.cpp +++ b/core/jni/jni_common.cpp @@ -26,6 +26,8 @@ namespace android { static struct { + jclass clazz; + jmethodID ctor; jfieldID bottom; jfieldID left; jfieldID right; @@ -40,8 +42,15 @@ Rect JNICommon::rectFromObj(JNIEnv* env, jobject rectObj) { return Rect(left, top, right, bottom); } +jobject JNICommon::objFromRect(JNIEnv* env, Rect rect) { + return env->NewObject(gRectClassInfo.clazz, gRectClassInfo.ctor, rect.left, rect.top, + rect.right, rect.bottom); +} + int register_jni_common(JNIEnv* env) { jclass rectClazz = FindClassOrDie(env, "android/graphics/Rect"); + gRectClassInfo.clazz = MakeGlobalRefOrDie(env, rectClazz); + gRectClassInfo.ctor = GetMethodIDOrDie(env, rectClazz, "", "(IIII)V"); gRectClassInfo.bottom = GetFieldIDOrDie(env, rectClazz, "bottom", "I"); gRectClassInfo.left = GetFieldIDOrDie(env, rectClazz, "left", "I"); gRectClassInfo.right = GetFieldIDOrDie(env, rectClazz, "right", "I"); diff --git a/core/jni/jni_common.h b/core/jni/jni_common.h index a2bf6fb3f5e0d5aae6bbf8e43e97c5db71ed812f..d670a7d6bd59601cb86cf9a90c9a278b648cefa6 100644 --- a/core/jni/jni_common.h +++ b/core/jni/jni_common.h @@ -22,5 +22,6 @@ class Rect; class JNICommon { public: static Rect rectFromObj(JNIEnv* env, jobject rectObj); + static jobject objFromRect(JNIEnv* env, Rect rect); }; } // namespace android \ No newline at end of file diff --git a/core/proto/android/content/package_item_info.proto b/core/proto/android/content/package_item_info.proto index 279a5d0c17f8475fc4ffbcc2bd93cfc36a11888c..b9905e8cf44604823b6ebf31c9511e7eebc26b08 100644 --- a/core/proto/android/content/package_item_info.proto +++ b/core/proto/android/content/package_item_info.proto @@ -30,6 +30,7 @@ message PackageItemInfoProto { optional string non_localized_label = 4; optional int32 icon = 5; optional int32 banner = 6; + optional bool is_archived = 7; } // Proto of android.content.pm.ApplicationInfo which extends PackageItemInfo diff --git a/core/proto/android/inputmethodservice/softinputwindow.proto b/core/proto/android/inputmethodservice/softinputwindow.proto index e0ba6bf33567edf693a76e709606a18831992223..32d14f0ec2630306969aad1f9a47f014979cd3d6 100644 --- a/core/proto/android/inputmethodservice/softinputwindow.proto +++ b/core/proto/android/inputmethodservice/softinputwindow.proto @@ -27,6 +27,6 @@ message SoftInputWindowProto { reserved 2; // window_type reserved 3; // gravity reserved 4; // takes_focus - optional .android.graphics.RectProto bounds = 5; + reserved 5; // bounds optional int32 window_state = 6; } \ No newline at end of file diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto index d7969cf0b3ff75c22a7d0c874cce1733187ffe39..6c936801de183fb1e44ce146fe8cfa6a68e233c1 100644 --- a/core/proto/android/providers/settings/secure.proto +++ b/core/proto/android/providers/settings/secure.proto @@ -97,6 +97,7 @@ message SecureSettingsProto { optional SettingProto accessibility_magnification_joystick_enabled = 50 [ (android.privacy).dest = DEST_AUTOMATIC ]; // Settings for font scaling optional SettingProto accessibility_font_scaling_has_been_changed = 51 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto accessibility_force_invert_color_enabled = 52 [ (android.privacy).dest = DEST_AUTOMATIC ]; } optional Accessibility accessibility = 2; @@ -137,6 +138,8 @@ message SecureSettingsProto { optional SettingProto gesture_setup_complete = 9 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto touch_gesture_enabled = 10 [ (android.privacy).dest = DEST_AUTOMATIC ]; optional SettingProto long_press_home_enabled = 11 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto search_press_hold_nav_handle_enabled = 12 [ (android.privacy).dest = DEST_AUTOMATIC ]; + optional SettingProto search_long_press_home_enabled = 13 [ (android.privacy).dest = DEST_AUTOMATIC ]; } optional Assist assist = 7; diff --git a/core/proto/android/service/usb.proto b/core/proto/android/service/usb.proto index 88893205c79efc3d4a91118c59c17f79a1bbd420..49b8450fcc6776d813860bb15ce0deb399a12246 100644 --- a/core/proto/android/service/usb.proto +++ b/core/proto/android/service/usb.proto @@ -238,10 +238,15 @@ message UsbPortProto { MODE_DEBUG_ACCESSORY = 8; } + enum AltMode { + ALT_MODE_DISPLAYPORT = 1; + } + // ID of the port. A device (eg: Chromebooks) might have multiple ports. optional string id = 1; repeated Mode supported_modes = 2; optional bool supports_compliance_warnings = 3; + repeated AltMode supported_alt_modes = 4; } message UsbPortStatusProto { @@ -271,6 +276,7 @@ message UsbPortStatusProto { optional bool is_power_transfer_limited = 8; optional string usb_power_brick_status = 9; optional string compliance_warnings_string = 10; + optional string displayport_alt_mode_status = 11; } message UsbPortStatusRoleCombinationProto { diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index 67710f64e1e4a6bd3ff9d87839253da698ff2ec3..c09f0a3ed6242db01b61ce9c9652abf71f4e4e52 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -1466,10 +1466,9 @@ + + + @@ -2094,6 +2102,16 @@ + + + + + + + + + @@ -6091,6 +6117,10 @@ android:protectionLevel="signature|privileged|development|appop|retailDemo" /> + + + + + @@ -7628,6 +7663,10 @@ + + + + + + @@ -7790,8 +7838,9 @@ android:process=":ui"> @@ -7863,12 +7912,6 @@ - - - + + + diff --git a/core/res/OWNERS b/core/res/OWNERS index b46902e3a8e9c3fe20239749def6e652d0c3f73e..0df7c2047bc1045e653e910b2551bf1706f09aa2 100644 --- a/core/res/OWNERS +++ b/core/res/OWNERS @@ -52,3 +52,6 @@ per-file res/xml/power_profile_test.xml = file:/BATTERY_STATS_OWNERS # Telephony per-file res/values/config_telephony.xml = file:/platform/frameworks/opt/telephony:/OWNERS per-file res/xml/sms_short_codes.xml = file:/platform/frameworks/opt/telephony:/OWNERS + +# TV Input Framework +per-file res/values/config_tv_external_input_logging.xml = file:/services/core/java/com/android/server/tv/OWNERS diff --git a/core/res/res/anim-ldrtl/activity_close_enter.xml b/core/res/res/anim-ldrtl/activity_close_enter.xml index 6a699e7fcdfa97eeb0eb152e298202c3d6509bf2..0b4864600b582788c4cbd352bece2dcfbd8d6e54 100644 --- a/core/res/res/anim-ldrtl/activity_close_enter.xml +++ b/core/res/res/anim-ldrtl/activity_close_enter.xml @@ -31,7 +31,7 @@ android:duration="450" /> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/core/res/res/drawable/ic_private_profile_badge.xml b/core/res/res/drawable/ic_private_profile_badge.xml new file mode 100644 index 0000000000000000000000000000000000000000..28c0f8aba6f1453e7d39235a0294040631356443 --- /dev/null +++ b/core/res/res/drawable/ic_private_profile_badge.xml @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/core/res/res/drawable/ic_private_profile_icon_badge.xml b/core/res/res/drawable/ic_private_profile_icon_badge.xml new file mode 100644 index 0000000000000000000000000000000000000000..5cb6a9dc118f895bee7e318d501cd3f2f1b373c9 --- /dev/null +++ b/core/res/res/drawable/ic_private_profile_icon_badge.xml @@ -0,0 +1,31 @@ + + + + + + + \ No newline at end of file diff --git a/core/res/res/drawable/stat_sys_private_profile_status.xml b/core/res/res/drawable/stat_sys_private_profile_status.xml new file mode 100644 index 0000000000000000000000000000000000000000..98cc88d86ef3e49268e7bff09bf0f18a8432cbe3 --- /dev/null +++ b/core/res/res/drawable/stat_sys_private_profile_status.xml @@ -0,0 +1,25 @@ + + + + + \ No newline at end of file diff --git a/core/res/res/layout/autofill_fill_dialog.xml b/core/res/res/layout/autofill_fill_dialog.xml index d1a4935633cbb2ed837af6a9fba8d93c88c5ba8c..37d2fa0540f08ebd74ffded281865c64c1777905 100644 --- a/core/res/res/layout/autofill_fill_dialog.xml +++ b/core/res/res/layout/autofill_fill_dialog.xml @@ -85,14 +85,18 @@ android:layout_marginStart="24dp" android:layout_marginEnd="24dp" android:theme="@style/Theme.DeviceDefault.AutofillHalfScreenDialogButton" - android:orientation="horizontal"> + android:orientation="horizontal" + android:gravity="center_vertical"> @@ -107,9 +111,8 @@ @@ -94,9 +98,8 @@ diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 2d13ab5b868d5d337991527faa589854d5003795..b1caec2539490a5d3952c434188cf09f2672a7d2 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -618,8 +618,6 @@ "Gebruik biometrie of skermslot" "Verifieer dat dit jy is" "Gebruik jou biometrie om voort te gaan" - "Gebruik jou vingerafdruk om voort te gaan" - "Gebruik jou gesig om voort te gaan" "Gebruik jou biometriese data of skermslot om voort te gaan" "Biometriese hardeware is nie beskikbaar nie" "Stawing is gekanselleer" @@ -645,6 +643,7 @@ "Vingerafdruk word nie herken nie" "Vingerafdruk word nie herken nie" + "Kan nie gesig herken nie. Gebruik eerder vingerafdruk." "Vingerafdruk is gestaaf" "Gesig is gestaaf" "Gesig is gestaaf; druk asseblief bevestig" @@ -670,14 +669,14 @@ "Iets is fout. Probeer weer." "Vingerafdrukikoon" + "Toestelontsluiting" + "Probeer ’n ander manier om te ontsluit" + "Gebruik Gesigslot wanneer jou vingerafdruk nie herken word nie, soos wanneer jou vingers nat is" + "Gebruik Vingerafdrukslot wanneer jou gesig nie herken word nie, soos wanneer daar nie genoeg lig is nie" "Gesigslot" "Kwessie met Gesigslot" "Tik om jou gesigmodel uit te vee en voeg jou gesig dan weer by" - "Stel Gesigslot op" - "Ontsluit jou foon deur daarna te kyk" "Skakel ""kameratoegang"" in Instellings > Privaatheid aan om Gesigslot te gebruik" - "Stel meer maniere op om te ontsluit" - "Tik om \'n vingerafdruk by te voeg" "Vingerafdrukslot" "Kan nie vingerafdruksensor gebruik nie" "Besoek \'n verskaffer wat herstelwerk doen." @@ -1868,6 +1867,7 @@ "2e werk-%1$s" "3e werk-%1$s" "Kloon %1$s" + "Privaat %1$s" "Vra PIN voordat jy ontspeld" "Vra ontsluitpatroon voordat jy ontspeld" "Vra wagwoord voordat jy ontspeld" @@ -2032,7 +2032,7 @@ "Dateer op in ""%1$s""?" "Dateer %1$s op in ""%2$s""?" "Dateer %1$s en %2$s op in ""%3$s""?" - "Dateer hierdie items op in ""%4$s"": %1$s, %2$s en %3$s?" + "Dateer hierdie items op in ""%4$s"": %1$s, %2$s en %3$s?" "Stoor" "Nee, dankie" "Nie nou nie" @@ -2331,11 +2331,11 @@ "Laat ’n metgeselapp toe om voorgronddienste van agtergrond af te begin" "Mikrofoon is beskikbaar" "Mikrofoon is geblokkeer" - "Dubbelskerm" - "Dubbelskerm is aan" + "Dual Screen" + "Dual Screen is aan" "%1$s gebruik tans albei skerms om inhoud te wys" "Toestel is te warm" - "Dubbelskerm is nie beskikbaar nie omdat jou foon tans te warm word" + "Dual Screen is nie beskikbaar nie omdat jou foon tans te warm word" "Dual Screen is nie beskikbaar nie" "Dual Screen is nie beskikbaar nie omdat Batterybespaarder aan is. Jy kan dit in Instellings afskakel." "Gaan na Instellings" diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 2dd8f3be0527a8facf370f8d3a4e218d740f9138..8ffdba3e3f92189b7f1a4e6ebdcf2e136f10815d 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -249,7 +249,7 @@ "ድንገተኛ አደጋ" "የሳንካ ሪፖርት" "ክፍለ-ጊዜን አብቃ" - "ቅጽበታዊ ገፅ እይታ" + "ቅጽበታዊ ገፅ ዕይታ" "የሳንካ ሪፖርት" "ይሄ እንደ የኢሜይል መልዕክት አድርጎ የሚልከውን ስለመሣሪያዎ የአሁኑ ሁኔታ መረጃ ይሰበስባል። የሳንካ ሪፖርቱን ከመጀመር ጀምሮ እስኪላክ ድረስ ትንሽ ጊዜ ይወስዳል፤ እባክዎ ይታገሱ።" "መስተጋብራዊ ሪፖርት" @@ -257,7 +257,7 @@ "ሙሉ ሪፖርት" "መሣሪያዎ ምላሽ የማይሰጥ ወይም በጣም ቀርፋፋ ከሆነ፣ ወይም ሁሉንም የሪፖርት ክፍሎች የሚያስፈልገዎት ከሆነ ለዝቅተኛ የስርዓት ጣልቃ-ገብነት ይህን አማራጭ ይጠቀሙ። ተጨማሪ ዝርዝሮችን እንዲያስገቡ ወይም ተጨማሪ ቅጽበታዊ ገፅ እይታዎችን እንዲያነሱ አያስችልዎትም።" "{count,plural, =1{በ# ሰከንድ ውስጥ ለሳንካ ሪፖርት ቅጽበታዊ ገፅ ዕይታን በማንሳት ላይ።}one{በ# ሰከንዶች ውስጥ ለሳንካ ሪፖርት ቅጽበታዊ ገፅ ዕይታን በማንሳት ላይ።}other{በ# ሰከንዶች ውስጥ ለሳንካ ሪፖርት ቅጽበታዊ ገፅ ዕይታን በማንሳት ላይ።}}" - "ቅጽበታዊ ገፅ እይታ ከሳንካ ሪፖርት ጋር ተነስቷል" + "ቅጽበታዊ ገፅ ዕይታ ከሳንካ ሪፖርት ጋር ተነስቷል" "ቅጽበታዊ ገፅ እይታን ከሳንካ ሪፖርት ጋር ማንሳት አልተሳካም" "የፀጥታ ሁነታ" "ድምፅ ጠፍቷል" @@ -351,8 +351,8 @@ "የኹናቴ አሞሌ እንዲሆን ለመተግበሪያው ይፈቅዳሉ።" "የሁኔታ አሞሌ ዘርጋ/ሰብስብ" "የሁኔታ አሞሌን ለመዝረጋት እና ለመሰብሰብ ለመተግበሪያው ይፈቅዳሉ።" - "በአንድ የተቆለፈ መሣሪያ ላይ ማሳወቂያዎችን እንደ የሙሉ ገፅ እይታ እንቅስቃሴዎችን ማሳየት" - "መተግበሪያው በአንድ የተቆለፈ መሣሪያ ላይ ማሳወቂያዎችን እንደ የሙሉ ገፅ እይታ እንቅስቃሴዎች አድርጎ እንዲያሳይ ያስችለዋል" + "በአንድ የተቆለፈ መሣሪያ ላይ ማሳወቂያዎችን እንደ የሙሉ ገፅ ዕይታ እንቅስቃሴዎችን ማሳየት" + "መተግበሪያው በአንድ የተቆለፈ መሣሪያ ላይ ማሳወቂያዎችን እንደ የሙሉ ገፅ ዕይታ እንቅስቃሴዎች አድርጎ እንዲያሳይ ያስችለዋል" "አቋራጮችን ይጭናል" "አንድ መተግበሪያ ያለተጠቃሚ ጣልቃ-ገብነት የመነሻ ማያ ገፅ አቋራጮችን እንዲያክል ያስችለዋል።" "አቋራጮችን ያራግፋል" @@ -488,7 +488,7 @@ "በበስተጀርባ ኦዲዮን ይቅዱ" "ይህ መተግበሪያ በማናቸውም ጊዜ ማይክራፎኑን በመጠቀም ኦዲዮን መቅዳት ይችላል።" "የመተግበሪያ መስኮቶች የማያ ገፅ ቀረጻዎችን ማወቅ" - "መተግበሪያው በጥቅም ላይ ሳለ ቅጽበታዊ ገፅ እይታ ሲነሳ ይህ መተግበሪያ ማሳወቂያ ይደርሰዋል።" + "መተግበሪያው በጥቅም ላይ ሳለ ቅጽበታዊ ገፅ ዕይታ ሲነሳ ይህ መተግበሪያ ማሳወቂያ ይደርሰዋል።" "ወደ ሲሙ ትዕዛዞችን መላክ" "መተግበሪያው ትዕዛዞችን ወደ ሲሙ እንዲልክ ያስችለዋል። ይሄ በጣማ አደገኛ ነው።" "አካላዊ እንቅስቃሴን ለይቶ ማወቅ" @@ -618,8 +618,6 @@ "ባዮሜትሪክስ ወይም ማያ ገፅ መቆለፊያን ይጠቀሙ" "እርስዎን መሆንዎን ያረጋግጡ" "ለመቀጠል ባዮሜትሪክዎን ይጠቀሙ" - "ለመቀጠል የእርስዎን የጣት አሻራ ይጠቀሙ" - "ለመቀጠል የእርስዎን መልክ ይጠቀሙ" "ለመቀጠል የባዮሜትሪክ ወይም የማያ ገፅ ቁልፍዎን ይጠቀሙ" "ባዮሜትራዊ ሃርድዌር አይገኝም" "ማረጋገጥ ተሰርዟል" @@ -645,6 +643,7 @@ "የጣት አሻራ አልታወቀም" "የጣት አሻራ አልታወቀም" + "መልክን መለየት አልተቻለም። በምትኩ የጣት አሻራ ይጠቀሙ።" "የጣት አሻራ ትክክለኛነት ተረጋግጧል" "ፊት ተረጋግጧል" "ፊት ተረጋግጧል፣ እባክዎ አረጋግጥን ይጫኑ" @@ -670,14 +669,14 @@ "የሆነ ችግር ተፈጥሯል። እንደገና ይሞክሩ።" "የጣት አሻራ አዶ" + "የመሣሪያ መክፈቻ" + "ለመክፈት ሌላ ዘዴ ይሞክሩ" + "የጣት አሻራዎ ሳይለይ ሲቀር ለምሳሌ ጣትዎ እርጥብ ሲሆን በመልክ መክፈትን ይጠቀሙ" + "መልክዎ ሳይለይ ሲቀር ለምሳሌ በቂ ብርሃን በማይኖርበት ወቅት የጣት አሻራን ይጠቀሙ" "በመልክ መክፈት" "ከመልክ መክፈት ጋር በተያያዘ ችግር" "የእርስዎ የመልክ ሞዴል ለመሰረዝ መታ ያድርጉ፣ ከዚያ መልክዎን እንደገና ያክሉ" - "በመልክ መክፈትን ያዋቅሩ" - "ስልክዎን በመመልከት ያስከፍቱት" "በመልክ መክፈትን ለመጠቀም ""የካሜራ መዳረሻ""ን በቅንብሮች እና ግላዊነት ውስጥ ያብሩ" - "የሚከፍቱባቸው ተጨማሪ መንገዶችን ያቀናብሩ" - "የጣት አሻራን ለማከል መታ ያድርጉ" "በጣት አሻራ መክፈቻ" "የጣት አሻራ ዳሳሽን መጠቀም አይቻልም" "የጥገና አገልግሎት ሰጪን ይጎብኙ።" @@ -1868,6 +1867,7 @@ "2ኛ ሥራ %1$s" "3ኛ ሥራ %1$s" "%1$sን አባዛ" + "የግል %1$s" "ከመንቀል በፊት ፒን ጠይቅ" "ከመንቀል በፊት የማስከፈቻ ስርዓተ-ጥለት ጠይቅ" "ከመንቀል በፊት የይለፍ ቃል ጠይቅ" @@ -2032,7 +2032,7 @@ "በ""%1$s"" ውስጥ ይዘመን?" "%1$s በ""%2$s"" ውስጥ ይዘመን?" "%1$s እና %2$s በ""%3$s"" ውስጥ ይዘመኑ?" - "እነዚህ ንጥሎች በ""%4$s"" ውስጥ ይዘመኑ፦ %1$s%2$s እና %3$s?" + "እነዚህ ንጥሎች በ""%4$s"" ውስጥ ይዘመኑ፦ %1$s%2$s እና %3$s?" "አስቀምጥ" "አይ፣ አመሰግናለሁ" "አሁን አይደለም" @@ -2140,7 +2140,7 @@ "ፈጣን ቅንብሮች" "የኃይል መገናኛ" "የማያ ገፅ ቁልፍ" - "ቅጽበታዊ ገፅ እይታ" + "ቅጽበታዊ ገፅ ዕይታ" "የማዳመጫ መንጠቆ" "የማያ ገፅ ላይ ተደራሽነት አቋራጭ" "የማያ ገፅ ላይ ተደራሽነት አቋራጭ መራጭ" @@ -2160,8 +2160,8 @@ "%1$d+" "የግል" "ሥራ" - "የግል እይታ" - "የስራ እይታ" + "የግል ዕይታ" + "የስራ ዕይታ" "በእርስዎ የአይቲ አስተዳዳሪ ታግዷል" "ይህ ይዘት በሥራ መተግበሪያዎች መጋራት አይችልም" "ይህ ይዘት በሥራ መተግበሪያዎች መከፈት አይችልም" diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 322ae8d8e0853cd515c7d2aaed07ea66f14c1ab3..ff1ecdca11da9c549469c033a90c2cdeb99986ba 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -622,8 +622,6 @@ "استخدام المقاييس الحيوية أو قفل الشاشة" "إثبات هويتك" "استخدام المقاييس الحيوية للمتابعة" - "استخدِم بصمة إصبعك للمتابعة" - "استخدِم وجهك للمتابعة" "استخدام المقاييس الحيوية أو قفل الشاشة للمتابعة" "معدّات المقاييس الحيوية غير متاحة." "تم إلغاء المصادقة." @@ -649,6 +647,7 @@ "لم يتمّ التعرّف على البصمة." "لم يتمّ التعرّف على بصمة الإصبع." + "يتعذّر التعرّف على الوجه. استخدِم بصمة الإصبع بدلاً من ذلك." "تم مصادقة بصمة الإصبع" "تمّت مصادقة الوجه" "تمّت مصادقة الوجه، يُرجى الضغط على \"تأكيد\"." @@ -674,14 +673,14 @@ "حدث خطأ، يُرجى إعادة المحاولة." "رمز بصمة الإصبع" + "فتح قفل الجهاز" + "تجربة طريقة أخرى لفتح القفل" + "استخدِم ميزة \"فتح الجهاز بالتعرف على الوجه\" عندما لا يتم التعرف على بصمة إصبعك، مثلاً عندما تكون أصابعك مبتلة." + "استخدِم ميزة \"فتح الجهاز ببصمة الإصبع\" عندما لا يتم التعرف على وجهك، مثلاً عند عدم وجود ضوء كافٍ." "فتح الجهاز بالتعرف على الوجه" "مشكلة متعلّقة بميزة \"فتح الجهاز بالتعرف على الوجه\"" "انقر لحذف نموذج الوجه ثم أضِف نموذجًا لوجهك مرة أخرى." - "إعداد ميزة \"فتح الجهاز بالتعرف على الوجه\"" - "يمكنك فتح قفل هاتفك بمجرّد النظر إلى الشاشة." "‏لاستخدام ميزة \"فتح الجهاز بالتعرف على الوجه\"، عليك منح إذن ""الوصول إلى الكاميرا"" في الإعدادات > الخصوصية." - "إعداد المزيد من الطرق لفتح قفل الجهاز" - "انقر لإضافة بصمة إصبع." "فتح الجهاز ببصمة الإصبع" "لا يمكن استخدام مستشعر بصمات الإصبع" "يُرجى التواصل مع مقدِّم خدمات إصلاح." @@ -1601,7 +1600,7 @@ "انقر لإزالة القيد." "استخدام مرتفع لبيانات الجوّال" "استخدمت تطبيقاتك بيانات أكثر من المعتاد" - "استخدمَ تطبيق %s بيانات أكثر من المعتاد" + "استخدمَ تطبيق \"%s\" بيانات أكثر من المعتاد" "شهادة الأمان" "هذه الشهادة صالحة." "إصدار لـ:" @@ -1872,6 +1871,7 @@ "العمل الثاني %1$s" "العمل الثالث %1$s" "نسخة طبق الأصل عن \"%1$s\"" + "ملف شخصي خاص على %1$s" "طلب إدخال رقم التعريف الشخصي قبل إزالة التثبيت" "طلب إدخال النقش الخاص بإلغاء القفل قبل إزالة التثبيت" "طلب إدخال كلمة المرور قبل إزالة التثبيت" @@ -2036,7 +2036,7 @@ "هل تريد التحديث في ""%1$s""؟" "هل تريد تحديث %1$s في ""%2$s""؟" "هل تريد تحديث %1$s و%2$s في ""%3$s""؟" - "هل تريد تحديث هذه العناصر في ""%4$s"": %1$s و%2$s و%3$s؟" + "هل تريد تعديل هذه العناصر في ""%4$s"": %1$s و%2$s و%3$s؟" "حفظ" "لا، شكرًا" "ليس الآن" @@ -2335,11 +2335,11 @@ "يسمح هذا الإذن للتطبيق المصاحب ببدء الخدمات التي تعمل في المقدّمة من الخلفية." "الميكروفون متاح." "تم حظر الميكروفون." - "استخدام الشاشتين" - "ميزة \"استخدام الشاشتين\" مفعّلة" + "Dual Screen" + "‏ميزة Dual Screen مفعّلة" "يستخدم \"%1$s\" كلتا الشاشتين لعرض المحتوى." "الجهاز ساخن للغاية" - "ميزة \"استخدام الشاشتين\" غير متاحة لأن هاتفك ساخن للغاية." + "‏ميزة Dual Screen غير متاحة لأنّ هاتفك ساخن للغاية." "‏ميزة Dual Screen غير متاحة" "‏ميزة Dual Screen غير متاحة لأن ميزة \"توفير شحن البطارية\" مفعّلة. ويمكنك إيقاف هذا الإجراء من خلال \"الإعدادات\"." "الانتقال إلى الإعدادات" diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index 12e0948ea9d9e71a1ed91562eb55b25badfb9e1b..0ca9ea235be888eefa997fa12760483ba2accb57 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -618,8 +618,6 @@ "বায়\'মেট্ৰিক অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰক" "এইয়া আপুনিয়েই বুলি সত্যাপন কৰক" "অব্যাহত ৰাখিবলৈ আপোনাৰ বায়\'মেট্ৰিক ব্যৱহাৰ কৰক" - "অব্যাহত ৰাখিবলৈ আপোনাৰ ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰক" - "অব্যাহত ৰাখিবলৈ নিজৰ মুখাৱয়ব ব্যৱহাৰ কৰক" "অব্যাহত ৰাখিবলৈ আপোনাৰ বায়’মেট্ৰিক অথবা স্ক্ৰীন লক ব্যৱহাৰ কৰক" "বায়োমেট্ৰিক হাৰ্ডৱেৰ উপলব্ধ নহয়" "বিশ্বাসযোগ্যতাৰ প্ৰমাণীকৰণ বাতিল কৰা হৈছে" @@ -645,6 +643,7 @@ "ফিংগাৰপ্ৰিণ্ট চিনাক্ত কৰিব পৰা নাই" "ফিংগাৰপ্ৰিণ্ট চিনাক্ত কৰিব পৰা নাই" + "মুখাৱয়ব চিনিব নোৱাৰি। ফিংগাৰপ্ৰিণ্ট ব্যৱহাৰ কৰক।" "ফিংগাৰপ্ৰিণ্টৰ সত্যাপন কৰা হ’ল" "মুখমণ্ডলৰ বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰা হ’ল" "মুখমণ্ডলৰ বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰা হ’ল, অনুগ্ৰহ কৰি ‘নিশ্চিত কৰক’ বুটামটো টিপক" @@ -670,14 +669,14 @@ "কিবা ভুল হ’ল। পুনৰ চেষ্টা কৰক।" "ফিংগাৰপ্ৰিণ্ট আইকন" + "ডিভাইচ আনলক" + "আনলক কৰিবলৈ আন এটা উপায় ব্যৱহাৰ কৰি চাওক" + "আপোনাৰ আঙুলিকেইটা তিতি থকাৰ দৰে পৰিস্থিতিত, আপোনাৰ ফিংগাৰপ্ৰিণ্ট চিনাক্ত কৰিব নোৱাৰিলে ফে’চ আনলক সুবিধাটো ব্যৱহাৰ কৰক" + "পৰ্যাপ্ত পোহৰ নথকাৰ দৰে পৰিস্থিতিত, আপোনাৰ মুখাৱয়ব চিনাক্ত কৰিব নোৱাৰিলে ফিংগাৰপ্ৰিণ্ট আনলক সুবিধাটো ব্যৱহাৰ কৰক" "ফেচ আনলক" "ফেচ আনলক ব্যৱহাৰ কৰোঁতে সমস্যা হৈছে" "আপোনাৰ মুখাৱয়বৰ মডেলটো মচিবলৈ টিপক, তাৰ পাছত পুনৰ আপোনাৰ মুখাৱয়ব যোগ দিয়ক" - "ফেচ আনলক সুবিধাটো ছেট আপ কৰক" - "আপোনাৰ ফ’নটোলৈ চাই সেইটো আনলক কৰক" "ফেচ আনলক সুবিধাটো ব্যৱহাৰ কৰিবলৈ ছেটিং > গোপনীয়তাত ""কেমেৰাৰ এক্সেছ"" অন কৰক" - "আনলক কৰাৰ অধিক উপায় ছেট আপ কৰক" - "এটা ফিংগাৰপ্ৰিণ্ট যোগ দিবলৈ টিপক" "ফিংগাৰপ্ৰিন্ট আনলক" "ফিংগাৰপ্ৰিণ্ট ছেন্সৰ ব্যৱহাৰ কৰিব নোৱাৰি" "মেৰামতি সেৱা প্ৰদানকাৰী কোনো প্ৰতিষ্ঠানলৈ যাওক।" @@ -1868,6 +1867,7 @@ "২য় কার্য %1$s" "৩য় কার্য %1$s" "ক্ল’ন %1$s" + "ব্যক্তিগত %1$s" "আনপিন কৰাৰ পূৰ্বে পিন দিবলৈ কওক" "আনপিন কৰাৰ পূৰ্বে আনলক আৰ্হি দিবলৈ কওক" "আনপিন কৰাৰ পূৰ্বে পাছৱৰ্ড দিবলৈ কওক" @@ -2032,7 +2032,7 @@ "%1$s""ত আপডে’ট কৰিবনে?" "%2$s""ত %1$s আপডে’ট কৰিবনে?" "%3$s""ত %1$s আৰু %2$s আপডে’ট কৰিবনে?" - "এই তথ্যবোৰ ""%4$s"": %1$s, %2$s আৰু %3$sত আপডে’ট কৰিবনে ?" + "এই তথ্যবোৰ ""%4$s"": %1$s, %2$s আৰু %3$sত আপডে’ট কৰিবনে?" "ছেভ কৰক" "নালাগে, ধন্যবাদ" "এতিয়া নহয়" diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index ff7436fc5be3fe6f4216145df2500c2c4e0deb05..0004ba87d9fdc1ff4b079b80898743685e499491 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -618,8 +618,6 @@ "Biometrik məlumatlardan və ya ekran kilidindən istifadə edin" "Kimliyinizi doğrulayın" "Davam etmək üçün biometrik məlumatlarınızdan istifadə edin" - "Barmaq izi ilə davam edin" - "Üz ilə davam edin" "Davam etmək üçün biometrik məlumatlar və ya ekran kilidinizdən istifadə edin" "Biometrik proqram əlçatan deyil" "Doğrulama ləğv edildi" @@ -645,6 +643,7 @@ "Barmaq izi tanınmır" "Barmaq izi tanınmır" + "Tanımaq olmur. Barmaq izini işlədin." "Barmaq izi doğrulandı" "Üz doğrulandı" "Üz təsdiq edildi, təsdiq düyməsinə basın" @@ -670,14 +669,14 @@ "Xəta oldu. Yenə cəhd edin." "Barmaq izi ikonası" + "Cihazın kiliddən çıxarılması" + "Başqa yolla kiliddən çıxarın" + "Məsələn, barmaqlar yaş olduğu üçün barmaq izi tanınmadıqda Üzlə Kilidaçmadan istifadə edin" + "Məsələn, kifayət qədər işıq olmadığı üçün üz tanınmadıqda Barmaqla Kilidaçmadan istifadə edin" "Üz ilə kiliddən çıxarma" "Üz ilə kiliddən çıxarma problemi" "Üz modelinizi silmək üçün toxunun, sonra yenidən üzünüzü əlavə edin" - "Üz ilə kiliddən çıxarmanı ayarlayın" - "Telefona baxaraq onu kiliddən çıxarın" "Üz ilə Kiliddən Açma funksiyasını istifadə etmək üçün Ayarlar > Məxfilik bölməsində ""Kameraya girişi"" aktiv edin" - "Kiliddən çıxarmağın daha çox yolunu ayarlayın" - "Barmaq izi əlavə etmək üçün toxunun" "Barmaq izi ilə kiliddən çıxarma" "Barmaq izi sensorundan istifadə etmək mümkün deyil" "Təmir provayderini ziyarət edin." @@ -1868,6 +1867,7 @@ "2-ci İş %1$s" "3-cü İş %1$s" "Kopyalayın: %1$s" + "Şəxsi %1$s" "Ayırmadan öncə PIN istənilsin" "Qrafik açar istənilsin" "Ayırmadan öncə parol istənilsin" @@ -2032,7 +2032,7 @@ "%1$s"" ünvanında yenilənsin?" "%1$s ""%2$s"" ünvanında yenilənsin?" "%1$s%2$s ""%3$s"" ünvanında yenilənsin?" - "Bu elementlər ""%4$s"" ünvanında yenilənsin: %1$s, %2$s%3$s ?" + "%4$s"": %1$s, %2$s%3$s bölmələrində bu elementlər yenilənsin?" "Yadda saxlayın" "Xeyr, çox sağ olun" "İndi yox" diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index c32f95a9cf34483045924c46398fd9f9efbccd85..74ba52da35182a83b6b60bf5c3da8fbd35d9d9ff 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -494,7 +494,7 @@ "Omogućava aplikaciji da šalje komande SIM kartici. To je veoma opasno." "prepoznavanje fizičkih aktivnosti" "Ova aplikacija može da prepozna fizičke aktivnosti." - "snimanje fotografija i video snimaka" + "snimanje fotografija i videa" "Ova aplikacija može da snima slike i video snimke pomoću kamere dok se aplikacija koristi." "da snima slike i video snimke u pozadini" "Ova aplikacija može da snima fotografije i video snimke pomoću kamere u bilo kom trenutku." @@ -619,8 +619,6 @@ "Koristite biometriju ili zaključavanje ekrana" "Potvrdite svoj identitet" "Koristite biometrijski podatak da biste nastavili" - "Nastavite pomoću otiska prsta" - "Potvrdite identitet licem da biste nastavili" "Koristite biometrijski podatak ili zaključavanje ekrana da biste nastavili" "Biometrijski hardver nije dostupan" "Potvrda identiteta je otkazana" @@ -646,6 +644,7 @@ "Otisak prsta nije prepoznat" "Otisak prsta nije prepoznat" + "Lice nije prepoznato. Koristite otisak prsta." "Otisak prsta je potvrđen" "Lice je potvrđeno" "Lice je potvrđeno. Pritisnite Potvrdi" @@ -671,14 +670,14 @@ "Došlo je do problema. Probajte ponovo." "Ikona otiska prsta" + "Otključavanje uređaja" + "Probajte drugi način otključavanja" + "Koristite otključavanje licem kada vam se otisak prsta ne prepozna, na primer, kada su vam prsti vlažni" + "Koristite otključavanje otiskom prsta kada vam se lice ne prepozna, na primer, kada je osvetljenje slabo" "Otključavanje licem" "Problem sa otključavanje licem" "Dodirnite da biste izbrisali model lica, pa ponovo dodajte svoje lice" - "Podesite otključavanje licem" - "Otključajte telefon tako što ćete ga pogledati" "Da biste koristili otključavanje licem, uključite ""pristup kameri"" u odeljku Podešavanja > Privatnost" - "Podesite još načina za otključavanje" - "Dodirnite da biste dodali otisak prsta" "Otključavanje otiskom prsta" "Ne možete da koristite senzor za otisak prsta" "Posetite dobavljača za popravke." @@ -746,8 +745,8 @@ "Omogućava aplikaciji da čita video fajlove iz deljenog memorijskog prostora." "čitanje fajlova slika iz deljenog memorijskog prostora" "Omogućava aplikaciji da čita fajlove slika iz deljenog memorijskog prostora." - "čitanje fajlova slika i video snimaka koje korisnik bira iz deljenog memorijskog prostora" - "Omogućava aplikaciji da čita fajlove slika i video snimaka koje izaberete iz deljenog memorijskog prostora." + "čitanje fajlova slika i videa koje korisnik bira iz deljenog memorijskog prostora" + "Omogućava aplikaciji da čita fajlove slika i videa koje izaberete iz deljenog memorijskog prostora." "menjanje ili brisanje sadržaja deljenog memorijskog prostora" "Dozvoljava aplikaciji da upisuje sadržaj deljenog memorijskog prostora." "upućivanje/prijem SIP poziva" @@ -808,7 +807,7 @@ "Dozvoljava vlasniku da ažurira aplikaciju koju je prethodno instalirala bez radnji korisnika" "Podešavanje pravila za lozinku" "Kontroliše dužinu i znakove dozvoljene u lozinkama i PIN-ovima za zaključavanje ekrana." - "Nadgledajte pokušaje otključavanja ekrana" + "Nadzor pokušaja otključavanja ekrana" "Prati broj netačno unetih lozinki prilikom otključavanja ekrana i zaključava tablet ili briše podatke sa tableta ako je netačna lozinka uneta previše puta." "Nadgleda broj netačnih lozinki unetih pri otključavanju ekrana i zaključava Android TV uređaj ili briše sve podatke sa Android TV uređaja ako se unese previše netačnih lozinki." "Prati broj netačno unetih lozinki pri otključavanju ekrana i zaključava sistem za info-zabavu ili briše sve podatke sa sistema za info-zabavu ako je netačna lozinka uneta previše puta." @@ -1173,7 +1172,7 @@ "Dodirnite za više informacija ili zaustavljanje aplikacije." "Potvrdi" "Otkaži" - "Potvrdi" + "U redu" "Otkaži" "Pažnja" "Učitava se…" @@ -1418,7 +1417,7 @@ "Dodirnite da biste podesili" "Izaberite da biste podesili" "Možda morate da reformatirate uređaj. Dodirnite da biste izbacili." - "Za čuvanje slika, video snimaka, muzike i drugog sadržaja" + "Za čuvanje slika, videa, muzike i drugog sadržaja" "Pregledajte medijske fajlove" "Problem sa: %s" "%s ne radi" @@ -1869,6 +1868,7 @@ "2. poslovni %1$s" "3. poslovni imejl %1$s" "Kloniraj %1$s" + "Privatni %1$s" "Traži PIN pre otkačinjanja" "Traži šablon za otključavanje pre otkačinjanja" "Traži lozinku pre otkačinjanja" @@ -2033,7 +2033,7 @@ "Želite li da ažurirate u usluzi ""%1$s""?" "Želite li da ažurirate stavku %1$s u usluzi ""%2$s""?" "Želite li da ažurirate stavke %1$s i %2$s u usluzi ""%3$s""?" - "Želite li da ažurirate ove stavke u usluzi ""%4$s"": %1$s, %2$s i %3$s?" + "Želite li da ažurirate ove stavke u usluzi ""%4$s"": %1$s, %2$s i %3$s?" "Sačuvaj" "Ne, hvala" "Ne sada" @@ -2332,11 +2332,11 @@ "Dozvoljava pratećoj aplikaciji da pokrene usluge u prvom planu iz pozadine." "Mikrofon je dostupan" "Mikrofon je blokiran" - "Dvojni ekran" - "Dvojni ekran je uključen" + "Dual Screen" + "Dual Screen je uključen" "%1$s koristi oba ekrana za prikazivanje sadržaja" "Uređaj je previše zagrejan" - "Dvojni ekran je nedostupan jer je telefon previše zagrejan" + "Dual Screen je nedostupan jer je telefon previše zagrejan" "Dual Screen nije dostupan" "Dual Screen nije dostupan zato što je Ušteda baterije uključena. To možete da isključite u podešavanjima." "Idi u Podešavanja" diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 3be47fa89b02b2656776617ef027540c6a50de1c..3a79090ebf1c6e6123ab8ad96b463d4210a29644 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -620,8 +620,6 @@ "Выкарыстоўваць біяметрыю ці блакіроўку экрана" "Спраўдзіце, што гэта вы" "Каб працягнуць, скарыстайце свае біяметрычныя даныя" - "Каб працягнуць, скарыстайце адбітак пальца" - "Каб працягнуць, скарыстайце распазнаванне твару" "Каб працягнуць, скарыстайце біяметрычныя даныя ці сродак разблакіроўкі экрана" "Біяметрычнае абсталяванне недаступнае" "Аўтэнтыфікацыя скасавана" @@ -647,6 +645,7 @@ "Адбітак пальца не распазнаны" "Адбітак пальца не распазнаны" + "Твар не распазнаны. Скарыстайце адбітак пальца." "Адбітак пальца распазнаны" "Твар распазнаны" "Твар распазнаны. Націсніце, каб пацвердзіць" @@ -672,14 +671,14 @@ "Нешта пайшло не так. Паўтарыце спробу." "Значок адбіткаў пальцаў" + "Разблакіроўка прылады" + "Паспрабуйце іншы спосаб разблакіроўкі" + "Выкарыстоўвайце распазнаванне твару, калі прылада не распазнае ваш адбітак пальца. Гэта функцыя можа прыдацца, напрыклад, калі ў вас мокрыя пальцы." + "Выкарыстоўвайце разблакіроўку адбіткам пальца, калі прылада не распазнае ваш твар. Гэта функцыя можа прыдацца, напрыклад, ва ўмовах недастатковай асветленасці." "Распазнаванне твару" "Праблема з распазнаваннем твару" "Націсніце, каб выдаліць мадэль твару, пасля дадайце твар яшчэ раз" - "Наладзьце распазнаванне твару" - "Разблакіруйце свой тэлефон, паглядзеўшы на яго" "Каб выкарыстоўваць распазнаванне твару, уключыце ""доступ да камеры"" праз раздзел \"Налады > Прыватнасць\"" - "Наладзьце дадатковыя спосабы разблакіроўкі" - "Націсніце, каб дадаць адбітак пальца" "Разблакіроўка адбіткам пальца" "Не ўдалося скарыстаць сканер адбіткаў пальцаў" "Звярніцеся ў сэрвісны цэнтр." @@ -813,7 +812,7 @@ "Сачыць за колькасцю няправільных набраных пароляў падчас разблакоўкі экрана і блакаваць планшэт або сціраць усе дадзеныя на ім, калі няправільны пароль набраны занадта шмат разоў." "Сачыць за колькасцю няправільна набраных пароляў падчас разблакіроўкі экрана і заблакіраваць прыладу Android TV або сцерці ўсе даныя на прыладзе, калі няправільны пароль набраны занадта шмат разоў." "Падчас разблакіроўкі экрана сачыць за колькасцю няправільна набраных пароляў і, калі няправільны пароль набраны занадта шмат разоў, заблакіраваць інфармацыйна-забаўляльную сістэму ці сцерці ў ёй усе даныя." - "Сачыць за колькасцю няправільных набраных пароляў падчас разблакоўкі экрана і блакаваць тяэлефон або сціраць усе дадзеныя на ім, калі набрана занадта шмат няправільных пароляў." + "Сачыць за колькасцю няправільна набраных пароляў падчас разблакіроўкі экрана і блакіраваць тэлефон або сціраць усе даныя на ім, калі набрана занадта шмат няправільных пароляў." "Сачыць за колькасцю няправільна набраных пароляў падчас разблакіроўкі экрана і блакіраваць планшэт або сцерці ўсе даныя гэтага карыстальніка, калі няправільны пароль набраны занадта шмат разоў." "Сачыць за колькасцю няправільна набраных пароляў падчас разблакіроўкі экрана і заблакіраваць прыладу Android TV або сцерці ўсе даныя карыстальніка, калі няправільны пароль набраны занадта шмат разоў." "Падчас разблакіроўкі экрана сачыць за колькасцю няправільна набраных пароляў і, калі няправільны пароль набраны занадта шмат разоў, заблакіраваць інфармацыйна-забаўляльную сістэму ці сцерці ўсе даныя гэтага профілю." @@ -1870,6 +1869,7 @@ "Другая праца %1$s" "Трэцяя праца %1$s" "Кланіраваць \"%1$s\"" + "%1$s (прыватны профіль)" "Запытваць PIN-код перад адмацаваннем" "Запытваць узор разблакіроўкі перад адмацаваннем" "Запытваць пароль перад адмацаваннем" @@ -2034,7 +2034,7 @@ "Абнавіць у сэрвісе ""%1$s""?" "Абнавіць даныя \"%1$s\" у сэрвісе ""%2$s""?" "Абнавіць даныя \"%1$s\" і \"%2$s\" у сэрвісе ""%3$s""?" - "Абнавіць наступныя элементы ў сэрвісе ""%4$s"": %1$s, %2$s і %3$s?" + "Абнавіць наступныя даныя ў сэрвісе ""%4$s"": %1$s, %2$s і %3$s?" "Захаваць" "Не, дзякуй" "Не зараз" @@ -2333,11 +2333,11 @@ "Спадарожная праграма зможа запускаць актыўныя сэрвісы з фонавага рэжыму." "Мікрафон даступны" "Мікрафон заблакіраваны" - "Двайны экран" - "Уключана функцыя \"Двайны экран\"" + "Dual Screen" + "Уключана функцыя Dual Screen" "Праграма \"%1$s\" выкарыстоўвае абодва экраны для паказу змесціва" "Прылада моцна нагрэлася" - "Функцыя \"Двайны экран\" недаступная, бо тэлефон моцна награваецца" + "Функцыя Dual Screen недаступная, бо тэлефон моцна награваецца" "Функцыя Dual Screen недаступная" "Функцыя Dual Screen недаступная, бо ўключаны рэжым энергазберажэння. Вы можаце выключыць яго ў Наладах." "Перайсці ў Налады." diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 10d747b8878f80a6f4e84ce17daa45c4da16f950..97345fcf4b3dc3a235a22d4a9c6174694daf32a7 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -618,8 +618,6 @@ "Използване на биометрични данни или опцията за заключване на екрана" "Потвърдете, че сте вие" "Използвайте биометричните си данни, за да продължите" - "Използвайте отпечатъка си, за да продължите" - "Използвайте лицето си, за да продължите" "Използвайте биометричните си данни или опцията за заключване на екрана, за да продължите" "Биометричният хардуер не е налице" "Удостоверяването бе анулирано" @@ -645,6 +643,7 @@ "Отпечатъкът не е разпознат" "Отпечатъкът не е разпознат" + "Лицето не е разпознато. Използвайте отпечатък." "Отпечатъкът е удостоверен" "Лицето е удостоверено" "Лицето е удостоверено. Моля, натиснете „Потвърждаване“" @@ -670,14 +669,14 @@ "Нещо се обърка. Опитайте отново." "Икона за отпечатък" + "Отключване на устройството" + "Изпробвайте друг начин за отключване" + "Използвайте „Отключване с лице“, когато отпечатъкът ви не бъде разпознат, например когато пръстите ви са мокри" + "Използвайте „Отключване с отпечатък“, когато лицето ви не бъде разпознато, например когато няма достатъчно светлина" "Отключване с лице" "Проблем с отключването с лице" "Докоснете, за да изтриете модела на лицето си, след което добавете лицето си отново" - "Настройване на отключването с лице" - "Отключвайте телефона си, като го погледнете" "За да използвате функцията „Отключване с лице“, включете ""достъпа до камерата"" от „Настройки > Поверителност“" - "Настройване на още начини за отключване на телефона" - "Докоснете, за да добавите отпечатък" "Отключване с отпечатък" "Сензорът за отпечатъци не може да се използва" "Посетете оторизиран сервиз." @@ -1868,6 +1867,7 @@ "Втори служебен профил (%1$s)" "Трети служебен профил (%1$s)" "Копие на %1$s" + "Частен %1$s" "Запитване за ПИН код преди освобождаване" "Запитване за фигура за отключване преди освобождаване" "Запитване за парола преди освобождаване" @@ -2032,7 +2032,7 @@ "Искате ли да актуализирате в(ъв) ""%1$s""?" "Искате ли да актуализирате %1$s в(ъв) ""%2$s""?" "Искате ли да актуализирате %1$s и %2$s в(ъв) ""%3$s""?" - "Искате ли да актуализирате тези елементи в(ъв) ""%4$s"": %1$s, %2$s и %3$s?" + "Искате ли да актуализирате тези елементи в(ъв) ""%4$s"": %1$s, %2$s и %3$s?" "Запазване" "Не, благодаря" "Не сега" diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index 9d276cb3927b4fd9f0ffd29acd061c93f9bd71f2..f6f5b0eb38ad450d7b9674c0e0113d2df3e55538 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -618,8 +618,6 @@ "বায়োমেট্রিক্স অথবা স্ক্রিন লক ব্যবহার করুন" "আপনার পরিচয় যাচাই করুন" "চালিয়ে যেতে আপনার বায়োমেট্রিক্স ব্যবহার করুন" - "চালিয়ে যেতে ফিঙ্গারপ্রিন্ট ব্যবহার করুন" - "চালিয়ে যেতে আপনার ফেস ব্যবহার করুন" "চালিয়ে যেতে আপনার বায়োমেট্রিক্স বা স্ক্রিন লক ব্যবহার করুন" "বায়োমেট্রিক হার্ডওয়্যার পাওয়া যাবে না" "যাচাইকরণ বাতিল হয়েছে" @@ -645,6 +643,7 @@ "ফিঙ্গারপ্রিন্ট শনাক্ত করা যায়নি" "ফিঙ্গারপ্রিন্ট শনাক্ত করা যায়নি" + "মুখ শনাক্ত করতে পারছি না। পরিবর্তে আঙ্গুলের ছাপ ব্যবহার করুন।" "আঙ্গুলের ছাপ যাচাই করা হয়েছে" "ফেস যাচাই করা হয়েছে" "ফেস যাচাই করা হয়েছে, \'কনফার্ম করুন\' বোতাম প্রেস করুন" @@ -670,14 +669,14 @@ "কোনও সমস্যা হয়েছে। আবার করে দেখুন।" "আঙ্গুলের ছাপ আইকন" + "ডিভাইস আনলক করুন" + "অন্য কোনওভাবে আনলক করার চেষ্টা করুন" + "আপনার \'ফিঙ্গারপ্রিন্ট\' শনাক্ত করা না গেলে \'ফেস আনলক\' ব্যবহার করুন, যেমন যখন আপনার আঙুল ভিজে থাকে" + "আপনার মুখ শনাক্ত করা না গেলে \'ফিঙ্গারপ্রিন্ট আনলক\' ব্যবহার করুন, যেমন যখন পর্যাপ্ত আলো নেই" "ফেস আনলক" "\'ফেস আনলক\' ফিচার ব্যবহার করার ক্ষেত্রে হওয়া সমস্যা" "আপনার ফেস মডেল মুছে দেওয়ার জন্য ট্যাপ করুন এবং তারপরে আবার ফেস যোগ করুন" - "\'ফেস আনলক\' সেট-আপ করুন" - "আপনার ফোনের দিকে তাকিয়ে এটিকে আনলক করুন" "\'ফেস আনলক\' ফিচার ব্যবহার করতে \'সেটিংস ও গোপনীয়তা\' বিকল্পে গিয়ে ""ক্যামেরায় অ্যাক্সেস দিন" - "আনলক করার জন্য বিভিন্ন উপায়ে সেট আপ করুন" - "একটি আঙ্গুলের ছাপ যোগ করতে ট্যাপ করুন" "ফিঙ্গারপ্রিন্ট আনলক" "আঙ্গুলের ছাপের সেন্সর ব্যবহার করা যাচ্ছে না" "একজন মেরামতি মিস্ত্রির কাছে যান।" @@ -1868,6 +1867,7 @@ "দ্বিতীয় কার্যক্ষেত্র %1$s" "তৃতীয় কার্যক্ষেত্র %1$s" "%1$s ক্লোন" + "ব্যক্তিগত %1$s" "আনপিন করার আগে পিন চান" "আনপিন করার আগে আনলক প্যাটার্ন চান" "আনপিন করার আগে পাসওয়ার্ড চান" @@ -2032,7 +2032,7 @@ "%1$s""-এ আপডেট করতে চান?" "%2$s""-এ %1$s আপডেট করতে চান?" "%3$s""-এ %1$s এবং %2$s আপডেট করতে চান?" - "%4$s""-এ এই আইটেমগুলি আপডেট করতে চান: %1$s, %2$s এবং %3$s?" + "এইসব আইটেম ""%4$s""-এ আপডেট করতে চান: %1$s, %2$s%3$s?" "সেভ করুন" "না থাক" "এখনই নয়" diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 33ac0c31939e52d37f81f6a262e6ce3c2b56ca19..3fd0637d27f9abe358b0aef62170ac025816ab97 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -619,8 +619,6 @@ "Koristi biometriju ili zaključavanje ekrana" "Potvrdite identitet" "Koristite biometriju da nastavite" - "Potvrdite identitet otiskom prsta da nastavite" - "Potvrdite identitet licem da nastavite" "Koristite biometriju ili zaključavanje ekrana da nastavite" "Biometrijski hardver nije dostupan" "Autentifikacija je otkazana" @@ -646,6 +644,7 @@ "Otisak prsta nije prepoznat" "Otisak prsta nije prepoznat" + "Nije moguće prepoznati lice. Koristite otisak prsta." "Otisak prsta je potvrđen" "Lice je provjereno" "Lice je provjereno, pritisnite dugme za potvrdu" @@ -671,14 +670,14 @@ "Nešto nije uredu. Pokušajte ponovo." "Ikona za otisak prsta" + "Otključavanje uređaja" + "Pokušajte s drugim načinom zaključavanja" + "Koristite otključavanje licem kada se vaš otisak prsta ne prepozna, naprimjer kada su vam prsti mokri" + "Koristite otključavanje otiskom prsta kada se vaše lice ne prepozna, naprimjer kada nema dovoljno svjetla" "Otključavanje licem" "Problem s otključavanjem licem" "Dodirnite da izbrišete model lica, a zatim ponovo dodajte lice" - "Postavite otključavanje licem" - "Otključajte telefon gledajući u njega" "Da koristite otključavanje licem, uključite ""Pristup kameri"" u meniju Postavke > Privatnost" - "Postavite više načina otključavanja" - "Dodirnite da dodate otisak prsta" "Otključavanje otiskom prsta" "Nije moguće koristiti senzor za otisak prsta" "Posjetite pružaoca usluga za popravke." @@ -1869,6 +1868,7 @@ "2. poslovni %1$s" "3. poslovni %1$s" "Kloniranje aplikacije %1$s" + "%1$s – privatno" "Traži PIN prije nego se otkači" "Traži uzorak za otključavanje prije poništavanja kačenja" "Traži lozinku prije nego se otkači" @@ -2033,7 +2033,7 @@ "Ažurirati u ""%1$s""?" "Ažurirati %1$s u ""%2$s""?" "Ažurirati %1$s i %2$s u ""%3$s""?" - "Ažurirati ove stavke u ""%4$s"": %1$s, %2$s i %3$s?" + "Ažurirati ove stavke u oznaci ""%4$s"": %1$s, %2$s i %3$s?" "Sačuvaj" "Ne, hvala" "Ne sada" diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 356576d6acbdd8ccc12382688f66ae28457ba6ac..010e22ce781d0c1ab0d66cda5b257d85ade5f1b1 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -619,8 +619,6 @@ "Fes servir la biometria o el bloqueig de pantalla" "Verifica la teva identitat" "Utilitza la teva biometria per continuar" - "Utilitza l\'empremta digital per continuar" - "Utilitza la cara per continuar" "Utilitza la biometria o el bloqueig de pantalla per continuar" "Maquinari biomètric no disponible" "S\'ha cancel·lat l\'autenticació" @@ -646,6 +644,7 @@ "L\'empremta digital no s\'ha reconegut" "L\'empremta digital no s\'ha reconegut" + "No podem detectar la cara. Usa l\'empremta digital." "L\'empremta digital s\'ha autenticat" "Cara autenticada" "Cara autenticada; prem el botó per confirmar" @@ -671,14 +670,14 @@ "S\'ha produït un error. Torna-ho a provar." "Icona d\'empremta digital" + "Desbloqueig del dispositiu" + "Prova una altra manera de desbloquejar" + "Utilitza Desbloqueig facial quan no es reconegui la teva empremta digital, com ara quan tens els dits mullats" + "Utilitza Desbloqueig amb empremta digital quan no es reconegui la teva cara, com ara quan no hi ha prou llum" "Desbloqueig facial" "Problema amb Desbloqueig facial" "Toca per suprimir el teu model facial i, a continuació, torna a afegir la teva cara" - "Configura Desbloqueig facial" - "Mira el telèfon per desbloquejar-lo" "Per utilitzar Desbloqueig facial, activa ""Accés a la càmera"" a Configuració > Privadesa" - "Configura més maneres de desbloquejar el dispositiu" - "Toca per afegir una empremta digital" "Desbloqueig amb empremta digital" "No es pot utilitzar el sensor d\'empremtes digitals" "Visita un proveïdor de reparacions." @@ -1869,6 +1868,7 @@ "2n %1$s de la feina" "3r %1$s de la feina" "Clon de %1$s" + "%1$s privat" "Sol·licita el PIN per deixar de fixar" "Sol·licita el patró de desbloqueig per deixar de fixar" "Demana la contrasenya per deixar de fixar" @@ -1890,8 +1890,8 @@ "{count,plural, =1{Durant 1 hora}many{Durant # hores}other{Durant # hores}}" "{count,plural, =1{Durant 1 h}many{Durant # h}other{Durant # h}}" "Finalitza: %1$s" - "Fins a les %1$s" - "Fins a les %1$s (propera alarma)" + "Finalitza: %1$s" + "Finalitza: %1$s (propera alarma)" "Fins que no el desactivis" "Fins que desactivis el mode No molestis" "%1$s / %2$s" @@ -2033,7 +2033,7 @@ "Vols actualitzar-ho a ""%1$s""?" "Vols actualitzar %1$s a ""%2$s""?" "Vols actualitzar %1$s i %2$s a ""%3$s""?" - "Vols actualitzar %1$s, %2$s i %3$s a ""%4$s""?" + "Vols actualitzar aquests elements a ""%4$s"": %1$s, %2$s i %3$s?" "Desa" "No, gràcies" "Ara no" diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index a4e9ab5f29dbf7ab616b88537249934a03baf4dd..89d25015d4db4d5199a0e7789aa5cb7ff0f48254 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -620,8 +620,6 @@ "Použít biometrii nebo zámek obrazovky" "Potvrďte, že jste to vy" "Pokračujte biometrickým ověřením" - "Pokračujte přiložením prstu" - "Pokračujte ověřením obličeje" "Pokračujte ověřením pomocí biometrických údajů nebo zámku obrazovky" "Biometrický hardware není k dispozici" "Ověření bylo zrušeno" @@ -647,6 +645,7 @@ "Otisk prstu nebyl rozpoznán" "Otisk prstu nebyl rozpoznán" + "Obličej se nepodařilo rozpoznat. Použijte místo něj otisk prstu." "Otisk byl ověřen" "Obličej byl ověřen" "Obličej byl ověřen, stiskněte tlačítko pro potvrzení" @@ -672,14 +671,14 @@ "Došlo k chybě. Zkuste to znovu." "Ikona otisku prstů" + "Odemknutí zařízení" + "Použijte jiný způsob odemknutí" + "Pokud váš otisk prstu nebude rozpoznán (např. když budete mít mokré prsty), použijte odemknutí obličejem" + "Pokud váš obličej nebude rozpoznán (např. když bude málo světla), použijte odemknutí otiskem prstu" "Odemknutí obličejem" "Problém s odemykáním obličejem" "Klepnutím svůj model obličeje smažte a potom ho přidejte znovu" - "Nastavte odemknutí obličejem" - "Telefon odemknete pohledem" "Pokud chcete používat odemknutí obličejem, v Nastavení > Soukromí zapnetě ""přístup k fotoaparátu" - "Nastavte si více způsobů odemykání" - "Klepnutím přidáte otisk prstu" "Odemknutí otiskem prstu" "Snímač otisků prstů nelze použít" "Navštivte servis" @@ -1870,6 +1869,7 @@ "2. %1$s do práce" "3. %1$s do práce" "Klon %1$s" + "Soukromá aplikace %1$s" "Před uvolněním požádat o PIN" "Před uvolněním požádat o bezpečnostní gesto" "Před odepnutím požádat o heslo" @@ -2034,7 +2034,7 @@ "Aktualizovat ve službě ""%1$s""?" "Aktualizovat údaj %1$s ve službě ""%2$s""?" "Aktualizovat údaje %1$s%2$s ve službě ""%3$s""?" - "Aktualizovat tyto položky ve službě ""%4$s"": %1$s, %2$s%3$s?" + "Aktualizovat tyto položky ve službě ""%4$s"": %1$s, %2$s%3$s?" "Uložit" "Ne, děkuji" "Teď ne" diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index b8bd5bafa881de63cef994f17259f04b8d42a9d8..e816391f44b4be8c18f1134b032c564220e7dca8 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -618,8 +618,6 @@ "Brug biometri eller skærmlås" "Verificer, at det er dig" "Brug dine biometriske data for at fortsætte" - "Brug dit fingeraftryk for at fortsætte" - "Brug dit ansigt for at fortsætte" "Brug dine biometriske data eller din skærmlås for at fortsætte" "Biometrisk hardware er ikke tilgængelig" "Godkendelsen blev annulleret" @@ -645,6 +643,7 @@ "Fingeraftrykket blev ikke genkendt" "Fingeraftrykket blev ikke genkendt" + "Ansigtet kan ikke genkendes. Brug fingeraftryk i stedet." "Fingeraftrykket blev godkendt" "Ansigtet er godkendt" "Ansigtet er godkendt. Tryk på Bekræft." @@ -670,15 +669,15 @@ "Noget gik galt. Prøv igen." "Ikon for fingeraftryk" - "Ansigtslås" - "Der er et problem med Ansigtslås" + "Enhedsoplåsning" + "Prøv en anden metode til oplåsning" + "Brug ansigtsoplåsning, hvis dit fingeraftryk ikke genkendes, f.eks. når du har våde fingre" + "Brug fingeroplåsning, hvis dit ansigt ikke genkendes, f.eks. når der ikke er nok lys" + "Ansigtsoplåsning" + "Der er et problem med Ansigtsoplåsning" "Tryk for at slette din ansigtsmodel, og tilføj derefter dit ansigt igen" - "Konfigurer ansigtslås" - "Lås din telefon op ved at kigge på den" - "Hvis du vil bruge ansigtslåsen, skal du aktivere ""Kameraadgang"" under Indstillinger > Privatliv" - "Konfigurer flere måder at låse op på" - "Tryk for at tilføje et fingeraftryk" - "Oplåsning med fingeraftryk" + "Hvis du vil bruge ansigtsoplåsning, skal du aktivere ""Kameraadgang"" under Indstillinger > Privatliv" + "Fingeroplåsning" "Fingeraftrykssensoren kan ikke bruges" "Få den repareret." "Din ansigtsmodel kan ikke oprettes. Prøv igen." @@ -711,19 +710,19 @@ "Ansigt ikke verificeret. Hardware ikke tilgængelig." - "Prøv ansigtslås igen" + "Prøv ansigtsoplåsning igen" "Der kan ikke gemmes nye ansigtsdata. Slet et gammelt først." "Ansigtshandlingen blev annulleret." - "Ansigtslås blev annulleret af brugeren" + "Ansigtsoplåsning blev annulleret af brugeren" "Du har prøvet for mange gange. Prøv igen senere." - "Du har brugt for mange forsøg. Ansigtslås er utilgængelig." + "Du har brugt for mange forsøg. Ansigtsoplåsning er utilgængelig." "Du har brugt for mange forsøg. Angiv skærmlåsen i stedet." "Ansigtet kan ikke genkendes. Prøv igen." - "Du har ikke konfigureret ansigtslås." - "Ansigtslås understøttes ikke på denne enhed" + "Du har ikke konfigureret ansigtsoplåsning." + "Ansigtsoplåsning understøttes ikke på denne enhed" "Sensoren er midlertidigt deaktiveret." "Ansigt %d" - "Brug ansigtslås" + "Brug ansigtsoplåsning" "Brug ansigts- eller skærmlås" "Brug dit ansigt for at fortsætte" "Brug din ansigts- eller skærmlås for at fortsætte" @@ -976,7 +975,7 @@ "Prøv igen" "Prøv igen" "Lås op for at se alle funktioner og data" - "Det maksimale antal forsøg på at bruge ansigtslås er overskredet" + "Det maksimale antal forsøg på at bruge ansigtsoplåsning er overskredet" "Intet SIM-kort" "Intet SIM-kort i tabletten." "Intet SIM-kort i din Android TV-enhed." @@ -1046,7 +1045,7 @@ "Udvid oplåsningsområdet." "Lås op ved at stryge." "Lås op med mønster." - "Ansigtslås." + "Ansigtsoplåsning." "Lås op med pinkode." "Lås op ved hjælp af pinkoden til SIM-kortet." "Lås op ved hjælp af PUK-koden til SIM-kortet." @@ -1868,6 +1867,7 @@ "2. %1$s til arbejde" "3. %1$s til arbejde" "Klon af %1$s" + "%1$s (privat)" "Bed om pinkode inden frigørelse" "Bed om oplåsningsmønster ved deaktivering" "Bed om adgangskode inden frigørelse" @@ -2032,7 +2032,7 @@ "Vil du opdatere i ""%1$s""?" "Vil du opdatere %1$s i ""%2$s""?" "Vil du opdatere %1$s og %2$s i ""%3$s""?" - "Vil du opdatere disse elementer i ""%4$s"": %1$s, %2$s og %3$s?" + "Vil du opdatere disse elementer i ""%4$s"": %1$s, %2$s og %3$s?" "Gem" "Nej tak" "Ikke nu" diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 84f2c1f1cec49bb4c184903bfb6112b1441cac8b..3f960f70a800fb9b7540d1c4a8ee3bf568089ee7 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -618,8 +618,6 @@ "Biometrisches Verfahren oder Displaysperre verwenden" "Deine Identität bestätigen" "Mithilfe eines biometrischen Verfahrens fortfahren" - "Fingerabdruck verwenden, um fortzufahren" - "Gesichtserkennung verwenden, um fortzufahren" "Verwende deine biometrischen Daten oder deine Display-Entsperrmethode, um fortzufahren" "Biometrische Hardware nicht verfügbar" "Authentifizierung abgebrochen" @@ -645,6 +643,7 @@ "Fingerabdruck nicht erkannt" "Fingerabdruck nicht erkannt" + "Gesicht wurde nicht erkannt. Verwende stattdessen den Fingerabdruck." "Fingerabdruck wurde authentifiziert" "Gesicht authentifiziert" "Gesicht authentifiziert, bitte bestätigen" @@ -670,14 +669,14 @@ "Ein Problem ist aufgetreten. Versuch es noch einmal." "Fingerabdruck-Symbol" + "Geräteentsperrung" + "Andere Entsperrungsart verwenden" + "Verwende die Entsperrung per Gesichtserkennung, wenn dein Fingerabdruck nicht erkannt wird, beispielsweise wenn deine Finger nass sind" + "Verwende die Entsperrung per Fingerabdruck, wenn dein Gesicht nicht erkannt wird, beispielsweise wenn es zu dunkel ist" "Entsperrung per Gesichtserkennung" "Problem bei der Entsperrung per Gesichtserkennung" "Tippe, um dein Gesichtsmodell zu löschen, und füge es dann noch einmal hinzu" - "Entsperrung per Gesichtserkennung einrichten" - "Entsperre dein Smartphone, indem du es ansiehst" "Wenn du die Entsperrung per Gesichtserkennung verwenden möchtest, aktiviere in den Einstellungen unter „Datenschutz“ die Option ""Kamerazugriff" - "Weitere Möglichkeiten zum Entsperren einrichten" - "Tippe, um einen Fingerabdruck hinzuzufügen" "Entsperrung per Fingerabdruck" "Der Fingerabdrucksensor kann nicht verwendet werden" "Suche einen Reparaturdienstleister auf." @@ -1868,6 +1867,7 @@ "2. %1$s (geschäftlich)" "3. %1$s (geschäftlich)" "Klon %1$s" + "%1$s (privat)" "Vor dem Beenden nach PIN fragen" "Vor dem Beenden nach Entsperrungsmuster fragen" "Vor dem Beenden nach Passwort fragen" @@ -2032,7 +2032,7 @@ "In ""%1$s"" aktualisieren?" "%1$s in ""%2$s"" aktualisieren?" "%1$s und %2$s in ""%3$s"" aktualisieren?" - "%1$s, %2$s und %3$s in ""%4$s"" aktualisieren?" + "%1$s, %2$s und %3$s in ""%4$s"" aktualisieren?" "Speichern" "Nein danke" "Nicht jetzt" diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index d603a2604822604946a98cf7948e31d760da7a1f..1d3471c0db950a88f7707211f01b0d9a0270b973 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -618,8 +618,6 @@ "Χρήση βιομετρικών ή κλειδώματος οθόνης" "Επαλήθευση ταυτότητας" "Χρησιμοποιήστε βιομετρικά για να συνεχίσετε" - "Χρησιμοποιήστε το δακτυλικό σας αποτύπωμα για να συνεχίσετε" - "Χρησιμοποιήστε το πρόσωπό σας για να συνεχίσετε" "Χρήση βιομετρικών στοιχείων ή κλειδώματος οθόνης για συνέχεια" "Δεν υπάρχει διαθέσιμος βιομετρικός εξοπλισμός" "Ο έλεγχος ταυτότητας ακυρώθηκε" @@ -645,6 +643,7 @@ "Δεν είναι δυνατή η αναγνώριση του δακτυλικού αποτυπώματος" "Δεν είναι δυνατή η αναγνώριση του δακτυλικού αποτυπώματος" + "Το πρόσωπο δεν αναγνωρίζεται. Χρησιμ. δακτ. αποτ." "Η ταυτότητα του δακτυλικού αποτυπώματος ελέγχθηκε" "Έγινε έλεγχος ταυτότητας προσώπου" "Έγινε έλεγχος ταυτότητας προσώπου, πατήστε \"Επιβεβαίωση\"" @@ -670,14 +669,14 @@ "Παρουσιάστηκε κάποιο πρόβλημα. Δοκιμάστε ξανά." "Εικονίδιο δακτυλικών αποτυπωμάτων" + "Ξεκλείδωμα συσκευής" + "Δοκιμάστε άλλον τρόπο για το ξεκλείδωμα" + "Χρησιμοποιήστε το Ξεκλείδωμα με το πρόσωπο όταν δεν αναγνωρίζεται το δακτυλικό αποτύπωμά σας, όπως όταν τα δάχτυλά σας είναι βρεγμένα" + "Χρησιμοποιήστε το Ξεκλείδωμα με δακτυλικό αποτύπωμα όταν δεν αναγνωρίζεται το πρόσωπό σας, όπως όταν δεν υπάρχει επαρκής φωτισμός" "Ξεκλείδωμα με το πρόσωπο" "Πρόβλημα με το Ξεκλείδωμα με το πρόσωπο" "Πατήστε για να διαγράψετε το μοντέλο προσώπου και, στη συνέχεια, προσθέστε το πρόσωπό σας ξανά." - "Ρύθμιση της λειτουργίας Ξεκλείδωμα με το πρόσωπο" - "Ξεκλειδώστε το τηλέφωνό σας απλώς κοιτώντας το" "Για να χρησιμοποιήσετε τη λειτουργία Ξεκλείδωμα με το πρόσωπο, ενεργοποιήστε την επιλογή ""Πρόσβαση στην κάμερα"" από το μενού Ρυθμίσεις > Απόρρητο" - "Ρυθμίστε περισσότερους τρόπους ξεκλειδώματος" - "Πατήστε για να προσθέσετε δακτυλικό αποτύπωμα" "Ξεκλείδωμα με δακτυλικό αποτύπωμα" "Δεν είναι δυνατή η χρήση του αισθητήρα δακτυλικών αποτυπωμάτων" "Επισκεφτείτε έναν πάροχο υπηρεσιών επισκευής." @@ -1868,6 +1867,7 @@ "%1$s εργασίας 2" "%1$s εργασίας 3" "Κλώνος %1$s" + "Ιδιωτικό %1$s" "Να γίνεται ερώτηση για το PIN, πριν από το ξεκαρφίτσωμα" "Να γίνεται ερώτηση για το μοτίβο ξεκλειδώματος, πριν από το ξεκαρφίτσωμα" "Να γίνεται ερώτηση για τον κωδικό πρόσβασης, πριν από το ξεκαρφίτσωμα" @@ -2032,7 +2032,7 @@ "Ενημέρωση σε ""%1$s"";" "Ενημέρωση %1$s σε ""%2$s"";" "Ενημέρωση %1$s και %2$s σε ""%3$s"";" - "Ενημέρωση αυτών των στοιχείων ""%4$s"": %1$s, %2$s και %3$s;" + "Ενημέρωση αυτών των στοιχείων στο ""%4$s"": %1$s, %2$s και %3$s;" "Αποθήκευση" "Όχι, ευχαριστώ" "Όχι τώρα" diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index c92f46083ee3a08c5fcbc24a79d96dfec6228adb..8c33f168f17d4b70114f25b9b8395c6b2ef24721 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -618,8 +618,6 @@ "Use biometrics or screen lock" "Verify that it’s you" "Use your biometric to continue" - "Use your fingerprint to continue" - "Use your face to continue" "Use your biometric or screen lock to continue" "Biometric hardware unavailable" "Authentication cancelled" @@ -645,6 +643,7 @@ "Fingerprint not recognised" "Fingerprint not recognised" + "Can’t recognise face. Use fingerprint instead." "Fingerprint authenticated" "Face authenticated" "Face authenticated. Please press confirm" @@ -670,14 +669,14 @@ "Something went wrong. Try again." "Fingerprint icon" + "Device unlock" + "Try another way to unlock" + "Use Face Unlock when your fingerprint isn\'t recognised, like when your fingers are wet" + "Use Fingerprint Unlock when your face isn\'t recognised, like when there\'s not enough light" "Face Unlock" "Issue with Face Unlock" "Tap to delete your face model, then add your face again" - "Set up Face Unlock" - "Unlock your phone by looking at it" "To use Face Unlock, turn on ""Camera access"" in Settings > Privacy" - "Set up more ways to unlock" - "Tap to add a fingerprint" "Fingerprint Unlock" "Can’t use fingerprint sensor" "Visit a repair provider." @@ -1868,6 +1867,7 @@ "2nd Work %1$s" "3rd Work %1$s" "Clone %1$s" + "Private %1$s" "Ask for PIN before unpinning" "Ask for unlock pattern before unpinning" "Ask for password before unpinning" @@ -2032,7 +2032,7 @@ "Update in ""%1$s""?" "Update %1$s in ""%2$s""?" "Update %1$s and %2$s in ""%3$s""?" - "Update these items in ""%4$s"": %1$s, %2$s and %3$s?" + "Update these items in ""%4$s"": %1$s, %2$s, and %3$s?" "Save" "No, thanks" "Not now" diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index bf94625d36e50405cc1be0d6eb5c76d4a40cb138..6dc9ce4ce73578da364a9ea3d78863f999234bab 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -618,8 +618,6 @@ "Use biometrics or screen lock" "Verify it’s you" "Use your biometric to continue" - "Use your fingerprint to continue" - "Use your face to continue" "Use your biometric or screen lock to continue" "Biometric hardware unavailable" "Authentication canceled" @@ -645,6 +643,7 @@ "Fingerprint not recognized" "Fingerprint not recognized" + "Can’t recognize face. Use fingerprint instead." "Fingerprint authenticated" "Face authenticated" "Face authenticated, please press confirm" @@ -670,14 +669,14 @@ "Something went wrong. Try again." "Fingerprint icon" + "Device unlock" + "Try another way to unlock" + "Use Face Unlock when your fingerprint isn\'t recognized, like when your fingers are wet" + "Use Fingerprint Unlock when your face isn\'t recognized, like when there\'s not enough light" "Face Unlock" "Issue with Face Unlock" "Tap to delete your face model, then add your face again" - "Set up Face Unlock" - "Unlock your phone by looking at it" "To use Face Unlock, turn on ""Camera access"" in Settings > Privacy" - "Set up more ways to unlock" - "Tap to add a fingerprint" "Fingerprint Unlock" "Can’t use fingerprint sensor" "Visit a repair provider." @@ -1868,6 +1867,7 @@ "2nd Work %1$s" "3rd Work %1$s" "Clone %1$s" + "Private %1$s" "Ask for PIN before unpinning" "Ask for unlock pattern before unpinning" "Ask for password before unpinning" @@ -2032,7 +2032,7 @@ "Update in ""%1$s""?" "Update %1$s in ""%2$s""?" "Update %1$s and %2$s in ""%3$s""?" - "Update these items in ""%4$s"": %1$s, %2$s, and %3$s ?" + "Update these items in ""%4$s"": %1$s, %2$s, and %3$s?" "Save" "No thanks" "Not now" diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 48a10df78d405266641f89a9c4eec3aa414d1185..3daab6cc1cfaa936ecdceacc24f55d325a860b20 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -618,8 +618,6 @@ "Use biometrics or screen lock" "Verify that it’s you" "Use your biometric to continue" - "Use your fingerprint to continue" - "Use your face to continue" "Use your biometric or screen lock to continue" "Biometric hardware unavailable" "Authentication cancelled" @@ -645,6 +643,7 @@ "Fingerprint not recognised" "Fingerprint not recognised" + "Can’t recognise face. Use fingerprint instead." "Fingerprint authenticated" "Face authenticated" "Face authenticated. Please press confirm" @@ -670,14 +669,14 @@ "Something went wrong. Try again." "Fingerprint icon" + "Device unlock" + "Try another way to unlock" + "Use Face Unlock when your fingerprint isn\'t recognised, like when your fingers are wet" + "Use Fingerprint Unlock when your face isn\'t recognised, like when there\'s not enough light" "Face Unlock" "Issue with Face Unlock" "Tap to delete your face model, then add your face again" - "Set up Face Unlock" - "Unlock your phone by looking at it" "To use Face Unlock, turn on ""Camera access"" in Settings > Privacy" - "Set up more ways to unlock" - "Tap to add a fingerprint" "Fingerprint Unlock" "Can’t use fingerprint sensor" "Visit a repair provider." @@ -1868,6 +1867,7 @@ "2nd Work %1$s" "3rd Work %1$s" "Clone %1$s" + "Private %1$s" "Ask for PIN before unpinning" "Ask for unlock pattern before unpinning" "Ask for password before unpinning" @@ -2032,7 +2032,7 @@ "Update in ""%1$s""?" "Update %1$s in ""%2$s""?" "Update %1$s and %2$s in ""%3$s""?" - "Update these items in ""%4$s"": %1$s, %2$s and %3$s?" + "Update these items in ""%4$s"": %1$s, %2$s, and %3$s?" "Save" "No, thanks" "Not now" diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index a3f2d7db8aad1a4851c83d2dbe821eef8073e87e..67ebab14d2979349d4b4bc5c6ef497d44419e494 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -618,8 +618,6 @@ "Use biometrics or screen lock" "Verify that it’s you" "Use your biometric to continue" - "Use your fingerprint to continue" - "Use your face to continue" "Use your biometric or screen lock to continue" "Biometric hardware unavailable" "Authentication cancelled" @@ -645,6 +643,7 @@ "Fingerprint not recognised" "Fingerprint not recognised" + "Can’t recognise face. Use fingerprint instead." "Fingerprint authenticated" "Face authenticated" "Face authenticated. Please press confirm" @@ -670,14 +669,14 @@ "Something went wrong. Try again." "Fingerprint icon" + "Device unlock" + "Try another way to unlock" + "Use Face Unlock when your fingerprint isn\'t recognised, like when your fingers are wet" + "Use Fingerprint Unlock when your face isn\'t recognised, like when there\'s not enough light" "Face Unlock" "Issue with Face Unlock" "Tap to delete your face model, then add your face again" - "Set up Face Unlock" - "Unlock your phone by looking at it" "To use Face Unlock, turn on ""Camera access"" in Settings > Privacy" - "Set up more ways to unlock" - "Tap to add a fingerprint" "Fingerprint Unlock" "Can’t use fingerprint sensor" "Visit a repair provider." @@ -1868,6 +1867,7 @@ "2nd Work %1$s" "3rd Work %1$s" "Clone %1$s" + "Private %1$s" "Ask for PIN before unpinning" "Ask for unlock pattern before unpinning" "Ask for password before unpinning" @@ -2032,7 +2032,7 @@ "Update in ""%1$s""?" "Update %1$s in ""%2$s""?" "Update %1$s and %2$s in ""%3$s""?" - "Update these items in ""%4$s"": %1$s, %2$s and %3$s?" + "Update these items in ""%4$s"": %1$s, %2$s, and %3$s?" "Save" "No, thanks" "Not now" diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index 17e3fcb12808ce62b4db3440bcc324edcaa0a114..d8b5016449b1735b997986965c90d0a55995177c 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -618,8 +618,6 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‏‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‎‏‎‏‎‏‎‎‏‎‏‏‎‎‎‎Use biometrics or screen lock‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‏‎‎‎‎‏‏‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‎‎‏‎‎‎‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‏‎‎Verify it’s you‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‏‎‎‎‏‎‎‎‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‏‎‏‏‎‏‎‏‏‎‎‏‎‏‎‏‏‎‏‏‎‏‏‎‎‎‎Use your biometric to continue‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‎‏‏‏‎‎‎‏‎‎‎‏‎‏‏‏‎‎Use your fingerprint to continue‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‎‎‎‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‎‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‎‏‏‏‏‎‏‏‎‎‎Use your face to continue‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‎‎‏‏‎‏‏‎‏‏‎‎‏‏‎‎‎‏‏‏‏‏‏‎‎‎‎‎‎‎‎‎‏‏‏‎‏‎‏‎‏‎‎‏‏‎‏‏‎‎‎‎‏‎‎‏‎Use your biometric or screen lock to continue‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‎‏‎‎‏‏‏‎‎‏‎‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‏‎‏‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‏‎‏‎‎‎‏‏‎‎‎‎‎Biometric hardware unavailable‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‏‏‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‏‏‏‎‎‎‎‏‏‎‎‎‏‏‎‎‎‎‎‏‏‎‎‏‎‎‏‎‎‎‏‎‎Authentication canceled‎‏‎‎‏‎" @@ -645,6 +643,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‏‏‏‏‎‏‎‎‏‎‏‏‏‏‎‎‏‎‎‏‏‏‏‏‏‎‎‎‏‎Fingerprint not recognized‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‏‎‎‏‎‏‎‎‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‎Fingerprint not recognized‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‏‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‎‎‏‎‏‎‏‏‏‎‏‎‎‎‎‏‏‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎‏‏‏‎‏‎Can’t recognize face. Use fingerprint instead.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‏‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‎‎‎‎‏‎‏‎‎‏‏‎‏‏‏‎‎‎Fingerprint authenticated‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‏‎‎‎‏‎‎‏‎‎‎‏‎‏‎‏‎‏‎‎‎‎‏‎‏‏‏‎‏‎‎‏‏‎‎‎‏‏‎‏‎‎‎‎‎‎‏‏‏‎Face authenticated‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‏‎‏‏‏‎‏‏‎Face authenticated, please press confirm‎‏‎‎‏‎" @@ -670,14 +669,14 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‎‏‏‏‎‎‏‎‎‏‏‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎Something went wrong. Try again.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎‏‎‏‏‏‏‎‎‎‏‏‎‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‏‎‎‏‎‎‎‏‎Fingerprint icon‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‎‎‏‏‏‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‏‎Device unlock‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‏‎‎‏‎‎‏‎‏‎‎‎‏‎‎‎‎‏‎‎‏‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎Try another way to unlock‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‎‎‏‏‏‏‎‏‎‏‏‏‎‎‎‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‎Use Face Unlock when your fingerprint isn\'t recognized, like when your fingers are wet‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‏‏‎‎‏‎‎‏‎‎‎‏‎‏‏‎‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‎‎‏‎‎‏‏‎‏‎‎‏‏‎‏‎‏‎‎‏‏‏‎Use Fingerprint Unlock when your face isn\'t recognized, like when there\'s not enough light‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎‏‎‏‎‎‎‎‎‏‎‏‎‎‎‎‎‎‎‏‏‏‎‎Face Unlock‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‎‏‏‏‎‎‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‏‏‏‎‎‏‎‏‎‎Issue with Face Unlock‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‎‎‎‎‏‏‏‎‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‎‎‎‎‎‎‏‎‏‏‏‎‎‏‎‏‎‎Tap to delete your face model, then add your face again‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‎‏‏‎‏‏‏‏‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‏‎‎‎‎‏‏‏‏‎‎Set up Face Unlock‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‎‏‏‏‎‎‏‎‏‏‎‎‏‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‎‎‎Unlock your phone by looking at it‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎‏‎‎‎‏‎‎‎‏‎‏‏‎‏‏‎‏‏‎‏‏‎‎‎To use Face Unlock, turn on ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎Camera access‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎ in Settings > Privacy‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‎‎‏‏‏‎‎‏‏‏‏‎‏‎‏‏‏‎Set up more ways to unlock‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‏‏‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‎‎Tap to add a fingerprint‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‏‎‎‎‎‏‏‎‎‏‎‏‏‏‏‎‎‏‎‏‏‎‏‏‎‎‏‏‎‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‎‏‏‎‏‎‎Fingerprint Unlock‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‏‏‏‏‎‏‎‎‏‏‎‎‏‎‎‏‎‏‏‎‏‏‎‏‎‎‎‎‏‎Can’t use fingerprint sensor‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‏‎‎‏‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‎‏‎‎‎‏‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎Visit a repair provider.‎‏‎‎‏‎" @@ -1868,6 +1867,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‏‏‏‎‏‏‎‎‏‏‎‏‎‏‏‏‎‎‏‏‎‎‏‏‎‏‏‎‏‎‎‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎2nd Work ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‎‎‎‎‏‎‎‏‎‏‎‎‎‎‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‏‎‏‎‎‎‏‎‎‏‎‏‏‎‎‏‎‎‎‎‏‎‏‎‏‎3rd Work ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‎‎‏‎‎‎‎‎‏‎‏‏‎‎‎‏‏‏‎‏‏‎‎‎Clone ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‎‎‎‏‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‎‎‎‎‏‎‏‏‎‎‎‏‎‎‏‏‎‏‏‎‏‏‎‎‏‏‏‏‎Private ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‎‏‎‎‏‎‏‎‏‎‏‏‏‎‎‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‎Ask for PIN before unpinning‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‎Ask for unlock pattern before unpinning‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‏‏‏‎‎‏‏‏‎‏‏‏‎‏‏‎‎‏‎Ask for password before unpinning‎‏‎‎‏‎" @@ -2032,7 +2032,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‎‎‏‎‏‏‎‏‎‎‏‎‏‎‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‏‏‎‏‎‎‎‎‎Update in ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‏‎‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎Update ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎ in ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎‏‎‏‎‎‏‎‏‏‏‎‏‎‎‎‎‎‏‎Update ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎ and ‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎ in ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎%3$s‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎?‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‎‎‎‎‏‏‎‏‎‎‏‎‏‏‏‏‎‏‎‎‎‎‏‎‎‎‏‎‎‏‎‎‎‎‏‏‎Update these items in ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎%4$s‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎: ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎, and ‎‏‎‎‏‏‎%3$s‎‏‎‎‏‏‏‎ ?‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‎‎‏‏‏‏‎‏‎‏‎‏‎‎‎‎‎‎‎‎‏‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‏‏‎‎‎‎‎‏‎‏‎‎‏‎‎Update these items in ‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎%4$s‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎""‎‏‎‎‏‏‏‎: ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎%2$s‎‏‎‎‏‏‏‎, and ‎‏‎‎‏‏‎%3$s‎‏‎‎‏‏‏‎?‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‏‎‎‏‎‏‏‎‎‎‏‏‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‏‏‎‎‏‏‏‏‎‏‏‎‎‏‎‎Save‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‎‎‏‏‎‏‏‏‎‎‎‎No thanks‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‎‏‎‎‏‎‏‎‎‏‎‎‏‏‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‎Not now‎‏‎‎‏‎" diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 347d53742289a7dd5b5a753cc2b385c9e13b96a6..e61fe1a36211a3787fc72221f5cb4369de4ee281 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -619,8 +619,6 @@ "Usar datos biométricos o bloqueo de pantalla" "Comprueba que eres tú" "Usa tus datos biométricos para continuar" - "Usa tu huella dactilar para continuar" - "Usa el rostro para continuar" "Usa tus datos biométricos o bloqueo de pantalla para continuar" "No hay hardware biométrico disponible" "Se canceló la autenticación" @@ -646,6 +644,7 @@ "No se reconoció la huella dactilar" "No se reconoció la huella dactilar" + "No se reconoce el rostro. Usa la huella dactilar." "Se autenticó la huella dactilar" "Se autenticó el rostro" "Se autenticó el rostro; presiona Confirmar" @@ -671,14 +670,14 @@ "Se produjo un error. Vuelve a intentarlo." "Ícono de huella dactilar" + "Desbloqueo del dispositivo" + "Prueba otra forma para desbloquear el dispositivo" + "Usa el Desbloqueo facial si no se reconoce tu huella dactilar (p. ej., si tienes los dedos mojados)" + "Usa el Desbloqueo con huellas dactilares si no se reconoce tu rostro (p. ej., si hay poca luz)" "Desbloqueo facial" "Problema con el Desbloqueo facial" "Presiona para borrar el modelo de rostro y, luego, vuelve a agregar tu rostro" - "Configura Desbloqueo facial" - "Desbloquea el teléfono con solo mirarlo" "Para usar Desbloqueo facial, activa el ""Acceso a la cámara"" en Configuración y privacidad" - "Configura más formas de desbloquear el dispositivo" - "Presiona para agregar una huella dactilar" "Desbloqueo con huellas dactilares" "No se puede usar el sensor de huellas dactilares" "Consulta a un proveedor de reparaciones." @@ -1869,6 +1868,7 @@ "%1$s de trabajo 2" "%1$s de trabajo 3" "Clon de %1$s" + "%1$s privado" "Solicitar PIN para quitar fijación" "Solicitar desbloqueo para quitar fijación" "Solicitar contraseña para quitar fijación" @@ -2033,7 +2033,7 @@ "¿Quieres actualizar en ""%1$s""?" "¿Quieres actualizar %1$s en ""%2$s""?" "¿Quieres actualizar %1$s y %2$s en ""%3$s""?" - "¿Quieres actualizar estos elementos en ""%4$s"": %1$s, %2$s y %3$s?" + "¿Quieres actualizar estos elementos en ""%4$s"": %1$s, %2$s y %3$s?" "Guardar" "No, gracias" "Ahora no" diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 70610d11d7ec8dff156bd8b7d27a6b89263e997f..cbcf40306bd612b0858a9f0b46a6229c2864ec7f 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -619,8 +619,6 @@ "Usar biometría o bloqueo de pantalla" "Verifica que eres tú" "Usa tu biometría para continuar" - "Usa la huella digital para continuar" - "Usa la cara para continuar" "Usa la biometría o tu bloqueo de pantalla para continuar" "Hardware biométrico no disponible" "Autenticación cancelada" @@ -646,6 +644,7 @@ "Huella digital no reconocida" "Huella digital no reconocida" + "No se reconoce la cara. Usa la huella digital." "Se ha autenticado la huella digital" "Cara autenticada" "Se ha autenticado la cara, pulsa para confirmar" @@ -671,14 +670,14 @@ "Se ha producido un error. Inténtalo de nuevo." "Icono de huella digital" + "Desbloqueo del dispositivo" + "Prueba otro método de desbloqueo" + "Usa Desbloqueo facial cuando no se reconozca tu huella (p. ej., si tienes los dedos mojados)" + "Usa Desbloqueo con huella digital cuando no se reconozca tu cara (p. ej., si hay poca luz)" "Desbloqueo facial" "Problema con Desbloqueo facial" "Toca para eliminar tu modelo facial y luego añade de nuevo tu cara" - "Configura Desbloqueo facial" - "Desbloquea el teléfono con solo mirarlo" "Para usar Desbloqueo Facial, habilita el ""acceso a la cámara"" en Ajustes y privacidad" - "Configura más formas de desbloqueo" - "Toca para añadir una huella digital" "Desbloqueo con huella digital" "No se puede usar el sensor de huellas digitales" "Visita un proveedor de reparaciones." @@ -1376,7 +1375,7 @@ "Se ha detectado un accesorio de audio analógico" "El dispositivo adjunto no es compatible con este teléfono. Toca para obtener más información." "Depuración por USB activa" - "Toca para desactivar depuración USB" + "Toca para desactivar la depuración USB" "Seleccionar para inhabilitar la depuración por USB" "Depuración inalámbrica conectada" "Toca para desactivar la depuración inalámbrica" @@ -1869,6 +1868,7 @@ "%1$s de trabajo 2" "%1$s de trabajo 3" "Clon de %1$s" + "%1$s privado" "Solicitar PIN para desactivar" "Pedir patrón de desbloqueo para dejar de fijar" "Solicitar contraseña para desactivar" @@ -2033,7 +2033,7 @@ "¿Actualizar en ""%1$s""?" "¿Actualizar %1$s en ""%2$s""?" "¿Actualizar %1$s y %2$s en ""%3$s""?" - "¿Actualizar estos elementos en ""%4$s"" (%1$s, %2$s y %3$s)?" + "¿Actualizar estos elementos en ""%4$s"" (%1$s, %2$s y %3$s)?" "Guardar" "No, gracias" "Ahora no" diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 36ef58397b29e9c89a924e30f1c2ca73b64f08e6..22600e527270c6562a0c317ece7a6490ffd88270 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -618,8 +618,6 @@ "Biomeetria või ekraaniluku kasutamine" "Kinnitage oma isik" "Jätkamiseks kasutage biomeetriat" - "Jätkamiseks kasutage oma sõrmejälge" - "Jätkamiseks kasutage oma nägu" "Jätkamiseks kasutage oma biomeetrilisi andmeid või ekraanilukku" "Biomeetriline riistvara ei ole saadaval" "Autentimine tühistati" @@ -645,6 +643,7 @@ "Sõrmejälge ei tuvastatud" "Sõrmejälge ei tuvastatud" + "Nägu ei õnnestu tuvastada. Kasutage sõrmejälge." "Sõrmejälg autenditi" "Nägu on autenditud" "Nägu on autenditud, vajutage käsku Kinnita" @@ -670,14 +669,14 @@ "Midagi läks valesti. Proovige uuesti." "Sõrmejälje ikoon" + "Seadme avamine" + "Proovige avamiseks teist viisi" + "Kasutage näoga avamist, kui teie sõrmejälge ei tuvastata, näiteks kui sõrmed on märjad" + "Kasutage sõrmejäljega avamist, kui teie nägu ei tuvastata, näiteks kui pole piisavalt valgust" "Näoga avamine" "Probleem funktsiooniga Näoga avamine" "Puudutage näomudeli kustutamiseks, seejärel lisage oma nägu uuesti" - "Näoga avamise seadistamine" - "Avage telefon seda vaadates" "Näoga avamise kasutamiseks lülitage menüüs Seaded > Privaatsus sisse ""juurdepääs kaamerale""." - "Seadistage rohkem viise avamiseks" - "Puudutage sõrmejälje lisamiseks" "Sõrmejäljega avamine" "Sõrmejäljeandurit ei saa kasutada" "Külastage remonditeenuse pakkujat." @@ -824,7 +823,7 @@ "Kustutage tahvelarvuti andmed hoiatamata, lähtestades arvuti tehaseandmetele." "Kustutatakse teie Android TV seadme andmed ilma hoiatamata, lähtestades seadme tehase andmetele." "Teabe ja meelelahutuse süsteemi andmete hoiatamata kustutamine tehase andmetele lähtestamise abil." - "Telefoniandmete hoiatuseta kustutamine, lähtestades telefoni tehaseseadetele." + "Kustutab telefoniandmed hoiatuseta, lähtestades telefoni tehaseseadetele." "Profiili andmete kustutamine" "Kasutaja andmete kustutamine" "Kustutatakse selle kasutaja andmed sellest tahvelarvutist ilma hoiatamata." @@ -1868,6 +1867,7 @@ "2. töö %1$s" "3. töö %1$s" "Rakenduse %1$s kloon" + "Privaatne %1$s" "Enne vabastamist küsi PIN-koodi" "Enne vabastamist küsi avamismustrit" "Enne vabastamist küsi parooli" @@ -2032,7 +2032,7 @@ "Kas värskendada üksust teenuses ""%1$s""?" "Kas värskendada üksust %1$s teenuses ""%2$s""?" "Kas värskendada üksusi %1$s ja %2$s teenuses ""%3$s""?" - "Kas värskendada teenuses ""%4$s"" neid üksusi: %1$s, %2$s ja %3$s?" + "Kas värskendada teenuses ""%4$s"" neid üksusi: %1$s, %2$s ja %3$s?" "Salvesta" "Tänan, ei" "Hiljem" diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index bd0a0457d80f20b46555438c3017051eb3c2b211..019296d2bec0461b6dc775293f8f5f34d32e9543 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -618,8 +618,6 @@ "Erabili sistema biometrikoak edo pantailaren blokeoa" "Egiaztatu zeu zarela" "Aurrera egiteko, erabili sistema biometrikoak" - "Aurrera egiteko, erabili hatz-marka" - "Aurrera egiteko, erabili aurpegia" "Aurrera egiteko, erabili sistema biometrikoak edo pantailaren blokeoa" "Hardware biometrikoa ez dago erabilgarri" "Utzi da autentifikazioa" @@ -645,6 +643,7 @@ "Ez da ezagutu hatz-marka" "Ez da ezagutu hatz-marka" + "Ezin da hauteman aurpegia. Erabili hatz-marka." "Autentifikatu da hatz-marka" "Autentifikatu da aurpegia" "Autentifikatu da aurpegia; sakatu Berretsi" @@ -670,14 +669,14 @@ "Arazo bat izan da. Saiatu berriro." "Hatz-markaren ikonoa" + "Gailua desblokeatzea" + "Probatu gailua desblokeatzeko beste modu bat" + "Erabili Aurpegi bidez desblokeatzea hatz-marka ezagutzen ez denean (adibidez, hatzak bustita dauzkazunean)" + "Erabili Hatz-marka bidez desblokeatzea aurpegia ezagutzen ez denean (adibidez, argi nahikorik ez dagoenean)" "Aurpegi bidez desblokeatzea" "Arazoak ditugu aurpegi bidez desblokeatzeko eginbidearekin" "Sakatu hau aurpegi-eredua ezabatzeko eta, gero, gehitu aurpegia berriro" - "Konfiguratu Aurpegi bidez desblokeatzea" - "Telefonoa desblokeatzeko, begira iezaiozu" "Aurpegi bidez desblokeatzeko eginbidea erabiltzeko, aktibatu ""kamera erabiltzeko baimena"" Ezarpenak > Pribatutasuna atalean" - "Konfiguratu telefonoa desblokeatzeko modu gehiago" - "Sakatu hau hatz-marka bat gehitzeko" "Hatz-marka bidez desblokeatzea" "Ezin da erabili hatz-marken sentsorea" "Jarri harremanetan konponketak egiten dituen hornitzaile batekin." @@ -939,7 +938,7 @@ "Laguntzailea" "Anaia/Neba" "Semea/Alaba" - "Izatezko bikotea" + "Izatezko bikotekidea" "Aita" "Laguna" "Kudeatzailea" @@ -1868,6 +1867,7 @@ "Laneko 2. %1$s" "Laneko 3. %1$s" "%1$s aplikazioaren klona" + "%1$s pribatua" "Eskatu PINa aingura kendu aurretik" "Eskatu desblokeatzeko eredua aingura kendu aurretik" "Eskatu pasahitza aingura kendu aurretik" @@ -2032,7 +2032,7 @@ "%1$s"" zerbitzuan eguneratu nahi duzu?" "%2$s"" zerbitzuan eguneratu nahi duzu %1$s?" "%3$s"" zerbitzuan eguneratu nahi dituzu %1$s eta %2$s?" - "%4$s"" zerbitzuan eguneratu nahi dituzu %1$s, %2$s eta %3$s?" + "%4$s"" zerbitzuan eguneratu nahi dituzu %1$s, %2$s eta %3$s?" "Gorde" "Ez, eskerrik asko" "Orain ez" @@ -2331,11 +2331,11 @@ "Aurreko planoko zerbitzuak atzeko planotik abiarazteko baimena ematen die aplikazio osagarriei." "Erabilgarri dago mikrofonoa" "Blokeatuta dago mikrofonoa" - "Bi pantailako modua" - "Bi pantailako modua aktibatuta dago" + "Dual Screen" + "Dual Screen aktibatuta dago" "%1$s bi pantailak erabiltzen ari da edukia erakusteko" "Gailua beroegi dago" - "Bi pantailako modua ez dago erabilgarri telefonoa berotzen ari delako" + "Dual Screen ez dago erabilgarri telefonoa berotzen ari delako" "Dual Screen ez dago erabilgarri" "Dual Screen ez dago erabilgarri, bateria-aurreztailea aktibatuta dagoelako. Aukera hori desaktibatzeko, joan ezarpenetara." "Joan Ezarpenak atalera" diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 2a5f064c8a989508d205390e2cc0057e87f6f211..6210b62a29158130906217c3a89e3244aa04de63 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -618,8 +618,6 @@ "استفاده از زیست‌سنجشی یا قفل صفحه" "تأیید کنید این شمایید" "برای ادامه، از زیست‌سنجشی استفاده کنید" - "برای ادامه، از اثر انگشتتان استفاده کنید" - "برای ادامه، از چهره‌تان استفاده کنید" "برای ادامه، از زیست‌سنجشی یا قفل صفحه استفاده کنید" "سخت‌افزار زیست‌سنجی دردسترس نیست" "اصالت‌سنجی لغو شد" @@ -645,6 +643,7 @@ "اثر انگشت تشخیص داده نشد" "اثر انگشت تشخیص داده نشد" + "چهره شناسایی نشد. درعوض از اثر انگشت استفاده کنید." "اثر انگشت اصالت‌سنجی شد" "چهره اصالت‌سنجی شد" "چهره اصالت‌سنجی شد، لطفاً تأیید را فشار دهید" @@ -670,14 +669,14 @@ "مشکلی پیش آمد. دوباره امتحان کنید." "نماد اثر انگشت" + "باز کردن قفل دستگاه" + "روش دیگری را برای قفل‌گشایی امتحان کنید" + "وقتی اثر انگشتتان تشخیص داده نمی‌شود، مثل زمانی که انگشتانتان خیس است، از «قفل‌گشایی با چهره» استفاده کنید" + "وقتی چهره‌تان تشخیص داده نمی‌شود، مثل زمانی که نور کافی نیست، از «قفل‌گشایی با اثر انگشت» استفاده کنید" "قفل‌گشایی با چهره" "مشکل در «قفل‌گشایی با چهره»" "برای حذف مدل چهره‌تان ضربه بزنید، سپس چهره‌تان را دوباره اضافه کنید" - "راه‌اندازی «قفل‌گشایی با چهره»" - "برای باز کردن قفل تلفن خود به آن نگاه کنید" "‏برای استفاده از «قفل‌گشایی با چهره»، ""دسترسی به دوربین"" را در «تنظیمات > حریم خصوصی» روشن کنید" - "راه‌اندازی روش‌های بیشتر برای باز کردن قفل" - "برای افزودن اثر انگشت، ضربه بزنید" "قفل‌گشایی با اثر انگشت" "امکان استفاده از حسگر اثر انگشت وجود ندارد" "به ارائه‌دهنده خدمات تعمیر مراجعه کنید." @@ -1134,9 +1133,9 @@ "{count,plural, =1{# ساعت}one{# ساعت}other{# ساعت}}" "{count,plural, =1{# روز}one{# روز}other{# روز}}" "{count,plural, =1{# سال}one{# سال}other{# سال}}" - "مشکل در ویدئو" - "متأسفیم، این ویدئو برای پخش جریانی با این دستگاه معتبر نیست." - "پخش این ویدئو ممکن نیست." + "مشکل در ویدیو" + "متأسفیم، این ویدیو برای پخش جریانی با این دستگاه معتبر نیست." + "پخش این ویدیو ممکن نیست." "تأیید" "%1$s، %2$s" "ظهر" @@ -1597,7 +1596,7 @@ "برای برداشتن محدودیت ضربه بزنید." "مصرف بالای داده تلفن همراه" "برنامه‌های شما بیش از معمول داده مصرف کرده‌اند" - "%s بیش از معمول داده مصرف کرده است" + "‫%s بیش از معمول داده مصرف کرده است" "گواهی امنیتی" "این گواهی معتبر است." "صادرشده برای:" @@ -1868,6 +1867,7 @@ "کار دوم %1$s" "کار سوم %1$s" "همسانه %1$s" + %1$s» خصوصی" "درخواست کد پین قبل از برداشتن پین" "درخواست الگوی بازگشایی قفل قبل‌از برداشتن سنجاق" "درخواست گذرواژه قبل از برداشتن سنجاق" @@ -2032,7 +2032,7 @@ "در ""%1$s"" به‌روزرسانی شود؟" "%1$s در ""%2$s"" به‌روزرسانی شود؟" "%1$s و %2$s در ""%3$s"" به‌روزرسانی شود؟" - "این موارد در ""%4$s"": %1$s، %2$s و %3$s به‌روزرسانی شود؟" + "این موارد در ""%4$s"": %1$s، %2$s، و %3$s به‌روزرسانی شود؟" "ذخیره" "نه سپاسگزارم" "حالا نه" diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 16c864c95956b80819503ce5c0a7fbb98948d5e5..ef09aee19b310bd2c9fee24f74e0b982cab3c29c 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -618,8 +618,6 @@ "Käytä biometriikkaa tai näytön lukitusta" "Vahvista henkilöllisyytesi" "Jatka käyttämällä biometriikkaa" - "Jatka sormenjäljen avulla" - "Jatka kasvojen avulla" "Jatka biometriikan tai näytön lukituksen avulla" "Biometrinen laitteisto ei käytettävissä" "Todennus peruutettu" @@ -645,6 +643,7 @@ "Sormenjälkeä ei tunnistettu" "Sormenjälkeä ei tunnistettu" + "Kasvoja ei voi tunnistaa. Käytä sormenjälkeä." "Sormenjälki tunnistettu" "Kasvot tunnistettu" "Kasvot tunnistettu, valitse Vahvista" @@ -670,14 +669,14 @@ "Jotain meni vikaan. Yritä uudelleen." "Sormenjälkikuvake" + "Laitteen lukituksen avaus" + "Kokeile toista tapaa avata lukitus" + "Käytä kasvojentunnistusavausta, kun sormenjälkeä ei tunnisteta, esimerkiksi sormien ollessa märät" + "Käytä sormenjälkiavausta, kun kasvoja ei tunnisteta, esimerkiksi hämärässä" "Kasvojentunnistusavaus" "Face Unlockiin liittyvä ongelma" "Poista kasvomalli napauttamalla ja lisää sitten kasvosi uudelleen" - "Ota kasvojentunnistusavaus käyttöön" - "Avaa puhelimesi lukitus katsomalla laitetta" "Jos haluat käyttää kasvojentunnistusavausta, valitse Asetukset > Yksityisyys ja laita ""Pääsy kameraan"" päälle" - "Ota käyttöön lisää tapoja avata lukitus" - "Napauta lisätäksesi sormenjälki" "Sormenjälkiavaus" "Sormenjälkitunnistinta ei voi käyttää" "Ota yhteys korjauspalveluun." @@ -1868,6 +1867,7 @@ "Toinen %1$s, työ" "Kolmas %1$s, työ" "Kloonaa %1$s" + "Yksityinen %1$s" "Pyydä PIN ennen irrotusta" "Pyydä lukituksenpoistokuvio ennen irrotusta" "Pyydä salasana ennen irrotusta" @@ -2032,7 +2032,7 @@ "Päivitetäänkö ""%1$s""?" "Päivitetäänkö %1$s (""%2$s"")?" "Päivitetäänkö %1$s ja %2$s (""%3$s"")?" - "Päivitetäänkö nämä (""%4$s""): %1$s, %2$s ja %3$s?" + "Päivitetäänkö nämä (""%4$s""): %1$s, %2$s ja %3$s?" "Tallenna" "Ei kiitos" "Ei nyt" diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 60575ad71d5b0124e61cf7929231a67d6a203a44..d38f65651bba64e01fb42274caad4519e97f12f4 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -319,7 +319,7 @@ "enregistrer des fichiers audio" "Activité physique" "accéder à vos activités physiques" - "appareil photo" + "Appareil photo" "prendre des photos et filmer des vidéos" "Appareils à proximité" "découvrir les appareils à proximité et s\'y connecter" @@ -619,8 +619,6 @@ "Utiliser les données biométriques ou le verrouillage de l\'écran" "Confirmez que c\'est vous" "Utilisez votre méthode d\'authentification biométrique pour continuer" - "Utilisez votre empreinte digitale pour continuer" - "Utilisez votre visage pour continuer" "Utilisez vos données biométriques ou le verrouillage de l\'écran pour continuer" "Matériel biométrique indisponible" "Authentification annulée" @@ -646,6 +644,7 @@ "Empreinte digitale non reconnue" "Empreinte digitale non reconnue" + "Visage non reconnu. Utilisez plutôt l\'empreinte digitale." "Empreinte digitale authentifiée" "Visage authentifié" "Visage authentifié, veuillez appuyer sur le bouton Confirmer" @@ -671,14 +670,14 @@ "Un problème est survenu. Réessayez." "Icône d\'empreinte digitale" + "Déverrouillage de l\'appareil" + "Essayez une autre façon de déverrouiller" + "Utilisez le Déverrouillage par reconnaissance faciale lorsque votre empreinte digitale n\'est pas reconnue, par exemple lorsque vos doigts sont mouillés" + "Utilisez le Déverrouillage par empreinte digitale lorsque votre visage n\'est pas reconnu, par exemple lorsque la luminosité est insuffisante" "Déverrouillage par reconnaissance faciale" "Problème avec la fonctionnalité de déverrouillage par reconnaissance faciale" "Touchez pour supprimer votre modèle facial, puis ajoutez votre visage de nouveau" - "Configurer le Déverrouillage par reconnaissance faciale" - "Déverrouillez votre téléphone en le regardant" "Pour utiliser le déverrouillage par reconnaissance faciale, activez l\'""accès à l\'appareil photo"" dans Paramètres > Confidentialité" - "Configurer d\'autres méthodes de déverrouillage" - "Touchez pour ajouter une empreinte digitale" "Déverrouillage par empreinte digitale" "Impossible d\'utiliser le capteur d\'empreintes digitales" "Consultez un fournisseur de services de réparation." @@ -812,7 +811,7 @@ "Contrôler le nombre de mots de passe incorrects saisis pour le déverrouillage de l\'écran, puis verrouiller la tablette ou effacer toutes ses données si le nombre maximal de tentatives de saisie du mot de passe est atteint" "Surveillez le nombre de mots de passe incorrects entrés lors du déverrouillage de l\'écran et verrouillez votre appareil Android TV ou effacez toutes les données qu\'il contient en cas d\'un nombre trop élevé de tentatives." "Surveillez le nombre de mots de passe incorrects entrés lors du déverrouillage de l\'écran et verrouillez le système d\'infodivertissement ou effacez toutes ses données en cas d\'un nombre trop élevé de tentatives." - "Contrôler le nombre de mots de passe incorrects saisis pour le déverrouillage de l\'écran, puis verrouille le téléphone ou efface toutes ses données si le nombre maximal de tentatives de saisie du mot de passe est atteint." + "Le nombre de mots de passe incorrects saisis pour le déverrouillage de l\'écran est contrôlé. Si le nombre maximal de tentatives de saisie du mot de passe est atteint, le téléphone est verrouillé ou toutes ses données sont effacées." "Surveille le nombre de mots de passe incorrects entrés lors du déverrouillage de l\'écran et verrouille la tablette ou efface toutes les données de l\'utilisateur en cas d\'un nombre trop élevé de tentatives." "Surveillez le nombre de mots de passe incorrects entrés lors du déverrouillage de l\'écran et verrouillez votre appareil Android TV ou effacez toutes les données de l\'utilisateur en cas d\'un nombre trop élevé de tentatives." "Surveillez le nombre de mots de passe incorrects entrés lors du déverrouillage de l\'écran et verrouillez le système d\'infodivertissement ou effacez toutes les données de ce profil en cas d\'un nombre trop élevé de tentatives." @@ -825,7 +824,7 @@ "Effacer les données de la tablette sans avertissement, en rétablissant les paramètres par défaut" "Effacez les données de votre appareil Android TV sans avertissement en effectuant une réinitialisation des paramètres d\'usine." "Effacez les données du système d\'infodivertissement sans avertissement en rétablissant les paramètres par défaut." - "Effacer les données du téléphone sans avertissement en rétablissant les paramètres par défaut." + "Les données du téléphone sont effacées sans avertissement en rétablissant les paramètres par défaut." "Effacer les données de profil" "Effacer les données de l\'utilisateur" "Effacer les données de l\'utilisateur sur cette tablette sans avertissement." @@ -1869,6 +1868,7 @@ "2e %1$s professionnel(le)" "3e %1$s professionnel(le)" "Clone de %1$s" + "%1$s privé" "Demander le NIP avant d\'annuler l\'épinglage" "Demander le schéma de déverrouillage avant d\'annuler l\'épinglage" "Demander le mot de passe avant d\'annuler l\'épinglage" @@ -2033,7 +2033,7 @@ "Mettre à jour sous ""%1$s""?" "Mettre à jour %1$s sous ""%2$s""?" "Mettre à jour %1$s et %2$s sous ""%3$s""?" - "Mettre à jour ces éléments sous ""%4$s"" : %1$s, %2$s et %3$s?" + "Mettre à jour ces éléments sous ""%4$s"" : %1$s, %2$s et %3$s?" "Enregistrer" "Non, merci" "Pas maintenant" @@ -2332,11 +2332,11 @@ "Permet à une application compagnon en arrière-plan de lancer des services d\'avant-plan." "Le microphone est accessible" "Le microphone est bloqué" - "Double écran" - "Le double écran est activé" + "Dual Screen" + "Dual Screen activé" "%1$s utilise les deux écrans pour afficher le contenu" "L\'appareil est trop chaud" - "Le double écran n\'est pas accessible, car votre téléphone est trop chaud" + "Dual Screen n\'est pas accessible, car votre téléphone est trop chaud" "La fonctionnalité Dual Screen n\'est pas accessible" "La fonctionnalité Dual Screen n\'est pas accessible, car l\'économiseur de pile est activé. Vous pouvez désactiver cette option dans les paramètres." "Accéder aux paramètres" diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 0edaac5fcdfce6ae7ba526cfa6a91ff7623856c5..1049d49468f4ab112d1b1cf034f3b42b9fe75f7b 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -619,8 +619,6 @@ "Utiliser la biométrie ou le verrouillage de l\'écran" "Confirmez votre identité" "Utilisez la biométrie pour continuer" - "Utilisez votre empreinte digitale pour continuer" - "Utilisez la reconnaissance faciale pour continuer" "Utilisez la biométrie ou le verrouillage de l\'écran pour continuer" "Matériel biométrique indisponible" "Authentification annulée" @@ -646,6 +644,7 @@ "Empreinte digitale non reconnue" "Empreinte digitale non reconnue" + "Visage non reconnu. Utilisez votre empreinte." "Empreinte digitale authentifiée" "Visage authentifié" "Visage authentifié, veuillez appuyer sur \"Confirmer\"" @@ -671,14 +670,14 @@ "Un problème est survenu. Réessayez." "Icône d\'empreinte digitale" + "Déverrouillage de l\'appareil" + "Essayez une autre méthode de déverrouillage" + "Utilisez le déverrouillage par reconnaissance faciale lorsque votre empreinte digitale n\'est pas reconnue, par exemple lorsque vos doigts sont mouillés" + "Utilisez le déverrouillage par empreinte digitale lorsque votre visage n\'est pas reconnu, par exemple lorsque la luminosité n\'est pas suffisante" "Déverrouillage par reconnaissance faciale" "Problème lié au déverrouillage par reconnaissance faciale" "Appuyez pour supprimer votre empreinte faciale, puis ajoutez de nouveau votre visage" - "Configurer le déverrouillage par reconnaissance faciale" - "Déverrouillez votre téléphone en le regardant" "Pour utiliser le déverrouillage par reconnaissance faciale, activez ""Accès à l\'appareil photo"" dans Paramètres > Confidentialité" - "Configurer d\'autres méthodes de déverrouillage" - "Appuyez pour ajouter une empreinte digitale" "Déverrouillage par empreinte digitale" "Impossible d\'utiliser le lecteur d\'empreinte digitale" "Contactez un réparateur." @@ -1869,6 +1868,7 @@ "2e %1$s professionnelle" "3e %1$s professionnelle" "Cloner %1$s" + "%1$s privé" "Demander le code avant de retirer l\'épingle" "Demander le schéma de déverrouillage avant de retirer l\'épingle" "Demander le mot de passe avant de retirer l\'épingle" @@ -2033,7 +2033,7 @@ "Mettre à jour cet élément dans ""%1$s"" ?" "Mettre à jour %1$s dans ""%2$s"" ?" "Mettre à jour %1$s et %2$s dans ""%3$s"" ?" - "Mettre à jour les éléments %1$s, %2$s et %3$s dans ""%4$s"" ?" + "Mettre à jour ces éléments dans ""%4$s"" : %1$s, %2$s et %3$s ?" "Enregistrer" "Non, merci" "Pas maintenant" @@ -2131,7 +2131,7 @@ "Le Bluetooth restera activé en mode Avion" "Chargement…" "{count,plural, =1{{file_name} + # fichier}one{{file_name} + # fichier}many{{file_name} + # fichiers}other{{file_name} + # fichiers}}" - "Aucune recommandation de personnes avec lesquelles effectuer un partage" + "Aucun destinataire recommandé" "Liste des applications" "Cette application n\'a pas reçu l\'autorisation d\'enregistrer des contenus audio, mais peut le faire via ce périphérique USB." "Accueil" diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index e672b2f35651ff18b30d3e9b7a0d6f68aa4ed07e..1b8a8fd9ec5856f7740d7afe90f485ff89259d2f 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -618,8 +618,6 @@ "Utilizar desbloqueo biométrico ou credencial do dispositivo" "Verifica que es ti" "Para continuar, utiliza o desbloqueo biométrico" - "Usa a impresión dixital para continuar" - "Usa o recoñecemento facial para continuar" "Para continuar, utiliza o desbloqueo biométrico ou o bloqueo de pantalla" "O hardware biométrico non está dispoñible" "Cancelouse a autenticación" @@ -645,6 +643,7 @@ "Non se recoñeceu a impresión dixital" "Non se recoñeceu a impresión dixital" + "Non se recoñeceu a cara. Usa a impresión dixital." "Autenticouse a impresión dixital" "Autenticouse a cara" "Autenticouse a cara, preme Confirmar" @@ -670,14 +669,14 @@ "Produciuse un erro. Téntao de novo." "Icona de impresión dixital" + "Desbloqueo do dispositivo" + "Proba outro método de desbloqueo" + "Usa a o desbloqueo facial cando non se dea recoñecido a túa impresión dixital (por exemplo, cando teñas os dedos húmidos)" + "Usa o desbloqueo dactilar cando non se dea recoñecido a túa cara (por exemplo, cando non haxa moita luz)" "Desbloqueo facial" "Produciuse un problema co desbloqueo facial" "Toca para eliminar o teu modelo facial e despois engade de novo a cara" - "Configurar o desbloqueo facial" - "Mira o teléfono para desbloquealo" "Para usar o desbloqueo facial, activa ""Acceso á cámara"" en Configuración > Privacidade" - "Configura máis maneiras de desbloquear o dispositivo" - "Toca para engadir unha impresión dixital" "Desbloqueo dactilar" "Non se puido usar o sensor de impresión dixital" "Visita un provedor de reparacións." @@ -1868,6 +1867,7 @@ "2.º %1$s do traballo" "3.º %1$s do traballo" "Clonar %1$s" + "%1$s privado" "Pedir PIN antes de soltar a fixación" "Pedir padrón de desbloqueo antes de soltar a fixación" "Pedir contrasinal antes de soltar a fixación" @@ -2032,7 +2032,7 @@ "Queres actualizar o contido en ""%1$s""?" "Queres actualizar %1$s en ""%2$s""?" "Queres actualizar %1$s e %2$s en ""%3$s""?" - "Queres actualizar %1$s, %2$s e %3$s en ""%4$s""?" + "Queres actualizar estes datos (%1$s, %2$s e %3$s) en ""%4$s""?" "Gardar" "Non, grazas" "Agora non" diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 05c839b28bf92fc2586378d5e886761ff349d2bb..9ad7ff19b7123fbc1a09a3a2033e8a0d6cda9999 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -618,8 +618,6 @@ "બાયોમેટ્રિક્સ અથવા સ્ક્રીન લૉકનો ઉપયોગ કરો" "તે તમે જ છો એ ચકાસો" "આગળ વધવા માટે બાયોમેટ્રિકનો ઉપયોગ કરો" - "ચાલુ રાખવા માટે તમારી ફિંગરપ્રિન્ટનો ઉપયોગ કરો" - "ચાલુ રાખવા માટે તમારા ચહેરાનો ઉપયોગ કરો" "ચાલુ રાખવા માટે તમારા બાયોમેટ્રિક ડેટા અથવા સ્ક્રીન લૉક સુવિધાનો ઉપયોગ કરો" "બાયોમેટ્રિક હાર્ડવેર ઉપલબ્ધ નથી" "પ્રમાણીકરણ રદ કર્યું" @@ -645,6 +643,7 @@ "ફિંગરપ્રિન્ટ ઓળખી શકાઈ નથી" "ફિંગરપ્રિન્ટ ઓળખી શકાઈ નથી" + "ચહેરો ઓળખી શકતા નથી. તેને બદલે ફિંગરપ્રિન્ટ વાપરો." "ફિંગરપ્રિન્ટ પ્રમાણિત કરી" "ચહેરા પ્રમાણિત" "ચહેરા પ્રમાણિત, કૃપા કરીને કન્ફર્મ કરો" @@ -670,14 +669,14 @@ "કંઈક ખોટું થયું. ફરી પ્રયાસ કરો." "ફિંગરપ્રિન્ટ આયકન" + "ડિવાઇસ અનલૉક કરવું" + "અનલૉક કરવા માટેની અન્ય રીત અજમાવી જુઓ" + "જ્યારે તમારી ફિંગરપ્રિન્ટ ઓળખાતી ન હોય, જેમ કે જ્યારે તમારી આંગળીઓ ભીની હોય ત્યારે ફેસ અનલૉકનો ઉપયોગ કરો" + "જ્યારે તમારો ચહેરો ઓળખાતો ન હોય, જેમ કે જ્યારે પૂરતો પ્રકાશ ન હોય ત્યારે ફિંગરપ્રિન્ટ અનલૉકનો ઉપયોગ કરો" "ફેસ અનલૉક" "ફેસ અનલૉકની સુવિધામાં સમસ્યા" "તમારા ચહેરાનું મૉડલ ડિલીટ કરવા માટે ટૅપ કરો, પછી તમારો ચહેરો ફરીથી ઉમેરો" - "ફેસ અનલૉક સુવિધાનું સેટઅપ કરો" - "તમારા ફોનની તરફ જોઈને તેને અનલૉક કરો" "ફેસ અનલૉક સુવિધાનો ઉપયોગ કરવા માટે, સેટિંગ > પ્રાઇવસીમાં જઈને ""કૅમેરા ઍક્સેસ"" ચાલુ કરો" - "અનલૉક કરવાની બીજી રીતોનું સેટઅપ કરો" - "ફિંગરપ્રિન્ટ ઉમેરવા માટે ટૅપ કરો" "ફિંગરપ્રિન્ટ અનલૉક" "ફિંગરપ્રિન્ટ સેન્સરનો ઉપયોગ કરી શકાતો નથી" "રિપેર કરવાની સેવા આપતા પ્રદાતાની મુલાકાત લો." @@ -1868,6 +1867,7 @@ "2જું કાર્ય %1$s" "3જું કાર્ય %1$s" "%1$sની ક્લોન" + "ખાનગી %1$s" "અનપિન કરતા પહેલાં પિન માટે પૂછો" "અનપિન કરતા પહેલાં અનલૉક પૅટર્ન માટે પૂછો" "અનપિન કરતાં પહેલાં પાસવર્ડ માટે પૂછો" @@ -2032,7 +2032,7 @@ "%1$s""માં અપડેટ કરીએ?" "%1$sને ""%2$s""માં અપડેટ કરીએ?" "%1$s અને %2$sને ""%3$s""માં અપડેટ કરીએ?" - "%4$s""માંની: %1$s, %2$s અને %3$s બાબતોને અપડેટ કરીએ?" + "શું ""%4$s""માંની: આ %1$s, %2$s અને %3$s આઇટમને અપડેટ કરીએ?" "સાચવો" "ના, આભાર" "હમણાં નહીં" @@ -2335,9 +2335,9 @@ "Dual screen ચાલુ છે" "કન્ટેન્ટ બતાવવા માટે %1$s બન્ને ડિસ્પ્લેનો ઉપયોગ કરી રહી છે" "ડિવાઇસ ખૂબ જ ગરમ છે" - "ડ્યૂઅલ સ્ક્રીન અનુપલબ્ધ છે કારણ કે તમારો ફોન ખૂબ જ ગરમ થઈ રહ્યો છે" - "ડ્યૂઅલ સ્ક્રીન અનુપલબ્ધ છે" - "બૅટરી સેવર ચાલુ હોવાને કારણે ડ્યૂઅલ સ્ક્રીન અનુપલબ્ધ છે. તમે સેટિંગમાં જઈને આને બંધ કરી શકો છો." + "Dual Screen ઉપલબ્ધ નથી કારણ કે તમારો ફોન ખૂબ જ ગરમ થઈ રહ્યો છે" + "Dual Screen ઉપલબ્ધ નથી" + "બૅટરી સેવર ચાલુ હોવાને કારણે Dual Screen ઉપલબ્ધ નથી. તમે સેટિંગમાં જઈને આને બંધ કરી શકો છો." "સેટિંગ પર જાઓ" "બંધ કરો" "%sની ગોઠવણી કરવામાં આવી છે" diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index 888fc0f7fb34c19149070cb4fe4114fa756d2627..2cd150963695b661bb2c51cf612303d36bf5c9fc 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -618,8 +618,6 @@ "बायोमेट्रिक्स या स्क्रीन लॉक का क्रेडेंशियल इस्तेमाल करें" "अपनी पहचान की पुष्टि करें" "जारी रखने के लिए, बायोमेट्रिक्स इस्तेमाल करें" - "जारी रखने के लिए, अपने फ़िंगरप्रिंट की मदद से पहचान की पुष्टि करें" - "जारी रखने के लिए, अपने चेहरा की मदद से पहचान की पुष्टि करें" "जारी रखने के लिए, बायोमेट्रिक या स्क्रीन लॉक क्रेडेंशियल डालकर पुष्टि करें" "बायोमेट्रिक हार्डवेयर उपलब्ध नहीं है" "प्रमाणीकरण रद्द किया गया" @@ -645,6 +643,7 @@ "फ़िंगरप्रिंट की पहचान नहीं हो पाई" "फ़िंगरप्रिंट की पहचान नहीं हो पाई" + "चेहरे की पहचान नहीं हुई. फ़िंगरप्रिंट इस्तेमाल करें." "फ़िंगरप्रिंट की पुष्टि हो गई" "चेहरे की पहचान की गई" "चेहरे की पहचान की गई, कृपया पुष्टि बटन दबाएं" @@ -670,14 +669,14 @@ "कोई गड़बड़ी हुई. फिर से कोशिश करें." "फ़िंगरप्रिंट आइकॉन" + "डिवाइस अनलॉक करने की सुविधा" + "अनलॉक करने का दूसरा तरीका आज़माएं" + "फ़िंगरप्रिंट की पहचान न होने पर, फ़ेस अनलॉक का इस्तेमाल करें. जैसे, जब आपकी उंगलियां गीली हों" + "चेहरे की पहचान न होने पर, फ़िंगरप्रिंट अनलॉक का इस्तेमाल करें. जैसे, जब रोशनी कम हो" "फ़ेस अनलॉक" "फ़ेस अनलॉक से जुड़ी समस्या" "अपने चेहरे का मॉडल मिटाने के लिए टैप करें. इसके बाद, अपना चेहरा फिर से रजिस्टर करें" - "फे़स अनलॉक की सुविधा सेट अप करें" - "अपने फ़ोन की तरफ़ देखकर उसे अनलॉक करें" "फ़ेस अनलॉक की सुविधा का इस्तेमाल करने के लिए, सेटिंग और निजता में जाकर, ""कैमरे का ऐक्सेस"" चालू करें" - "फ़ोन को अनलॉक करने के दूसरे तरीके सेट अप करें" - "फ़िंगरप्रिंट जोड़ने के लिए टैप करें" "फ़िंगरप्रिंट अनलॉक" "फ़िंगरप्रिंट सेंसर इस्तेमाल नहीं किया जा सकता" "फ़िंगरप्रिंट सेंसर को रिपेयर करने की सेवा देने वाली कंपनी से संपर्क करें." @@ -807,11 +806,11 @@ "इससे होल्डर उस ऐप्लिकेशन को अपने-आप अपडेट कर पाएगा जो उसने पहले इंस्टॉल किया था" "पासवर्ड नियम सेट करना" "स्‍क्रीन लॉक पासवर्ड और पिन की लंबाई और उनमें स्वीकृत वर्णों को नियंत्रित करना." - "स्‍क्रीन अनलॉक करने के की कोशिशों पर नज़र रखना" + "स्‍क्रीन अनलॉक करने की कोशिशों पर नज़र रखना" "स्‍क्रीन को अनलॉक करते समय गलत लिखे गए पासवर्ड की संख्‍या पर निगरानी करें, और बहुत ज़्यादा बार गलत पासवर्ड लिखे जाने पर टैबलेट लॉक करें या टैबलेट का संपूर्ण डेटा मिटाएं." "स्क्रीन को अनलॉक करते समय ध्यान रखें कि कितनी बार गलत पासवर्ड डाला गया है. अगर बहुत ज़्यादा बार गलत पासवर्ड डाला गया है, तो अपने Android TV डिवाइस को तुरंत लॉक करें या इसका सभी डेटा मिटाएं." "स्क्रीन को अनलॉक करते समय ध्यान रखें कि कितनी बार गलत पासवर्ड डाला गया है. अगर बहुत ज़्यादा बार गलत पासवर्ड डाला गया है, तो सूचना और मनोरंजन की सुविधा देने वाले डिवाइस को लॉक करें या इस डिवाइस का सारा डेटा मिटाएं." - "स्क्रीन को अनलॉक करते समय जितनी बार गलत पासवर्ड लिखा गया है, उसकी संख्या पर नज़र रखना और अगर बहुत बार गलत पासवर्ड डाले गए हैं, तो फ़ोन को लॉक कर देना या फ़ोन का सारा डेटा मिटा देना." + "स्क्रीन को अनलॉक करते समय ध्यान रखें कि कितनी बार गलत पासवर्ड डाला गया है. अगर बहुत ज़्यादा बार गलत पासवर्ड डाला गया है, तो अपने फ़ोन को तुरंत लॉक करें या फ़ोन का सारा डेटा मिटा दें." "स्‍क्रीन का लॉक खोलते समय गलत तरीके से लिखे गए पासवर्ड पर नज़र रखें, और अगर बार-बार ज़्यादा पासवर्ड लिखे जाते हैं तो टैबलेट को लॉक करें या इस उपयोगकर्ता का सभी डेटा मिटा दें." "स्क्रीन को अनलॉक करते समय ध्यान रखें कि कितनी बार गलत पासवर्ड डाला गया है. अगर बहुत ज़्यादा बार गलत पासवर्ड डाला गया है, तो अपने Android TV डिवाइस को तुरंत लॉक करें या इस उपयोगकर्ता का सभी डेटा मिटाएं." "स्क्रीन को अनलॉक करते समय ध्यान रखें कि कितनी बार गलत पासवर्ड डाला गया है. अगर बहुत ज़्यादा बार गलत पासवर्ड डाला गया है, तो सूचना और मनोरंजन की सुविधा देने वाले डिवाइस को लॉक करें या इस प्रोफ़ाइल का सारा डेटा मिटाएं." @@ -1868,6 +1867,7 @@ "दूसरा काम %1$s" "तीसरा काम %1$s" "%1$s का क्लोन" + "निजी %1$s" "अनपिन करने से पहले पिन के लिए पूछें" "अनपिन करने से पहले लॉक खोलने के पैटर्न के लिए पूछें" "अनपिन करने से पहले पासवर्ड के लिए पूछें" @@ -2032,7 +2032,7 @@ "क्या आप ""%1$s"" में अपडेट करना चाहते हैं?" "क्या आप ""%2$s"" में %1$s अपडेट करना चाहते हैं?" "क्या आप ""%3$s"" में %1$s और %2$s अपडेट करना चाहते हैं?" - "क्या आप ""%4$s"" में इन आइटम को अपडेट करना चाहते हैं: %1$s, %2$s, और %3$s?" + "क्या आपको ""%4$s"" में इन आइटम को अपडेट करना है: %1$s, %2$s, और %3$s?" "सेव करें" "नहीं, धन्यवाद" "अभी नहीं" diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 2e1b8ad962898fad98fbc6b159ed4dc0f9334aff..4a9dbf534771f9c0cb7cc5e38ccdfc4e9f75ba76 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -619,8 +619,6 @@ "Upotreba biometrijske autentifikacije ili zaključavanja zaslona" "Potvrdite da ste to vi" "Upotrijebite svoju biometrijsku autentifikaciju da biste nastavili" - "Za nastavak upotrijebite otisak prsta" - "Za nastavak se identificirajte licem" "Za nastavak se identificirajte biometrijski ili vjerodajnicom zaključavanja zaslona" "Biometrijski hardver nije dostupan" "Autentifikacija otkazana" @@ -646,6 +644,7 @@ "Otisak prsta nije prepoznat" "Otisak prsta nije prepoznat" + "Prepoznavanje lica nije uspjelo. Upotrijebite otisak prsta." "Autentificirano otiskom prsta" "Lice je autentificirano" "Lice je autentificirano, pritisnite Potvrdi" @@ -671,14 +670,14 @@ "Nešto nije u redu. Pokušajte ponovo." "Ikona otiska prsta" + "Otključavanje uređaja" + "Pokušajte s drugim načinom otključavanja" + "Upotrijebite otključavanje licem ako se ne prepozna otisak prsta, primjerice ako su prsti mokri" + "Upotrijebite otključavanje otiskom prsta ako se ne prepozna lice, primjerice ako nema dovoljno svjetla" "Otključavanje licem" "Poteškoće s otključavanjem licem" "Dodirnite da biste izbrisali model lica, a zatim ponovo dodajte svoje lice" - "Postavite otključavanje licem" - "Otključajte telefon gledajući u njega" "Da biste koristili otključavanje licem, uključite opciju ""Pristup kameri"" u odjeljku Postavke > Privatnost" - "Postavite više načina otključavanja" - "Dodirnite da biste dodali otisak prsta" "Otključavanje otiskom prsta" "Senzor otiska prsta ne može se koristiti" "Posjetite davatelja usluga popravaka." @@ -808,7 +807,7 @@ "Nositelju omogućuje ažuriranje aplikacije koju je prethodno instalirao bez radnje korisnika" "Postavi pravila zaporke" "Upravlja duljinom i znakovima koji su dopušteni u zaporkama i PIN-ovima zaključavanja zaslona." - "Nadziri pokušaje otključavanja zaslona" + "Nadzor pokušaja otključavanja zaslona" "Nadziri broj netočnih zaporki unesenih pri otključavanju zaslona i zaključaj tabletno računalo ili izbriši sve podatke na njemu ako je uneseno previše netočnih zaporki." "Prati broj netočnih zaporki unesenih prilikom otključavanja zaslona i zaključava Android TV uređaj ili s njega briše sve podatke ako se unese previše netočnih zaporki." "Prati broj netočnih zaporki unesenih prilikom otključavanja zaslona i zaključava sustav za informiranje i zabavu ili briše sve njegove podatke ako se unese previše netočnih zaporki." @@ -1869,6 +1868,7 @@ "2. %1$s za posao" "3. %1$s za posao" "Kloniraj %1$s" + "Privatno %1$s" "Traži PIN radi otkvačivanja" "Traži uzorak za otključavanje radi otkvačivanja" "Traži zaporku radi otkvačivanja" @@ -2033,7 +2033,7 @@ "Želite li ažurirati u oznaku ""%1$s""?" "Želite li ažurirati podatke %1$s u oznaci ""%2$s""?" "Želite li ažurirati podatke %1$s i %2$s u oznaci ""%3$s""?" - "Želite li ažurirati ove stavke u oznaci ""%4$s"": %1$s, %2$s i %3$s ?" + "Želite li ažurirati ove stavke u oznaci ""%4$s"": %1$s, %2$s i %3$s?" "Spremi" "Ne, hvala" "Ne sad" diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index bdf81a5ed798a470fc059b219b310ecabf5b9c8d..57b81a0b4ac6ac777278555ac7a621150987553b 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -618,8 +618,6 @@ "A folytatás biometriai feloldással vagy képernyőzárral lehetséges" "Igazolja, hogy Ön az" "A folytatás biometriai feloldással lehetséges" - "A folytatáshoz használja ujjlenyomatát" - "A folytatáshoz használja az arcalapú feloldást" "A folytatás biometriai feloldással vagy a képernyőzár feloldásával lehetséges" "Biometrikus hardver nem áll rendelkezésre" "Hitelesítés megszakítva" @@ -645,6 +643,7 @@ "Az ujjlenyomat nem ismerhető fel" "Az ujjlenyomat nem ismerhető fel" + "Az arc nem felismerhető. Használjon ujjlenyomatot." "Ujjlenyomat hitelesítve" "Arc hitelesítve" "Arc hitelesítve; nyomja meg a Megerősítés lehetőséget" @@ -670,14 +669,14 @@ "Hiba történt. Próbálja újra." "Ujjlenyomat ikon" + "Eszköz feloldása" + "Próbálkozzon a feloldás más módjával" + "Használja az Arcalapú feloldás funkciót, ha a rendszer nem ismeri fel az ujjlenyomatot, például amikor ujjai nedvesek" + "Használja a Feloldás ujjlenyomattal funkciót, ha a rendszer nem ismeri fel az arcát, például amikor nincs elég fény" "Arcalapú feloldás" "Arcalapú feloldással kapcsolatos problémák" "Koppintson arcmodellje törléséhez, majd készítsen újat" - "Az Arcalapú feloldás beállítása" - "Feloldhatja a zárolást úgy, hogy ránéz a telefonra" "Az Arcalapú feloldás funkció használatához kapcsolja be a ""Hozzáférés a kamerához"" beállítást a Beállítások > Adatvédelem szakaszban." - "További feloldási módszerek beállítása" - "Koppintson ide ujjlenyomat hozzáadásához" "Feloldás ujjlenyomattal" "Nem lehet használni az ujjlenyomat-érzékelőt" "Keresse fel a szervizt." @@ -1868,6 +1867,7 @@ "2. munkahelyi %1$s" "3. munkahelyi %1$s" "%1$s klónozása" + "Privát %1$s" "PIN-kód kérése a kitűzés feloldásához" "Feloldási minta kérése a rögzítés feloldásához" "Jelszó kérése a rögzítés feloldásához" @@ -2032,7 +2032,7 @@ "Frissíti a(z) ""%1$s"" szolgáltatásban?" "Frissíti a(z) ""%2$s"" szolgáltatásban a következőt: %1$s?" "Frissíti a(z) ""%3$s"" szolgáltatásban a következőket: %1$s és %2$s?" - "Frissíti a(z) ""%4$s"" szolgáltatásban a következőket: %1$s, %2$s és %3$s?" + "Frissíti a(z) ""%4$s"" szolgáltatásban a következőket: %1$s, %2$s és %3$s?" "Mentés" "Nem, köszönöm" "Ne most" diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 6eec876da763866d7b870de460aa8f4450beea7c..9190a6382c4b4fd08781ee93a6cced9abec00c70 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -618,8 +618,6 @@ "Օգտագործել կենսաչափական համակարգեր կամ էկրանի կողպում" "Հաստատեք ձեր ինքնությունը" "Շարունակելու համար օգտագործեք կենսաչափական համակարգեր" - "Շարունակելու համար օգտագործեք ձեր մատնահետքը" - "Շարունակելու համար օգտագործեք դեմքով իսկորոշումը" "Շարունակելու համար օգտագործեք ձեր կենսաչափական տվյալները կամ էկրանի կողպումը" "Կենսաչափական սարքը հասանելի չէ" "Նույնականացումը չեղարկվեց" @@ -645,6 +643,7 @@ "Մատնահետքը չի ճանաչվել" "Մատնահետքը չի ճանաչվել" + "Դեմքը չի հաջողվում ճանաչել։ Օգտագործեք մատնահետքը։" "Մատնահետքը նույնականացվեց" "Դեմքը ճանաչվեց" "Դեմքը ճանաչվեց: Սեղմեք «Հաստատել»:" @@ -670,14 +669,14 @@ "Սխալ առաջացավ։ Նորից փորձեք։" "Մատնահետքի պատկերակ" + "Սարքի ապակողպում" + "Ընտրեք ապակողպման այլ եղանակ" + "Օգտագործեք դեմքով ապակողպումը, երբ ձեր մատնահետքը չի հաջողվում ճանաչել, օրինակ՝ երբ ձեր ձեռքերը թաց են" + "Օգտագործեք մատնահետքով ապակողպումը, երբ ձեր դեմքը չի հաջողվում ճանաչել, օրինակ՝ երբ լուսավորությունը թույլ է" "Դեմքով ապակողպում" "Դեմքով ապակողպման հետ կապված խնդիր" "Հպեք՝ ձեր դեմքի նմուշը ջնջելու համար, այնուհետև նորից ավելացրեք այն:" - "Կարգավորեք դեմքով ապակողպումը" - "Ապակողպելու համար պարզապես նայեք հեռախոսին" "Դեմքով ապակողպումն օգտագործելու համար անցեք Կարգավորումներ > Գաղտնիություն և տրամադրեք ""տեսախցիկն օգտագործելու թույլտվություն""։" - "Կարգավորեք ապակողպելու այլ եղանակներ" - "Հպեք՝ մատնահետք ավելացնելու համար" "Մատնահետքով ապակողպում" "Մատնահետքերի սկաները հնարավոր չէ օգտագործել" "Այցելեք սպասարկման կենտրոն։" @@ -1868,6 +1867,7 @@ "2-րդ աշխատանք %1$s" "3-րդ աշխատանք %1$s" "%1$s-ի կլոն" + "Անձնական %1$s" "Հարցնել PIN կոդը" "Հարցնել ապակողպող նախշը" "Հարցնել գաղտնաբառը" @@ -2032,7 +2032,7 @@ "Թարմացնե՞լ ""%1$s"" ծառայությունում" "Թարմացնե՞լ տվյալները (%1$s) ""%2$s"" ծառայությունում" "Թարմացնե՞լ տվյալները (%1$s, %2$s) ""%3$s"" ծառայությունում" - "Թարմացնե՞լ տվյալները (%1$s, %2$s, %3$s) ""%4$s"" ծառայությունում" + "Թարմացնե՞լ տվյալները (%1$s, %2$s, %3$s) ""%4$s"" ծառայությունում" "Պահել" "Ոչ" "Ոչ հիմա" @@ -2331,11 +2331,11 @@ "Թույլատրում է ուղեկցող հավելվածին ակտիվ ծառայություններ գործարկել ֆոնային ռեժիմից։" "Խոսափողը հասանելի է" "Խոսափողն արգելափակված է" - "Կրկնակի էկրան" - "Կրկնակի էկրանը միացված է" + "Dual Screen" + "Dual Screen-ը միացված է" "%1$s հավելվածն օգտագործում է երկու էկրանները" "Սարքը գերտաքացել է" - "Կրկնակի էկրանն անհասանելի է, քանի որ ձեր հեռախոսը գերտաքանում է" + "Dual Screen-ն անհասանելի է, քանի որ ձեր հեռախոսը գերտաքանում է" "Dual Screen-ը հասանելի չէ" "Dual Screen-ն անհասանելի է, քանի որ Մարտկոցի տնտեսումը միացված է։ Դուք կարող եք անջատել այս գործառույթը Կարգավորումներում։" "Անցնել Կարգավորումներ" diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index e65d8e3d9d31f008e53a6e1f0b2b79db38776df8..3417c2af249fdce94c2a15e0b8fa7603b184226b 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -618,8 +618,6 @@ "Gunakan biometrik atau kunci layar" "Verifikasi bahwa ini memang Anda" "Gunakan biometrik untuk melanjutkan" - "Gunakan sidik jari untuk melanjutkan" - "Gunakan wajah untuk melanjutkan" "Gunakan biometrik atau kunci layar untuk melanjutkan" "Hardware biometrik tidak tersedia" "Autentikasi dibatalkan" @@ -645,6 +643,7 @@ "Sidik jari tidak dikenali" "Sidik jari tidak dikenali" + "Tidak dapat mengenali wajah. Gunakan sidik jari." "Sidik jari diautentikasi" "Wajah diautentikasi" "Wajah diautentikasi, silakan tekan konfirmasi" @@ -670,14 +669,14 @@ "Terjadi error. Coba lagi." "Ikon sidik jari" + "Buka kunci perangkat" + "Coba cara lain untuk membuka kunci" + "Gunakan Buka dengan Wajah saat sidik jari Anda tidak dikenali, seperti saat jari Anda basah" + "Gunakan Buka dengan Sidik Jari saat wajah Anda tidak dikenali, seperti saat pencahayaan tidak cukup" "Buka dengan Wajah" "Masalah pada Buka dengan Wajah" "Ketuk untuk menghapus model wajah, lalu tambahkan wajah Anda lagi" - "Siapkan Buka dengan Wajah" - "Buka kunci ponsel dengan melihat ke ponsel" "Untuk menggunakan Buka dengan Wajah, aktifkan ""Akses kamera"" di Setelan > Privasi" - "Siapkan lebih banyak cara untuk membuka kunci" - "Ketuk untuk menambahkan sidik jari" "Buka dengan Sidik Jari" "Tidak dapat menggunakan sensor sidik jari" "Kunjungi penyedia reparasi." @@ -807,7 +806,7 @@ "Mengizinkan pemegang mengupdate aplikasi yang sebelumnya diinstal tanpa tindakan pengguna" "Setel aturan sandi" "Mengontrol panjang dan karakter yang diizinkan dalam sandi dan PIN kunci layar." - "Pantau upaya pembukaan kunci layar" + "Memantau upaya pembukaan kunci layar" "Memantau berapa kali sandi yang dimasukkan salah saat ingin membuka kunci layar, dan mengunci tablet atau menghapus semua data tablet jika terjadi terlalu banyak kesalahan memasukkan sandi." "Memantau banyaknya sandi salah yang diketikkan saat membuka kunci layar, dan mengunci perangkat Android TV atau menghapus semua data perangkat Android TV jika terlalu banyak sandi salah diketikkan." "Memantau berapa kali sandi yang dimasukkan salah saat ingin membuka kunci layar, dan mengunci sistem infotainmen atau menghapus semua data sistem infotainmen jika terlalu banyak kesalahan memasukkan sandi." @@ -1597,7 +1596,7 @@ "Ketuk untuk menghapus batasan." "Penggunaan data seluler tinggi" "Aplikasi Anda menggunakan lebih banyak kuota daripada biasanya" - "%s menggunakan lebih banyak kuota daripada biasanya" + "%s menggunakan lebih banyak data daripada biasanya" "Sertifikat keamanan" "Sertifikat ini valid." "Diterbitkan ke:" @@ -1644,7 +1643,7 @@ "Sedang digunakan" "Layar Built-In" "Layar HDMI" - "Hamparan #%1$d" + "Overlay #%1$d" "%1$s: %2$dx%3$d, %4$d dpi" ", aman" "Lupa Pola?" @@ -1868,6 +1867,7 @@ "Upaya ke-2 %1$s" "Upaya ke-3 %1$s" "Clone %1$s" + "%1$s Pribadi" "Meminta PIN sebelum melepas sematan" "Meminta pola pembukaan kunci sebelum melepas sematan" "Meminta sandi sebelum melepas sematan" @@ -2032,7 +2032,7 @@ "Perbarui di ""%1$s""?" "Perbarui %1$s di ""%2$s""?" "Perbarui %1$s dan %2$s di ""%3$s""?" - "Perbarui item-item berikut di ""%4$s"": %1$s, %2$s, dan %3$s ?" + "Perbarui item-item berikut di ""%4$s"": %1$s, %2$s, dan %3$s?" "Simpan" "Lain kali" "Lain kali" @@ -2331,11 +2331,11 @@ "Mengizinkan aplikasi pendamping memulai layanan latar depan dari latar belakang." "Mikrofon tersedia" "Mikrofon diblokir" - "Layar ganda" + "Dual Screen" "Dual screen aktif" "%1$s menggunakan kedua layar untuk menampilkan konten" "Suhu perangkat terlalu panas" - "Layar ganda tidak tersedia karena suhu ponsel terlalu panas" + "Dual Screen tidak tersedia karena suhu ponsel terlalu panas" "Dual Screen tidak tersedia" "Dual Screen tidak tersedia karena Penghemat Baterai aktif. Anda dapat menonaktifkannya di Setelan." "Buka Setelan" diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index e904c437e090d8e7c3023e6137c298788afa227c..7b2bf029a23a6088d314376dde594762cd065f90 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -296,9 +296,9 @@ "%1$s, %2$s" "Örugg stilling" "Android kerfið" - "Skipta yfir í eigið snið" + "Skipta yfir í einkasnið" "Skipta yfir í vinnusnið" - "Skipta yfir í eigið snið %1$s" + "Skipta yfir í einkasnið %1$s" "Skipta yfir í vinnusnið %1$s" "Tengiliðir" "fá aðgang að tengiliðunum þínum" @@ -618,8 +618,6 @@ "Nota lífkenni eða skjálás" "Staðfestu hver þú ert" "Notaðu lífkenni til að halda áfram" - "Notaðu fingrafarið til að halda áfram" - "Notaðu andlitið til að halda áfram" "Notaðu lífkenni eða skjálás til að halda áfram" "Lífkennavélbúnaður ekki tiltækur" "Hætt við auðkenningu" @@ -645,6 +643,7 @@ "Fingrafar þekkist ekki" "Fingrafar þekkist ekki" + "Andlit þekkist ekki. Notaðu fingrafar í staðinn." "Fingrafar staðfest" "Andlit staðfest" "Andlit staðfest, ýttu til að staðfesta" @@ -670,14 +669,14 @@ "Eitthvað fór úrskeiðis. Reyndu aftur." "Fingrafaratákn" + "Taka tæki úr lás" + "Prófaðu aðra leið til að opna" + "Notaðu andlitskenni þegar ekki er hægt að greina fingrafarið, t.d. þegar fingurnir eru blautir" + "Notaðu fingrafarskenni þegar ekki er hægt að greina andlitið þitt, t.d. í lítilli birtu" "Andlitskenni" "Vandamál varðandi andlitskenni" "Ýttu til að eyða andlitslíkaninu og skráðu svo andlitið aftur" - "Setja upp andlitskenni" - "Taktu símann úr lás með því að horfa á hann" "Þú verður að kveikja á ""aðgangi að myndavél"" í „Stillingar > persónuvernd“ til að nota andlitskenni" - "Settu upp fleiri leiðir til að taka úr lás" - "Ýttu til að bæta við fingrafari" "Fingrafarskenni" "Ekki er hægt að nota fingrafaralesara" "Þú verður að fara á verkstæði." @@ -1868,6 +1867,7 @@ "%1$s í vinnu (2)" "%1$s í vinnu (3)" "Afrit af %1$s" + "Lokað: %1$s" "Biðja um PIN-númer til að losa" "Biðja um opnunarmynstur til að losa" "Biðja um aðgangsorð til að losa" @@ -2032,7 +2032,7 @@ "Uppfæra í ""%1$s""?" "Uppfæra %1$s í ""%2$s""?" "Uppfæra %1$s og %2$s í ""%3$s""?" - "Uppfæra þessi atriði í ""%4$s"": %1$s, %2$s og %3$s?" + "Uppfæra þessi atriði í ""%4$s"": %1$s, %2$s og %3$s?" "Vista" "Nei, takk" "Ekki núna" diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 66ee83232982a112da7bf2882e018828456470f7..b0bde08f0b42f33d62fd9063d9d0971d1c360f38 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -310,11 +310,11 @@ "SMS" "Possono inviare e visualizzare SMS" "File" - "Consente di accedere ai file sul tuo dispositivo" + "accedere ai file sul tuo dispositivo" "Musica e audio" - "accesso a musica e audio sul tuo dispositivo" + "accedere a musica e audio sul tuo dispositivo" "Foto e video" - "accesso a foto e video sul tuo dispositivo" + "accedere a foto e video sul tuo dispositivo" "Microfono" "Possono registrare audio" "Attività fisica" @@ -322,7 +322,7 @@ "Fotocamera" "Possono scattare foto e registrare video" "Dispositivi nelle vicinanze" - "Consente di rilevare dispositivi nelle vicinanze e di connettersi a tali dispositivi" + "rilevare e connettersi a dispositivi nelle vicinanze" "Registri chiamate" "Possono leggere e modificare il registro chiamate del telefono" "Telefono" @@ -619,8 +619,6 @@ "Usa la biometria o il blocco schermo" "Verifica la tua identità" "Usa la biometria per continuare" - "Utilizza la tua impronta per continuare" - "Usa il tuo volto per continuare" "Per continuare devi usare i tuoi dati biometrici o il tuo blocco schermo" "Hardware biometrico non disponibile" "Autenticazione annullata" @@ -646,6 +644,7 @@ "Impronta non riconosciuta" "Impronta non riconosciuta" + "Impossibile riconoscere il volto. Usa l\'impronta." "Impronta autenticata" "Volto autenticato" "Volto autenticato, premi Conferma" @@ -671,15 +670,15 @@ "Si è verificato un errore. Riprova." "Icona dell\'impronta" - "Sblocco con il volto" - "Problema con Sblocco con il volto" + "Sblocco dispositivo" + "Prova un\'altra modalità di sblocco" + "Usa lo Sblocco con il Volto se la tua impronta non viene riconosciuta, ad esempio se hai le dita bagnate" + "Usa lo Sblocco con l\'Impronta se il tuo volto non viene riconosciuto, ad esempio se non c\'è abbastanza luce" + "Sblocco con il Volto" + "Problema con Sblocco con il Volto" "Tocca per eliminare il tuo modello del volto e poi riaggiungi il tuo volto" - "Configura lo sblocco con il volto" - "Sblocca il telefono guardandolo" - "Per utilizzare lo sblocco con il volto, attiva ""l\'accesso alla fotocamera"" in Impostazioni > Privacy" - "Configura altri modi per sbloccare" - "Tocca per aggiungere un\'impronta" - "Sblocco con l\'impronta" + "Per utilizzare lo Sblocco con il Volto, attiva ""l\'accesso alla fotocamera"" in Impostazioni > Privacy" + "Sblocco con l\'Impronta" "Impossibile utilizzare il sensore di impronte digitali" "Contatta un fornitore di servizi di riparazione." "Impossibile creare il modello del volto. Riprova." @@ -712,20 +711,20 @@ "Imposs. verificare volto. Hardware non disponibile." - "Riprova lo sblocco con il volto" + "Riprova lo Sblocco con il Volto" "Imposs. salvare dati nuovi volti. Elimina un volto vecchio." "Operazione associata al volto annullata." - "Sblocco con il volto annullato dall\'utente" + "Sblocco con il Volto annullato dall\'utente" "Troppi tentativi. Riprova più tardi." - "Troppi tentativi. Sblocco con il volto non disponibile." + "Troppi tentativi. Sblocco con il Volto non disponibile." "Troppi tentativi. Inserisci il blocco schermo." "Impossibile verificare il volto. Riprova." - "Non hai configurato lo sblocco con il volto" - "Sblocco con il volto non è supportato su questo dispositivo" + "Non hai configurato lo Sblocco con il Volto" + "Sblocco con il Volto non è supportato su questo dispositivo" "Sensore temporaneamente disattivato." "Volto %d" - "Usa lo sblocco con il volto" - "Usa lo sblocco con il volto o il blocco schermo" + "Usa lo Sblocco con il Volto" + "Usa lo Sblocco con il Volto o il blocco schermo" "Usa il tuo volto per continuare" "Per continuare devi usare il tuo volto o il tuo blocco schermo" @@ -977,7 +976,7 @@ "Riprova" "Riprova" "Sblocca per accedere a funzioni e dati" - "Numero massimo di tentativi di sblocco con il volto superato" + "Numero massimo di tentativi di Sblocco con il Volto superato" "Nessuna SIM presente" "Nessuna SIM presente nel tablet." "Nessuna SIM presente nel dispositivo Android TV." @@ -1047,7 +1046,7 @@ "Espandi area di sblocco." "Sblocco con scorrimento." "Sblocco con sequenza." - "Sblocco con il volto." + "Sblocco con il Volto." "Sblocco con PIN." "Sblocco tramite PIN della SIM." "Sblocco tramite PUK della SIM." @@ -1869,6 +1868,7 @@ "%1$s di lavoro (2°)" "%1$s di lavoro (3°)" "%1$s (clone)" + "%1$s privato" "Richiedi il PIN per lo sblocco" "Richiedi sequenza di sblocco prima di sbloccare" "Richiedi password prima di sbloccare" @@ -1964,7 +1964,7 @@ "%1$s non disponibile" "Richiesta di autorizzazione rifiutata" "Fotocamera non disponibile" - "Continua sul telefono" + "Continua sullo smartphone" "Microfono non disponibile" "Play Store non disponibile" "Impostazioni di Android TV non disponibili" @@ -2033,7 +2033,7 @@ "Vuoi aggiornare su ""%1$s""?" "Vuoi aggiornare %1$s su ""%2$s""?" "Vuoi aggiornare %1$s e %2$s su ""%3$s""?" - "Vuoi aggiornare questi elementi su ""%4$s"": %1$s, %2$s e %3$s?" + "Vuoi aggiornare i seguenti dati in ""%4$s"": %1$s, %2$s e %3$s?" "Salva" "No, grazie" "Non ora" diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 16b2d179ae6ff0ce782844a6d46074fc55013aa0..000adcef9df67113ff1d33d70b1756a6cd362795 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -619,8 +619,6 @@ "שימוש במידע ביומטרי בנעילת מסך" "אימות הזהות שלך" "יש להשתמש במידע ביומטרי כדי להמשיך" - "צריך להשתמש בטביעת האצבע כדי להמשיך" - "צריך להשתמש בזיהוי הפנים כדי להמשיך" "יש להשתמש במידע הביומטרי או בנעילת המסך כדי להמשיך" "חומרה ביומטרית לא זמינה" "האימות בוטל" @@ -646,6 +644,7 @@ "טביעת האצבע לא זוהתה" "טביעת האצבע לא זוהתה" + "לא ניתן לזהות את הפנים. יש להשתמש בטביעת אצבע במקום." "טביעת האצבע אומתה" "זיהוי הפנים בוצע" "זיהוי הפנים בוצע. יש ללחוץ על אישור" @@ -671,14 +670,14 @@ "משהו השתבש. עליך לנסות שוב." "סמל טביעת אצבע" + "ביטול הנעילה של המכשיר" + "כדאי לנסות דרך אחרת לביטול הנעילה" + "אפשר להשתמש בפתיחה ע\"י זיהוי הפנים כשטביעת האצבע שלך לא מזוהה, למשל כשהאצבעות שלך רטובות" + "אפשר להשתמש בביטול הנעילה בטביעת אצבע כשהפנים שלך לא מזוהות, למשל כשאין מספיק אור" "פתיחה ע\"י זיהוי הפנים" "בעיה בפתיחה ע\"י זיהוי הפנים" "יש להקיש כדי למחוק את התבנית לזיהוי הפנים, ואז להוסיף תבנית חדשה לזיהוי הפנים" - "הגדרת התכונה \'פתיחה ע\"י זיהוי הפנים\'" - "יש להביט בטלפון כדי לבטל את נעילתו" "‏כדי להשתמש בתכונה \'פתיחה ע\"י זיהוי הפנים\', יש להפעיל את ה""גישה למצלמה"" בהגדרות > פרטיות" - "אפשר להגדיר דרכים נוספות לביטול נעילה" - "יש להקיש כדי להוסיף טביעת אצבע" "ביטול הנעילה בטביעת אצבע" "לא ניתן להשתמש בחיישן טביעות האצבע" "צריך ליצור קשר עם ספק תיקונים." @@ -1869,6 +1868,7 @@ "%1$s שני בעבודה" "%1$s שלישי בעבודה" "שכפול של %1$s" + "%1$s בפרופיל הפרטי" "יש לבקש קוד אימות לפני ביטול הצמדה" "צריך לבקש קו ביטול נעילה לפני ביטול הצמדה" "יש לבקש סיסמה לפני ביטול הצמדה" @@ -1957,7 +1957,7 @@ "מידע נוסף" "ביטול ההשהיה של האפליקציה" "להפעיל את האפליקציות לעבודה?" - "הפעלה" + "ביטול ההשהיה" "שיחת חירום" "האפליקציה לא זמינה" "האפליקציה %1$s לא זמינה בשלב זה." @@ -2033,7 +2033,7 @@ "לעדכן בשירות ""%1$s""?" "לעדכן %1$s בשירות ""%2$s""?" "האם לעדכן את %1$s ואת %2$s ב-""%3$s""?" - "לעדכן את הפריטים אלה ב-""%4$s"":‏ %1$s,‏ %2$s ו%3$s ?" + "לעדכן את הפריטים אלה ב-""%4$s"":‏ %1$s,‏ %2$s ו-%3$s?" "שמירה" "לא, תודה" "לא עכשיו" diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index d6064685013c27f0c2b8074c88c81bd42bee57b7..d7618754f200eee804ec54f541211827427de595 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -321,7 +321,7 @@ "カメラ" "写真と動画の撮影" "付近のデバイス" - "付近のデバイスの検出と接続" + "付近のデバイスの\\n検出と接続" "通話履歴" "通話履歴の読み取りと書き込み" "電話" @@ -618,8 +618,6 @@ "生体認証または画面ロックの使用" "本人確認" "続行するには生体認証を使用してください" - "続行するには指紋認証を使用してください" - "続行するには顔認証を使用してください" "続行するには、生体認証または画面ロックを使用してください" "生体認証ハードウェアが利用できません" "認証をキャンセルしました" @@ -645,6 +643,7 @@ "指紋を認識できません" "指紋を認識できません" + "顔を認識できません。指紋認証を使用してください。" "指紋認証を完了しました" "顔を認証しました" "顔を認証しました。[確認] を押してください" @@ -670,14 +669,14 @@ "エラーが発生しました。もう一度お試しください。" "指紋アイコン" + "デバイスのロック解除" + "別のロック解除方法を試す" + "指が濡れている場合など、指紋が認識されないときに顔認証を使用できます" + "暗い場所など、顔が認識されないときに指紋認証を使用できます" "顔認証" "顔認証に関する問題" "タップして顔モデルを削除してから、改めて顔を追加してください" - "顔認証の設定" - "スマートフォンに顔を向けるとロックが解除されます" "顔認証を使用するには、[設定] > [プライバシー] で""カメラへのアクセス""を有効にしてください" - "その他のロック解除方法の設定" - "タップすると指紋が追加されます" "指紋認証" "指紋認証センサーを使用できません" "修理業者に調整を依頼してください。" @@ -1595,7 +1594,7 @@ "設定した上限を %s 超えました" "バックグラウンドデータに上限あり" "タップして制限を解除します。" - "モバイルデータ使用量の増加" + "高いモバイルデータ使用量" "アプリが通常より多くのデータを使用しています" "「%s」が通常より多くのデータを使用しています" "セキュリティ証明書" @@ -1868,6 +1867,7 @@ "2 番目の仕事用%1$s" "3 番目の仕事用%1$s" "%1$s のクローン" + "個人用%1$s" "オフライン再生を解除する前にPINの入力を求める" "画面固定を解除する前にロック解除パターンの入力を求める" "オフライン再生を解除する前にパスワードの入力を求める" @@ -2032,7 +2032,7 @@ "%1$s"" で更新しますか?" "%1$sを ""%2$s"" で更新しますか?" "%1$s%2$sを ""%3$s"" で更新しますか?" - "%1$s%2$s%3$sを ""%4$s"" で更新しますか?" + "%1$s%2$s%3$sを ""%4$s"" で更新しますか?" "はい" "いいえ" "後で" diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 2badd0a642db6931d363fc3306b82e382fdb9694..513b392abee08099cbb13d1ec8680f221a77dfeb 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -618,8 +618,6 @@ "გამოიყენეთ ბიომეტრიული სისტემა ან ეკრანის დაბლოკვა" "დაადასტურეთ ვინაობა" "გასაგრძელებლად გამოიყენეთ თქვენი ბიომეტრიული მონაცემები" - "გასაგრძელებლად გამოიყენეთ თქვენი თითის ანაბეჭდი" - "გასაგრძელებლად გამოიყენეთ სახის ამოცნობა" "გასაგრძელებლად გამოიყენეთ თქვენი ბიომეტრიული მონაცემები ან ეკრანის განბლოკვის ნიმუში" "ბიომეტრიული აპარატურა მიუწვდომელია" "ავტორიზაცია გაუქმდა" @@ -645,6 +643,7 @@ "თითის ანაბეჭდის ამოცნობა ვერ მოხერხდა" "თითის ანაბეჭდის ამოცნობა ვერ მოხერხდა" + "სახის ამოცნობა ვერ ხერხდება. სანაცვლოდ თითის ანაბეჭდი გამოიყენეთ." "თითის ანაბეჭდი ავტორიზებულია" "სახე ავტორიზებულია" "სახე ავტორიზებულია, დააჭირეთ დადასტურებას" @@ -670,14 +669,14 @@ "რაღაც შეცდომა მოხდა. ცადეთ ხელახლა." "თითის ანაბეჭდის ხატულა" + "მოწყობილობის განბლოკვა" + "ცადეთ სხვა გზით განბლოკვა" + "გამოიყენეთ სახით განბლოკვა, როდესაც თქვენი თითის ანაბეჭდის ამოცნობა ვერ ხდება, მაგალითად, როდესაც თქვენი თითები სველია" + "გამოიყენეთ ანაბეჭდით განბლოკვა, როდესაც თქვენი სახის ამოცნობა ვერ ხდება, მაგალითად, არასაკმარისი განათების დროს" "განბლოკვა სახით" "პრობლემა სახით განბლოკვასთან დაკავშირებით" "შეეხეთ თქვენი სახის მოდელის წასაშლელად, შემდეგ დაამატეთ სახე ხელახლა" - "სახით განბლოკვის პარამეტრების დაყენება" - "განბლოკეთ თქვენი ტელეფონი შეხედვით" "იმისთვის, რომ სახით განბლოკვით ისარგებლოთ, ჩართეთ ""კამერაზე წვდომა"" პარამეტრებსა და კონფიდენციალურობაში" - "დააყენეთ განბლოკვის სხვა ხერხები" - "შეეხეთ თითის ანაბეჭდის დასამატებლად" "თითის ანაბეჭდით განბლოკვა" "თითის ანაბეჭდის სენსორის გამოყენება ვერ ხერხდება" "ეწვიეთ შეკეთების სერვისის პროვაიდერს." @@ -1868,6 +1867,7 @@ "მე-2 სამსახური %1$s" "მე-3 სამსახური %1$s" "%1$s კლონის შექმნა" + "პირადი %1$s" "ფიქსაციის მოხსნამდე PIN-ის მოთხოვნა" "ფიქსაციის მოხსნამდე განბლოკვის ნიმუშის მოთხოვნა" "ფიქსაციის მოხსნამდე პაროლის მოთხოვნა" @@ -2032,7 +2032,7 @@ "გსურთ ""%1$s""-ში განახლება?" "გსურთ, ""%2$s""-ში განაახლოთ %1$s?" "გსურთ, ""%3$s""-ში განაახლოთ %1$s და %2$s?" - "გსურთ, ""%4$s""-ში განაახლოთ %1$s, %2$s და %3$s?" + "განახლდეს ეს ერთეულები ""%4$s""-ში: %1$s, %2$s და %3$s?" "შენახვა" "არა, გმადლობთ" "ახლა არა" diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 0bb57f93ecd831e7ba9e9638cddc69d155bf9313..bddd15c809fdcf17252e28c31f587adf0219be3b 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -618,8 +618,6 @@ "Биометриканы немесе экран құлпын пайдалану" "Бұл сіз екеніңізді растаңыз" "Жалғастыру үшін биометрикаңызды пайдаланыңыз." - "Жалғастыру үшін саусақ ізін пайдаланыңыз." - "Жалғастыру үшін бетті анықтау функциясын пайдаланыңыз." "Жалғастыру үшін биометриканы немесе экран құлпын пайдаланыңыз." "Биометрикалық жабдық жоқ" "Аутентификациядан бас тартылды." @@ -645,6 +643,7 @@ "Саусақ ізі танылмады." "Саусақ ізі танылмады." + "Бет танылмады. Орнына саусақ ізін пайдаланыңыз." "Саусақ ізі аутентификацияланды" "Бет танылды" "Бет танылды, \"Растау\" түймесін басыңыз" @@ -670,14 +669,14 @@ "Бірдеңе дұрыс болмады. Қайталап көріңіз." "Саусақ ізі белгішесі" + "Құрылғының құлпын ашу" + "Басқа ашу тәсілін қолданып көріңіз" + "Саусағыңыздың ізі анықталмаған (мысалы, саусақтарыңыз дымқыл болған) кезде, бет тану функциясын қолданыңыз." + "Бетіңіз анықталмаған (мысалы, жарық әлсіз болған) кезде, cаусақ ізімен ашу функциясын қолданыңыз." "Бет тану" "Бет тану функциясына қатысты мәселе шықты" "Бет үлгісін жою үшін түртіңіз, содан соң жаңа бет үлгісін қосыңыз." - "Бет тану функциясын реттеу" - "Телефоныңызға қарап, оның құлпын ашыңыз." "Face Unlock функциясын пайдалану үшін \"Параметрлер > Құпиялық\" бөлімінен ""Камераны пайдалану рұқсатын"" қосыңыз." - "Құлыпты ашудың басқа тәсілдерін реттеу" - "Саусақ ізін қосу үшін түртіңіз." "Құлыпты саусақ ізімен ашу" "Саусақ ізін оқу сканерін пайдалану мүмкін емес" "Жөндеу қызметіне барыңыз." @@ -807,7 +806,7 @@ "Бұған дейін орнатылған қолданбаның автоматты түрде жаңартылуына мүмкіндік береді." "Құпия сөз ережелерін тағайындау" "Экран бекітпесінің құпия сөздерінің және PIN кодтарының ұзындығын және оларда рұқсат етілген таңбаларды басқару." - "Экран құлпын ашу әркеттерін бақылау" + "Экран құлпын ашу әрекеттерін бақылау" "Экран бекітпесін ашқан кезде терілген қате құпия сөздердің санын бақылау және планшетті бекіту немесе тым көп қате құпия сөздер терілген болса, планшеттің бүкіл деректерін өшіру." "Экранның құлпын ашу кезінде қате енгізілген құпия сөздердің санын бақылау, құпия сөз тым көп қате енгізілген жағдайда, Android TV құрылғысын құлыптау және Android TV құрылғыңыздың барлық деректерінен тазарту." "Экран құлпын ашқан кезде, терілген қате құпия сөздердің саны бақыланады, сондай-ақ құпия сөздер бірнеше рет қате терілсе, ақпараттық-сауықтық жүйе құлыпталады немесе оның барлық дерегі жойылады." @@ -820,7 +819,7 @@ "Экран құлпын өзгерте алады." "Экранды құлыптау" "Экранның қашан және қалай құлыпталатынын басқара алады." - "Барлық деректерді өшіру" + "Барлық деректі өшіру" "Планшет дерекқорын ескертусіз, зауыттық дерекқорын қайта реттеу арқылы өшіру." "Зауыттық деректерді қалпына келтіру арқылы Android TV құрылғыңыздың деректерін ескертусіз тазартыңыз." "Зауыттық деректерді қалпына келтіру арқылы ақпараттық-сауықтық жүйе дерегі ескертусіз өшіріледі." @@ -1868,6 +1867,7 @@ "2-ші жұмыс профилі (%1$s)" "3-ші жұмыс профилі (%1$s)" "%1$s клондау" + "Жеке %1$s" "Босату алдында PIN кодын сұрау" "Босату алдында бекітпесін ашу өрнегін сұрау" "Босату алдында құпия сөзді сұрау" @@ -2032,7 +2032,7 @@ "%1$s"" қызметінде жаңартылсын ба?" "%1$s деректері ""%2$s"" қызметінде жаңартылсын ба?" "%1$s және %2$s деректері ""%3$s"" қызметінде жаңартылсын ба?" - "%4$s"" қызметіндегі %1$s, %2$s және %3$s деректері жаңартылсын ба?" + "%4$s"" қызметіндегі %1$s, %2$s және %3$s деректері жаңартылсын ба?" "Сақтау" "Жоқ, рақмет" "Қазір емес" @@ -2331,11 +2331,11 @@ "Қосымша қолданбаға экрандық режимдегі қызметтерді фоннан іске қосуға рұқсат беріледі." "Микрофон қолжетімді." "Микрофон блокталған." - "Қос экран" - "Қос экран функциясы қосулы" + "Dual Screen" + "Dual Screen функциясы қосулы" "%1$s қолданбасы контентті көрсету үшін екі дисплейді де пайдаланады." "Құрылғы қатты қызып кетті." - "Қос экран функциясы істемейді, себебі телефон қатты қызып кетеді." + "Dual Screen функциясы істемейді, себебі телефон қатты қызып кетеді." "Dual Screen қолжетімсіз" "Батареяны үнемдеу режимі қосулы болғандықтан, Dual Screen қолжетімсіз. Мұны параметрлерден өшіруге болады." "Параметрлерге өту" diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 8cc3c64c7d105e220bd1a9dbec87097c84275728..9047666092a58de920dbf10c66c300ffa7d5b7c1 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -618,8 +618,6 @@ "ប្រើជីវមាត្រ ឬ​ការចាក់សោអេក្រង់" "ផ្ទៀងផ្ទាត់ថាជាអ្នក" "ប្រើជីវមាត្រ​របស់អ្នក ដើម្បីបន្ត" - "ប្រើ​ស្នាមម្រាមដៃ​របស់អ្នក ដើម្បីបន្ត" - "ប្រើមុខរបស់អ្នក ដើម្បីបន្ត" "ប្រើការចាក់សោអេក្រង់ ឬជីវមាត្ររបស់អ្នក ដើម្បីបន្ត" "មិនអាច​ប្រើឧបករណ៍​ស្កេន​ស្នាមម្រាមដៃ​បានទេ" "បាន​បោះបង់​ការ​ផ្ទៀងផ្ទាត់" @@ -645,6 +643,7 @@ "មិនស្គាល់ស្នាមម្រាមដៃទេ" "មិនស្គាល់ស្នាមម្រាមដៃទេ" + "មិនអាចសម្គាល់មុខបានទេ។ សូមប្រើស្នាមម្រាមដៃជំនួសវិញ។" "បាន​ផ្ទៀង​ផ្ទាត់​ស្នាម​ម្រាមដៃ" "បានផ្ទៀងផ្ទាត់​មុខ" "បានផ្ទៀងផ្ទាត់​មុខ សូម​ចុច​បញ្ជាក់" @@ -670,14 +669,14 @@ "មានអ្វីមួយខុសប្រក្រតី។ សូមព្យាយាមម្ដងទៀត។" "រូបស្នាមម្រាមដៃ" + "ការដោះសោ​ឧបករណ៍" + "សាកល្បងប្រើ​វិធីដោះសោ​ផ្សេងទៀត" + "ប្រើ​ការដោះសោ​ដោយស្កេនមុខ នៅពេលដែល​មិនស្គាល់​ស្នាមម្រាមដៃ​របស់អ្នក ដូចជា​នៅពេលដែល​ម្រាមដៃ​របស់អ្នក​សើមជាដើម" + "ប្រើ​ការដោះសោ​ដោយស្កេន​ស្នាមម្រាមដៃ នៅពេលដែល​មិនស្គាល់​មុខរបស់អ្នក ដូចជា​នៅពេលដែល​មិនមានពន្លឺ​គ្រប់គ្រាន់ជាដើម" "ការដោះ​សោ​ដោយស្កេន​មុខ" "មានបញ្ហា​ពាក់ព័ន្ធនឹង​មុខងារ​ដោះសោ​តាមទម្រង់មុខ" "ចុចដើម្បីលុប​គំរូមុខ​របស់អ្នក រួចបញ្ចូល​មុខរបស់អ្នក​ម្ដងទៀត" - "រៀបចំ​ការដោះសោ​ដោយស្កេនមុខ" - "ដោះសោទូរសព្ទ​របស់អ្នកដោយសម្លឹងមើលវា" "ដើម្បីប្រើមុខងារដោះសោតាមទម្រង់មុខ សូមបើក""ការចូលប្រើកាមេរ៉ា""នៅក្នុងការកំណត់ > ឯកជនភាព" - "រៀបចំ​វិធីច្រើនទៀត​ដើម្បី​ដោះសោ" - "ចុច​ដើម្បីបញ្ចូល​ស្នាមម្រាមដៃ" "ការដោះសោ​ដោយស្កេន​ស្នាមម្រាមដៃ" "មិនអាចប្រើ​ឧបករណ៍ចាប់ស្នាមម្រាមដៃ​បានទេ" "ទាក់ទងក្រុមហ៊ុន​ផ្ដល់ការជួសជុល។" @@ -1868,6 +1867,7 @@ "%1$s ការងារទី 2" "%1$s ការងារទី 3" "ក្លូន %1$s" + "%1$s ឯកជន" "សួរ​រក​កូដ PIN មុន​ពេលដកខ្ទាស់" "សួរ​រក​លំនាំ​ដោះ​សោ​មុន​ពេលដោះខ្ទាស់" "សួរ​រក​ពាក្យ​សម្ងាត់​មុន​ពេល​ផ្ដាច់" @@ -2032,7 +2032,7 @@ "ធ្វើ​បច្ចុប្បន្នភាព​នៅក្នុង ""%1$s""?" "ធ្វើ​បច្ចុប្បន្នភាព %1$s នៅក្នុង ""%2$s""?" "ធ្វើ​បច្ចុប្បន្នភាព​ %1$s និង %2$s នៅក្នុង ""%3$s""?" - "ធ្វើ​បច្ចុប្បន្នភាព​ធាតុ​ទាំងនេះ​នៅក្នុង ""%4$s"": %1$s, %2$s និង %3$s?" + "ធ្វើ​បច្ចុប្បន្នភាព​ធាតុ​ទាំងនេះ​នៅក្នុង ""%4$s""៖ %1$s %2$s និង%3$sឬ?" "រក្សាទុក" "ទេ អរគុណ" "កុំ​ទាន់" diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index a2a048ce477e941585422c892e2c252e0d203910..aa543d851322ba750e9d060473a4fb9edfd7bc25 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -328,7 +328,7 @@ "ಫೋನ್ ಕರೆ ಮಾಡಲು ಹಾಗೂ ನಿರ್ವಹಿಸಲು" "ಬಾಡಿ ಸೆನ್ಸರ್‌" "ನಿಮ್ಮ ಮುಖ್ಯ ಲಕ್ಷಣಗಳ ಕುರಿತು ಸೆನ್ಸಾರ್ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಿ" - "ಅಧಿಸೂಚನೆಗಳು" + "ನೋಟಿಫಿಕೇಶನ್‌ಗಳು" "ಅಧಿಸೂಚನೆಗಳನ್ನು ತೋರಿಸಿ" "ವಿಂಡೋ ವಿಷಯವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ" "ನೀವು ಬಳಸುತ್ತಿರುವ ವಿಂಡೋದ ವಿಷಯ ಪರೀಕ್ಷಿಸುತ್ತದೆ." @@ -618,8 +618,6 @@ "ಬಯೋಮೆಟ್ರಿಕ್ಸ್ ಅಥವಾ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಅನ್ನು ಬಳಸಿ" "ಇದು ನೀವೇ ಎಂದು ಪರಿಶೀಲಿಸಿ" "ಮುಂದುವರಿಸಲು ನಿಮ್ಮ ಬಯೋಮೆಟ್ರಿಕ್ ಬಳಸಿ" - "ಮುಂದುವರಿಸಲು ನಿಮ್ಮ ಫಿಂಗರ್ ಪ್ರಿಂಟ್ ಅನ್ನು ಬಳಸಿ" - "ಮುಂದುವರಿಸಲು ನಿಮ್ಮ ಮುಖವನ್ನು ಬಳಸಿ" "ಮುಂದುವರಿಸಲು ನಿಮ್ಮ ಬಯೋಮೆಟ್ರಿಕ್ ಅಥವಾ ಸ್ಕ್ರೀನ್ ಲಾಕ್ ಅನ್ನು ಬಳಸಿ" "ಬಯೋಮೆಟ್ರಿಕ್ ಹಾರ್ಡ್‌ವೇರ್‌ ಲಭ್ಯವಿಲ್ಲ" "ಪ್ರಮಾಣೀಕರಣವನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ" @@ -645,6 +643,7 @@ "ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಗುರುತಿಸಲಾಗಿಲ್ಲ" "ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಗುರುತಿಸಲಾಗಿಲ್ಲ" + "ಮುಖ ಗುರುತಿಸಲಾಗುತ್ತಿಲ್ಲ ಬದಲಿಗೆ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಬಳಸಿ." "ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಪ್ರಮಾಣೀಕರಣ ಮಾಡಲಾಗಿದೆ" "ಮುಖವನ್ನು ದೃಢೀಕರಿಸಲಾಗಿದೆ" "ಮುಖವನ್ನು ದೃಢೀಕರಿಸಲಾಗಿದೆ, ದೃಢೀಕರಣವನ್ನು ಒತ್ತಿ" @@ -670,14 +669,14 @@ "ಏನೋ ತಪ್ಪಾಗಿದೆ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ." "ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಐಕಾನ್" + "ಸಾಧನದ ಅನ್‌ಲಾಕ್" + "ಅನ್‌ಲಾಕ್ ಮಾಡಲು ಮತ್ತೊಂದು ವಿಧಾನವನ್ನು ಬಳಸಿ" + "ನಿಮ್ಮ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್ನು ಗುರುತಿಸದಿದ್ದಾಗ ಫೇಸ್ ಅನ್‌ಲಾಕ್ ಅನ್ನು ಬಳಸಿ, ಉದಾಹರಣೆಗೆ, ನಿಮ್ಮ ಬೆರಳುಗಳು ಒದ್ದೆಯಾಗಿದ್ದಾಗ" + "ನಿಮ್ಮ ಮುಖವನ್ನು ಗುರುತಿಸದಿದ್ದಾಗ ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್‌ಲಾಕ್ ಅನ್ನು ಬಳಸಿ, ಉದಾಹರಣೆಗೆ, ಸಾಕಷ್ಟು ಬೆಳಕು ಇಲ್ಲದಿದ್ದಾಗ" "ಫೇಸ್ ಅನ್‌ಲಾಕ್" "ಫೇಸ್ ಅನ್‌ಲಾಕ್ ಕುರಿತು ಸಮಸ್ಯೆ ಇದೆ" "ನಿಮ್ಮ ಫೇಸ್ ಮಾಡೆಲ್ ಅನ್ನು ಅಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ, ನಂತರ ನಿಮ್ಮ ಫೇಸ್ ಮಾಡೆಲ್ ಅನ್ನು ಪುನಃ ಸೇರಿಸಿ" - "ಫೇಸ್ ಅನ್‌ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿ" - "ಫೋನ್ ಅನ್ನು ನೋಡುವ ಮೂಲಕ ಅನ್‌ಲಾಕ್‌ ಮಾಡಿ" "ಫೇಸ್ ಅನ್‌ಲಾಕ್ ಬಳಸಲು, ಸೆಟ್ಟಿಂಗ್‌ಗಳು > ಗೌಪ್ಯತೆ ಎಂಬಲ್ಲಿ ""ಕ್ಯಾಮರಾ ಪ್ರವೇಶವನ್ನು"" ಆನ್ ಮಾಡಿ" - "ಅನ್‌ಲಾಕ್ ಮಾಡಲು ಹೆಚ್ಚಿನ ಮಾರ್ಗಗಳನ್ನು ಹೊಂದಿಸಿ" - "ಫಿಂಗರ್‌ ಪ್ರಿಂಟ್ ಸೇರಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ" "ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಅನ್‌ಲಾಕ್" "ಫಿಂಗರ್‌ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ" "ರಿಪೇರಿ ಮಾಡುವವರನ್ನು ಸಂಪರ್ಕಿಸಿ." @@ -1868,6 +1867,7 @@ "2 ನೇ ಕೆಲಸದ %1$s" "3 ನೇ ಕೆಲಸದ %1$s" "%1$s ಕ್ಲೋನ್" + "ಖಾಸಗಿ %1$s" "ಅನ್‌ಪಿನ್ ಮಾಡಲು ಪಿನ್‌ ಕೇಳು" "ಅನ್‌ಪಿನ್ ಮಾಡಲು ಅನ್‌ಲಾಕ್ ಪ್ಯಾಟರ್ನ್ ಕೇಳಿ" "ಅನ್‌ಪಿನ್ ಮಾಡಲು ಪಾಸ್‌ವರ್ಡ್ ಕೇಳು" @@ -2032,7 +2032,7 @@ "%1$s"" ನಲ್ಲಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಬೇಕೆ?" "%1$s ಅನ್ನು ""%2$s"" ನಲ್ಲಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಬೇಕೆ?" "%1$s ಮತ್ತು %2$s ಅನ್ನು ""%3$s"" ನಲ್ಲಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಬೇಕೆ?" - "ಈ ಮುಂದಿನ ಐಟಂಗಳನ್ನು ""%4$s"" ನಲ್ಲಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಬೇಕೆ: %1$s, %2$s ಮತ್ತು %3$s ?" + "ಈ ಮುಂದಿನ ಐಟಂಗಳನ್ನು ""%4$s"" ನಲ್ಲಿ ಅಪ್‌ಡೇಟ್ ಮಾಡಬೇಕೆ: %1$s, %2$s ಮತ್ತು %3$s?" "ಉಳಿಸಿ" "ಬೇಡ" "ಸದ್ಯಕ್ಕೆ ಬೇಡ" @@ -2136,7 +2136,7 @@ "ಹೋಮ್" "ಹಿಂದಕ್ಕೆ" "ಇತ್ತೀಚಿನ ಆ್ಯಪ್‌ಗಳು" - "ಅಧಿಸೂಚನೆಗಳು" + "ನೋಟಿಫಿಕೇಶನ್‌ಗಳು" "ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್‍ಗಳು" "ಪವರ್ ಡೈಲಾಗ್" "ಲಾಕ್ ಸ್ಕ್ರೀನ್" diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 5b1dfd1737aa99a3f2ae67625875712f9a2b71d6..2b50395da43fe22db845b5f3757323740d5e0452 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -618,8 +618,6 @@ "생체 인식 또는 화면 잠금을 사용" "본인 확인" "생체 인식을 사용하여 계속하세요" - "계속하려면 지문을 인증하세요" - "계속하려면 얼굴로 인증하세요" "계속하려면 생체 인식이나 화면 잠금을 사용하세요" "생체 인식 하드웨어를 사용할 수 없음" "인증이 취소되었습니다." @@ -645,6 +643,7 @@ "지문이 인식되지 않았습니다." "지문을 인식할 수 없습니다." + "얼굴을 인식할 수 없습니다. 대신 지문을 사용하세요." "지문이 인증됨" "얼굴이 인증되었습니다" "얼굴이 인증되었습니다. 확인을 누르세요" @@ -670,14 +669,14 @@ "문제가 발생했습니다. 다시 시도해 보세요." "지문 아이콘" + "기기 잠금 해제" + "다른 잠금 해제 방법 사용" + "손가락에 물기가 있는 등 지문이 인식되지 않을 때는 얼굴 인식 잠금 해제를 사용하세요." + "충분히 밝지 않은 경우 등 얼굴이 인식되지 않을 때는 지문 잠금 해제를 사용하세요." "얼굴 인식 잠금 해제" "얼굴 인식 잠금 해제 문제" "탭하여 얼굴 모델을 삭제한 후 다시 얼굴을 추가하세요" - "얼굴 인식 잠금 해제 설정" - "휴대전화의 화면을 응시하여 잠금 해제할 수 있습니다." "얼굴 인식 잠금 해제를 사용하려면 설정 > 개인 정보 보호에서 ""카메라 액세스""를 사용 설정하세요." - "다른 잠금 해제 방법 설정" - "지문을 추가하려면 탭하세요." "지문 잠금 해제" "지문 센서를 사용할 수 없음" "수리업체에 방문하세요." @@ -1868,6 +1867,7 @@ "두 번째 업무용 %1$s" "세 번째 업무용%1$s" "%1$s 복사" + "비공개 %1$s" "고정 해제 이전에 PIN 요청" "고정 해제 시 잠금 해제 패턴 요청" "고정 해제 이전에 비밀번호 요청" @@ -2032,7 +2032,7 @@ "%1$s""에서 업데이트하시겠습니까?" "%2$s""에서 %1$s을(를) 업데이트하시겠습니까?" "%3$s""에서 %1$s%2$s을(를) 업데이트하시겠습니까?" - "%4$s""에서 %1$s, %2$s%3$s 업데이트" + "%4$s""에서 %1$s, %2$s, %3$s 항목을 업데이트하시겠습니까?" "저장" "사용 안함" "나중에" diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index f7852d8008c43a2d8c40e7b3428678bd875ae1ce..63e4b273ca587cd7a11056f91b44a5bcf871b5f8 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -618,8 +618,6 @@ "Биометрикалык жөндөөнү же экрандын кулпусун колдонуу" "Өзүңүздү ырастаңыз" "Улантуу үчүн биометрикалык жөндөөнү колдонуу" - "Улантуу үчүн манжаңызды сканерге тийгизиңиз" - "Улантуу үчүн жүзүңүздү көрсөтүңүз" "Улантуу үчүн биометрикалык маалыматты же экрандын кулпусун колдонуңуз" "Биометрикалык аппарат жеткиликсиз" "Аныктыгын текшерүү жокко чыгарылды" @@ -645,6 +643,7 @@ "Манжа изи таанылган жок" "Манжа изи таанылган жок" + "Жүз таанылбай жатат. Манжа изин колдонуңуз." "Манжа изи текшерилди" "Жүздүн аныктыгы текшерилди" "Жүздүн аныктыгы текшерилди, эми \"Ырастоону\" басыңыз" @@ -670,14 +669,14 @@ "Бир жерден ката кетти. Кайра аракет кылыңыз." "Манжа изинин сүрөтчөсү" + "Түзмөктүн кулпусун ачуу" + "Кулпуну башка жол менен ачуу" + "Манжаңыздын изи таанылбай калганда, мисалы, манжаңыз ным болсо, Жүзүнөн таанып ачуу функциясын колдонуңуз" + "Жүзүңүз таанылбай калганда, мисалы, күңүрт жерде турсаңыз, Манжа изи менен ачуу функциясын колдонуңуз" "Жүзүнөн таанып ачуу" "Жүзүнөн таанып ачуу функциясында маселе келип чыкты" "Жүзүңүздүн үлгүсүн өчүрүү үчүн басып, жаңы үлгүнү кошуңуз" - "Жүзүнөн таанып ачууну коюу" - "Телефонуңузду карап туруп эле кулпусун ачып алыңыз" "Жүзүнөн таанып ачуу функциясын колдонуу үчүн Параметрлер > Купуялык бөлүмүнө өтүп, ""Камераны колдонууну"" күйгүзүңүз" - "Кулпусун ачуунун көбүрөөк жолдорун жөндөңүз" - "Манжа изин кошуу үчүн басыңыз" "Кулпуланган түзмөктү манжа изи менен ачуу" "Манжа изинин сенсорун колдонууга болбойт" "Тейлөө кызматына кайрылыңыз." @@ -766,7 +765,7 @@ "тармактын колдонулуш таржымалын окуу" "Колдонмого белгилүү бир тармактарга жана колдонмолорго байланыштуу тармактын колдонулушу жөнүндө таржымалды окуу мүмкүнчүлүгүн берет." "тармак саясатын башкаруу" - "Колдонмого тармак саясаттарын башкаруу жана колдонмого мүнөздүү эрежелерди белгилөө мүмкүнчүлүгүн берет." + "Колдонмого тармак эрежелерин башкаруу жана колдонмого мүнөздүү эрежелерди белгилөө мүмкүнчүлүгүн берет." "тармактын колдонулуш эсеп-кысабын өзгөртүү" "Колдонмого желени башка колдонмолордун пайдалануусун башкарган тууралоолорду киргизүү уруксатын берет. Жөнөкөй колдонмолор үчүн эмес." "эскертүүлөр менен иштөө" @@ -811,7 +810,7 @@ "Экрандын кулпусу ачылып жатканда туура эмес терилген сырсөздөрдүн санын текшерип, эгер алардын саны өтө эле көп болсо, планшетти кулпулаңыз же планшеттеги бардык маалыматтарды тазалап салыңыз." "Экрандын кулпусун ачуу учурунда сырсөздөр канча жолу туура эмес терилгенин тескөө жана сырсөз өтө көп жолу туура эмес терилген болсо, Android TV түзмөгүңүздү кулпулап же Android TV түзмөгүңүздөгү бардык дайын-даректериңизди тазалап салуу." "Экрандын кулпусу ачылып жатканда туура эмес терилген сырсөздөрдүн саны текшерилип, эгер алардын саны өтө эле көп болсо, инфозоок тутуму кулпуланып же инфозоок тутумундагы бардык маалыматтар өчүрүлөт." - "Экрандын кулпусу ачылып жатканда туура эмес терилген сырсөздөрдүн санын текшерип, эгер алардын саны өтө эле көп болсо, телефонду кулпулаңыз же телефондогу бардык маалыматтарды тазалап салыңыз." + "Экрандын кулпусун ачуу аракеттерине көз салып, сырсөз өтө көп жолу туура эмес терилсе, телефонду кулпулайт же андагы бардык нерселерди өчүрүп салат." "Экрандын кулпусун ачуу учурунда туура эмес терилген сырсөздөрдү тескөө жана сырсөз өтө көп жолу туура эмес терилген болсо, планшетти кулпулап же бул колдонуучунун бардык дайындарын тазалап салуу." "Экрандын кулпусун ачуу учурунда сырсөздөр канча жолу туура эмес терилгенин тескөө жана сырсөз өтө көп жолу туура эмес терилген болсо, Android TV түзмөгүңүздү кулпулап же колдонуучунун бардык дайындарын тазалап салуу." "Экрандын кулпусун ачуу учурунда туура эмес терилген сырсөздөрдү тескөө жана сырсөз өтө көп жолу туура эмес терилген болсо, инфозоок тутуму кулпуланып же бул профилдин бардык дайындары өчүрүлөт." @@ -1719,7 +1718,7 @@ "Түстөрдү инверсиялоо" "Түстөрдү тууралоо" "Бир кол режими" - "Дагы караңгы" + "Кошумча караңгылатуу" "Угуу түзмөктөрү" "Үндү катуулатуу/акырындатуу баскычтары басылып, %1$s күйгүзүлдү." "Үндү катуулатуу/акырындатуу баскычтары басылып, %1$s өчүрүлдү." @@ -1868,6 +1867,7 @@ "2-жумуш %1$s" "3-жумуш %1$s" "%1$s клону" + "Купуя %1$s" "Бошотуудан мурун PIN суралсын" "Бошотуудан мурун графикалык ачкыч суралсын" "Бошотуудан мурун сырсөз суралсын" @@ -2032,7 +2032,7 @@ "%1$s"" кызматында жаңыртылсынбы?" "%2$s"" кызматындагы %1$s жаңыртылсын?" "%3$s"" кызматындагы %1$s жана %2$s жаңыртылсынбы?" - "%4$s"" кызматындагы төмөнкүлөр жаңыртылсынбы: %1$s, %2$s жана %3$s?" + "%4$s"" кызматындагы төмөнкүлөр жаңыртылсынбы: %1$s, %2$s жана %3$s?" "Сактоо" "Жок, рахмат" "Азыр эмес" diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 68f4acf9e8390f992168d37a97aae3bbc658e180..0f8ccf5ee1e40d4fe5985f471bc3271edd68ea6b 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -618,8 +618,6 @@ "ໃຊ້ລະບົບຊີວະມິຕິ ຫຼື ການລັອກໜ້າຈໍ" "ຢັ້ງຢືນວ່າແມ່ນທ່ານ" "ໃຊ້ລະບົບຊີວະມິຕິຂອງທ່ານເພື່ອດຳເນີນການຕໍ່" - "ໃຊ້ລາຍນິ້ວມືຂອງທ່ານເພື່ອສືບຕໍ່" - "ໃຊ້ໃບໜ້າຂອງທ່ານເພື່ອສືບຕໍ່" "ໃຊ້ລະບົບຊີວະມິຕິ ຫຼື ການລັອກໜ້າຈໍຂອງທ່ານເພື່ອດຳເນີນການຕໍ່" "ຮາດແວຊີວະມິຕິບໍ່ສາມາດໃຊ້ໄດ້" "ຍົກເລີກການຮັບຮອງຄວາມຖືກຕ້ອງແລ້ວ" @@ -645,6 +643,7 @@ "ບໍ່ຮູ້ຈັກລາຍນິ້ວມື" "ບໍ່ຮູ້ຈັກລາຍນິ້ວມື" + "ບໍ່ສາມາດຈຳແນກໜ້າໄດ້. ກະລຸນາໃຊ້ລາຍນິ້ວມືແທນ." "ພິສູດຢືນຢັນລາຍນິ້ວມືແລ້ວ" "ພິສູດຢືນຢັນໃບໜ້າແລ້ວ" "ພິສູດຢືນຢັນໃບໜ້າແລ້ວ, ກະລຸນາກົດຢືນຢັນ" @@ -670,14 +669,14 @@ "ມີບາງຢ່າງຜິດພາດເກີດຂຶ້ນ. ກະລຸນາລອງໃໝ່." "ໄອຄອນລາຍນິ້ວມື" + "ການປົດລັອກອຸປະກອນ" + "ລອງໃຊ້ວິທີອື່ນເພື່ອປົດລັອກ" + "ໃຊ້ການປົດລັອກດ້ວຍໜ້າເມື່ອລະບົບບໍ່ຈຳແນກລາຍນິ້ວມືຂອງທ່ານ ເຊັ່ນ: ເມື່ອນິ້ວມືຂອງທ່ານປຽກ" + "ໃຊ້ການປົດລັອກດ້ວຍລາຍນິ້ວມືເມື່ອລະບົບບໍ່ຈຳແນກໃບໜ້າຂອງທ່ານ ເຊັ່ນ: ເມື່ອບໍ່ມີແສງພຽງພໍ" "ປົດລັອກດ້ວຍໜ້າ" "ເກີດບັນຫາກັບການປົດລັອກດ້ວຍໜ້າ" "ແຕະເພື່ອລຶບຮູບແບບໃບໜ້າຂອງທ່ານ, ຈາກນັ້ນເພີ່ມໃບໜ້າຂອງທ່ານໃສ່ໃໝ່" - "ຕັ້ງຄ່າການປົດລັອກດ້ວຍໜ້າ" - "ປົດລັອກໂທລະສັບຂອງທ່ານໂດຍການເບິ່ງມັນ" "ເພື່ອໃຊ້ການປົດລັອກດ້ວຍໜ້າ, ກະລຸນາເປີດໃຊ້ ""ສິດເຂົ້າເຖິງກ້ອງຖ່າຍຮູບ"" ໃນການຕັ້ງຄ່າ > ຄວາມເປັນສ່ວນຕົວ" - "ຕັ້ງຄ່າວິທີເພີ່ມເຕີມເພື່ອປົດລັອກ" - "ແຕະເພື່ອເພີ່ມລາຍນິ້ວມື" "ປົດລັອກດ້ວຍລາຍນິ້ວມື" "ບໍ່ສາມາດໃຊ້ເຊັນ​ເຊີລາຍນິ້ວ​ມືໄດ້" "ກະລຸນາໄປຫາຜູ້ໃຫ້ບໍລິການສ້ອມແປງ." @@ -1868,6 +1867,7 @@ "ບ່ອນເຮັດວຽກທີ 2 %1$s" "ບ່ອນເຮັດວຽກທີ 3 %1$s" "ໂຄລນ %1$s" + "%1$s ສ່ວນຕົວ" "​ຖາມ​ຫາ PIN ກ່ອນ​ຍົກ​ເລີກ​ການປັກ​ໝຸດ" "​ຖາມ​ຫາ​ຮູບ​ແບບ​ປົດ​ລັອກ​ກ່ອນ​ຍົກ​ເລີກ​ການ​ປັກ​ໝຸດ" "​ຖາມ​ຫາ​ລະ​ຫັດ​ຜ່ານ​ກ່ອນ​ຍົກ​ເລີກ​ການ​ປັກ​ໝຸດ" @@ -2032,7 +2032,7 @@ "ອັບເດດໃນ ""%1$s"" ບໍ?" "ອັບເດດ %1$s ໃນ ""%2$s"" ບໍ?" "ອັບເດດ %1$s ແລະ %2$s ໃນ ""%3$s"" ບໍ?" - "ອັບເດດລາຍການເຫຼົ່ານີ້ໃນ ""%4$s"": %1$s, %2$s ແລະ %3$s ບໍ?" + "ອັບເດດລາຍການເຫຼົ່ານີ້ໃນ ""%4$s"": %1$s, %2$s ແລະ %3$s ບໍ?" "ບັນທຶກ" "ບໍ່, ຂອບໃຈ" "ບໍ່ຟ້າວເທື່ອ" diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index fca59f850398ef6580959e39e8a5cfda5242c340..33168458ffb938bce6dae969c5ec43275013c5b1 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -620,8 +620,6 @@ "Naudoti biometrinius duomenis arba ekrano užraktą" "Patvirtinkite, kad tai jūs" "Norėdami tęsti, naudokite biometrinius duomenis" - "Jei norite tęsti, naudokite piršto atspaudą" - "Jei norite tęsti, naudokite veido atpažinimo funkciją" "Jei norite tęsti, naudokite biometrinius duomenis arba ekrano užraktą" "Biometrinė aparatinė įranga nepasiekiama" "Autentifikavimas atšauktas" @@ -647,6 +645,7 @@ "Piršto atspaudas neatpažintas" "Piršto atspaudas neatpažintas" + "Veidas neatpažintas. Naudokite kontrolinį kodą." "Piršto antspaudas autentifikuotas" "Veidas autentifikuotas" "Veidas autentifikuotas, paspauskite patvirtinimo mygtuką" @@ -672,14 +671,14 @@ "Kažkas nepavyko. Bandykite dar kartą." "Piršto antspaudo piktograma" + "Įrenginio atrakinimo funkcija" + "Išbandykite kitą atrakinimo metodą" + "Naudokite atrakinimą pagal veidą, kai nepavyksta atpažinti piršto atspaudo, pvz., kai pirštai drėgni" + "Naudokite atrakinimą piršto atspaudu, kai nepavyksta atpažinti veido, pvz., kai netinkamas apšvietimas" "Atrakinimas pagal veidą" "Su atrakinimu pagal veidą susijusi problema" "Palieskite, kad ištrintumėte veido modelį, tada iš naujo pridėkite veidą" - "Atrakinimo pagal veidą nustatymas" - "Atrakinkite telefoną pažiūrėję į jį" "Jei norite naudoti atrakinimą pagal veidą, įjunkite parinktį ""Prieiga prie fotoaparato"" skiltyje „Nustatymai“ > „Privatumas“" - "Daugiau atrakinimo metodų nustatymas" - "Palieskite, kad pridėtumėte kontrolinį kodą" "Atrakinimas piršto atspaudu" "Negalima naudoti kontrolinio kodo jutiklio" "Apsilankykite pas taisymo paslaugos teikėją." @@ -1870,6 +1869,7 @@ "2-asis darbo %1$s" "3-iasis darbo %1$s" "„%1$s“ kopija" + "Privat. „%1$s“" "Prašyti PIN kodo prieš atsegant" "Prašyti atrakinimo piešinio prieš atsegant" "Prašyti slaptažodžio prieš atsegant" @@ -2034,7 +2034,7 @@ "Atnaujinti paslaugoje ""%1$s""?" "Atnaujinti %1$s paslaugoje ""%2$s""?" "Atnaujinti %1$s ir %2$s paslaugoje ""%3$s""?" - "Atnaujinti šiuos elementus paslaugoje ""%4$s"": %1$s, %2$s ir %3$s ?" + "Atnaujinti šiuos elementus paslaugoje ""%4$s"": %1$s, %2$s ir %3$s?" "Išsaugoti" "Ne, ačiū" "Ne dabar" diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 563d20638fda3f9036b99d45bdf1371be39d1b97..ab6998cc552febc4e074e31fec630591d21013fc 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -619,8 +619,6 @@ "Biometrijas vai ekrāna bloķēšanas izmantošana" "Apstipriniet, ka tas esat jūs" "Lai turpinātu, izmantojiet biometriju" - "Izmantojiet pirksta nospiedumu, lai turpinātu" - "Izmantojiet autorizāciju pēc sejas, lai turpinātu" "Izmantojiet biometrijas datus vai ekrāna bloķēšanas opciju, lai turpinātu" "Biometrisko datu aparatūra nav pieejama" "Autentifikācija ir atcelta" @@ -646,6 +644,7 @@ "Pirksta nospiedums netika atpazīts" "Pirksta nospiedums netika atpazīts" + "Nevar atpazīt seju. Lietojiet pirksta nospiedumu." "Pirksta nospiedums tika autentificēts." "Seja autentificēta" "Seja ir autentificēta. Nospiediet pogu Apstiprināt." @@ -671,14 +670,14 @@ "Radās kļūda. Mēģiniet vēlreiz." "Pirksta nospieduma ikona" + "Ierīces atbloķēšana" + "Izmēģiniet citus atbloķēšanas veidus" + "Izmantojiet autorizāciju pēc sejas, ja netiek atpazīts pirksta nospiedums, piemēram, kad pirksti ir mitri." + "Izmantojiet autorizāciju ar pirksta nospiedumu, ja netiek atpazīta seja, piemēram, vājā apgaismojumā." "Autorizācija pēc sejas" "Problēma ar autorizāciju pēc sejas" "Pieskarieties, lai izdzēstu sejas modeli, un pēc tam vēlreiz pievienojiet seju" - "Autorizācijas pēc sejas iestatīšana" - "Atbloķējiet tālruni, skatoties uz to" "Lai izmantotu autorizāciju pēc sejas, sadaļā Iestatījumi > Konfidencialitāte ieslēdziet opciju ""Piekļuve kamerai""." - "Citi atbloķēšanas veidi" - "Pieskarieties, lai pievienotu pirksta nospiedumu" "Autorizācija ar pirksta nospiedumu" "Nevar izmantot pirksta nospieduma sensoru" "Sazinieties ar remonta pakalpojumu sniedzēju." @@ -1869,6 +1868,7 @@ "2. darba profils: %1$s" "3. darba profils: %1$s" "%1$s (klons)" + "Privātais %1$s profils" "Prasīt PIN kodu pirms atspraušanas" "Pirms atspraušanas pieprasīt atbloķēšanas kombināciju" "Pirms atspraušanas pieprasīt paroli" @@ -2033,7 +2033,7 @@ "Vai atjaunināt informāciju pakalpojumā ""%1$s""?" "Vai atjaunināt informāciju %1$s pakalpojumā ""%2$s""?" "Vai atjaunināt informāciju %1$s un %2$s pakalpojumā ""%3$s""?" - "Vai atjaunināt šos vienumus pakalpojumā ""%4$s"": %1$s, %2$s un %3$s?" + "Vai atjaunināt šos vienumus pakalpojumā ""%4$s"": %1$s, %2$s un %3$s?" "Saglabāt" "Nē, paldies" "Vēlāk" @@ -2332,13 +2332,13 @@ "Ļauj palīglietotnei sākt priekšplāna pakalpojumus no fona." "Mikrofons ir pieejams." "Mikrofons ir bloķēts." - "Divu ekrānu režīms" - "Ieslēgts divu ekrānu režīms" + "Dual Screen režīms" + "Ieslēgts Dual Screen režīms" "%1$s satura rādīšanai izmanto abus displejus." "Ierīce ir pārāk sakarsusi" - "Divu ekrānu režīms nav pieejams, jo tālrunis sāk pārāk sakarst." - "Divu ekrānu režīms nav pieejams" - "Divu ekrānu režīms nav pieejams, jo ir ieslēgts akumulatora enerģijas taupīšanas režīms. To var izslēgt iestatījumos." + "Dual Screen režīms nav pieejams, jo tālrunis sāk pārāk sakarst." + "Dual Screen režīms nav pieejams" + "Dual Screen režīms nav pieejams, jo ir ieslēgts akumulatora enerģijas taupīšanas režīms. To var izslēgt iestatījumos." "Atvērt iestatījumus" "Izslēgt" "%s ir konfigurēta" diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index 678d167a72085923a526babf1aa4f7a276fc9291..ae0a0350a34b902ec17a9bab1a601d9342d94cc0 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -296,7 +296,7 @@ "%1$s, %2$s" "Безбеден режим" "Систем Android" - "Префрли на личен профил" + "Префрлете се на личен профил" "Префрли се на работен профил" "Префрлете се на личната апликација %1$s" "Префрлете се на работната апликација %1$s" @@ -618,8 +618,6 @@ "Користи биометрика или заклучен екран" "Потврдете дека сте вие" "Користете ја вашата биометрика за да продолжите" - "Користете го отпечатокот за да продолжите" - "Користете го вашиот лик за да продолжите" "Користете ја вашата биометрика или заклучување екран за да продолжите" "Биометрискиот хардвер е недостапен" "Проверката е откажана" @@ -645,6 +643,7 @@ "Отпечатокот не е препознаен" "Отпечатокот не е препознаен" + "Не се препознава ликот. Користете отпечаток." "Отпечатокот е проверен" "Лицето е проверено" "Лицето е проверено, притиснете го копчето „Потврди“" @@ -670,14 +669,14 @@ "Нешто не е во ред. Обидете се повторно." "Икона за отпечатоци" + "Отклучување на уредот" + "Пробајте друг начин на отклучување" + "Користете „Отклучување со лик“ кога не ви се препознава отпечатокот, како кога прстите ви се влажни" + "Користете „Отклучување со отпечаток“ кога не ви се препознава ликот, како кога нема доволно светлина" "Отклучување со лик" "Проблем со „Отклучување со лик“" "Допрете за да го избришете вашиот модел на лик, а потоа повторно додајте го ликот" - "Поставете „Отклучување со лик“" - "Отклучете го телефонот со гледање во него" "За да користите „Отклучување со лик“, вклучете ""Пристап до камерата"" во „Поставки > Приватност“" - "Поставете уште начини за отклучување" - "Допрете за да додадете отпечаток" "Отклучување со отпечаток" "Не може да се користи сензорот за отпечатоци" "Однесете го на поправка." @@ -1868,6 +1867,7 @@ "Втора деловна %1$s" "Трета деловна %1$s" "Клонирајте го %1$s" + "Приватен %1$s" "Побарај PIN пред откачување" "Побарај шема за откл. пред откачување" "Побарај лозинка пред откачување" @@ -2032,7 +2032,7 @@ "Да се ажурира во ""%1$s""?" "Да се ажурира %1$s во ""%2$s""?" "Да се ажурираат %1$s и %2$s во ""%3$s""?" - "Да се ажурираат овие ставки во ""%4$s"": %1$s, %2$s и %3$s?" + "Да се ажурираат овие ставки во ""%4$s"": %1$s, %2$s и %3$s?" "Зачувај" "Не, фала" "Не сега" diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index c2bce63c463c1d8aa86d99920132e4c83d5e33a2..80e80618185e5cb35d18e94f2d43d06827b41bc6 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -618,8 +618,6 @@ "ബയോമെട്രിക്‌സ് അല്ലെങ്കിൽ സ്‌ക്രീൻ ലോക്ക് ഉപയോഗിക്കുക" "ഇത് നിങ്ങളാണെന്ന് പരിശോധിച്ചുറപ്പിക്കുക" "തുടരാൻ ബയോമെട്രിക് ഉപയോഗിക്കുക" - "തുടരാൻ നിങ്ങളുടെ ഫിംഗർപ്രിന്റ് ഉപയോഗിക്കുക" - "തുടരാൻ നിങ്ങളുടെ മുഖം ഉപയോഗിക്കുക" "തുടരാൻ നിങ്ങളുടെ ബയോമെട്രിക്‌ അല്ലെങ്കിൽ സ്‌ക്രീൻ ലോക്ക് ഉപയോഗിക്കുക" "ബയോമെട്രിക് ഹാർ‌ഡ്‌വെയർ ലഭ്യമല്ല" "പരിശോധിച്ചുറപ്പിക്കൽ റദ്ദാക്കി" @@ -645,6 +643,7 @@ "ഫിംഗർപ്രിന്റ് തിരിച്ചറിഞ്ഞില്ല" "ഫിംഗർപ്രിന്റ് തിരിച്ചറിഞ്ഞില്ല" + "മുഖം തിരിച്ചറിയാനായില്ല. പകരം ഫിംഗർപ്രിന്റ് ഉപയോഗിക്കൂ." "ഫിംഗർപ്രിന്റ് പരിശോധിച്ചുറപ്പിച്ചു" "മുഖം പരിശോധിച്ചുറപ്പിച്ചു" "മുഖം പരിശോധിച്ചുറപ്പിച്ചു, സ്ഥിരീകരിക്കുക അമർത്തുക" @@ -670,14 +669,14 @@ "എന്തോ കുഴപ്പമുണ്ടായി. വീണ്ടും ശ്രമിക്കുക." "ഫിംഗർപ്രിന്റ് ഐക്കൺ" + "ഉപകരണ അൺലോക്ക്" + "അൺലോക്ക് ചെയ്യാനുള്ള മറ്റൊരു മാർഗ്ഗം പരീക്ഷിച്ച് നോക്കൂ" + "ഫിംഗർപ്രിന്റ് തിരിച്ചറിയാൻ കഴിയാത്തപ്പോൾ, ഉദാഹരണത്തിന്, വിരൽ നനഞ്ഞിരിക്കുമ്പോൾ ഫേസ് അൺലോക്ക് ഉപയോഗിക്കുക" + "നിങ്ങളുടെ മുഖം തിരിച്ചറിയാനാകാത്തപ്പോൾ, ഉദാഹരണത്തിന്, ആവശ്യത്തിന് ലൈറ്റ് ഇല്ലാത്തപ്പോൾ ഫിംഗർപ്രിന്റ് അൺലോക്ക് ഉപയോഗിക്കുക" "ഫെയ്‌സ് അൺലോക്ക്" "ഫെയ്‌സ് അൺലോക്കുമായി ബന്ധപ്പെട്ട പ്രശ്നം" "നിങ്ങളുടെ മുഖ മോഡൽ ഇല്ലാതാക്കാൻ ടാപ്പ് ചെയ്യുക, തുടർന്ന് അത് വീണ്ടും ചേർക്കുക" - "ഫെയ്‌സ് അൺലോക്ക് സജ്ജീകരിക്കുക" - "ഫോണിലേക്ക് നോക്കി അത് അൺലോക്ക് ചെയ്യുക" "ഫെയ്‌സ് അൺലോക്ക് ഉപയോഗിക്കാൻ, ക്രമീകരണം > സ്വകാര്യത എന്നതിൽ ""ക്യാമറാ ആക്‌സസ്"" ഓണാക്കുക" - "അൺലോക്ക് ചെയ്യുന്നതിനുള്ള കൂടുതൽ വഴികൾ സജ്ജീകരിക്കുക" - "ഫിംഗർപ്രിന്റ് ചേർക്കാൻ ടാപ്പ് ചെയ്യുക" "ഫിംഗർപ്രിന്റ് അൺലോക്ക്" "വിരലടയാള സെൻസർ ഉപയോഗിക്കാനാകുന്നില്ല" "റിപ്പയർ കേന്ദ്രം സന്ദർശിക്കുക." @@ -1868,6 +1867,7 @@ "രണ്ടാമത്തെ ഔദ്യോഗിക %1$s" "മൂന്നാമത്തെ ഔദ്യോഗിക %1$s" "ക്ലോൺ %1$s" + "സ്വകാര്യം %1$s" "ചെയ്യുംമുമ്പ് പിൻ ചോദിക്കൂ" "അൺപിന്നിനുമുമ്പ് അൺലോക്ക് പാറ്റേൺ ആവശ്യപ്പെടൂ" "അൺപിന്നിനുമുമ്പ് പാസ്‌വേഡ് ആവശ്യപ്പെടൂ" @@ -2032,7 +2032,7 @@ "%1$s"" എന്നതിൽ അപ്‌ഡേറ്റ് ചെയ്യണോ?" "%1$s, ""%2$s"" എന്നതിൽ അപ്‌ഡേറ്റ് ചെയ്യണോ?" "%1$s, %2$s എന്നിവ ""%3$s"" എന്നതിൽ അപ്‌ഡേറ്റ് ചെയ്യണോ?" - "ഇനിപ്പറയുന്ന ഇനങ്ങൾ ""%4$s"" എന്നതിൽ അപ്‌ഡേറ്റ് ചെയ്യണോ: %1$s, %2$s, %3$s ?" + "ഇനിപ്പറയുന്ന ഇനങ്ങൾ ""%4$s"" എന്നതിൽ അപ്‌ഡേറ്റ് ചെയ്യണോ: %1$s, %2$s, %3$s ?" "സംരക്ഷിക്കുക" "വേണ്ട, നന്ദി" "ഇപ്പോൾ വേണ്ട" diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 0ea1b080bc4a6d8e8895cb64e1997557b709b45f..7906fc1e255f33ea54f336cd3192647e9263722a 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -618,8 +618,6 @@ "Биометр эсвэл дэлгэцийн түгжээ ашиглах" "Өөрийгөө мөн гэдгийг баталгаажуулаарай" "Үргэлжлүүлэхийн тулд биометрээ ашиглана уу" - "Үргэлжлүүлэхийн тулд хурууныхаа хээг ашиглана уу" - "Үргэлжлүүлэхийн тулд царайгаа ашиглана уу" "Үргэлжлүүлэхийн тулд биометр эсвэл дэлгэцийн түгжээгээ ашиглана уу" "Биометрийн техник хангамж боломжгүй байна" "Нотолгоог цуцаллаа" @@ -645,6 +643,7 @@ "Хурууны хээг таньсангүй" "Хурууны хээг таньсангүй" + "Царай таних боломжгүй. Оронд нь хурууны хээ ашигла" "Хурууны хээг нотолсон" "Царайг баталгаажууллаа" "Царайг баталгаажууллаа. Баталгаажуулах товчлуурыг дарна уу" @@ -670,14 +669,14 @@ "Алдаа гарлаа. Дахин оролдоно уу." "Хурууны хээний дүрс" + "Төхөөрөмжийн түгжээг тайлна уу" + "Түгжээг тайлах өөр аргыг оролдож үзнэ үү" + "Таны хуруунууд чийгтэй байх зэрэг үед хурууны хээг тань танихгүй бол Царайгаар түгжээ тайлахыг ашиглана уу" + "Хангалттай гэрэлгүй байх зэрэг үед таны царайг танихгүй бол Хурууны хээгээр түгжээ тайлахыг ашиглана уу" "Царайгаар түгжээ тайлах" "Царайгаар түгжээ тайлахтай холбоотой асуудал" "Нүүрний загвараа устгахын тулд товшоод, дараа нь царайгаа дахин нэмнэ үү" - "Царайгаар түгжээ тайлахыг тохируулах" - "Утас руугаа харж түгжээг нь тайлна уу" "Царайгаар түгжээ тайлахыг ашиглахын тулд Тохиргоо > Нууцлал хэсэгт "" Камерын хандалтыг "" асаана уу" - "Түгжээ тайлах илүү олон арга тохируулна уу" - "Хурууны хээ нэмэхийн тулд товшино уу" "Хурууны хээгээр түгжээ тайлах" "Хурууны хээ мэдрэгч ашиглах боломжгүй" "Засварын үйлчилгээ үзүүлэгчид зочилно уу." @@ -811,7 +810,7 @@ "Дэлгэц түгжигдсэн үед нууц үг буруу оруулалтын тоог хянах ба хэрэв хэт олон удаа нууц үгийг буруу оруулбал таблетыг түгжих болон таблетын бүх датаг арилгана" "Дэлгэцийн түгжээг тайлахаар буруу оруулсан нууц үгийн тоог хянаж, нууц үгийг хэт олон удаа буруу оруулсан тохиолдолд таны Android TV төхөөрөмжийг түгжиж эсвэл үүний бүх өгөгдлийг устгана." "Дэлгэцийн түгжээг тайлахад буруу бичиж оруулсан нууц үгний тоог хянаж, инфотэйнмент системийг түгжих эсвэл хэт олон удаа нууц үгийг буруу бичиж оруулсан тохиолдолд инфотэйнмент системийн бүх өгөгдлийг устгана." - "Дэлгэц түгжигдсэн үед нууц үг буруу оруулалтын тоог хянах, ба хэрэв хэт олон удаа нууц үгийг буруу оруулбал утсыг түгжих болон утасны бүх датаг арилгана" + "Дэлгэц түгжигдсэн үед нууц үг буруу оруулалтын тоог хянах, ба хэрэв хэт олон удаа нууц үгийг буруу оруулбал утсыг түгжиж эсвэл утасны бүх өгөгдлийг арилгана" "Дэлгэцийн түгжээг тайлахад оруулсан буруу нууц үгийн давтамжийг хянаж таблетыг түгжих эсвэл буруу нууц үгийг хэт олон удаа оруулсан тохиолдолд энэ хэрэглэгчийн мэдээллийг устгах." "Дэлгэцийн түгжээг тайлахаар буруу оруулсан нууц үгийн тоог хянаж, нууц үгийг хэт олон удаа буруу оруулсан тохиолдолд таны Android TV төхөөрөмжийг түгжиж эсвэл энэ хэрэглэгчийн бүх өгөгдлийг устгана." "Дэлгэцийн түгжээг тайлахад буруу бичиж оруулсан нууц үгний тоог хянаж, инфотэйнмент системийг түгжих эсвэл хэт олон удаа нууц үгийг буруу бичиж оруулсан тохиолдолд энэ профайлын бүх өгөгдлийг устгана." @@ -820,11 +819,11 @@ "Дэлгэцийн түгжээг өөрчлөх." "Дэлгэц түгжих" "Дэлгэц хэзээ яаж түгжихийг удирдах" - "Бүх датаг арилгах" + "Бүх өгөгдлийг арилгах" "Үйлдвэрийн дата утгыг өгсөнөөр таблетын дата шууд арилгагдана." "Таны Android TV төхөөрөмжийн өгөгдлийг танд анхааруулалгүйгээр үйлдвэрээс гарсан төлөвт шилжүүлэн устгана." "Үйлдвэрийн өгөгдлийн төлөвт үйлдлийг гүйцэтгэснээр инфотэйнмент системийн өгөгдлийг сануулгагүйгээр устгана." - "Сануулахгүйгээр утасны бүх мэдээллийг устгаж, үйлдвэрийн өгөгдмөл байдалд шилжүүлнэ" + "Сануулахгүйгээр утасны бүх өгөгдлийг арилгаж, үйлдвэрийн өгөгдлийн тохиргоонд шинэчилнэ" "Профайлын өгөгдлийг устгах" "Хэрэглэгчийн мэдээллийг арилгах" "Анхааруулга өгөхгүйгээр энэ хэрэглэгчийн энэ таблет дээрх мэдээллийг устгах." @@ -972,7 +971,7 @@ "Тайлах хээгээ зурна уу" "Яаралтай тусламж" "Дуудлагаруу буцах" - "Зөв!" + "Зөв" "Дахин оролдох" "Дахин оролдох" "Бүх онцлог, өгөгдлийн түгжээг тайлах" @@ -1868,6 +1867,7 @@ "2 дахь ажил %1$s" "3 дахь ажил %1$s" "Клон %1$s" + "Хувийн %1$s" "Бэхэлснийг болиулахаасаа өмнө ПИН асуух" "Бэхэлснийг болиулахаас өмнө түгжээ тайлах хээ асуух" "Тогтоосныг суллахаас өмнө нууц үг асуух" @@ -2032,7 +2032,7 @@ "%1$s""-д шинэчлэх үү?" "%1$s-г ""%2$s""-д шинэчлэх үү?" "%1$s болон %2$s-г ""%3$s""-д шинэчлэх үү?" - "Эдгээр зүйлийг буюу %1$s, %2$s болон %3$s-г ""%4$s""-д шинэчлэх үү?" + "%4$s""-н эдгээр зүйлийг шинэчлэх: %1$s, %2$s болон %3$s?" "Хадгалах" "Үгүй, баярлалаа" "Одоо биш" diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index ff2e089805f1e66652bc03f2af74eaf9a551c363..74990485c63eafbecf462e644504baeb8ae3ee8f 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -618,8 +618,6 @@ "बायोमेट्रिक किंवा स्क्रीन लॉक वापरा" "हे तुम्हीच आहात याची पडताळणी करा" "पुढे सुरू ठेवण्यासाठी तुमचे बायोमेट्रिक वापरा" - "पुढे सुरू ठेवण्‍यासाठी तुमची फिंगरप्रिंट वापरा" - "पुढे सुरू ठेवण्यासाठी तुमचा चेहरा वापरा" "पुढे सुरू ठेवण्यासाठी तुमचे बायोमेट्रिक किंवा स्क्रीन लॉक वापरा" "बायोमेट्रिक हार्डवेअर उपलब्ध नाही" "ऑथेंटिकेशन रद्द केले" @@ -645,6 +643,7 @@ "फिंगरप्रिंट ओळखली नाही" "फिंगरप्रिंट ओळखली नाही" + "चेहरा ओळखू शकत नाही. त्याऐवजी फिंगरप्रिंट वापरा." "फिंगरप्रिंट ऑथेंटिकेट केली आहे" "चेहरा ऑथेंटिकेशन केलेला आहे" "चेहरा ऑथेंटिकेशन केलेला आहे, कृपया कंफर्म प्रेस करा" @@ -670,14 +669,14 @@ "काहीतरी चूक झाली. पुन्हा प्रयत्न करा." "फिंगरप्रिंट आयकन" + "डिव्हाइस अनलॉक" + "अनलॉक करण्याचा दुसरी पद्धत वापरून पहा" + "तुमचे फिंगरप्रिंट ओळखले जात नाही, तेव्हा फेस अनलॉक वापरा, जसे की तुमची बोटे ओली असताना" + "तुमचा चेहरा ओळखला जात नाही, तेव्हा फिंगरप्रिंट अनलॉक वापरा, जसे की पुरेसा प्रकाश नसताना" "फेस अनलॉक" "फेस अनलॉकसंबंधित समस्या" "फेस मॉडेल हटवण्यासाठी टॅप करा, त्यानंतर तुमचा चेहरा पुन्हा जोडा" - "फेस अनलॉक सेट करा" - "तुमच्या फोनकडे पाहून तो अनलॉक करा" "फेस अनलॉक वापरण्यासाठी, सेटिंग्ज > गोपनीयता येथे ""कॅमेरा अ‍ॅक्सेस"" सुरू करा" - "अनलॉक करण्याच्या आणखी पद्धती सेट करा" - "फिंगरप्रिंट जोडण्यासाठी टॅप करा" "फिंगरप्रिंट अनलॉक" "फिंगरप्रिंट सेन्सर वापरू शकत नाही" "दुरुस्तीच्या सेवा पुरवठादाराला भेट द्या." @@ -807,11 +806,11 @@ "होल्डरला वापरकर्त्याच्या कृतीशिवाय पूर्वी इंस्टॉल केलेले अ‍ॅप अपडेट करण्याची अनुमती देते" "पासवर्ड नियम सेट करा" "स्क्रीन लॉक पासवर्ड आणि पिन मध्ये अनुमती दिलेले लांबी आणि वर्ण नियंत्रित करा." - "स्क्रीन अनलॉक प्रयत्नांचे परीक्षण करा" + "स्क्रीन अनलॉक प्रयत्नांवर लक्ष ठेवा" "टाइप केलेल्या अयोग्य पासवर्डांच्या अंकांचे परीक्षण करा. स्क्रीन अनलॉक केली जाते, तेव्हा टॅबलेट लॉक करा किंवा बरेच पासवर्ड टाइप केले असल्यास टॅबलेटचा सर्व डेटा मिटवा." "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या पासवर्ड संख्येचे परीक्षण करते आणि Android TV डिव्हाइस लॉक करते किंवा अनेक चुकीचे पासवर्ड टाइप केले असल्यास Android TV डिव्हाइसचा सर्व डेटा मिटवते." "टाइप केलेल्या चुकीच्या पासवर्डच्या संख्येचे निरीक्षण करा. स्क्रीन अनलॉक करताना, इंफोटेनमेंट सिस्टीम लॉक करा किंवा अनेक चुकीचे पासवर्ड टाइप केले असल्यास, इंफोटेनमेंट सिस्टीमचा सर्व डेटा मिटवा." - "टाइप केलेल्या अयोग्य पासवर्डांच्या अंकांचे परीक्षण करा. स्क्रीन अनलॉक केली जाते, तेव्हा फोन लॉक करा किंवा बरेच पासवर्ड टाइप केले असल्यास फोनचा सर्व डेटा मिटवा." + "स्क्रीन अनलॉक करताना टाइप केलेल्या अयोग्य पासवर्डच्या संख्येवर लक्ष ठेवा. बरेच पासवर्ड टाइप केले असल्यास फोन लॉक करा किंवा फोनचा सर्व डेटा मिटवा." "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या पासवर्डांच्या संख्येचे परीक्षण करा आणि टॅबलेट लॉक करा किंवा अनेक चुकीचे पासवर्ड टाइप केले असल्यास या वापरकर्त्याचा सर्व डेटा मिटवा." "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या पासवर्ड संख्येचे परीक्षण करते आणि Android TV डिव्हाइस लॉक करते किंवा अनेक चुकीचे पासवर्ड टाइप केले असल्यास वापरकर्त्याचा सर्व डेटा मिटवते." "स्क्रीन अनलॉक करताना टाइप केलेल्या चुकीच्या पासवर्डच्या संख्येचे निरीक्षण करा आणि इंफोटेनमेंट सिस्टीम लॉक करा किंवा अनेक चुकीचे पासवर्ड टाइप केले असल्यास, या प्रोफाइलचा सर्व डेटा मिटवा." @@ -1597,7 +1596,7 @@ "प्रतिबंध काढण्यासाठी टॅप करा." "मोबाइल डेटाचा उच्च वापर" "तुमच्या अ‍ॅप्सनी नेहमीपेक्षा जास्त डेटा वापरला आहे" - "%s ने नेहमीपेक्षा जास्त डेटा वपरला आहे" + "%s ने नेहमीपेक्षा जास्त डेटा वापरला आहे" "सुरक्षितता प्रमाणपत्र" "हे प्रमाणपत्र वैध आहे." "यावर जारी केले:" @@ -1868,6 +1867,7 @@ "2 रे कार्य %1$s" "3 रे कार्य %1$s" "%1$s क्लोन केलेले" + "खाजगी %1$s" "अनपिन करण्‍यापूर्वी पिन विचारा" "अनपिन करण्‍यापूर्वी अनलॉक नमुन्यासाठी विचारा" "अनपिन करण्‍यापूर्वी संकेतशब्दासाठी विचारा" @@ -2032,7 +2032,7 @@ "%1$s"" मध्ये अपडेट करायचे का?" "%1$s, ""%2$s"" मध्ये अपडेट करायचे का?" "%1$s आणि %2$s, ""%3$s"" मध्ये अपडेट करायचे का?" - "हे आयटम ""%4$s"": %1$s, %2$s आणि %3$s मध्ये अपडेट करायचे का?" + "हे आयटम ""%4$s"": %1$s, %2$s आणि %3$s मध्ये अपडेट करायचे आहेत का?" "सेव्ह करा" "नाही, नको" "आता नको" diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index e98caa6d20e7c26da2a1295a953931623efe04fb..3faeb7f65b39c3e49c46c840f07ea533874e20a8 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -618,8 +618,6 @@ "Gunakan biometrik atau kunci skrin" "Sahkan itu anda" "Gunakan biometrik anda untuk meneruskan" - "Gunakan cap jari anda untuk teruskan" - "Gunakan muka anda untuk teruskan" "Gunakan biometrik atau kunci skrin anda untuk meneruskan pengesahan" "Perkakasan biometrik tidak tersedia" "Pengesahan dibatalkan" @@ -645,6 +643,7 @@ "Cap jari tidak dikenali" "Cap jari tidak dikenali" + "Tidak mengenali wajah. Gunakan cap jari." "Cap jari disahkan" "Wajah disahkan" "Wajah disahkan, sila tekan sahkan" @@ -670,14 +669,14 @@ "Kesilapan telah berlaku. Cuba lagi." "Ikon cap jari" + "Buka kunci peranti" + "Cuba cara lain untuk membuka kunci" + "Gunakan Buka Kunci Wajah apabila cap jari anda tidak dapat dicam, seperti apabila jari anda basah" + "Gunakan Buka Kunci Cap Jari apabila wajah anda tidak dapat dicam, seperti apabila cahaya tidak mencukupi" "Buka Kunci Wajah" "Isu dengan Buka Kunci Wajah" "Ketik untuk memadamkan model wajah anda, kemudian tambahkan wajah anda semula" - "Sediakan Buka Kunci Wajah" - "Buka kunci telefon anda dengan melihat telefon anda" "Untuk menggunakan Buka Kunci Wajah, hidupkan ""akses Kamera"" dalam Tetapan > Privasi" - "Sediakan lebih banyak cara untuk membuka kunci" - "Ketik untuk menambahkan cap jari" "Buka Kunci Cap Jari" "Tidak boleh menggunakan penderia cap jari" "Lawati penyedia pembaikan." @@ -1868,6 +1867,7 @@ "%1$s kerja ke-2" "%1$s kerja ke-3" "%1$s Klon" + "%1$s Peribadi" "Minta PIN sebelum menyahsemat" "Minta corak buka kunci sebelum menyahsemat" "Minta kata laluan sebelum menyahsemat" @@ -2032,7 +2032,7 @@ "Kemas kini dalam ""%1$s""?" "Kemas kini %1$s dalam ""%2$s""?" "Kemas kini %1$s dan %2$s dalam ""%3$s""?" - "Kemas kini item ini dalam ""%4$s"": %1$s, %2$s dan %3$s ?" + "Kemas kinikan item ini dalam ""%4$s"": %1$s, %2$s dan %3$s ?" "Simpan" "Tidak perlu" "Bukan sekarang" @@ -2130,7 +2130,7 @@ "Bluetooth akan kekal hidup semasa dalam mod pesawat" "Memuatkan" "{count,plural, =1{{file_name} + # fail}other{{file_name} + # fail}}" - "Tiada orang yang disyorkan untuk berkongsi" + "Tiada orang yang disyorkan untuk membuat perkongsian" "Senarai apl" "Apl ini belum diberikan kebenaran merakam tetapi dapat merakam audio melalui peranti USB ini." "Skrin Utama" diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index d67390420c66ed4507ae23e240ba1c67fe84e8ff..5752fa3870da13f2d8a8b0b5c284cc2076e42433 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -618,8 +618,6 @@ "ဇီဝမက်ထရစ်အချက်အလက်များ (သို့) ဖန်သားပြင်လော့ခ်ချခြင်းကို သုံးခြင်း" "သင်ဖြစ်ကြောင်း အတည်ပြုပါ" "ရှေ့ဆက်ရန် သင်၏ ဇီဝမက်ထရစ်အချက်အလက်ကို သုံးပါ" - "ရှေ့ဆက်ရန် သင့်လက်ဗွေကို သုံးပါ" - "ရှေ့ဆက်ရန် သင့်မျက်နှာကို သုံးပါ" "ရှေ့ဆက်ရန် သင်၏ ဇီဝမက်ထရစ်အချက်အလက် (သို့) ဖန်သားပြင်လော့ခ်ကို သုံးပါ" "ဇီဝအချက်အလက်သုံး ကွန်ပျူတာစက်ပစ္စည်း မရရှိနိုင်ပါ" "အထောက်အထားစိစစ်ခြင်းကို ပယ်ဖျက်လိုက်သည်" @@ -645,6 +643,7 @@ "လက်ဗွေကို မသိရှိပါ" "လက်ဗွေကို မသိရှိပါ" + "မျက်နှာကို မမှတ်မိပါ။ လက်ဗွေကို အစားထိုးသုံးပါ။" "လက်ဗွေကို အထောက်အထား စိစစ်ပြီးပါပြီ" "မျက်နှာ အထောက်အထားစိစစ်ပြီးပြီ" "မျက်နှာ အထောက်အထားစိစစ်ပြီးပြီ၊ အတည်ပြုရန်ကို နှိပ်ပါ" @@ -670,14 +669,14 @@ "တစ်ခုခုမှားသွားသည်။ ထပ်စမ်းကြည့်ပါ။" "လက်ဗွေ သင်္ကေတ" + "စက်ပစ္စည်းဖွင့်ခြင်း" + "ဖွင့်ရန် နည်းလမ်းနောက်တစ်ခု စမ်းကြည့်ပါ" + "သင့်လက်ချောင်းများ ရေစိုနေချိန်ကဲ့သို့ သင်၏လက်ဗွေကို မမှတ်မိသောအခါ ‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ သုံးပါ" + "အလင်းရောင် အလုံအလောက်မရချိန်ကဲ့သို့ သင့်မျက်နှာကို မမှတ်မိသောအခါ ‘လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း’ သုံးပါ" "မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း" "‘မျက်နှာပြ လော့ခ်ဖွင့်ခြင်း’ ဆိုင်ရာ ပြဿနာ" "သင်၏မျက်နှာနမူနာကို ဖျက်ရန် တို့ပါ။ ထို့နောက် သင့်မျက်နှာကို ထပ်ထည့်ပါ" - "မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို ထည့်သွင်းပါ" - "သင့်ဖုန်းကိုကြည့်၍ သော့ဖွင့်ပါ" "မျက်နှာပြ လော့ခ်ဖွင့်ခြင်းကို သုံးရန် ""ကင်မရာ သုံးခွင့်"" ကို ‘ဆက်တင်များ > ကန့်သတ်ဆက်တင်’ တွင်ဖွင့်ပါ" - "သော့ဖွင့်ရန် နောက်ထပ်နည်းလမ်းများကို စနစ်ထည့်သွင်းပါ" - "လက်ဗွေထည့်ရန် တို့ပါ" "လက်ဗွေသုံး လော့ခ်ဖွင့်ခြင်း" "လက်ဗွေ အာရုံခံကိရိယာကို အသုံးပြု၍ မရပါ" "ပြုပြင်ရေး ဝန်ဆောင်မှုပေးသူထံသို့ သွားပါ။" @@ -811,7 +810,7 @@ "မျက်နှာပြင်ကို သော့ဖွင့်ရန် အတွက် စကားဝှက် မမှန်မကန် ထည့်သွင်းမှု အရေအတွက်ကို စောင့်ကြည့်လျက်၊ စကားဝှက် ရိုက်ထည့်မှု သိပ်များနေလျှင် တက်ဘလက်ကို သော့ခတ်ရန် သို့မဟုတ် တက်ဘလက် ဒေတာ အားလုံးကို ဖျက်ရန်။" "မျက်နှာပြင်ကို လော့ခ်ဖွင့်သည့်အခါ စကားဝှက်မှားယွင်းစွာ ရိုက်သွင်းသည့်အကြိမ်ရေကို စောင့်ကြည့်ပြီး မှားယွင်းသည့်အကြိမ်ရေ အလွန်များလာပါက သင့် Android TV စက်ပစ္စည်းကို လော့ခ်ချခြင်း သို့မဟုတ် သင့် Android TV ရှိ အသုံးပြုသူဒေတာများအားလုံးကို ဖျက်ခြင်းတို့ ပြုလုပ်သွားပါမည်။" "ဖန်သားပြင်လော့ခ်ဖွင့်ရန် အတွက် စကားဝှက် မမှန်မကန် ထည့်သွင်းမှု အရေအတွက်ကို စောင့်ကြည့်လျက် စကားဝှက် မမှန်မကန် ရိုက်ထည့်မှု များနေလျှင် သတင်းနှင့်ဖျော်ဖြေရေး စနစ်ကို လော့ခ်ချသည် (သို့) ၎င်း၏ ဒေတာအားလုံးကို ဖျက်သည်။" - "မျက်နှာပြင်ကို သော့ဖွင့်ရန် အတွက် စကားဝှက် မမှန်မကန် ထည့်သွင်းမှု အရေအတွက်ကို စောင့်ကြည့်လျက်၊ စကားဝှက် ရိုက်ထည့်မှု သိပ်များနေလျှင် ဖုန်းကို သော့ခတ်ရန် သို့မဟုတ် ဖုန်း ဒေတာ အားလုံးကို ဖျက်ရန်။" + "မျက်နှာပြင်ကို လောခ်ဖွင့်ရန်အတွက် ရိုက်ထည့်သည့် မှားယွင်းသောစကားဝှက် အကြိမ်ရေကို စောင့်ကြည့်ပြီး မမှန်သောစကားဝှက် ရိုက်ထည့်မှု အလွန်များနေလျှင် ဖုန်းကိုလော့ခ်ချသည် (သို့) ဖုန်း ဒေတာအားလုံးကို ဖျက်သည်။" "ဖန်မျက်နှာပြင်အား သော့ဖွင့်စဉ် လျှို့ဝှက်ကုဒ်အမှားများ ရိုက်သွင်းမှုအား စောင့်ကြည့်ရန်နှင့်၊ လျှို့ဝှက်ကုဒ်အမှားများ များစွာ ရိုက်သွင်းပါက တက်ဘလက်အား သော့ချခြင်း သို့မဟုတ် တက်ဘလက်၏ အချက်အလက်များအား ဖျက်ပစ်ခြင်းများ ပြုလုပ်မည်။" "မျက်နှာပြင်ကို လော့ခ်ဖွင့်သည့်အခါ စကားဝှက်မှားယွင်းစွာ ရိုက်သွင်းသည့်အကြိမ်ရေကို စောင့်ကြည့်ပြီး မှားယွင်းသည့်အကြိမ်ရေ အလွန်များလာပါက သင့် Android TV စက်ပစ္စည်းကို လော့ခ်ချခြင်း သို့မဟုတ် ဤအသုံးပြုသူဒေတာများအားလုံးကို ဖျက်ခြင်းတို့ ပြုလုပ်သွားပါမည်။" "ဖန်သားပြင်လော့ခ်ဖွင့်ရန် အတွက် စကားဝှက် မမှန်မကန် ထည့်သွင်းမှု အရေအတွက်ကို စောင့်ကြည့်လျက် စကားဝှက် မမှန်မကန် ရိုက်ထည့်မှု များနေလျှင် သတင်းနှင့်ဖျော်ဖြေရေး စနစ်ကို လော့ခ်ချသည် (သို့) ဤပရိုဖိုင်၏ ဒေတာအားလုံးကို ဖျက်သည်။" @@ -1868,6 +1867,7 @@ "ဒုတိယအလုပ် %1$s" "တတိယအလုပ် %1$s" "%1$s ပုံတူပွား" + "သီးသန့် %1$s" "ပင်မဖြုတ်မီမှာ PIN ကို မေးကြည့်ရန်" "ပင်မဖြုတ်မီမှာ သော့ဖွင့် ရေးဆွဲမှုပုံစံကို မေးကြည့်ရန်" "ပင်မဖြုတ်မီမှာ စကားဝှက်ကို မေးကြည့်ရန်" @@ -2032,7 +2032,7 @@ "%1$s""တွင် အပ်ဒိတ်လုပ်လိုပါသလား။" "%1$s ကို ""%2$s"" တွင် အပ်ဒိတ်လုပ်လိုပါသလား။" "%1$s နှင့် %2$s ကို ""%3$s""တွင် အပ်ဒိတ်လုပ်လိုပါသလား။" - "ဤအချက်အလက်များကို ""%4$s""တွင် အပ်ဒိတ်လုပ်လိုပါသလား- %1$s%2$s နှင့် %3$s။" + "ဤအရာများကို ""%4$s"" တွင် အပ်ဒိတ်လုပ်မလား- %1$s%2$s နှင့် %3$s။" "သိမ်းရန်" "မလိုပါ" "ယခုမလုပ်ပါ" diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 50bdebf39b57d91ff6f957314ba5df035e617d74..0cc55e48873f9d746775f73b2a41b292fa2ed6aa 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -618,8 +618,6 @@ "Bruk biometri eller skjermlås" "Bekreft at det er deg" "Bruk biometri for å fortsette" - "Bruk fingeravtrykket for å fortsette" - "Bruk ansiktet for å fortsette" "Bruk biometri eller skjermlåsen for å fortsette" "Biometrisk maskinvare er utilgjengelig" "Autentiseringen er avbrutt" @@ -645,6 +643,7 @@ "Gjenkjenner ikke fingeravtrykket" "Gjenkjenner ikke fingeravtrykket" + "Ansiktet gjenkjennes ikke. Bruk fingeravtrykk." "Fingeravtrykket er godkjent" "Ansiktet er autentisert" "Ansiktet er autentisert. Trykk på Bekreft" @@ -670,14 +669,14 @@ "Noe gikk galt. Prøv på nytt." "Ikon for fingeravtrykk" + "Enhetsopplåsing" + "Prøv å låse opp på en annen måte" + "Bruk ansiktslåsen når fingeravtrykket ditt ikke gjenkjennes, for eksempel når du har våte fingre" + "Bruk opplåsing med fingeravtrykk når ansiktet ditt ikke gjenkjennes, for eksempel når det ikke er nok lys rundt deg" "Ansiktslås" "Problem med ansiktslås" "Trykk for å slette ansiktsmodellen din, og legg deretter til ansiktet på nytt" - "Konfigurer ansiktslås" - "Lås opp telefonen ved å se på den" "For å bruke ansiktslås, slå på ""Kameratilgang"" i Innstillinger > Personvern" - "Konfigurer flere måter å låse opp på" - "Trykk for å legge til et fingeravtrykk" "Opplåsing med fingeravtrykk" "Kan ikke bruke fingeravtrykkssensoren" "Gå til en reparasjonsleverandør." @@ -807,7 +806,7 @@ "Lar innehaveren oppdatere appen hen tidligere installerte, uten brukerhandling" "Angi passordregler" "Kontrollerer tillatt lengde og tillatte tegn i passord og PIN-koder for opplåsing av skjermen." - "Overvåk forsøk på å låse opp skjermen" + "Overvåking av forsøk på å låse opp skjermen" "Overvåk antall feil passordforsøk ved opplåsing av skjerm, og lås nettbrettet eller slett alle data fra nettbrettet ved for mange feil passordforsøk." "Følg med på hvor mange ganger feil passord skrives inn når skjermen skal låses opp, og lås Android TV-enheten eller tøm alle dataene når feil passord skrives inn for mange ganger." "Overvåk antall feil passord som er skrevet inn ved opplåsing av skjermen, og lås infotainment-systemet eller tøm alle dataene i infotainment-systemet hvis feil passord skrives inn for mange ganger." @@ -1289,13 +1288,13 @@ "Samtalevolum" "Bluetooth-samtalevolum" "Alarmvolum" - "Varslingsvolum" + "Varselvolum" "Volum" "Bluetooth-volum" "Ringetonevolum" "Samtalevolum" "Medievolum" - "Varslingsvolum" + "Varselvolum" "Standard ringetone" "Standard (%1$s)" "Ingen" @@ -1868,6 +1867,7 @@ "Andre %1$s for jobben" "Tredje %1$s for jobben" "Klon %1$s" + "Privat %1$s" "Krev PIN-kode for å løsne app" "Krev opplåsingsmønster for å løsne apper" "Krev passord for å løsne apper" @@ -2032,7 +2032,7 @@ "Vil du oppdatere i ""%1$s""?" "Vil du oppdatere %1$s i ""%2$s""?" "Vil du oppdatere %1$s og %2$s i ""%3$s""?" - "Vil du oppdatere disse elementene i ""%4$s"": %1$s, %2$s og %3$s?" + "Vil du oppdatere disse elementene i ""%4$s"": %1$s, %2$s og %3$s?" "Lagre" "Nei takk" "Ikke nå" diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index d95d750ce1cef98d6b343dec40082c7ab14079bf..e38898eb468bbde31f57bf9cc741fd78ec936a7c 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -618,8 +618,6 @@ "बायोमेट्रिक्स वा स्क्रिन लक प्रयोग गर्नुहोस्" "यो व्यक्ति तपाईं नै हो भन्ने प्रमाणित गर्नुहोस्" "जारी राख्न आफ्नो बायोमेट्रिक प्रयोग गर्नुहोस्" - "जारी राख्न आफ्नो फिंगरप्रिन्ट प्रयोग गर्नुहोस्" - "जारी राख्न आफ्नो अनुहार प्रयोग गर्नुहोस्" "जारी राख्न आफ्नो बायोमेट्रिक वा स्क्रिन लक प्रयोग गरी पुष्टि गर्नुहोस्" "बायोमेट्रिक हार्डवेयर उपलब्ध छैन" "प्रमाणीकरण रद्द गरियो" @@ -645,6 +643,7 @@ "फिंगरप्रिन्ट पहिचान गर्न सकिएन" "फिंगरप्रिन्ट पहिचान गर्न सकिएन" + "अनुहार पहिचान गर्न सकिएन। बरु फिंगरप्रिन्ट प्रयोग गर्नुहोस्।" "फिंगरप्रिन्ट प्रमाणीकरण गरियो" "अनुहार प्रमाणीकरण गरियो" "अनुहार प्रमाणीकरण गरियो, कृपया पुष्टि गर्नुहोस् थिच्नुहोस्" @@ -670,14 +669,14 @@ "कुनै समस्या आयो। फेरि प्रयास गर्नुहोस्।" "फिंगरप्रिन्ट आइकन" + "डिभाइस अनलक" + "अनलक गर्ने अर्को तरिका प्रयोग गरी हेर्नुहोस्" + "तपाईंको फिंगरप्रिन्ट पहिचान नगरिएको अवस्थामा (जस्तै, तपाईंका औँलाहरू ओसिला भएमा) फेस अनलक प्रयोग गर्नुहोस्" + "तपाईंको अनुहार पहिचान नगरिएको अवस्थामा (जस्तै, पर्याप्त उज्यालो नभएमा) फेस अनलक प्रयोग गर्नुहोस्" "फेस अनलक" "फेस अनलक सुविधामा अनुहार दर्ता गर्ने क्रममा त्रुटि भयो" "आफ्नो फेस मोडेल मेटाउन ट्याप गर्नुहोस् अनि आफ्नो अनुहार फेरि दर्ता गर्नुहोस्" - "फेस अनलक सेटअप गर्नुहोस्" - "फोनमा हेरेकै भरमा फोन अनलक गर्नुहोस्" "फेस अनलक प्रयोग गर्न \"सेटिङ तथा गोपनीयता\" मा गई ""क्यामेरा प्रयोग गर्ने अनुमति"" दिनुहोस्" - "अनलक गर्ने अन्य तरिकाहरू सेटअप गर्नुहोस्" - "फिंगरप्रिन्ट हाल्न ट्याप गर्नुहोस्" "फिंगरप्रिन्ट अनलक" "फिंगरप्रिन्ट सेन्सर प्रयोग गर्न मिल्दैन" "फिंगरप्रिन्ट सेन्सर मर्मत गर्ने सेवा प्रदायक कम्पनीमा सम्पर्क गर्नुहोस्।" @@ -1868,6 +1867,7 @@ "कार्यालयको दोस्रो %1$s" "कार्यालयको तेस्रो %1$s" "%1$s क्लोन गर्नुहोस्" + "निजी %1$s" "अनपिन गर्नुअघि PIN मागियोस्" "अनपिन गर्नअघि अनलक प्याटर्न माग्नुहोस्" "पिन निकाल्नुअघि पासवर्ड सोध्नुहोस्" @@ -2032,7 +2032,7 @@ "%1$s"" मा अद्यावधिक गर्ने हो?" "%1$s लाई ""%2$s"" मा अद्यावधिक गर्ने हो?" "%1$s%2$s लाई ""%3$s"" मा अद्यावधिक गर्ने हो?" - "यी वस्तुहरू ""%4$s"" मा अपडेट गर्नुहोस्‌: %1$s, %2$s%3$s हो?" + "तपाईं ""%4$s"" मा भएका निम्न वस्तुहरू अपडेट गर्न चाहनुहुन्छ: %1$s, %2$s%3$s?" "सेभ गर्नुहोस्" "पर्दैन, धन्यवाद" "अहिले होइन" diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index 9b1e982ed052057423f66a44e8ceaae6e2e6f17a..7d48a017b1be5dea630e7665cadc7b017eeeea2e 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -329,7 +329,7 @@ "Lichaamssensoren" "toegang krijgen tot sensorgegevens over je vitale functies" "Meldingen" - "meldingen laten zien" + "meldingen tonen" "Content van vensters ophalen" "De content inspecteren van een venster waarmee je interactie hebt." "Verkennen via aanraking aanzetten" @@ -596,8 +596,8 @@ "Hiermee kan de app de toetsenblokkering en bijbehorende wachtwoordbeveiliging uitzetten. Zo kan de telefoon de toetsenblokkering uitzetten als je wordt gebeld en de toetsenblokkering weer aanzetten als het gesprek is beëindigd." "complexiteit van schermvergrendeling opvragen" "Hiermee krijgt de app toestemming om het complexiteitsniveau van de schermvergrendeling te achterhalen (hoog, midden, laag of geen). Dat geeft een indicatie van het mogelijke lengtebereik en type van de schermvergrendeling. De app kan gebruikers ook voorstellen de schermvergrendeling naar een bepaald niveau te updaten, maar gebruikers kunnen dit altijd negeren en de app verlaten. De schermvergrendeling wordt niet opgeslagen als platte tekst, zodat de app het precieze wachtwoord niet weet." - "meldingen laten zien" - "Hiermee kan de app meldingen laten zien" + "meldingen tonen" + "Hiermee kan de app meldingen tonen" "het scherm aanzetten" "Hiermee kan de app het scherm aanzetten." "biometrische hardware gebruiken" @@ -618,8 +618,6 @@ "Biometrische gegevens of schermvergrendeling gebruiken" "Je identiteit verifiëren" "Gebruik je biometrische gegevens om door te gaan" - "Gebruik je vingerafdruk om door te gaan" - "Gebruik je gezicht om door te gaan" "Gebruik je biometrische gegevens of schermvergrendeling om door te gaan" "Biometrische hardware niet beschikbaar" "Verificatie geannuleerd" @@ -645,6 +643,7 @@ "Vingerafdruk niet herkend" "Vingerafdruk niet herkend" + "Gezicht niet herkend. Gebruik je vingerafdruk." "Vingerafdruk geverifieerd" "Gezicht geverifieerd" "Gezicht geverifieerd. Druk op Bevestigen." @@ -670,14 +669,14 @@ "Er is iets misgegaan. Probeer het opnieuw." "Vingerafdruk-icoon" + "Apparaatontgrendeling" + "Probeer een andere manier om te ontgrendelen" + "Gebruik Ontgrendelen via gezichtsherkenning als je vingerafdruk niet wordt herkend, bijvoorbeeld als je vingers nat zijn" + "Gebruik Ontgrendelen met vingerafdruk als je gezicht niet wordt herkend, bijvoorbeeld als er niet genoeg licht is" "Ontgrendelen via gezichtsherkenning" "Probleem met Ontgrendelen via gezichtsherkenning" "Tik om je gezichtsmodel te verwijderen en voeg je gezicht opnieuw toe" - "Ontgrendelen via gezichtsherkenning instellen" - "Ontgrendel je telefoon door ernaar te kijken" "Als je Ontgrendelen via gezichtsherkenning wilt gebruiken, zet je ""Cameratoegang"" aan via Instellingen > Privacy" - "Stel meer manieren in om te ontgrendelen" - "Tik om een vingerafdruk toe te voegen" "Ontgrendelen met vingerafdruk" "Kan vingerafdruksensor niet gebruiken" "Ga naar een reparateur." @@ -1868,6 +1867,7 @@ "2e %1$s, werk" "3e %1$s, werk" "Kloon van %1$s" + "Privé %1$s" "Vraag pin voor losmaken" "Vraag om ontgrendelingspatroon voor losmaken" "Vraag wachtwoord voor losmaken" @@ -2032,7 +2032,7 @@ "Updaten in ""%1$s""?" "%1$s updaten in ""%2$s""?" "%1$s en %2$s updaten in ""%3$s""?" - "Deze items updaten in ""%4$s"": %1$s, %2$s en %3$s?" + "Deze items updaten in ""%4$s"": %1$s, %2$s en %3$s?" "Opslaan" "Nee, bedankt" "Niet nu" @@ -2100,7 +2100,7 @@ "OK" "Uitzetten" "Meer informatie" - "In Android 12 hebben verbeterde meldingen aanpasbare Android-meldingen vervangen. Deze functie laat voorgestelde acties en antwoorden zien en ordent je meldingen.\n\nVerbeterde meldingen hebben toegang tot meldingscontent, waaronder persoonlijke informatie zoals contactnamen en berichten. Deze functie kan ook meldingen sluiten of erop reageren, zoals telefoongesprekken aannemen, en Niet storen beheren." + "In Android 12 hebben verbeterde meldingen aanpasbare Android-meldingen vervangen. Deze functie toont voorgestelde acties en antwoorden en ordent je meldingen.\n\nVerbeterde meldingen hebben toegang tot meldingscontent, waaronder persoonlijke informatie zoals contactnamen en berichten. Deze functie kan ook meldingen sluiten of erop reageren, zoals telefoongesprekken aannemen, en Niet storen beheren." "Informatiemelding voor routinemodus" "Batterijbesparing staat aan" "Het batterijgebruik wordt beperkt om de batterijduur te verlengen" @@ -2301,7 +2301,7 @@ "Blokkeren van apparaatmicrofoon opheffen" "Blokkeren van apparaatcamera opheffen" "Voor <b>%s</b> en alle andere apps en services" - "Blokkeren opheffen" + "Niet meer blokkeren" "Sensorprivacy" "App-icoon" "Merkafbeelding voor app" @@ -2331,11 +2331,11 @@ "Hiermee kan een bijbehorende app services op de voorgrond vanuit de achtergrond starten." "Microfoon is beschikbaar" "Microfoon is geblokkeerd" - "Dubbel scherm" - "Dubbel scherm staat aan" + "Dual Screen" + "Dual Screen staat aan" "%1$s gebruikt beide schermen om content te tonen" "Het apparaat is te warm" - "Dubbel scherm is niet beschikbaar, omdat je telefoon te warm wordt" + "Dual Screen is niet beschikbaar, omdat je telefoon te warm wordt" "Dual Screen is niet beschikbaar" "Dual Screen is niet beschikbaar omdat Batterijbesparing aanstaat. Je kunt dit uitzetten via Instellingen." "Naar Instellingen" diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 3e8f9d4abb4ebaa792152b8b2c91771828c36701..64736e556fbb6a6c40e6f1775576b162c01cb10d 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -618,8 +618,6 @@ "ବାୟୋମେଟ୍ରିକ୍ସ ବା ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ" "ଏହା ଆପଣ ବୋଲି ଯାଞ୍ଚ କରନ୍ତୁ" "ଜାରି ରଖିବାକୁ ଆପଣଙ୍କ ବାୟୋମେଟ୍ରିକ୍ସ ବ୍ୟବହାର କରନ୍ତୁ" - "ଜାରି ରଖିବାକୁ ଆପଣଙ୍କ ଟିପଚିହ୍ନ ବ୍ୟବହାର କରନ୍ତୁ" - "ଜାରି ରଖିବାକୁ ଆପଣଙ୍କ ଫେସ ବ୍ୟବହାର କରନ୍ତୁ" "ଜାରି ରଖିବାକୁ ଆପଣଙ୍କ ବାୟୋମେଟ୍ରିକ୍ କିମ୍ବା ସ୍କ୍ରିନ୍ ଲକ୍ ବ୍ୟବହାର କରନ୍ତୁ" "ବାୟୋମେଟ୍ରିକ୍‌ ହାର୍ଡୱେର୍‌ ଉପଲବ୍ଧ ନାହିଁ" "ପ୍ରାମାଣିକତାକୁ ବାତିଲ୍ କରାଯାଇଛି" @@ -645,6 +643,7 @@ "ଟିପଚିହ୍ନ ଚିହ୍ନଟ ହେଲା ନାହିଁ" "ଟିପଚିହ୍ନ ଚିହ୍ନଟ ହେଲା ନାହିଁ" + "ଫେସ୍ ଚିହ୍ନଟ କରିହେବ ନାହିଁ। ଟିପଚିହ୍ନ ବ୍ୟବହାର କରନ୍ତୁ।" "ଟିପଚିହ୍ନ ପ୍ରମାଣିତ ହେଲା" "ମୁହଁ ଚିହ୍ନଟ ହୋଇଛି" "ମୁହଁ ଚିହ୍ନଟ ହୋଇଛି, ଦୟାକରି ସୁନିଶ୍ଚିତ ଦବାନ୍ତୁ" @@ -670,14 +669,14 @@ "କିଛି ତ୍ରୁଟି ହୋଇଛି। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।" "ଟିପଚିହ୍ନ ଆଇକନ୍" + "ଡିଭାଇସ ଅନଲକ" + "ଅନଲକ କରିବା ପାଇଁ ଅନ୍ୟ ଏକ ଉପାୟ ଚେଷ୍ଟା କରନ୍ତୁ" + "ଆପଣଙ୍କର ଟିପଚିହ୍ନ ଚିହ୍ନଟ ନହେଲେ, ଯେପରିକି ଆପଣଙ୍କ ଆଙ୍ଗୁଠି ଓଦା ଥିବା ସମୟରେ ଫେସ ଅନଲକ ବ୍ୟବହାର କରନ୍ତୁ" + "ଆପଣଙ୍କର ମୁହଁ ଚିହ୍ନଟ ନହେଲେ, ଯେପରିକି ପର୍ଯ୍ୟାପ୍ତ ଆଲୋକ ନଥିବା ସମୟରେ ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ ବ୍ୟବହାର କରନ୍ତୁ" "ଫେସ ଅନଲକ" "ଫେସ୍ ଅନଲକ୍ ସହ ସମସ୍ୟା" "ଆପଣଙ୍କ ଫେସ୍ ମଡେଲକୁ ଡିଲିଟ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ, ତା\'ପରେ ପୁଣି ଆପଣଙ୍କ ଫେସ୍ ଯୋଗ କରନ୍ତୁ" - "ଫେସ ଅନଲକ ସେଟ ଅପ କରନ୍ତୁ" - "ଫୋନକୁ ଦେଖି ଏହାକୁ ଅନଲକ୍ କରନ୍ତୁ" "ଫେସ ଅନଲକ ବ୍ୟବହାର କରିବା ପାଇଁ, ସେଟିଂସ ଏବଂ ଗୋପନୀୟତାରେ ""କ୍ୟାମେରା ଆକ୍ସେସ""କୁ ଚାଲୁ କରନ୍ତୁ" - "ଅନଲକ୍ କରିବା ପାଇଁ ଆହୁରି ଅଧିକ ଉପାୟ ସେଟ୍ ଅପ୍ କରନ୍ତୁ" - "ଏକ ଟିପଚିହ୍ନ ଯୋଗ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ" "ଫିଙ୍ଗରପ୍ରିଣ୍ଟ ଅନଲକ୍" "ଟିପଚିହ୍ନ ସେନ୍ସରକୁ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ" "ଏକ ମରାମତି କେନ୍ଦ୍ରକୁ ଭିଜିଟ୍ କରନ୍ତୁ।" @@ -1868,6 +1867,7 @@ "2ୟ କାର୍ଯ୍ୟ %1$s" "3ୟ କାର୍ଯ୍ୟ %1$s" "%1$s କ୍ଲୋନ" + "ପ୍ରାଇଭେଟ %1$s" "ଅନପିନ୍‌ କରିବା ପୂର୍ବରୁ PIN ପଚାରନ୍ତୁ" "ଅନପିନ୍‌ କରିବା ପୂର୍ବରୁ ଲକ୍‌ ଖୋଲିବା ପାଟର୍ନ ପଚାରନ୍ତୁ" "ଅନପିନ୍‌ କରିବା ପୂର୍ବରୁ ପାସ୍‌ୱର୍ଡ ପଚାରନ୍ତୁ" @@ -2032,7 +2032,7 @@ "%1$s""ରେ ଅପ୍‌ଡେଟ୍ କରିବେ?" "%2$s""ରେ %1$sକୁ ଅପ୍‌ଡେଟ୍ କରିବେ।" "%3$s""ରେ %1$s ଏବଂ %2$s ଅପ୍‌ଡେଟ୍ କରିବେ?" - "%4$s""ରେ: %1$s, %2$s ଏବଂ %3$s ଆଇଟମ୍‌ଗୁଡ଼ିକ ଅପ୍‌ଡେଟ୍ କରିବେ?" + "%4$s""ରେ ଏହି ଆଇଟମଗୁଡ଼ିକୁ ଅପଡେଟ କରିବେ: %1$s, %2$s ଏବଂ %3$s?" "ସେଭ୍‌ କରନ୍ତୁ" "ନାଁ, ପଚାରିଥିବାରୁ ଧନ୍ୟବାଦ" "ଏବେ ନୁହେଁ" @@ -2130,7 +2130,7 @@ "ଏୟାରପ୍ଲେନ୍ ମୋଡରେ ବ୍ଲୁଟୁଥ୍ ଚାଲୁ ରହିବ" "ଲୋଡ୍ ହେଉଛି" "{count,plural, =1{{file_name} + #ଟି ଫାଇଲ}other{{file_name} + #ଟି ଫାଇଲ}}" - "ଏହାକୁ ସେୟାର୍ କରିବା ପାଇଁ କୌଣସି ସୁପାରିଶ କରାଯାଇଥିବା ଲୋକ ନାହାଁନ୍ତି" + "ଏହାକୁ ସେୟାର କରିବା ପାଇଁ କୌଣସି ସୁପାରିଶ କରାଯାଇଥିବା ଲୋକ ନାହାଁନ୍ତି" "ଆପ୍ସ ତାଲିକା" "ଏହି ଆପ୍‌କୁ ରେକର୍ଡ କରିବାକୁ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ କିନ୍ତୁ ଏହି USB ଡିଭାଇସ୍ ଜରିଆରେ ଅଡିଓ କ୍ୟାପ୍‍ଚର୍‍ କରିପାରିବ।" "ହୋମ" diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index c287bf6eb66c099229546bb1e08acce47d0b2158..8cfc0e4279d1a0d22693da152c86134eb3143e20 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -618,8 +618,6 @@ "ਬਾਇਓਮੈਟ੍ਰਿਕ ਜਾਂ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰੋ" "ਆਪਣੀ ਪਛਾਣ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ" "ਜਾਰੀ ਰੱਖਣ ਲਈ ਆਪਣੇ ਬਾਇਓਮੈਟ੍ਰਿਕ ਦੀ ਵਰਤੋਂ ਕਰੋ" - "ਜਾਰੀ ਰੱਖਣ ਲਈ ਆਪਣੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਵਰਤੋਂ ਕਰੋ" - "ਜਾਰੀ ਰੱਖਣ ਲਈ ਆਪਣੇ ਚਿਹਰੇ ਦੀ ਵਰਤੋਂ ਕਰੋ" "ਜਾਰੀ ਰੱਖਣ ਲਈ ਆਪਣਾ ਬਾਇਓਮੈਟ੍ਰਿਕ ਜਾਂ ਸਕ੍ਰੀਨ ਲਾਕ ਵਰਤੋ" "ਬਾਇਓਮੈਟ੍ਰਿਕ ਹਾਰਡਵੇਅਰ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" "ਪ੍ਰਮਾਣੀਕਰਨ ਰੱਦ ਕੀਤਾ ਗਿਆ" @@ -645,6 +643,7 @@ "ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਪਛਾਣ ਨਹੀਂ ਹੋਈ" "ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਪਛਾਣ ਨਹੀਂ ਹੋਈ" + "ਚਿਹਰਾ ਨਹੀਂ ਪਛਾਣ ਸਕਦੇ। ਇਸਦੀ ਬਜਾਏ ਫਿੰਗਰਪ੍ਰਿੰਟ ਵਰਤੋ।" "ਫਿੰਗਰਪ੍ਰਿੰਟ ਪ੍ਰਮਾਣਿਤ ਹੋਇਆ" "ਚਿਹਰਾ ਪੁਸ਼ਟੀਕਰਨ" "ਚਿਹਰਾ ਪੁਸ਼ਟੀਕਰਨ, ਕਿਰਪਾ ਕਰਕੇ \'ਪੁਸ਼ਟੀ ਕਰੋ\' ਦਬਾਓ" @@ -670,14 +669,14 @@ "ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।" "ਫਿੰਗਰਪ੍ਰਿੰਟ ਪ੍ਰਤੀਕ" + "ਡੀਵਾਈਸ ਅਣਲਾਕ" + "ਅਣਲਾਕ ਕਰਨ ਦਾ ਕੋਈ ਹੋਰ ਤਰੀਕਾ ਅਜ਼ਮਾਓ" + "ਤੁਹਾਡੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਦੀ ਪਛਾਣ ਨਾ ਹੋਣ \'ਤੇ ਫ਼ੇਸ ਅਣਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰੋ, ਜਿਵੇਂ ਕਿ ਤੁਹਾਡੀਆਂ ਉਂਗਲਾਂ ਗਿੱਲੀਆਂ ਹੋਣ \'ਤੇ" + "ਤੁਹਾਡੇ ਚਿਹਰੇ ਦੀ ਪਛਾਣ ਨਾ ਹੋਣ \'ਤੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ ਦੀ ਵਰਤੋਂ ਕਰੋ, ਜਿਵੇਂ ਕਿ ਘੱਟ ਰੋਸ਼ਨੀ ਹੋਣ \'ਤੇ" "ਫ਼ੇਸ ਅਣਲਾਕ" "ਫ਼ੇਸ ਅਣਲਾਕ ਨਾਲ ਸਮੱਸਿਆ" "ਆਪਣੇ ਚਿਹਰੇ ਦਾ ਮਾਡਲ ਮਿਟਾਉਣ ਲਈ ਟੈਪ ਕਰੋ, ਫਿਰ ਆਪਣਾ ਚਿਹਰਾ ਦੁਬਾਰਾ ਸ਼ਾਮਲ ਕਰੋ" - "ਫ਼ੇਸ ਅਣਲਾਕ ਦਾ ਸੈੱਟਅੱਪ ਕਰੋ" - "ਆਪਣੇ ਫ਼ੋਨ ਵੱਲ ਦੇਖ ਕੇ ਇਸਨੂੰ ਅਣਲਾਕ ਕਰੋ" "ਫ਼ੇਸ ਅਣਲਾਕ ਨੂੰ ਵਰਤਣ ਲਈ, ਸੈਟਿੰਗਾਂ > ਪਰਦੇਦਾਰੀ ਵਿੱਚ ਜਾ ਕੇ ""ਕੈਮਰਾ ਪਹੁੰਚ"" ਨੂੰ ਚਾਲੂ ਕਰੋ" - "ਅਣਲਾਕ ਕਰਨ ਦੇ ਹੋਰ ਤਰੀਕਿਆਂ ਦਾ ਸੈੱਟਅੱਪ ਕਰੋ" - "ਫਿੰਗਰਪ੍ਰਿੰਟ ਸ਼ਾਮਲ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ" "ਫਿੰਗਰਪ੍ਰਿੰਟ ਅਣਲਾਕ" "ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ" "ਮੁਰੰਮਤ ਪ੍ਰਦਾਨਕ \'ਤੇ ਜਾਓ।" @@ -1868,6 +1867,7 @@ "ਦੂਸਰੀ ਕਾਰਜ-ਸਥਾਨ %1$s" "ਤੀਸਰੀ ਕਾਰਜ-ਸਥਾਨ %1$s" "%1$s ਦਾ ਕਲੋਨ" + "ਨਿੱਜੀ %1$s" "ਅਨਪਿੰਨ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਿੰਨ ਮੰਗੋ" "ਅਨਪਿੰਨ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਅਣਲਾਕ ਪੈਟਰਨ ਵਾਸਤੇ ਪੁੱਛੋ" "ਅਣਪਿੰਨ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਪਾਸਵਰਡ ਮੰਗੋ" @@ -2032,7 +2032,7 @@ "ਕੀ ਤੁਸੀਂ ""%1$s"" ਵਿੱਚ ਅੱਪਡੇਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" "ਕੀ ਤੁਸੀਂ ""%2$s"" ਵਿੱਚ %1$s ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" "ਕੀ ਤੁਸੀਂ ""%3$s"" ਵਿੱਚ %1$s ਅਤੇ %2$s ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ?" - "ਕੀ ਤੁਸੀਂ ""%4$s"" ਵਿੱਚ ਇਹਨਾਂ ਆਈਟਮਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ: %1$s, %2$s, ਅਤੇ %3$s?" + "ਕੀ ਤੁਸੀਂ ""%4$s"" ਵਿੱਚ ਇਨ੍ਹਾਂ ਆਈਟਮਾਂ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ: %1$s, %2$s, ਅਤੇ%3$s?" "ਰੱਖਿਅਤ ਕਰੋ" "ਨਹੀਂ ਧੰਨਵਾਦ" "ਹੁਣੇ ਨਹੀਂ" @@ -2130,7 +2130,7 @@ "ਹਵਾਈ-ਜਹਾਜ਼ ਮੋਡ ਵੇਲੇ ਬਲੂਟੁੱਥ ਹਾਲੇ ਵੀ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ" "ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ" "{count,plural, =1{{file_name} + # ਫ਼ਾਈਲ}one{{file_name} + # ਫ਼ਾਈਲ}other{{file_name} + # ਫ਼ਾਈਲਾਂ}}" - "ਸਾਂਝਾ ਕਰਨ ਲਈ ਕੋਈ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੇ ਲੋਕ ਨਹੀਂ" + "ਸਾਂਝਾ ਕਰਨ ਲਈ ਕੋਈ ਸਿਫ਼ਾਰਸ਼ ਕੀਤਾ ਵਿਅਕਤੀ ਨਹੀਂ ਹੈ" "ਐਪ ਸੂਚੀ" "ਇਸ ਐਪ ਨੂੰ ਰਿਕਾਰਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੱਤੀ ਗਈ ਪਰ ਇਹ USB ਡੀਵਾਈਸ ਰਾਹੀਂ ਆਡੀਓ ਕੈਪਚਰ ਕਰ ਸਕਦੀ ਹੈ।" "ਹੋਮ" @@ -2331,11 +2331,11 @@ "ਸੰਬੰਧੀ ਐਪ ਨੂੰ ਬੈਕਗ੍ਰਾਊਂਡ ਤੋਂ ਫੋਰਗ੍ਰਾਊਂਡ ਸੇਵਾਵਾਂ ਸ਼ੁਰੂ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।" "ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਉਪਲਬਧ ਹੈ" "ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਬਲਾਕ ਕੀਤਾ ਗਿਆ ਹੈ" - "ਦੋਹਰੀ ਸਕ੍ਰੀਨ" - "ਦੋਹਰੀ ਸਕ੍ਰੀਨ ਚਾਲੂ ਹੈ" + "Dual Screen" + "Dual Screen ਚਾਲੂ ਹੈ" "%1$s ਸਮੱਗਰੀ ਨੂੰ ਦਿਖਾਉਣ ਲਈ ਦੋਵੇਂ ਡਿਸਪਲੇਆਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੀ ਹੈ" "ਡੀਵਾਈਸ ਬਹੁਤ ਗਰਮ ਹੈ" - "ਦੋਹਰੀ ਸਕ੍ਰੀਨ ਵਿਸ਼ੇਸ਼ਤਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਫ਼ੋਨ ਬਹੁਤ ਗਰਮ ਹੋ ਰਿਹਾ ਹੈ" + "Dual Screen ਵਿਸ਼ੇਸ਼ਤਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਤੁਹਾਡਾ ਫ਼ੋਨ ਬਹੁਤ ਗਰਮ ਹੋ ਰਿਹਾ ਹੈ" "Dual Screen ਵਿਸ਼ੇਸ਼ਤਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ" "Dual Screen ਵਿਸ਼ੇਸ਼ਤਾ ਉਪਲਬਧ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਬੈਟਰੀ ਸੇਵਰ ਚਾਲੂ ਹੈ। ਤੁਸੀਂ ਇਸਨੂੰ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਬੰਦ ਕਰ ਸਕਦੇ ਹੋ।" "ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ" diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index cf2571be3629073c8823d23553265ff45cbfd669..a40fae86a5f3ac9c990a82a58e6e1cc0d43db678 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -620,8 +620,6 @@ "Używaj biometrii lub blokady ekranu" "Potwierdź, że to Ty" "Użyj biometrii, by kontynuować" - "Aby kontynuować, użyj odcisku palca" - "Aby kontynuować, użyj rozpoznawania twarzy" "Aby kontynuować, użyj biometrii lub blokady ekranu" "Sprzęt biometryczny niedostępny" "Anulowano uwierzytelnianie" @@ -647,6 +645,7 @@ "Nie rozpoznano odcisku palca" "Nie rozpoznano odcisku palca" + "Nie rozpoznaję twarzy. Użyj odcisku palca." "Uwierzytelniono odciskiem palca" "Twarz rozpoznana" "Twarz rozpoznana, kliknij Potwierdź" @@ -672,14 +671,14 @@ "Coś poszło nie tak. Spróbuj ponownie." "Ikona odcisku palca" + "Odblokowywanie urządzenia" + "Wypróbuj inną metodę odblokowywania" + "Jeśli odcisk palca nie jest rozpoznawany, ponieważ przykładowo masz mokre palce, użyj funkcji rozpoznawania twarzy" + "Jeśli twarz nie jest rozpoznawana, na przykład z powodu słabego oświetlenia, użyj funkcji odblokowywania odciskiem palca" "Rozpoznawanie twarzy" "Problem z rozpoznawaniem twarzy" "Kliknij, aby usunąć model twarzy, a następnie ponownie dodaj skan twarzy" - "Skonfiguruj rozpoznawanie twarzy" - "Popatrz na ekran telefonu, aby go odblokować" "Aby używać rozpoznawania twarzy, włącz ""dostęp do aparatu"" w Ustawieniach i prywatności" - "Skonfiguruj więcej sposobów odblokowywania" - "Kliknij, aby dodać odcisk palca" "Odblokowywanie odciskiem palca" "Nie można użyć czytnika linii papilarnych" "Odwiedź serwis." @@ -1870,6 +1869,7 @@ "%1$s – praca 2" "%1$s – praca 3" "Klon aplikacji %1$s" + "Prywatna aplikacja %1$s" "Podaj PIN, aby odpiąć" "Aby odpiąć, poproś o wzór odblokowania" "Aby odpiąć, poproś o hasło" @@ -2034,7 +2034,7 @@ "Zaktualizować w: ""%1$s""?" "Zaktualizować: %1$s w: ""%2$s""?" "Zaktualizować: %1$s%2$s w: ""%3$s""?" - "Zaktualizować w: ""%4$s"" te elementy: %1$s, %2$s%3$s?" + "Zaktualizować w ""%4$s"" te elementy: %1$s, %2$s%3$s?" "Zapisz" "Nie, dziękuję" "Nie teraz" @@ -2337,7 +2337,7 @@ "Włączono podwójny ekran" "Aplikacja %1$s korzysta z obu wyświetlaczy, aby pokazać treści" "Urządzenie jest za ciepłe" - "Podwójny ekran jest niedostępny, ponieważ telefon za bardzo się nagrzewa" + "Funkcja Dual Screen jest niedostępna, ponieważ telefon za bardzo się nagrzewa" "Funkcja Dual Screen jest niedostępna" "Funkcja Dual Screen jest niedostępna, ponieważ włączono Oszczędzanie baterii. Możesz to wyłączyć w Ustawieniach." "Otwórz ustawienia" diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 2ca6ec76532646668f8322b42cbae6e033b4c913..70f80a81750bf67e45eaa0a70b63b2806e80b7b3 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -619,8 +619,6 @@ "Usar biometria ou bloqueio de tela" "Confirme que é você" "Use seus dados biométricos para continuar" - "Use sua impressão digital para continuar" - "Use seu rosto para continuar" "Use sua autenticação biométrica ou o bloqueio de tela para continuar" "Hardware biométrico indisponível" "Autenticação cancelada" @@ -646,6 +644,7 @@ "Impressão digital não reconhecida" "Impressão digital não reconhecida" + "Não foi possível reconhecer o rosto Use a impressão digital." "Impressão digital autenticada" "Rosto autenticado" "Rosto autenticado, pressione \"Confirmar\"" @@ -671,14 +670,14 @@ "Algo deu errado. Tente de novo." "Ícone de impressão digital" + "Desbloqueio do dispositivo" + "Tente desbloquear de outra maneira" + "Use o Desbloqueio facial quando sua impressão digital não for reconhecida, como quando seus dedos estiverem molhados" + "Use o Desbloqueio por impressão digital quando seu rosto não for reconhecido, como quando não houver luz suficiente" "Desbloqueio facial" "Problema com o Desbloqueio facial" "Toque para excluir seu modelo de rosto e crie um novo" - "Configurar o Desbloqueio facial" - "Desbloqueie o smartphone olhando para ele" "Para usar o Desbloqueio facial, ative o ""acesso à câmera"" em Configurações > Privacidade" - "Configure mais formas de desbloquear a tela" - "Toque para adicionar uma impressão digital" "Desbloqueio por impressão digital" "Não foi possível usar o sensor de impressão digital" "Entre em contato com uma assistência técnica." @@ -783,7 +782,7 @@ "detectar observações nas condições da rede" "Permite que o app detecte observações nas condições da rede. Não deve ser necessário para apps comuns." "alterar calibragem do dispositivo de entrada" - "Permite que o app modifique os parâmetros de calibragem da tela sensível ao toque. Não deve ser necessário para apps normais." + "Permite que o app modifique os parâmetros de calibragem da tela touch. Não deve ser necessário para apps normais." "acessar certificados de DRM" "Permite que o app provisione e use certificados de DRM. Não deve ser necessário para apps comuns." "receber status de transferência do Android Beam" @@ -1596,7 +1595,7 @@ "Você ultrapassou %s do limite definido" "Dados de segundo plano restritos" "Toque para remover a restrição." - "Alto uso de dados móveis" + "Uso elevado de dados móveis" "Seus apps usaram mais dados do que o normal" "O app %s usou mais dados do que o normal" "Certificado de segurança" @@ -1869,6 +1868,7 @@ "Segundo %1$s de trabalho" "Terceiro %1$s de trabalho" "%1$s (clone)" + "%1$s particular" "Pedir PIN antes de liberar" "Pedir padrão de desbloqueio antes de liberar" "Pedir senha antes de liberar" @@ -2033,7 +2033,7 @@ "Atualizar em ""%1$s""?" "Atualizar %1$s em ""%2$s""?" "Atualizar %1$s e %2$s em ""%3$s""?" - "Atualizar estes itens em ""%4$s"": %1$s, %2$s e %3$s?" + "Atualizar estes itens em ""%4$s"": %1$s, %2$s e %3$s?" "Salvar" "Agora não" "Agora não" diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 83da4b5ff8e9d97028ca156f343c33a063304fb4..7341500d8b4637194b8c53ef0a9d2f371ebc3dc7 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -619,8 +619,6 @@ "Usar a biometria ou o bloqueio de ecrã" "Confirme a sua identidade" "Utilize a biometria para continuar." - "Use a impressão digital para continuar" - "Use o rosto para continuar" "Utilize a biometria ou o bloqueio de ecrã para continuar" "Hardware biométrico indisponível." "Autenticação cancelada" @@ -646,6 +644,7 @@ "Impressão digital não reconhecida" "Impressão digital não reconhecida" + "Impos. reconh. rosto. Utilize a impressão digital." "A impressão digital foi autenticada." "Rosto autenticado." "Rosto autenticado. Prima Confirmar." @@ -671,14 +670,14 @@ "Algo correu mal. Tente novamente." "Ícone de impressão digital" + "Desbloqueio do dispositivo" + "Experimente outra forma de desbloquear" + "Use o Desbloqueio facial quando a sua impressão digital não for reconhecida, por exemplo, quando os seus dedos estiverem molhados" + "Use o Desbloqueio por impressão digital quando o seu rosto não for reconhecido, por exemplo, quando não houver luz suficiente" "Desbloqueio facial" "Problema com o Desbloqueio facial" "Toque para eliminar o seu modelo de rosto e, em seguida, adicione o seu rosto novamente" - "Configure o Desbloqueio facial" - "Desbloqueie o telemóvel ao olhar para ele" "Para utilizar o Desbloqueio facial, ative o ""Acesso à câmara"" em Definições > Privacidade" - "Configure mais formas de desbloquear" - "Toque para adicionar uma impressão digital" "Desbloqueio por impressão digital" "Não é possível utilizar o sensor de impressões digitais" "Visite um fornecedor de serviços de reparação." @@ -966,7 +965,7 @@ "Código PIN incorreto." "Para desbloquear, prima Menu e, em seguida, 0." "Número de emergência" - "Sem rede móvel" + "Sem dados" "Ecrã bloqueado." "Prima Menu para desbloquear ou efectuar uma chamada de emergência." "Prima Menu para desbloquear." @@ -1598,7 +1597,7 @@ "Toque para remover a restrição." "Utilização elevada de dados móveis" "As suas aplicações utilizaram mais dados do que o habitual." - "A app %s utilizou mais dados do que o habitual." + "A app %s usou mais dados do que o habitual" "Certificado de segurança" "Este certificado é válido." "Emitido para:" @@ -1869,6 +1868,7 @@ "2.º %1$s de trabalho" "3.º %1$s de trabalho" "Clonar %1$s" + "%1$s privado" "Pedir PIN antes de soltar" "Pedir padrão de desbloqueio antes de soltar" "Pedir palavra-passe antes de soltar" @@ -2033,7 +2033,7 @@ "Quer atualizar em ""%1$s""?" "Quer atualizar %1$s em ""%2$s""?" "Quer atualizar %1$s e %2$s em ""%3$s""?" - "Quer atualizar estes itens em ""%4$s"": %1$s, %2$s e %3$s?" + "Atualizar estes itens no serviço ""%4$s"": %1$s, %2$s e %3$s?" "Guardar" "Não, obrigado" "Agora não" diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 2ca6ec76532646668f8322b42cbae6e033b4c913..70f80a81750bf67e45eaa0a70b63b2806e80b7b3 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -619,8 +619,6 @@ "Usar biometria ou bloqueio de tela" "Confirme que é você" "Use seus dados biométricos para continuar" - "Use sua impressão digital para continuar" - "Use seu rosto para continuar" "Use sua autenticação biométrica ou o bloqueio de tela para continuar" "Hardware biométrico indisponível" "Autenticação cancelada" @@ -646,6 +644,7 @@ "Impressão digital não reconhecida" "Impressão digital não reconhecida" + "Não foi possível reconhecer o rosto Use a impressão digital." "Impressão digital autenticada" "Rosto autenticado" "Rosto autenticado, pressione \"Confirmar\"" @@ -671,14 +670,14 @@ "Algo deu errado. Tente de novo." "Ícone de impressão digital" + "Desbloqueio do dispositivo" + "Tente desbloquear de outra maneira" + "Use o Desbloqueio facial quando sua impressão digital não for reconhecida, como quando seus dedos estiverem molhados" + "Use o Desbloqueio por impressão digital quando seu rosto não for reconhecido, como quando não houver luz suficiente" "Desbloqueio facial" "Problema com o Desbloqueio facial" "Toque para excluir seu modelo de rosto e crie um novo" - "Configurar o Desbloqueio facial" - "Desbloqueie o smartphone olhando para ele" "Para usar o Desbloqueio facial, ative o ""acesso à câmera"" em Configurações > Privacidade" - "Configure mais formas de desbloquear a tela" - "Toque para adicionar uma impressão digital" "Desbloqueio por impressão digital" "Não foi possível usar o sensor de impressão digital" "Entre em contato com uma assistência técnica." @@ -783,7 +782,7 @@ "detectar observações nas condições da rede" "Permite que o app detecte observações nas condições da rede. Não deve ser necessário para apps comuns." "alterar calibragem do dispositivo de entrada" - "Permite que o app modifique os parâmetros de calibragem da tela sensível ao toque. Não deve ser necessário para apps normais." + "Permite que o app modifique os parâmetros de calibragem da tela touch. Não deve ser necessário para apps normais." "acessar certificados de DRM" "Permite que o app provisione e use certificados de DRM. Não deve ser necessário para apps comuns." "receber status de transferência do Android Beam" @@ -1596,7 +1595,7 @@ "Você ultrapassou %s do limite definido" "Dados de segundo plano restritos" "Toque para remover a restrição." - "Alto uso de dados móveis" + "Uso elevado de dados móveis" "Seus apps usaram mais dados do que o normal" "O app %s usou mais dados do que o normal" "Certificado de segurança" @@ -1869,6 +1868,7 @@ "Segundo %1$s de trabalho" "Terceiro %1$s de trabalho" "%1$s (clone)" + "%1$s particular" "Pedir PIN antes de liberar" "Pedir padrão de desbloqueio antes de liberar" "Pedir senha antes de liberar" @@ -2033,7 +2033,7 @@ "Atualizar em ""%1$s""?" "Atualizar %1$s em ""%2$s""?" "Atualizar %1$s e %2$s em ""%3$s""?" - "Atualizar estes itens em ""%4$s"": %1$s, %2$s e %3$s?" + "Atualizar estes itens em ""%4$s"": %1$s, %2$s e %3$s?" "Salvar" "Agora não" "Agora não" diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 345f67fbe485f03980b5804fbac907b29feda80a..cf428b70b7c90d4cc5d8b5006a527c34617ca63f 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -619,8 +619,6 @@ "Folosește sistemele biometrice sau blocarea ecranului" "Confirmă-ți identitatea" "Folosește sistemele biometrice pentru a continua" - "Folosește amprenta pentru a continua" - "Folosește-ți chipul pentru a continua" "Folosește sistemele biometrice sau blocarea ecranului pentru a continua" "Hardware biometric indisponibil" "Autentificarea a fost anulată" @@ -646,6 +644,7 @@ "Amprenta nu a fost recunoscută" "Amprenta nu a fost recunoscută" + "Chipul nu a fost recunoscut. Folosește amprenta." "Amprentă autentificată" "Chip autentificat" "Chip autentificat, apasă pe Confirmă" @@ -671,14 +670,14 @@ "A apărut o eroare. Încearcă din nou." "Pictograma amprentă" + "Deblocarea dispozitivului" + "Încearcă o altă modalitate de deblocare" + "Folosește Deblocarea facială atunci când amprenta ta nu este recunoscută, de exemplu, când ai degetele ude" + "Folosește Deblocarea cu amprenta atunci când chipul tău nu este recunoscut, de exemplu, când nu există suficientă lumină" "Deblocare facială" "Problemă cu Deblocarea facială" "Atinge pentru a șterge modelul facial, apoi adaugă din nou chipul" - "Configurează Deblocarea facială" - "Deblochează-ți telefonul uitându-te la el" "Pentru a folosi Deblocarea facială, activează ""Accesul la cameră"" în Setări și confidențialitate" - "Configurează mai multe moduri de deblocare" - "Atinge ca să adaugi o amprentă" "Deblocare cu amprenta" "Nu se poate folosi senzorul de amprentă" "Vizitează un furnizor de servicii de reparații." @@ -1869,6 +1868,7 @@ "%1$s pentru serviciu (2)" "%1$s pentru serviciu (3)" "Clonă pentru %1$s" + "%1$s privat" "Solicită codul PIN înainte de a anula fixarea" "Solicită mai întâi modelul pentru deblocare" "Solicită parola înainte de a anula fixarea" @@ -2033,7 +2033,7 @@ "Actualizezi în ""%1$s""?" "Actualizezi %1$s în ""%2$s""?" "Actualizezi %1$s și %2$s în ""%3$s""?" - "Actualizezi aceste articole în ""%4$s"": %1$s, %2$s și %3$s?" + "Actualizezi aceste articole în ""%4$s"": %1$s, %2$s și %3$s?" "Salvează" "Nu, mulțumesc" "Nu acum" diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index efebc8a116891c2f5822a4795d06c740baa537de..4986c10f75221746d8a353af9f054437548c6583 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -620,8 +620,6 @@ "Использовать биометрию или блокировку экрана" "Подтвердите, что это вы" "Чтобы продолжить, используйте биометрические данные." - "Чтобы продолжить, прикоснитесь пальцем к сканеру." - "Чтобы продолжить, используйте фейсконтроль." "Чтобы продолжить, используйте биометрию или данные для разблокировки экрана." "Биометрическое оборудование недоступно" "Аутентификация отменена" @@ -647,6 +645,7 @@ "Отпечаток не распознан." "Отпечаток не распознан." + "Не удалось распознать лицо. Используйте отпечаток." "Отпечаток пальца проверен" "Лицо распознано" "Лицо распознано, нажмите кнопку \"Подтвердить\"" @@ -672,14 +671,14 @@ "Произошла ошибка. Повторите попытку." "Значок отпечатка пальца" + "Разблокировка устройства" + "Попробуйте другой способ разблокировки" + "Когда устройство не распознаёт ваш отпечаток пальца, используйте фейсконтроль. Например, это пригодится, когда палец мокрый." + "Когда устройство не распознаёт ваше лицо, используйте разблокировку по отпечатку пальца. Например, это пригодится при плохом освещении." "Фейсконтроль" "Ошибка фейсконтроля" "Нажмите, чтобы удалить модель лица, а затем добавьте ее снова." - "Настройка фейсконтроля" - "Вы сможете разблокировать телефон, просто посмотрев на него." "Чтобы использовать фейсконтроль, разрешите ""доступ к камере"". Для этого перейдите в настройки и нажмите \"Конфиденциальность\"." - "Настройте другие способы разблокировки" - "Нажмите, чтобы добавить отпечаток пальца." "Разблокировка по отпечатку пальца" "Невозможно использовать сканер отпечатков пальцев" "Обратитесь в сервисный центр." @@ -1599,7 +1598,7 @@ "Нажмите, чтобы отменить ограничение." "Высокое потребление трафика" "В ваших приложениях было передано больше трафика, чем обычно." - "В приложении \"%s\" было передано больше трафика, чем обычно." + "Приложение \"%s\" использовало больше трафика, чем обычно." "Сертификат безопасности" "Этот сертификат действителен." "Кому выдан:" @@ -1866,10 +1865,11 @@ "Выберите месяц и число" "Выберите год" "Цифра %1$s удалена" - "Рабочий %1$s" + "%1$s (рабочий профиль)" "Задача 2: %1$s" "Задача 3: %1$s" "Клонировать %1$s" + "%1$s (личный профиль)" "Запрашивать PIN-код" "Запрашивать графический ключ" "Запрашивать пароль" @@ -2034,7 +2034,7 @@ "Обновить в сервисе ""%1$s""?" "Обновить данные (%1$s) в сервисе ""%2$s""?" "Обновить данные (%1$s, %2$s) в сервисе ""%3$s""?" - "Обновить данные (%1$s, %2$s, %3$s) в сервисе ""%4$s""?" + "Обновить данные (%1$s, %2$s, %3$s) в сервисе ""%4$s""?" "Сохранить" "Нет, спасибо" "Не сейчас" @@ -2333,11 +2333,11 @@ "Сопутствующее приложение сможет запускать активные службы из фонового режима." "Микрофон доступен." "Микрофон заблокирован." - "Двойной экран" - "Двойной экран включен" + "Dual Screen" + "Функция Dual Screen включена" "%1$s использует оба экрана." "Устройство перегрелось" - "Двойной экран недоступен из-за перегрева телефона." + "Функция Dual Screen недоступна из-за перегрева телефона." "Функция Dual Screen недоступна" "Функция Dual Screen недоступна, так как включен режим энергосбережения. Вы можете отключить его в настройках." "Открыть настройки" diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 4a0b7159fb9998a5d662f094cf20f4b2c12e167a..1b6230d3d340f5f97a22a126f780ec852f60d840 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -618,8 +618,6 @@ "ජෛවමිතික හෝ තිර අගුල භාවිත කරන්න" "එය ඔබ බව තහවුරු කරන්න" "ඉදිරියට යාමට ඔබගේ ජෛවමිතික භාවිත කරන්න" - "ඉදිරියට යාමට ඔබේ ඇඟිලි සලකුණ භාවිත කරන්න" - "ඉදිරියට යාමට ඔබේ මුහුණ භාවිත කරන්න" "ඉදිරියට යාමට ඔබගේ ජෛවමිතික හෝ තිර අගුල භාවිත කරන්න" "ජීවමිතික දෘඪාංග ලබා ගත නොහැකිය" "සත්‍යාපනය අවලංගු කළා" @@ -645,6 +643,7 @@ "ඇඟිලි සලකුණ හඳුනා නොගන්නා ලදි" "ඇඟිලි සලකුණ හඳුනා නොගන්නා ලදි" + "මුහුණ හැඳිනිය නොහැක. ඒ වෙනුවට ඇඟිලි සලකුණ භාවිත ක." "ඇඟිලි සලකුණ සත්‍යාපනය කරන ලදී" "මුහුණ සත්‍යාපනය කරන ලදී" "මුහුණ සත්‍යාපනය කරන ලදී, කරුණාකර තහවුරු කරන්න ඔබන්න" @@ -670,14 +669,14 @@ "යම් දෙයක් වැරදිණි. නැවත උත්සාහ කරන්න." "ඇඟිලි සලකුණු නිරූපකය" + "උපාංගය අගුළු හැරීම" + "අගුළු ඇරීමට වෙනත් ක්‍රමයක් උත්සාහ කරන්න" + "ඔබේ ඇඟිලි තෙත් වූ විට වැනි ඔබේ ඇඟිලි සලකුණ හඳුනා නොගත් විට මුහුණෙන් අගුළු හැරීම භාවිත කරන්න" + "ප්‍රමාණවත් ආලෝකයක් නොමැති විට වැනි ඔබේ මුහුණ හඳුනා නොගත් විට ඇඟිලි සලකුණු අගුළු හැරීම භාවිත කරන්න" "මුහුණෙන් අගුළු හැරීම" "මුහුණෙන් අගුලු හැරීම සම්බන්ධව ගැටලුවකි" "ඔබගේ මුහුණත ආකෘතිය මැකීමට තට්ටු කරන්න, අනතුරුව ඔබගේ මුහුණ නැවත එක් කරන්න" - "මුහුණෙන් අගුළු හැරීම පිහිටුවන්න" - "ඔබගේ දුරකථනය දෙස බැලීමෙන් එහි අගුලු හරින්න" "මුහුණෙන් අගුලු හැරීම භාවිත කිරීමට, සැකසීම් > පෞද්ගලිකත්වය තුළ ""කැමරා ප්‍රවේශය"" ක්‍රියාත්මක කරන්න" - "අගුලු හැරීමට තවත් ක්‍රම සකසන්න" - "ඇඟිලි සලකුණක් එක් කිරීමට තට්ටු කරන්න" "ඇඟිලි සලකුණු අගුළු හැරීම" "ඇඟිලි සලකුණු සංවේදකය භාවිත කළ නොහැකිය" "අළුත්වැඩියා සැපයුම්කරුවෙකු බලන්න." @@ -1868,6 +1867,7 @@ "2වන වැඩ %1$s" "3වන වැඩ %1$s" "%1$s ක්ලෝන කරන්න" + "පෞද්ගලික %1$s" "ගැලවීමට පෙර PIN විමසන්න" "ගැලවීමට පෙර අගුළු අරින රටාව සඳහා අසන්න" "ගැලවීමට පෙර මුරපදය විමසන්න" @@ -2032,7 +2032,7 @@ "%1$s"" තුළ යාවත්කාලීන කරන්නද?" "%2$s"" තුළ %1$s යාවත්කාලීන කරන්නද?" "%3$s"" තුළ %1$s සහ %2$s යාවත්කාලීන කරන්නද?" - "%4$s"" තුළ යාවත්කාලීන කරන්නද?: %1$s, %2$s, සහ %3$s ?" + "%4$s"": %1$s, %2$s, සහ %3$s තුළ මෙම අයිතම යාවත්කාලීන කරන්න ද?" "සුරකින්න" "එපා ස්තූතියි" "දැන් නොවේ" diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 0a1b159324c86633401fc906982ae45b580d3576..9784308ca57f0c0eac9280f922fbe6c38cba35fb 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -620,8 +620,6 @@ "Použiť biometrické údaje alebo zámku obrazovky" "Overenie, že ste to vy" "Ak chcete pokračovať, použite biometrický údaj" - "Pokračujte nasnímaním odtlačku prsta" - "Pokračujte nasnímaním tváre" "Pokračujte použitím biometrických údajov alebo zámky obrazovky" "Biometrický hardvér nie je k dispozícii" "Overenie bolo zrušené" @@ -647,6 +645,7 @@ "Odtlačok prsta nebol rozpoznaný" "Odtlačok prsta nebol rozpoznaný" + "Tvár sa nedá rozpoznať. Použite odtlačok prsta." "Odtlačok prsta bol overený" "Tvár bola overená" "Tvár bola overená, stlačte tlačidlo potvrdenia" @@ -672,14 +671,14 @@ "Vyskytla sa chyba. Skúste to znova." "Ikona odtlačku prsta" + "Odomknutie zariadenia" + "Vyskúšajte iný spôsob odomknutia" + "Použite odomknutie tvárou, keď odtlačok prsta nefunguje, napríklad keď máte mokré prsty" + "Použite odomknutie odtlačkom prsta, keď vaša tvár nie je rozpoznaná, napríklad pri nedostatočnom osvetlení" "Odomknutie tvárou" "Problém s odomknutím tvárou" "Klepnutím odstráňte model tváre a potom znova pridajte svoju tvár" - "Nastavte odomknutie tvárou" - "Odomykajte telefón tak, že sa naň pozriete" "Ak chcete používať odomknutie tvárou, v sekcii Nastavenia > Ochrana súkromia zapnite ""prístup ku kamere" - "Nastavte viac spôsobov odomknutia" - "Klepnutím pridajte odtlačok prsta" "Odomknutie odtlačkom prsta" "Senzor odtlačkov prstov nie je možné používať" "Navštívte poskytovateľa opráv." @@ -809,7 +808,7 @@ "Povolí vlastníkovi aktualizovať aplikáciu, ktorá bola nainštalovaná bez akcie používateľa" "Nastaviť pravidlá pre heslo" "Nastavte dĺžku hesiel na odomknutie obrazovky aj kódov PIN a v nich používané znaky." - "Sledovanie pokusov o odomknutie obrazovky" + "Sledovať pokusy o odomknutie obrazovky" "Sledovať počet nesprávnych hesiel zadaných pri odomykaní obrazovky a zamknúť tablet alebo vymazať všetky údaje tabletu v prípade príliš veľkého počtu neplatných pokusov o zadanie hesla." "Sledovanie počtu nesprávnych hesiel zadaných pri odomykaní obrazovky a v prípade, že ich je zadaných príliš mnoho, uzamknutie zariadenia Android TV alebo vymazanie všetkých jeho údajov." "Sledujte počet nesprávnych hesiel zadaných pri odomykaní obrazovky a uzamknite palubný systém alebo vymažte všetky údaje v palubnom systéme v prípade príliš veľkého počtu neplatných pokusov o zadanie hesla." @@ -1870,6 +1869,7 @@ "2. %1$s do práce" "3. %1$s do práce" "Klonovať %1$s" + "Súkromná aplikácia %1$s" "Pred odopnutím požiadať o číslo PIN" "Pred uvoľnením požiadať o bezpečnostný vzor" "Pred odopnutím požiadať o heslo" @@ -2034,7 +2034,7 @@ "Aktualizovať v službe ""%1$s""?" "Chcete údaje %1$s aktualizovať v službe ""%2$s""?" "Chcete položky %1$s a %2$s aktualizovať v službe ""%3$s""?" - "Chcete tieto položky aktualizovať v službe ""%4$s"": %1$s, %2$s a %3$s?" + "Chcete tieto položky aktualizovať v službe ""%4$s"": %1$s, %2$s%3$s?" "Uložiť" "Nie, vďaka" "Teraz nie" diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 00cf50bc8db888526e491f19026b8f33921b235d..16ea77f1b0c61bf863c04732adb583a4bdff7628 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -620,8 +620,6 @@ "Uporaba biometrike ali odklepanja s poverilnico" "Preverite, da ste res vi" "Za nadaljevanje uporabite biometrični podatek." - "Za nadaljevanje uporabite prstni odtis" - "Za nadaljevanje uporabite obraz" "Za nadaljevanje uporabite biometrični podatek ali odklepanje s poverilnico." "Strojna oprema za biometrične podatke ni na voljo" "Preverjanje pristnosti je preklicano" @@ -647,6 +645,7 @@ "Prstni odtis ni prepoznan." "Prstni odtis ni prepoznan." + "Obraza ni mogoče prepoznati. Uporabite prstni odtis." "Pristnost prstnega odtisa je preverjena" "Pristnost obraza je potrjena" "Pristnost obraza je preverjena. Pritisnite gumb »Potrdi«." @@ -672,14 +671,14 @@ "Prišlo je do napake. Poskusite znova." "Ikona prstnih odtisov" + "Odklepanje naprave" + "Preizkusite drug način odklepanja" + "Kadar prstni odtis ni prepoznan, npr. ko imate mokre prste, uporabite odklepanje z obrazom." + "Kadar obraz ni prepoznan, npr. ko ni dovolj svetlobe, uporabite odklepanje s prstnim odtisom." "Odklepanje z obrazom" "Težava z odklepanjem z obrazom" "Dotaknite se, da izbrišete model obraza, in nato znova dodajte obraz." - "Nastavitev odklepanja z obrazom" - "Odklenite telefon tako, da ga pogledate." "Če želite uporabljati odklepanje z obrazom, v meniju »Nastavitve« > »Zasebnost« vklopite možnost ""Dostop do fotoaparata""." - "Nastavite več načinov odklepanja" - "Dotaknite se, da dodate prstni odtis." "Odklepanje s prstnim odtisom" "Tipala prstnih odtisov ni mogoče uporabiti" "Obiščite ponudnika popravil." @@ -813,7 +812,7 @@ "Nadzoruje število nepravilno vnesenih gesel pri odklepanju zaslona in zaklene tablični računalnik ali izbriše vse podatke v njem, če je vnesenih preveč nepravilnih gesel." "Nadzira število vnesenih nepravilnih gesel pri odklepanju zaslona in zaklene napravo Android TV ali izbriše vse podatke v napravi Android TV, če je vnesenih preveč nepravilnih gesel." "Spremljanje števila nepravilno vnesenih gesel pri odklepanju zaslona in zaklenitev informativno-razvedrilnega sistema ali izbris vseh podatkov v njem v primeru preveč vnosov nepravilnih gesel" - "Spremljajte število vnesenih napačnih gesel, s katerimi želite odkleniti zaslon. Če je teh vnosov preveč, zaklenite telefon ali izbrišite vse podatke v njem." + "Spremljanje števila vnosov napačnih gesel za odklepanje zaslona ter zaklenitev telefona ali izbris vseh podatkov v njem v primeru prevelikega števila vnosov napačnih gesel." "Nadzira število vnesenih nepravilnih gesel pri odklepanju zaslona in zaklene tablični računalnik ali izbriše vse podatke lastnika, če je vnesenih preveč nepravilnih gesel." "Nadzira število vnesenih nepravilnih gesel pri odklepanju zaslona in zaklene napravo Android TV ali izbriše vse podatke tega uporabnika, če je vnesenih preveč nepravilnih gesel." "Spremljanje števila nepravilno vnesenih gesel pri odklepanju zaslona in zaklenitev informativno-razvedrilnega sistema ali izbris vseh podatkov tega profila v primeru preveč vnosov nepravilnih gesel" @@ -1870,6 +1869,7 @@ "2. službeni %1$s" "3. službeni %1$s" "Klon aplikacije %1$s" + "Zasebni %1$s" "Zahtevaj PIN pred odpenjanjem" "Pred odpenjanjem vprašaj za vzorec za odklepanje" "Pred odpenjanjem vprašaj za geslo" @@ -2034,7 +2034,7 @@ "Želite posodobiti v aplikaciji ""%1$s""?" "Želite posodobiti element %1$s v aplikaciji ""%2$s""?" "Želite posodobiti elementa %1$s in %2$s v aplikaciji ""%3$s""?" - "Želite posodobiti te elemente v aplikaciji ""%4$s"": %1$s, %2$s in %3$s?" + "Želite posodobiti te elemente v ""%4$s"": %1$s, %2$s in %3$s?" "Shrani" "Ne, hvala" "Ne zdaj" diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 426b25562e232351b1af21f29c4b1bf4df92ff98..a3d648f204fad7cbafe9dc2ea7bbe4098e4bda24 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -618,8 +618,6 @@ "Përdor sistemet biometrike ose kyçjen e ekranit" "Verifiko që je ti" "Përdor sistemet e tua biometrike për të vazhduar" - "Përdor gjurmën e gishtit për të vazhduar" - "Përdor fytyrën tënde për të vazhduar" "Përdor sistemet e tua biometrike ose kyçjen e ekranit për të vazhduar" "Nuk ofrohet harduer biometrik" "Vërtetimi u anulua" @@ -645,6 +643,7 @@ "Gjurma e gishtit nuk u njoh" "Gjurma e gishtit nuk u njoh" + "Nuk mund ta dallojë fytyrën. Përdor më mirë gjurmën e gishtit." "Gjurma e gishtit u vërtetua" "Fytyra u vërtetua" "Fytyra u vërtetua, shtyp \"Konfirmo\"" @@ -670,14 +669,14 @@ "Ndodhi një gabim. Provo sërish." "Ikona e gjurmës së gishtit" + "Shkyçja e pajisjes" + "Provo një mënyrë tjetër për ta shkyçur" + "Përdor \"Shkyçjen me fytyrë\" kur nuk të njihet gjurma e gishtit, si p.sh. kur i ke gishtat të lagur" + "Përdor \"Shkyçjen me gjurmën e gishtit\" kur nuk të njihet fytyra, si p.sh. kur nuk ka dritë të mjaftueshme" "Shkyçja me fytyrë" "Problem me \"Shkyçjen me fytyrë\"" "Trokit për të fshirë modelin tënd të fytyrës, pastaj shtoje përsëri fytyrën tënde" - "Konfiguro \"Shkyçjen me fytyrë\"" - "Shkyçe telefonin duke parë tek ai" "Për të përdorur \"Shkyçjen me fytyrë\", aktivizo ""Qasjen te kamera"" te \"Cilësimet\" > \"Privatësia\"" - "Konfiguri më shumë mënyra për të shkyçur" - "Trokit për të shtuar një gjurmë gishti" "Shkyçja me gjurmën e gishtit" "Sensori i gjurmës së gishtit nuk mund të përdoret" "Vizito një ofrues të shërbimit të riparimit." @@ -984,7 +983,7 @@ "Shto një kartë SIM." "Karta SIM mungon ose është e palexueshme. Shto një kartë SIM." "Kartë SIM e papërdorshme." - "Karta jote SIM është çaktivizuar përgjithmonë.\n Kontakto me ofruesin e shërbimit me valë për një kartë tjetër SIM." + "Karta jote SIM është çaktivizuar përgjithmonë.\n Kontakto me ofruesin e shërbimit wireless për një tjetër kartë SIM." "Kënga e mëparshme" "Kënga tjetër" "Pauzë" @@ -1199,7 +1198,7 @@ "Redakto me %1$s" "Redakto" "Ndaj" - "Shpërndaj me %1$s" + "Ndaj me %1$s" "Ndaj" "Dërgo me" "Dërgo me %1$s" @@ -1524,7 +1523,7 @@ "{count,plural, =1{# përputhje}other{# nga {total}}}" "U krye" "Po fshin hapësirën ruajtëse të brendshme…" - "Shpërndaj" + "Ndaj" "Gjej" "Kërkim në internet" "Gjej tjetrën" @@ -1569,8 +1568,8 @@ "Enter" "Zgjidh një aplikacion" "Nuk mundi ta hapte %s" - "Shpërndaj me" - "Shpërndaj me %s" + "Ndaj me" + "Ndaj me %s" "Dorezë me rrëshqitje. Preke dhe mbaje të shtypur." "Rrëshqit për të shkyçur." "Orientohu për në shtëpi" @@ -1614,7 +1613,7 @@ "Gjurma e gishtit SHA-1:" "Shikoji të gjitha" "Zgjidh aktivitetin" - "Shpërndaj me" + "Ndaj me" "Po dërgon…" "Të hapet shfletuesi?" "Dëshiron ta pranosh telefonatën?" @@ -1630,7 +1629,7 @@ "USB" "Sistemi" "Audioja e \"bluetooth-it\"" - "Ekran pa tel" + "Ekran wireless" "Transmeto" "Lidhu me pajisjen" "Transmeto ekranin në pajisje" @@ -1868,6 +1867,7 @@ "%1$s i dytë i punës" "%1$s i tretë i punës" "Klonim i %1$s" + "%1$s privat" "Zhgozhdimi kërkon PIN-in" "Kërko motivin e shkyçjes para heqjes së gozhdimit" "Kërko fjalëkalim para heqjes nga gozhdimi." @@ -1888,9 +1888,9 @@ "{count,plural, =1{Për 1 min.}other{Për # min.}}" "{count,plural, =1{Për 1 orë}other{Për # orë}}" "{count,plural, =1{Për 1 orë}other{Për # orë}}" - "Deri në %1$s" - "Deri në %1$s" - "Deri në %1$s (alarmi tjetër)" + "Deri: %1$s" + "Deri: %1$s" + "Deri: %1$s (alarmi tjetër)" "Derisa ta çaktivizosh" "Deri sa të çaktivizosh gjendjen \"Mos shqetëso\"" "%1$s / %2$s" @@ -2032,7 +2032,7 @@ "Të përditësohet në ""%1$s""?" "Të përditësohet %1$s në ""%2$s""?" "Të përditësohet %1$s dhe %2$s në ""%3$s""?" - "Të përditësohen këta artikuj në ""%4$s"": %1$s, %2$s dhe %3$s ?" + "Të përditësohen këta artikuj në ""%4$s"": %1$s, %2$s dhe %3$s?" "Ruaj" "Jo, faleminderit" "Jo tani" @@ -2163,9 +2163,9 @@ "Pamja personale" "Pamja e punës" "Bllokuar nga administratori yt i teknologjisë së informacionit" - "Kjo përmbajtje nuk mund të shpërndahet me aplikacione pune" + "Kjo përmbajtje nuk mund të ndahet me aplikacione pune" "Kjo përmbajtje nuk mund të hapet me aplikacione pune" - "Kjo përmbajtje nuk mund të shpërndahet me aplikacione personale" + "Kjo përmbajtje nuk mund të ndahet me aplikacione personale" "Kjo përmbajtje nuk mund të hapet me aplikacione personale" "Aplikacionet e punës janë vendosur në pauzë" "Hiq nga pauza" diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index a2aee9ca99ee3cf8c15cf0160c513da24a37ff9e..712aeb99dd981f3fdc1aa336dd3cc6443d3d2d43 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -494,7 +494,7 @@ "Омогућава апликацији да шаље команде SIM картици. То је веома опасно." "препознавање физичких активности" "Ова апликација може да препозна физичке активности." - "снимање фотографија и видео снимака" + "снимање фотографија и видеа" "Ова апликација може да снима слике и видео снимке помоћу камере док се апликација користи." "да снима слике и видео снимке у позадини" "Ова апликација може да снима фотографије и видео снимке помоћу камере у било ком тренутку." @@ -619,8 +619,6 @@ "Користите биометрију или закључавање екрана" "Потврдите свој идентитет" "Користите биометријски податак да бисте наставили" - "Наставите помоћу отиска прста" - "Потврдите идентитет лицем да бисте наставили" "Користите биометријски податак или закључавање екрана да бисте наставили" "Биометријски хардвер није доступан" "Потврда идентитета је отказана" @@ -646,6 +644,7 @@ "Отисак прста није препознат" "Отисак прста није препознат" + "Лице није препознато. Користите отисак прста." "Отисак прста је потврђен" "Лице је потврђено" "Лице је потврђено. Притисните Потврди" @@ -671,14 +670,14 @@ "Дошло је до проблема. Пробајте поново." "Икона отиска прста" + "Откључавање уређаја" + "Пробајте други начин откључавања" + "Користите откључавање лицем када вам се отисак прста не препозна, на пример, када су вам прсти влажни" + "Користите откључавање отиском прста када вам се лице не препозна, на пример, када је осветљење слабо" "Откључавање лицем" "Проблем са откључавање лицем" "Додирните да бисте избрисали модел лица, па поново додајте своје лице" - "Подесите откључавање лицем" - "Откључајте телефон тако што ћете га погледати" "Да бисте користили откључавање лицем, укључите ""приступ камери"" у одељку Подешавања > Приватност" - "Подесите још начина за откључавање" - "Додирните да бисте додали отисак прста" "Откључавање отиском прста" "Не можете да користите сензор за отисак прста" "Посетите добављача за поправке." @@ -746,8 +745,8 @@ "Омогућава апликацији да чита видео фајлове из дељеног меморијског простора." "читање фајлова слика из дељеног меморијског простора" "Омогућава апликацији да чита фајлове слика из дељеног меморијског простора." - "читање фајлова слика и видео снимака које корисник бира из дељеног меморијског простора" - "Омогућава апликацији да чита фајлове слика и видео снимака које изаберете из дељеног меморијског простора." + "читање фајлова слика и видеа које корисник бира из дељеног меморијског простора" + "Омогућава апликацији да чита фајлове слика и видеа које изаберете из дељеног меморијског простора." "мењање или брисање садржаја дељеног меморијског простора" "Дозвољава апликацији да уписује садржај дељеног меморијског простора." "упућивање/пријем SIP позива" @@ -808,7 +807,7 @@ "Дозвољава власнику да ажурира апликацију коју је претходно инсталирала без радњи корисника" "Подешавање правила за лозинку" "Контролише дужину и знакове дозвољене у лозинкама и PIN-овима за закључавање екрана." - "Надгледајте покушаје откључавања екрана" + "Надзор покушаја откључавања екрана" "Прати број нетачно унетих лозинки приликом откључавања екрана и закључава таблет или брише податке са таблета ако је нетачна лозинка унета превише пута." "Надгледа број нетачних лозинки унетих при откључавању екрана и закључава Android TV уређај или брише све податке са Android TV уређаја ако се унесе превише нетачних лозинки." "Прати број нетачно унетих лозинки при откључавању екрана и закључава систем за инфо-забаву или брише све податке са система за инфо-забаву ако је нетачна лозинка унета превише пута." @@ -1173,7 +1172,7 @@ "Додирните за више информација или заустављање апликације." "Потврди" "Откажи" - "Потврди" + "У реду" "Откажи" "Пажња" "Учитава се…" @@ -1418,7 +1417,7 @@ "Додирните да бисте подесили" "Изаберите да бисте подесили" "Можда морате да реформатирате уређај. Додирните да бисте избацили." - "За чување слика, видео снимака, музике и другог садржаја" + "За чување слика, видеа, музике и другог садржаја" "Прегледајте медијске фајлове" "Проблем са: %s" "%s не ради" @@ -1869,6 +1868,7 @@ "2. пословни %1$s" "3. пословни имејл %1$s" "Клонирај %1$s" + "Приватни %1$s" "Тражи PIN пре откачињања" "Тражи шаблон за откључавање пре откачињања" "Тражи лозинку пре откачињања" @@ -2033,7 +2033,7 @@ "Желите ли да ажурирате у услузи ""%1$s""?" "Желите ли да ажурирате ставку %1$s у услузи ""%2$s""?" "Желите ли да ажурирате ставке %1$s и %2$s у услузи ""%3$s""?" - "Желите ли да ажурирате ове ставке у услузи ""%4$s"": %1$s, %2$s и %3$s?" + "Желите ли да ажурирате ове ставке у услузи ""%4$s"": %1$s, %2$s и %3$s?" "Сачувај" "Не, хвала" "Не сада" @@ -2332,11 +2332,11 @@ "Дозвољава пратећој апликацији да покрене услуге у првом плану из позадине." "Микрофон је доступан" "Микрофон је блокиран" - "Двојни екран" - "Двојни екран је укључен" + "Dual Screen" + "Dual Screen је укључен" "%1$s користи оба екрана за приказивање садржаја" "Уређај је превише загрејан" - "Двојни екран је недоступан јер је телефон превише загрејан" + "Dual Screen је недоступан јер је телефон превише загрејан" "Dual Screen није доступан" "Dual Screen није доступан зато што је Уштеда батерије укључена. То можете да искључите у подешавањима." "Иди у Подешавања" diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index af2e1ea2f058dc5e4f0698d2e0a3baa56190d3c4..3624f71d1e7ef4d19f178b8ff130e1c53aa0da9d 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -618,8 +618,6 @@ "Använd biometrisk data eller skärmlåset" "Verifiera din identitet" "Fortsätt med hjälp av din biometriska data" - "Fortsätt med hjälp av ditt fingeravtryck" - "Fortsätt med hjälp av ditt ansikte" "Fortsätt med hjälp av din biometriska data eller skärmlåset" "Biometrisk maskinvara är inte tillgänglig" "Autentiseringen avbröts" @@ -645,6 +643,7 @@ "Fingeravtrycket känns inte igen" "Fingeravtrycket känns inte igen" + "Ansiktet kändes inte igen. Använd fingeravtryck." "Fingeravtrycket har autentiserats" "Ansiktet har autentiserats" "Ansiktet har autentiserats. Tryck på Bekräfta" @@ -670,14 +669,14 @@ "Något gick fel. Försök igen." "Ikon för fingeravtryck" + "Enhetsupplåsning" + "Testa ett annat sätt att låsa upp" + "Använd ansiktslås när fingeravtrycket inte känns igen, som när dina fingrar är blöta" + "Använd fingeravtryckslås när ansiktet inte känns igen, som när det är för mörkt" "Ansiktslås" "Problem med ansiktslås" "Tryck för att radera ansiktsmodellen och lägg sedan till ansiktet igen" - "Konfigurera ansiktslås" - "Lås upp telefonen genom att titta på den" "Om du vill använda ansiktslås aktiverar du ""Kameraåtkomst"" i Inställningar > Integritet" - "Konfigurera fler sätt att låsa upp" - "Tryck för att lägga till ett fingeravtryck" "Fingeravtryckslås" "Det går inte att använda fingeravtryckssensorn" "Besök ett reparationsställe." @@ -1868,6 +1867,7 @@ "Andra %1$s för jobbet" "Tredje %1$s för jobbet" "Klona %1$s" + "Privat %1$s" "Be om pinkod innan skärmen slutar fästas" "Be om upplåsningsmönster innan skärmen slutar fästas" "Be om lösenord innan skärmen slutar fästas" @@ -2032,7 +2032,7 @@ "Vill du uppdatera detta i ""%1$s""?" "Vill du uppdatera %1$s i ""%2$s""?" "Vill du uppdatera %1$s och %2$s i ""%3$s""?" - "Vill du uppdatera dessa objekt i ""%4$s"": %1$s, %2$s och %3$s?" + "Vill du uppdatera dessa objekt i ""%4$s"": %1$s, %2$s och %3$s?" "Spara" "Nej tack" "Inte nu" @@ -2331,11 +2331,11 @@ "Tillåter att en tillhörande app startar förgrundstjänster i bakgrunden." "Mikrofonen är tillgänglig" "Mikrofonen är blockerad" - "Dubbel skärm" - "Dubbel skärm är på" + "Dual Screen" + "Dual Screen är på" "%1$s använder båda skärmarna för att visa innehåll" "Enheten är för varm" - "Dubbel skärm kan inte användas eftersom telefonen börjar bli för varm" + "Dual Screen kan inte användas eftersom telefonen börjar bli för varm" "Dual Screen är inte tillgängligt" "Dual Screen kan inte användas eftersom battersparläget är aktiverat. Du kan inaktivera detta i inställningarna." "Öppna inställningarna" diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index d77385c126e2a5f004eebdb4a29769458b719fea..1ec2eeff1575904ffdeed9f84c53958d278a77d4 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -298,7 +298,7 @@ "Mfumo wa Android" "Tumia wasifu wa binafsi" "Tumia wasifu wa kazini" - "Badili uweke wasifu wa binafsi %1$s" + "Badili utumie wasifu wa binafsi wa %1$s" "Badili uweke wasifu wa kazini %1$s" "Anwani" "ifikie anwani zako" @@ -618,8 +618,6 @@ "Tumia bayometriki au mbinu ya kufunga skrini" "Thibitisha kuwa ni wewe" "Tumia bayometriki yako ili uendelee" - "Tumia alama ya kidole chako ili uendelee" - "Tumia uso wako ili uendelee" "Tumia bayometriki au mbinu yako ya kufunga skrini ili uendelee" "Maunzi ya bayometriki hayapatikani" "Imeghairi uthibitishaji" @@ -645,6 +643,7 @@ "Alama ya kidole haijatambuliwa" "Alama ya kidole haijatambuliwa" + "Imeshindwa kutambua uso. Tumia alama ya kidole." "Imethibitisha alama ya kidole" "Uso umethibitishwa" "Uso umethibitishwa, tafadhali bonyeza thibitisha" @@ -670,14 +669,14 @@ "Hitilafu fulani imetokea. Jaribu tena." "Aikoni ya alama ya kidole" + "Kufungua kifaa" + "Jaribu njia nyingine ya kufungua" + "Tumia kipengele cha Kufungua kwa Uso wakati alama ya kidole chako haitambuliwi, kama vile wakati vidole vyako vina unyevu" + "Tumia kipengele cha Kufungua kwa Alama ya Kidole wakati uso wako hautambuliwi, kama vile wakati hakuna mwangaza wa kutosha" "Kufungua kwa Uso" "Hitilafu imetokea kwenye kipengele cha Kufungua kwa Uso" "Gusa ili ufute muundo wa uso wako, kisha uweke uso wako tena" - "Weka mipangilio ya Kufungua kwa Uso" - "Fungua simu yako kwa kuiangalia" "Ili utumie kipengele cha kufungua kwa uso, washa kipengele cha ""ufikiaji wa Kamera"" katika Mipangilio na Faragha" - "Weka mipangilio ya mbinu zaidi za kufungua" - "Gusa ili uweke alama ya kidole" "Kufungua kwa Alama ya Kidole" "Imeshindwa kutumia kitambua alama ya kidole" "Tembelea mtoa huduma za urekebishaji." @@ -1868,6 +1867,7 @@ "%1$s ya 2 ya Kazini" "%1$s ya 3 ya Kazini" "Nakala ya %1$s" + "Faragha %1$s" "Itisha PIN kabla hujabandua" "Omba mchoro wa kufungua kabla hujabandua" "Omba nenosiri kabla hujabandua" @@ -2032,7 +2032,7 @@ "Ungependa kusasisha katika ""%1$s""?" "Ungependa kusasisha %1$s katika ""%2$s""?" "Ungependa kusasisha %1$s na %2$s katika ""%3$s""?" - "Ungependa kusasisha vipengee hivi katika ""%4$s"": %1$s, %2$s na %3$s?" + "Ungependa kusasisha vipengee hivi katika ""%4$s"": %1$s, %2$s na %3$s?" "Hifadhi" "Hapana" "Si sasa" @@ -2332,12 +2332,12 @@ "Maikrofoni inapatikana" "Maikrofoni imezuiwa" "Dual screen" - "Umewasha kipengele cha hali ya skrini mbili" + "Dual screen imewasha" "%1$s inatumia skrini zote kuonyesha maudhui" "Kifaa kina joto sana" - "Kipengele cha Hali ya Skrini Mbili hakipatikani kwa sababu simu yako inapata joto sana" - "Kipengele cha Hali ya Skrini Mbili hakipatikani" - "Kipengele cha Hali ya Skrini Mbili hakipatikani kwa sababu kipengele cha Kiokoa Betri kimewashwa. Unaweza kuzima kipengele hiki katika Mipangilio." + "Kipengele cha Dual Screen hakipatikani kwa sababu simu yako inapata joto sana" + "Dual Screen haipatikani" + "Kipengele cha Dual Screen hakipatikani kwa sababu Kiokoa Betri kimewashwa. Unaweza kukizima katika Mipangilio." "Nenda kwenye Mipangilio" "Zima" "%s imewekewa mipangilio" diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index 50d056ae3aea737ecc8a109095df52b0aa6d6c4e..8c2ddb0cf39558276d592f5aaa402c4bb472e1ee 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -618,8 +618,6 @@ "பயோமெட்ரிக்ஸையோ திரைப் பூட்டையோ பயன்படுத்து" "நீங்கள்தான் என உறுதிசெய்க" "தொடர உங்கள் பயோமெட்ரிக்கைப் பயன்படுத்துங்கள்" - "தொடர்வதற்கு உங்கள் கைரேகையைப் பயன்படுத்துங்கள்" - "தொடர்வதற்கு உங்கள் முகத்தைப் பயன்படுத்துங்கள்" "தொடர, உங்கள் பயோமெட்ரிக்கையோ திரைப் பூட்டையோ பயன்படுத்துங்கள்" "பயோமெட்ரிக் வன்பொருள் இல்லை" "அங்கீகரிப்பு ரத்தானது" @@ -645,6 +643,7 @@ "கைரேகை அங்கீகரிக்கப்படவில்லை" "கைரேகை அங்கீகரிக்கப்படவில்லை" + "முகத்தை அடையாளம் காண முடியவில்லை. கைரேகையைப் பயன்படுத்தவும்." "கைரேகை அங்கீகரிக்கப்பட்டது" "முகம் அங்கீகரிக்கப்பட்டது" "முகம் அங்கீகரிக்கப்பட்டது. ’உறுதிப்படுத்துக’ என்பதை அழுத்துக" @@ -670,14 +669,14 @@ "ஏதோ தவறாகிவிட்டது. மீண்டும் முயலவும்." "கைரேகை ஐகான்" + "சாதனத்தை அன்லாக் செய்தல்" + "அன்லாக் செய்ய வேறொரு வழியை முயன்று பாருங்கள்" + "உங்கள் கைரேகையை அடையாளங்காண முடியாதபோது முகம் காட்டித் திறத்தல் அம்சத்தைப் பயன்படுத்தலாம் (உதாரணமாக, உங்கள் விரல்கள் ஈரமாக இருக்கும்போது)" + "உங்கள் முகத்தை அடையாளங்காண முடியாதபோது கைரேகை அன்லாக் அம்சத்தைப் பயன்படுத்தலாம் (உதாரணமாக, போதுமான வெளிச்சம் இல்லாதபோது)" "முகம் காட்டித் திறத்தல்" "முகம் காட்டித் திறத்தல் அம்சத்தில் சிக்கல்" "முகத் தோற்றப் பதிவைத் தட்டி நீக்கிவிட்டு உங்கள் முகத்தை மீண்டும் சேர்க்கவும்" - "\'முகம் காட்டித் திறத்தல்\' அம்சத்தை அமைத்தல்" - "மொபைலைப் பார்ப்பதன் மூலம் அதை அன்லாக் செய்யலாம்" "முகம் காட்டித் திறத்தல் அம்சத்தைப் பயன்படுத்த, அமைப்புகள் > தனியுரிமை என்பதற்குச் சென்று ""கேமரா அணுகலை"" இயக்கவும்" - "அன்லாக் செய்ய மேலும் பல வழிகளை அமையுங்கள்" - "கைரேகையைச் சேர்க்கத் தட்டுங்கள்" "கைரேகை அன்லாக்" "கைரேகை சென்சாரைப் பயன்படுத்த முடியவில்லை" "பழுதுபார்ப்புச் சேவை வழங்குநரைத் தொடர்புகொள்ளவும்." @@ -1868,6 +1867,7 @@ "2வது பணி %1$s" "3வது பணி %1$s" "குளோன் %1$s" + "தனிப்பட்ட %1$s" "அகற்றும் முன் PINஐக் கேள்" "அகற்றும் முன் அன்லாக் பேட்டர்னைக் கேள்" "அகற்றும் முன் கடவுச்சொல்லைக் கேள்" @@ -2032,7 +2032,7 @@ "%1$s"" இல் மாற்றவா?" "%2$s"" இல் %1$sஐ மாற்றவா?" "%3$s"" இல் %1$s மற்றும் %2$sஐ மாற்றவா?" - "%4$s"" இல் %1$s, %2$s மற்றும் %3$sஐ மாற்றவா?" + "%4$s"" இல் %1$s, %2$s மற்றும் %3$sஐ மாற்றவா?" "சேமி" "வேண்டாம்" "இப்போது வேண்டாம்" diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index 32ef5bd6d2a801b43667176a1ff31b30a0479127..4c7835f66b416fa0a3d12a74ef375390d9470473 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -322,7 +322,7 @@ "చిత్రాలను తీయడానికి మరియు వీడియోను రికార్డ్ చేయడానికి" "సమీపంలోని పరికరాలు" "సమీప పరికరాలను కనుగొనండి అలాగే కనెక్ట్ చేయండి" - "కాల్ లాగ్‌లు" + "కాల్ లాగ్స్‌" "ఫోన్ కాల్ లాగ్‌ని చదవండి మరియు రాయండి" "ఫోన్" "ఫోన్ కాల్స్‌ చేయడం మరియు నిర్వహించడం" @@ -618,8 +618,6 @@ "బయోమెట్రిక్స్‌ను లేదా స్క్రీన్ లాక్‌ను ఉపయోగించండి" "ఇది మీరేనని వెరిఫై చేసుకోండి" "కొనసాగించడానికి, మీ బయోమెట్రిక్‌ను ఉపయోగించండి" - "కొనసాగించడానికి మీ వేలిముద్రను ఉపయోగించండి" - "కొనసాగించడానికి మీ ముఖాన్ని ఉపయోగించండి" "కొనసాగించడానికి మీ బయోమెట్రిక్ లేదా స్క్రీన్ లాక్‌ను ఉపయోగించండి" "బయోమెట్రిక్ హార్డ్‌వేర్‌ అందుబాటులో లేదు" "ప్రమాణీకరణ రద్దు చేయబడింది" @@ -645,6 +643,7 @@ "వేలిముద్ర గుర్తించబడలేదు" "వేలిముద్ర గుర్తించబడలేదు" + "ముఖం గుర్తించలేము. బదులుగా వేలిముద్ర ఉపయోగించండి." "వేలిముద్ర ప్రమాణీకరించబడింది" "ముఖం ప్రమాణీకరించబడింది" "ముఖం ప్రమాణీకరించబడింది, దయచేసి ధృవీకరించును నొక్కండి" @@ -670,14 +669,14 @@ "ఏదో తప్పు జరిగింది. మళ్లీ ట్రై చేయండి." "వేలిముద్ర చిహ్నం" + "పరికర అన్‌లాక్" + "అన్‌లాక్ చేయడానికి మరొక మార్గాన్ని ట్రై చేయండి" + "మీ వేలిముద్ర గుర్తించబడనప్పుడు, మీ వేళ్లు తడిగా ఉన్నప్పుడు ఫేస్ అన్‌లాక్‌ను ఉపయోగించండి" + "మీ ఫేస్ గుర్తించబడనప్పుడు, తగినంత వెలుతురు లేనప్పుడు వేలిముద్ర అన్‌లాక్‌ను ఉపయోగించండి" "ఫేస్ అన్‌లాక్" "ఫేస్ అన్‌లాక్‌తో సమస్య" "ఫేస్ మోడల్‌ను తొలగించడానికి నొక్కండి, ఆపై మీ ముఖాన్ని మళ్లీ జోడించండి" - "ఫేస్ అన్‌లాక్‌ను సెటప్ చేయండి" - "మీ ఫోన్‌ను చూడటం ద్వారా దాన్ని అన్‌లాక్ చేయండి" "ఫేస్ అన్‌లాక్‌ను ఉపయోగించడానికి, సెట్టింగ్‌లు > గోప్యతలో ""కెమెరా యాక్సెస్""ను ఆన్ చేయండి" - "అన్‌లాక్ చేయడానికి మరిన్ని మార్గాలను సెటప్ చేయండి" - "వేలిముద్రను జోడించడానికి ట్యాప్ చేయండి" "వేలిముద్ర అన్‌లాక్" "వేలిముద్ర సెన్సార్‌ను ఉపయోగించడం సాధ్యం కాదు" "రిపెయిర్ ప్రొవైడర్‌ను సందర్శించండి." @@ -1868,6 +1867,7 @@ "2వ కార్యాలయం %1$s" "3వ కార్యాలయం %1$s" "క్లోన్ %1$s" + "ప్రైవేట్ %1$s" "అన్‌పిన్ చేయడానికి ముందు పిన్‌ కోసం అడుగు" "అన్‌పిన్ చేయడానికి ముందు అన్‌లాక్ ఆకృతి కోసం అడుగు" "అన్‌పిన్ చేయడానికి ముందు పాస్‌వర్డ్ కోసం అడుగు" @@ -2032,7 +2032,7 @@ "%1$s""లో అప్‌డేట్ చేయాలా?" "%1$sని ""%2$s""లో అప్‌డేట్ చేయాలా?" "%1$s మరియు %2$sని ""%3$s""లో అప్‌డేట్ చేయాలా?" - "ఈ అంశాలను ""%4$s""లో అప్‌డేట్ చేయాలా: %1$s, %2$s మరియు %3$s ?" + "ఈ ఐటెమ్‌లను ""%4$s""లో అప్‌డేట్ చేయండి: %1$s, %2$s అలాగే %3$s అప్‌డేట్ చేయాలా?" "సేవ్ చేయండి" "వద్దు, ధన్యవాదాలు" "ఇప్పుడు కాదు" diff --git a/core/res/res/values-television/config.xml b/core/res/res/values-television/config.xml index c3db87b629e4a7ab0edd2e13af008dad6bdbe984..01d4feca3bc6cb0bad0a3ef18413a96176bd70d3 100644 --- a/core/res/res/values-television/config.xml +++ b/core/res/res/values-television/config.xml @@ -70,4 +70,7 @@ com.android.systemui/com.android.systemui.tv.usb.TvUsbConfirmActivity + + + false diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 1f650867d16d7d7e132c10e48274809e4035df97..804562a90f622212a78bf2ff6cfbb6d42a666773 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -618,8 +618,6 @@ "ใช้ข้อมูลไบโอเมตริกหรือการล็อกหน้าจอ" "ยืนยันว่าเป็นตัวคุณ" "ใช้ข้อมูลไบโอเมตริกเพื่อดำเนินการต่อ" - "ใช้ลายนิ้วมือของคุณเพื่อดำเนินการต่อ" - "ใช้ใบหน้าของคุณเพื่อดำเนินการต่อ" "ใช้ข้อมูลไบโอเมตริกหรือการล็อกหน้าจอเพื่อดำเนินการต่อ" "ฮาร์ดแวร์ไบโอเมตริกไม่พร้อมใช้งาน" "ยกเลิกการตรวจสอบสิทธิ์แล้ว" @@ -645,6 +643,7 @@ "ไม่รู้จักลายนิ้วมือ" "ไม่รู้จักลายนิ้วมือ" + "ไม่รู้จักใบหน้า ใช้ลายนิ้วมือแทน" "ตรวจสอบสิทธิ์ลายนิ้วมือแล้ว" "ตรวจสอบสิทธิ์ใบหน้าแล้ว" "ตรวจสอบสิทธิ์ใบหน้าแล้ว โปรดกดยืนยัน" @@ -670,14 +669,14 @@ "เกิดข้อผิดพลาด ลองอีกครั้ง" "ไอคอนลายนิ้วมือ" + "การปลดล็อกอุปกรณ์" + "ลองใช้วิธีอื่นในการปลดล็อก" + "ใช้การปลดล็อกด้วยใบหน้าเมื่อระบบจำลายนิ้วมือของคุณไม่ได้ เช่น เมื่อนิ้วมือเปียก" + "ใช้การปลดล็อกด้วยลายนิ้วมือเมื่อระบบจำใบหน้าของคุณไม่ได้ เช่น เมื่อมีแสงสว่างไม่เพียงพอ" "การปลดล็อกด้วยใบหน้า" "มีปัญหาเกี่ยวกับฟีเจอร์ปลดล็อกด้วยใบหน้า" "แตะเพื่อลบรูปแบบใบหน้า แล้วเพิ่มใบหน้าอีกครั้ง" - "ตั้งค่าการปลดล็อกด้วยใบหน้า" - "ปลดล็อกโทรศัพท์โดยมองไปที่โทรศัพท์" "หากต้องการใช้ปลดล็อกด้วยใบหน้า ให้เปิด""การเข้าถึงกล้อง""ในการตั้งค่าและความเป็นส่วนตัว" - "ตั้งค่าการปลดล็อกด้วยวิธีอื่น" - "แตะเพื่อเพิ่มลายนิ้วมือ" "ปลดล็อกด้วยลายนิ้วมือ" "ใช้เซ็นเซอร์ลายนิ้วมือไม่ได้" "โปรดติดต่อผู้ให้บริการซ่อม" @@ -1404,7 +1403,7 @@ "แตะเพื่อเลือกภาษาและรูปแบบ" " กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรลวศษสหฬอฮ" " กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรลวศษสหฬอฮ" - "แสดงทับแอปอื่นๆ" + "แสดงทับบนแอปอื่นๆ" "%s แสดงทับแอปอื่นๆ" "%s กำลังแสดงทับแอปอื่นๆ" "หากคุณไม่ต้องการให้ %s ใช้ฟีเจอร์นี้ ให้แตะเพื่อเปิดการตั้งค่าแล้วปิดฟีเจอร์" @@ -1868,6 +1867,7 @@ "%1$s งานที่ 2" "%1$s งานที่ 3" "โคลน %1$s" + "%1$s ส่วนตัว" "ขอ PIN ก่อนเลิกปักหมุด" "ขอรูปแบบการปลดล็อกก่อนเลิกปักหมุด" "ขอรหัสผ่านก่อนเลิกปักหมุด" @@ -2032,7 +2032,7 @@ "อัปเดตใน ""%1$s"" ไหม" "อัปเดต%1$sใน ""%2$s"" ไหม" "อัปเดต%1$sและ%2$sใน ""%3$s"" ไหม" - "อัปเดตข้อมูล%1$s, %2$s และ%3$s ใน ""%4$s"" ไหม" + "อัปเดตข้อมูล%1$s %2$s และ%3$sใน ""%4$s"" ไหม" "บันทึก" "ไม่เป็นไร" "ไว้ทีหลัง" @@ -2335,7 +2335,7 @@ "Dual Screen เปิดอยู่" "%1$s กำลังใช้จอแสดงผลทั้งสองจอเพื่อแสดงเนื้อหา" "อุปกรณ์ร้อนเกินไป" - "หน้าจอคู่ไม่พร้อมให้ใช้งานเนื่องจากโทรศัพท์ของคุณร้อนเกินไป" + "Dual Screen ไม่พร้อมให้ใช้งานเนื่องจากโทรศัพท์ของคุณร้อนเกินไป" "Dual Screen ใช้งานไม่ได้" "Dual Screen ใช้งานไม่ได้เนื่องจากเปิดโหมดประหยัดแบตเตอรี่อยู่ คุณปิดโหมดนี้ได้ในการตั้งค่า" "ไปที่การตั้งค่า" diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 567b67e2cba5e5874e5f52238c2cf6d8c6945d12..51e7ec641e1bb528313a38e55d37b891f8ccdac6 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -618,8 +618,6 @@ "Gumamit ng biometrics o lock ng screen" "I-verify na ikaw ito" "Gamitin ang iyong biometric para magpatuloy" - "Gamitin ang iyong fingerprint para magpatuloy" - "Gamitin ang iyong mukha para magpatuloy" "Gamitin ang iyong biometric o lock ng screen para magpatuloy" "Walang biometric hardware" "Nakansela ang pag-authenticate" @@ -645,6 +643,7 @@ "Hindi nakilala ang fingerprint" "Hindi nakilala ang fingerprint" + "Hindi makilala ang mukha. Gumamit ng fingerprint." "Na-authenticate ang fingerprint" "Na-authenticate ang mukha" "Na-authenticate ang mukha, pakipindot ang kumpirmahin" @@ -670,14 +669,14 @@ "Nagkaproblema. Subukan ulit." "Icon ng fingerprint" + "Pag-unlock ng device" + "Sumubok ng ibang paraan ng pag-unlock." + "Gamitin ang Pag-unlock Gamit ang Mukha kapag hindi nakikilala ang iyong fingerprint, tulad kapag basa ang iyong mga daliri" + "Gamitin ang Pag-unlock Gamit ang Fingerprint kapag hindi nakikilala ang iyong mukha, tulad kapag madilim" "Pag-unlock Gamit ang Mukha" "Isyu sa Pag-unlock Gamit ang Mukha" "I-tap para i-delete ang iyong face model, pagkatapos ay idagdag ulit ang mukha mo" - "I-set up ang Pag-unlock Gamit ang Mukha" - "I-unlock ang iyong telepono sa pamamagitan ng pagtingin dito" "Para magamit ang Pag-unlock Gamit ang Mukha, i-on ang ""Access sa camera"" sa Mga Setting > Privacy" - "Mag-set up ng higit pang paraan para mag-unlock" - "I-tap para magdagdag ng fingerprint" "Pag-unlock Gamit ang Fingerprint" "Hindi magamit ang sensor para sa fingerprint" "Bumisita sa provider ng pag-aayos." @@ -1868,6 +1867,7 @@ "Pangalawang %1$s sa Trabaho" "Pangatlong %1$s sa Trabaho" "I-clone ang %1$s" + "Pribadong %1$s" "Humingi ng PIN bago mag-unpin" "Humingi ng pattern sa pag-unlock bago mag-unpin" "Humingi ng password bago mag-unpin" @@ -2032,7 +2032,7 @@ "I-update sa ""%1$s""?" "I-update ang %1$s sa ""%2$s""?" "I-update ang %1$s at %2$s sa ""%3$s""?" - "I-update ang mga item na ito sa ""%4$s"": %1$s, %2$s, at %3$s ?" + "I-update ang mga item na ito sa ""%4$s"": %1$s, %2$s, at %3$s?" "I-save" "Hindi, salamat na lang" "Hindi ngayon" diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 3bf35a5a526fdc951eb8a4180f0ed46cf756bf5c..ee45ede2df897070402fe736570443ce68abcaee 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -618,8 +618,6 @@ "Biyometri veya ekran kilidi kullan" "Siz olduğunuzu doğrulayın" "Devam etmek için biyometri kullanın" - "Devam etmek için parmak izinizi kullanın" - "Devam etmek için yüzünüzü kullanın" "Devam etmek için biyometrik kimlik bilginizi veya ekran kilidinizi kullanın" "Biyometrik donanım kullanılamıyor" "Kimlik doğrulama iptal edildi" @@ -645,6 +643,7 @@ "Parmak izi tanınmadı" "Parmak izi tanınmadı" + "Yüz tanınamadı. Bunun yerine parmak izi kullanın." "Parmak izi kimlik doğrulaması yapıldı" "Yüz kimliği doğrulandı" "Yüz kimliği doğrulandı, lütfen onayla\'ya basın" @@ -670,14 +669,14 @@ "Bir hata oluştu. Tekrar deneyin." "Parmak izi simgesi" + "Cihazda kilit açma" + "Kilidi açmak için başka bir yöntem kullanın" + "Parmak iziniz tanınmadığında (ör. parmaklarınız ıslak olduğu için) Yüz Tanıma Kilidi\'ni kullanın" + "Yüzünüz tanınmadığında (ör. yeterince ışık olmadığı için) Parmak İzi Kilidi\'ni kullanın" "Yüz Tanıma Kilidi" "Yüz Tanıma Kilidi sorunu" "Yüz modelinizi silmek için dokunup ardından yüzünüzü yeniden ekleyin" - "Yüz Tanıma Kilidi\'ni kurun" - "Telefonunuza bakarak kilidini açın" "Yüz Tanıma Kilidi\'ni kullanmak için Ayarlar > Gizlilik bölümünden ""Kamera erişimi""\'ni açın" - "Kilidi açmak için daha fazla yöntem ayarlayın" - "Parmak izi eklemek için dokunun" "Parmak İzi Kilidi" "Parmak izi sensörü kullanılamıyor" "Bir onarım hizmeti sağlayıcıyı ziyaret edin." @@ -820,7 +819,7 @@ "Ekran kilidini değiştirir." "Ekranı kilitleme" "Ekranın nasıl ve ne zaman kilitleneceğini denetler." - "Tüm verileri silme" + "Tüm verileri sil" "Fabrika verilerine sıfırlama işlemi gerçekleştirerek tabletteki verileri uyarıda bulunmadan siler." "Fabrika verilerine sıfırlama işlemi gerçekleştirerek Android TV cihazınızdaki verileri uyarıda bulunmadan siler." "Fabrika verilerine sıfırlama işlemi gerçekleştirerek bilgi-eğlence sistemindeki veriler uyarıda bulunmadan silinir." @@ -1868,6 +1867,7 @@ "İş için 2. %1$s" "İş için 3. %1$s" "%1$s klonu" + "Gizli %1$s" "Sabitlemeyi kaldırmadan önce PIN\'i sor" "Sabitlemeyi kaldırmadan önce kilit açma desenini sor" "Sabitlemeyi kaldırmadan önce şifre sor" @@ -2032,7 +2032,7 @@ "%1$s"" hizmetinde güncellensin mi?" "%1$s ""%2$s"" hizmetinde güncellensin mi?" "%1$s ve %2$s ""%3$s"" hizmetinde güncellensin mi?" - "Şu öğeler ""%4$s"" hizmetinde güncellensin mi: %1$s, %2$s ve %3$s?" + "Şu öğeler ""%4$s"" hizmetinde güncellensin mi: %1$s, %2$s ve %3$s?" "Kaydet" "Hayır, teşekkürler" "Şimdi değil" @@ -2331,11 +2331,11 @@ "Tamamlayıcı uygulamanın arka plandan ön plan hizmetlerini başlatmasına izin verir." "Mikrofon kullanılabilir" "Mikrofon engellenmiş" - "Çift ekran" - "Çift ekran açık" + "Dual Screen" + "Dual Screen açık" "%1$s, içeriği göstermek için her iki ekranı da kullanıyor" "Cihaz çok ısındı" - "Telefonunuz çok ısındığı için Çift Ekran kullanılamıyor" + "Telefonunuz çok ısındığı için Dual Screen kullanılamıyor" "Dual Screen kullanılamıyor" "Pil Tasarrufu açık olduğundan Dual Screen kullanılamıyor. Bu özelliği Ayarlar\'dan kapatabilirsiniz." "Ayarlar\'a git" diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 47e529c3de06a701ac9613c4c3bb97cc6d2bedbe..63b7560140e748b38f0e44f37ef5374e11165a3c 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -620,8 +620,6 @@ "Використовувати біометрію або дані для розблокування екрана" "Підтвердьте, що це ви" "Щоб продовжити, скористайтеся біометрією" - "Щоб продовжити, скористайтеся відбитком пальця" - "Щоб продовжити, скористайтеся фейс-контролем" "Щоб продовжити, скористайтеся біометрією або даними для розблокування екрана" "Біометричне апаратне забезпечення недоступне" "Автентифікацію скасовано" @@ -647,6 +645,7 @@ "Відбиток пальця не розпізнано" "Відбиток пальця не розпізнано" + "Обличчя не розпізнано. Скористайтеся відбитком пальця." "Відбиток пальця автентифіковано" "Обличчя автентифіковано" "Обличчя автентифіковано. Натисніть \"Підтвердити\"" @@ -672,14 +671,14 @@ "Сталася помилка. Повторіть спробу." "Значок відбитка пальця" + "Розблокування пристрою" + "Спробуйте інший спосіб розблокування" + "Розблоковуйте пристрій за допомогою фейс-контролю, коли не вдається розпізнати ваш відбиток пальця (наприклад, коли у вас мокрі пальці)" + "Розблоковуйте пристрій відбитком пальця, коли не вдається розпізнати ваше обличчя (наприклад, коли недостатньо світла)" "Фейс-контроль" "Сталася помилка з фейсконтролем" "Натисніть, щоб видалити свою модель обличчя, а потім знову додайте її" - "Налаштування фейс-контролю" - "Ви зможете розблоковувати телефон, подивившись на нього" "Щоб використовувати фейс-контроль, увімкніть ""Доступ до камери"" в розділі \"Налаштування\" > \"Конфіденційність\"" - "Налаштуйте більше способів розблокування" - "Натисніть, щоб додати відбиток пальця" "Розблокування відбитком пальця" "Не вдається скористатися сканером відбитків пальців" "Зверніться до постачальника послуг із ремонту." @@ -822,7 +821,7 @@ "Змінити спосіб розблокування екрана." "Блокувати екран" "Контролювати, як і коли блокується екран." - "Видалити всі дані" + "Видаляти всі дані" "Стирати дані планшетного ПК без попередження, відновлюючи заводські налаштування." "Видаляйте дані пристрою Android TV без попередження шляхом відновлення заводських налаштувань." "Видаляйте всі дані інформаційно-розважальної системи без попередження, відновлюючи заводські налаштування." @@ -1870,6 +1869,7 @@ "2-а робота: %1$s" "3-я робота: %1$s" "Копія додатка %1$s" + "%1$s (приватний профіль)" "PIN-код для відкріплення" "Запитувати ключ розблокування перед відкріпленням" "Запитувати пароль перед відкріпленням" @@ -2034,7 +2034,7 @@ "Оновити в сервісі ""%1$s""?" "Оновити дані (%1$s) у сервісі ""%2$s""?" "Оновити дані (%1$s і %2$s) у сервісі ""%3$s""?" - "Оновити в сервісі ""%4$s"" такі дані: %1$s, %2$s і %3$s?" + "Оновити в сервісі ""%4$s"" такі дані: %1$s, %2$s і %3$s?" "Зберегти" "Ні, дякую" "Не зараз" @@ -2337,7 +2337,7 @@ "Dual Screen увімкнено" "Додаток %1$s використовує обидва екрани для показу контенту" "Пристрій сильно нагрівається" - "Подвійний екран недоступний, оскільки телефон сильно нагрівається" + "Функція Dual Screen недоступна, оскільки телефон сильно нагрівається" "Функція Dual Screen недоступна" "Функція Dual Screen недоступна, оскільки ввімкнено режим енергозбереження. Її можна вимкнути в налаштуваннях." "Перейти до налаштувань" diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 907ebd95a862508f9f3ce5751271d5457e05dfc9..bd6ea76a820fb090c065237e98000fada037eec7 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -618,8 +618,6 @@ "بایو میٹرکس یا اسکرین لاک استعمال کریں" "توثیق کریں کہ یہ آپ ہیں" "جاری رکھنے کیلئے اپنا بایو میٹرک استعمال کریں" - "جاری رکھنے کے لیے اپنا فنگر پرنٹ استعمال کریں" - "جاری رکھنے کے لیے اپنے چہرے کا استعمال کریں" "جاری رکھنے کے لیے اپنے بایو میٹرک اور اسکرین لاک کا استعمال کریں" "بایومیٹرک ہارڈ ویئر دستیاب نہیں ہے" "تصدیق کا عمل منسوخ ہو گیا" @@ -645,6 +643,7 @@ "فنگر پرنٹ کی شناخت نہیں ہو سکی" "فنگر پرنٹ کی شناخت نہیں ہو سکی" + "چہرے کی شناخت نہیں ہو سکی۔ اس کے بجائے فنگر پرنٹ استعمال کریں۔" "فنگر پرنٹ کی تصدیق ہو گئی" "چہرے کی تصدیق ہو گئی" "چہرے کی تصدیق ہو گئی، براہ کرم \'تصدیق کریں\' کو دبائيں" @@ -670,14 +669,14 @@ "کچھ غلط ہو گیا۔ دوبارہ کوشش کریں۔" "فنگر پرنٹ آئیکن" + "آلے کو غیر مقفل کرنا" + "غیر مقفل کرنے کا کوئی دوسرا طریقہ آزمائیں" + "آپ کے فنگر پرنٹ کی شناخت نہ ہو پانے کی صورت میں، جیسے کی جب آپ کی انگلیاں گیلی ہوں، تو فیس اَنلاک کا استعمال کریں" + "آپ کے چہرے کی شناخت نہ ہو پانے کی صورت میں، جیسے کی جب خاطر خواہ روشنی موجود نہ ہو، تو فنگر پرنٹ اَن لاک کا استعمال کریں" "فیس اَنلاک" "فیس اَنلاک میں مسئلہ" "اپنے چہرے کا ماڈل حذف کرنے کے لیے تھپتھپائیں پھر اپنا چہرہ دوبارہ شامل کریں" - "فیس اَنلاک سیٹ اپ کریں" - "اپنے فون کی طرف دیکھ کر اسے غیر مقفل کریں" "فیس اَنلاک کا استعمال کرنے کے لیے، ترتیبات اور رازداری میں ""کیمرے تک رسائی"" کو آن کریں" - "غیر مقفل کرنے کے مزید طریقے سیٹ اپ کریں" - "فنگر پرنٹ شامل کرنے کیلئے تھپتھپائیں" "فنگر پرنٹ اَن لاک" "فنگر پرنٹ سینسر کا استعمال نہیں کر سکتے" "ایک مرمت فراہم کنندہ کو ملاحظہ کریں۔" @@ -1868,6 +1867,7 @@ "دوسرا کام %1$s" "تیسرا کام %1$s" "%1$s کلون" + "نجی %1$s" "‏پن ہٹانے سے پہلے PIN طلب کریں" "پن ہٹانے سے پہلے غیر مقفل کرنے کا پیٹرن طلب کریں" "پن ہٹانے سے پہلے پاس ورڈ طلب کریں" @@ -2032,7 +2032,7 @@ "%1$s"" میں اپ ڈیٹ کریں؟" "%2$s"" میں %1$s اپ ڈیٹ کریں؟" "%1$s اور %2$s کو ""%3$s"" میں اپ ڈیٹ کریں؟" - "ان آئٹمز کو ""%4$s "" میں اپ ڈیٹ کریں: %1$s، %2$s اور %3$s ؟" + "ان آئٹمز کو ""%4$s "" میں اپ ڈیٹ کریں: %1$s، %2$s اور %3$s؟" "محفوظ کریں" "نہیں، شکریہ" "ابھی نہیں" diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index a65b4780f118931848e7955bd72ccb90930180de..696edd3843095aefe9e576cbf74a0c8434560109 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -618,8 +618,6 @@ "Biometrika yoki ekran qulfi" "Oʻzingizni taniting" "Davom etish uchun biometrik tasdiqlang" - "Davom etish uchun barmoq izingizdan foydalaning" - "Yuz tekshiruvi bilan davom eting" "Davom etish uchun biometrika yoki ekran qulfidan foydalaning" "Biometrik sensor ishlamayapti" "Autentifikatsiya bekor qilindi" @@ -645,6 +643,7 @@ "Barmoq izi aniqlanmadi" "Barmoq izi aniqlanmadi" + "Bu yuz notanish. Barmoq izi orqali urining." "Barmoq izi tekshirildi" "Yuzingiz aniqlandi" "Yuzingiz aniqlandi, tasdiqlash uchun bosing" @@ -670,14 +669,14 @@ "Xatolik yuz berdi. Qayta urining." "Barmoq izi belgisi" + "Qurilma qulfini ochish" + "Boshqa usulda oching" + "Barmoq izi aniqlanmasa, masalan, barmoqlar hoʻl boʻlsa, Yuz bilan ochish funksiyasidan foydalaning" + "Yuz tanilmasa, masalan, yorugʻlik kamligida Barmoq izi bilan ochish funksiyasidan foydalaning" "Yuz bilan ochish" "Yuz bilan ochishda muammo bor" "Yuz modelini oʻchirish uchun bosing va keyin yana yuzni qoʻshing" - "Yuz bilan ochishni sozlash" - "Telefoningizni yuz tekshiruvi yordamida qulfdan chiqaring" "Yuz bilan ochish uchun Sozlamalar va maxfiylik orqali ""kameraga kirishga ruxsat bering" - "Qulfdan chiqarishning boshqa usullarini sozlang" - "Barmoq izi kiritish uchun bosing" "Barmoq izi bilan ochish" "Barmoq izi skaneridan foydalanish imkonsiz" "Xizmat koʻrsatish markaziga murojaat qiling." @@ -1868,6 +1867,7 @@ "2-ishxona %1$s" "3-ishxona %1$s" "%1$s nusxasini yaratish" + "Shaxsiy %1$s" "Yechishda PIN kod talab qilinsin" "Yechishdan oldin grafik kalit so‘ralsin" "Bo‘shatishdan oldin parol so‘ralsin" @@ -2032,7 +2032,7 @@ "%1$s"" xizmatida yangilansinmi?" "%1$s ""%2$s"" xizmatida yangilansinmi?" "%1$s va %2$s ""%3$s"" xizmatida yangilansinmi?" - "%4$s"" xizmatidagi %1$s, %2$s va %3$s yangilansinmi?" + "%4$s"" xizmatidagi %1$s, %2$s va %3$s yangilansinmi?" "Saqlash" "Kerak emas" "Keyinroq" diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index 9c772995ba6b1633cd2110d4743795d2d11f8f47..c02adbc5d2c7980228cba8fb29ded3b7ae1c9730 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -618,8 +618,6 @@ "Dùng dữ liệu sinh trắc học hoặc phương thức khóa màn hình" "Xác minh danh tính của bạn" "Dùng dữ liệu sinh trắc học của bạn để tiếp tục" - "Hãy dùng vân tay để tiếp tục" - "Hãy dùng khuôn mặt để tiếp tục" "Dùng dữ liệu sinh trắc học của bạn hoặc phương thức khóa màn hình để tiếp tục" "Không có phần cứng sinh trắc học" "Đã hủy xác thực" @@ -645,6 +643,7 @@ "Không nhận dạng được vân tay" "Không nhận dạng được vân tay" + "Không thể nhận dạng khuôn mặt. Hãy dùng vân tay." "Đã xác thực vân tay" "Đã xác thực khuôn mặt" "Đã xác thực khuôn mặt, vui lòng nhấn để xác nhận" @@ -670,14 +669,14 @@ "Đã xảy ra lỗi. Hãy thử lại." "Biểu tượng vân tay" + "Mở khoá thiết bị" + "Thử mở khoá bằng cách khác" + "Hãy dùng tính năng Mở khoá bằng khuôn mặt khi thiết bị không nhận diện được vân tay của bạn, chẳng hạn như khi ngón tay bị ướt" + "Hãy dùng tính năng Mở khoá bằng vân tay khi thiết bị không nhận diện được khuôn mặt của bạn, chẳng hạn như khi thiếu ánh sáng" "Mở khóa bằng khuôn mặt" "Vấn đề với tính năng Mở khóa bằng khuôn mặt" "Nhấn để xóa mẫu khuôn mặt, sau đó thêm lại khuôn mặt của bạn" - "Thiết lập tính năng Mở khóa bằng khuôn mặt" - "Mở khóa điện thoại bằng cách nhìn vào điện thoại" "Để dùng tính năng Mở khoá bằng khuôn mặt, hãy bật tuỳ chọn ""Truy cập máy ảnh"" trong phần Cài đặt > Quyền riêng tư" - "Thiết lập thêm những cách mở khóa khác" - "Nhấn để thêm vân tay" "Mở khóa bằng vân tay" "Không thể dùng cảm biến vân tay" "Hãy liên hệ với một nhà cung cấp dịch vụ sửa chữa." @@ -1868,6 +1867,7 @@ "Công việc thứ 2 %1$s" "Công việc thứ 2 %1$s" "Sao chép %1$s" + "%1$s riêng tư" "Hỏi mã PIN trước khi bỏ ghim" "Hỏi hình mở khóa trước khi bỏ ghim" "Hỏi mật khẩu trước khi bỏ ghim" @@ -2032,7 +2032,7 @@ "Cập nhật trong ""%1$s""?" "Cập nhật %1$s trong ""%2$s""?" "Cập nhật %1$s%2$s trong ""%3$s""?" - "Cập nhật các mục này: %1$s, %2$s%3$s trong ""%4$s""?" + "Cập nhật các mục %1$s, %2$s%3$s trong ""%4$s""?" "Lưu" "Không, cảm ơn" "Để sau" diff --git a/core/res/res/values-watch/config.xml b/core/res/res/values-watch/config.xml index b0d9b670e0cba51ca637a71f3e6e6c8f600f64e1..4027f5c78035f71e8227a1b768a51ea3a249a97d 100644 --- a/core/res/res/values-watch/config.xml +++ b/core/res/res/values-watch/config.xml @@ -77,4 +77,13 @@ 1 + + + true + + + true diff --git a/core/res/res/values-watch/dimens_material.xml b/core/res/res/values-watch/dimens_material.xml index 40673c1aa58499ad10ec7cd2d9d6de5643410df2..2ab2d91058e281ffa4b04c9e8b55fb5e61f6c555 100644 --- a/core/res/res/values-watch/dimens_material.xml +++ b/core/res/res/values-watch/dimens_material.xml @@ -58,4 +58,7 @@ 0dp 0dp 0dp + + + 2dp diff --git a/core/res/res/values-watch/themes_device_defaults.xml b/core/res/res/values-watch/themes_device_defaults.xml index c4c1ed9b9998d822b4adc78c790d98754ed3e724..df8158dbb6c803879c02b206bf4722c0cf766f2b 100644 --- a/core/res/res/values-watch/themes_device_defaults.xml +++ b/core/res/res/values-watch/themes_device_defaults.xml @@ -52,6 +52,7 @@ a similar way. + + - - + + + diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 955cbe793e36bcce5e30854f663eef1b11c74817..f900b59c8eba0d3cddc3d99d1a372540bdb849bc 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -274,7 +274,7 @@ "实体键盘" "安全性" "车载模式" - "帐号状态" + "账号状态" "开发者消息" "重要开发者消息" "更新" @@ -448,9 +448,9 @@ "允许应用发送置顶广播,这类广播在广播结束后仍会继续存在。过度使用这项功能可能会导致 Android TV 设备使用过多内存,从而降低其运行速度或稳定性。" "允许该应用发送持久广播消息,此类消息在广播结束后仍会保留。过度使用可能会导致手机使用过多内存,从而降低其速度或稳定性。" "读取联系人" - "允许该应用读取您的平板电脑上存储的联系人相关数据。应用还将有权访问您的平板电脑上已创建联系人的帐号,其中可能包括您已安装的应用所创建的帐号。此权限允许应用保存您的联系人数据,而恶意应用可能会在您不知情的情况下分享联系人数据。" - "允许该应用读取您的 Android TV 设备上存储的联系人相关数据。应用还将有权访问您的 Android TV 设备上已创建联系人的帐号,其中可能包括您已安装的应用所创建的帐号。此权限允许应用保存您的联系人数据,而恶意应用可能会在您不知情的情况下分享联系人数据。" - "允许该应用读取您手机上存储的联系人相关数据。应用还将有权访问您的手机上已创建联系人的帐号,其中可能包括您已安装的应用所创建的帐号。此权限允许应用保存您的联系人数据,而恶意应用可能会在您不知情的情况下分享联系人数据。" + "允许该应用读取您的平板电脑上存储的联系人相关数据。应用还将有权访问您的平板电脑上已创建联系人的账号,其中可能包括您已安装的应用所创建的账号。此权限允许应用保存您的联系人数据,而恶意应用可能会在您不知情的情况下分享联系人数据。" + "允许该应用读取您的 Android TV 设备上存储的联系人相关数据。应用还将有权访问您的 Android TV 设备上已创建联系人的账号,其中可能包括您已安装的应用所创建的账号。此权限允许应用保存您的联系人数据,而恶意应用可能会在您不知情的情况下分享联系人数据。" + "允许该应用读取您手机上存储的联系人相关数据。应用还将有权访问您的手机上已创建联系人的账号,其中可能包括您已安装的应用所创建的账号。此权限允许应用保存您的联系人数据,而恶意应用可能会在您不知情的情况下分享联系人数据。" "修改您的通讯录" "允许该应用修改您平板电脑上存储的联系人相关数据。此权限允许应用删除联系人数据。" "允许该应用修改您的 Android TV 设备上存储的联系人相关数据。此权限允许应用删除联系人数据。" @@ -542,10 +542,10 @@ "允许应用更改平板电脑的时区。" "允许应用更改 Android TV 设备的时区。" "允许应用更改手机的时区。" - "查找设备上的帐号" - "允许该应用获取平板电脑已知的帐号列表,其中可能包括由已安装的应用创建的所有帐号。" - "允许应用获取 Android TV 设备已知的帐号列表,其中可能包括您已安装的应用所创建的任何帐号。" - "允许该应用获取手机已知的帐号列表,其中可能包括由已安装的应用创建的所有帐号。" + "查找设备上的账号" + "允许该应用获取平板电脑已知的账号列表,其中可能包括由已安装的应用创建的所有账号。" + "允许应用获取 Android TV 设备已知的账号列表,其中可能包括您已安装的应用所创建的任何账号。" + "允许该应用获取手机已知的账号列表,其中可能包括由已安装的应用创建的所有账号。" "查看网络连接" "允许该应用查看网络连接的相关信息,例如存在和连接的网络。" "拥有完全的网络访问权限" @@ -618,8 +618,6 @@ "使用生物识别或屏幕锁定凭据" "验证是您本人在操作" "使用生物识别验证身份才能继续" - "如需继续操作,请使用指纹验证身份" - "如需继续操作,请刷脸验证身份" "使用生物识别或屏幕锁定凭据验证身份,才能继续操作" "生物识别硬件无法使用" "身份验证已取消" @@ -645,6 +643,7 @@ "未能识别指纹" "未能识别指纹" + "无法识别人脸。请改用指纹。" "已验证指纹" "面孔已验证" "面孔已验证,请按确认按钮" @@ -670,14 +669,14 @@ "出了点问题。请重试。" "指纹图标" + "设备解锁" + "试试其他解锁方式" + "当系统无法识别您的指纹时,例如当您的手指潮湿时,可以使用人脸解锁功能" + "当系统无法识别您的面孔时,例如当光线不足时,可以使用指纹解锁功能" "人脸解锁" "人脸解锁存在问题" "请点按以删除您的脸部模型,然后再添加您的脸部模型" - "设置人脸解锁" - "脸部对准手机即可将其解锁" "如需使用人脸解锁功能,请在“设置”>“隐私权”中开启""摄像头使用权限" - "设置更多解锁方式" - "点按即可添加指纹" "指纹解锁" "无法使用指纹传感器" "请联系维修服务提供商。" @@ -732,11 +731,11 @@ "出了点问题,请重试。" "面孔图标" "读取同步设置" - "允许该应用读取某个帐号的同步设置。例如,此权限可确定“联系人”应用是否与某个帐号同步。" + "允许该应用读取某个账号的同步设置。例如,此权限可确定“联系人”应用是否与某个账号同步。" "启用和停用同步" - "允许该应用修改某个帐号的同步设置。例如,此权限可用于在“联系人”应用与某个帐号之间启用同步。" + "允许该应用修改某个账号的同步设置。例如,此权限可用于在“联系人”应用与某个账号之间启用同步。" "读取同步统计信息" - "允许该应用读取某个帐号的同步统计信息,包括同步活动历史记录和同步数据量。" + "允许该应用读取某个账号的同步统计信息,包括同步活动历史记录和同步数据量。" "读取您共享存储空间中的内容" "允许该应用读取您共享存储空间中的内容。" "从共享存储空间读取音频文件" @@ -1002,7 +1001,7 @@ "您已连续 %1$d 次输错密码。\n\n请在 %2$d 秒后重试。" "您已经%1$d次输错了PIN码。\n\n请在%2$d秒后重试。" "您已连续 %1$d 次画错解锁图案。如果再尝试 %2$d 次后仍不成功,系统就会要求您使用自己的 Google 登录信息解锁平板电脑。\n\n请在 %3$d 秒后重试。" - "您已画错解锁图案 %1$d 次。如果再尝试 %2$d 次后仍不成功,系统就会要求您登录 Google 帐号来解锁 Android TV 设备。\n\n 请在 %3$d 秒后重试。" + "您已画错解锁图案 %1$d 次。如果再尝试 %2$d 次后仍不成功,系统就会要求您登录 Google 账号来解锁 Android TV 设备。\n\n 请在 %3$d 秒后重试。" "您已连续 %1$d 次画错解锁图案。如果再尝试 %2$d 次后仍不成功,系统就会要求您使用自己的 Google 登录信息解锁手机。\n\n请在 %3$d 秒后重试。" "您已经 %1$d 次错误地尝试解锁平板电脑。如果再尝试 %2$d 次后仍不成功,平板电脑将恢复为出厂默认设置,所有用户数据都会丢失。" "您尝试解锁 Android TV 设备失败的次数已达 %1$d 次。如果再尝试 %2$d 次后仍不成功,您的 Android TV 设备就会恢复出厂设置,而且所有用户数据都会丢失。" @@ -1012,9 +1011,9 @@ "您已经%d次错误地尝试解锁手机。手机现在将恢复为出厂默认设置。" "%d秒后重试。" "忘记了图案?" - "帐号解锁" + "账号解锁" "图案尝试次数过多" - "要解除锁定,请使用您的 Google 帐号登录。" + "要解除锁定,请使用您的 Google 账号登录。" "用户名(电子邮件)" "密码" "登录" @@ -1482,14 +1481,14 @@ "执行" "拨打电话\n%s" "创建电话号码为\n%s 的联系人" - "以下一个或多个应用请求获得相应权限,以便在当前和以后访问您的帐号。" + "以下一个或多个应用请求获得相应权限,以便在当前和以后访问您的账号。" "您是否同意此请求?" "访问权限请求" "允许" "拒绝" "权限请求" - "应用对帐号 %s\n 提出权限请求。" - "“%1$s”请求获得以下帐号的访问权限:\n%2$s。" + "应用对账号 %s\n 提出权限请求。" + "“%1$s”请求获得以下账号的访问权限:\n%2$s。" "您目前是在工作资料之外使用此应用" "您目前是在工作资料内使用此应用" "输入法" @@ -1535,13 +1534,13 @@ "是" "否" "超出删除限制" - "帐号 %3$s 在进行“%2$s”同步时删除了 %1$d 项内容。您要如何处理这些删除的内容?" + "账号 %3$s 在进行“%2$s”同步时删除了 %1$d 项内容。您要如何处理这些删除的内容?" "删除这些内容" "撤消删除" "目前不进行任何操作" - "选择帐号" - "添加帐号" - "添加帐号" + "选择账号" + "添加账号" + "添加账号" "增大" "减小" "%s 触摸并按住。" @@ -1665,13 +1664,13 @@ "请重新输入正确的PUK码。如果尝试错误次数过多,SIM卡将永久停用。" "PIN 码不匹配" "图案尝试次数过多" - "要解锁,请登录您的 Google 帐号。" + "要解锁,请登录您的 Google 账号。" "用户名(电子邮件地址)" "密码" "登录" "用户名或密码无效。" "忘记了用户名或密码?\n请访问 ""google.com/accounts/recovery""。" - "正在检查帐号…" + "正在检查账号…" "您已经%1$d次输错了PIN码。\n\n请在%2$d秒后重试。" "您已连续 %1$d 次输错密码。\n\n请在 %2$d 秒后重试。" "您已连续 %1$d 次画错解锁图案。\n\n请在 %2$d 秒后重试。" @@ -1681,9 +1680,9 @@ "您已经%d次错误地尝试解锁平板电脑。平板电脑现在将恢复为出厂默认设置。" "您尝试解锁 Android TV 设备失败的次数已达 %d 次。您的 Android TV 设备现在将恢复出厂设置。" "您已经%d次错误地尝试解锁手机。手机现在将恢复为出厂默认设置。" - "您已连续 %1$d 次画错解锁图案。如果再尝试 %2$d 次后仍不成功,系统就会要求您使用自己的电子邮件帐号解锁平板电脑。\n\n请在 %3$d 秒后重试。" - "您已画错解锁图案 %1$d 次。如果再尝试 %2$d 次后仍不成功,系统就会要求您使用电子邮件帐号解锁 Android TV 设备。\n\n 请在 %3$d 秒后重试。" - "您已连续 %1$d 次画错解锁图案。如果再尝试 %2$d 次后仍不成功,系统就会要求您使用自己的电子邮件帐号解锁手机。\n\n请在 %3$d 秒后重试。" + "您已连续 %1$d 次画错解锁图案。如果再尝试 %2$d 次后仍不成功,系统就会要求您使用自己的电子邮件账号解锁平板电脑。\n\n请在 %3$d 秒后重试。" + "您已画错解锁图案 %1$d 次。如果再尝试 %2$d 次后仍不成功,系统就会要求您使用电子邮件账号解锁 Android TV 设备。\n\n 请在 %3$d 秒后重试。" + "您已连续 %1$d 次画错解锁图案。如果再尝试 %2$d 次后仍不成功,系统就会要求您使用自己的电子邮件账号解锁手机。\n\n请在 %3$d 秒后重试。" " — " "删除" "要将音量调高到建议的音量以上吗?\n\n长时间保持高音量可能会损伤听力。" @@ -1733,7 +1732,7 @@ "放大功能" "当前用户是%1$s。" "正在切换为%1$s…" - "正在将%1$s退出帐号…" + "正在将%1$s退出账号…" "机主" "访客" "错误" @@ -1868,6 +1867,7 @@ "第二个工作%1$s" "第三个工作%1$s" "%1$s克隆" + "私人“%1$s”" "取消时要求输入PIN码" "取消时要求绘制解锁图案" "取消时要求输入密码" @@ -1938,7 +1938,7 @@ "这些通知的重要程度由您来设置。" "这条通知涉及特定的人,因此被归为重要通知。" "自定义应用通知" - "允许%1$s使用 %2$s(目前已有用户使用此帐号)创建新用户吗?" + "允许%1$s使用 %2$s(目前已有用户使用此账号)创建新用户吗?" "允许%1$s使用 %2$s 创建新用户吗?" "添加受监管用户" "添加语言" @@ -2032,7 +2032,7 @@ "要在""%1$s""中更新吗?" "要在""%2$s""中更新%1$s吗?" "要在""%3$s""中更新%1$s%2$s吗?" - "要在""%4$s""中更新%1$s%2$s%3$s这些内容吗?" + "要在""%4$s""中更新%1$s%2$s%3$s吗?" "保存" "不用了" "以后再说" diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 899c314e5f11de49aaf5db6d0054ad917ac00dd3..7140539391e7833bb4720fc298cd250dccda6e85 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -618,8 +618,6 @@ "使用生物識別或螢幕鎖定" "驗證是你本人" "如要繼續操作,請使用使用生物識別驗證身分" - "如要繼續操作,請使用你的指紋驗證身分" - "如要繼續操作,請使用你的面孔驗證身分" "請使用生物識別或螢幕鎖定功能驗證身分,才能繼續操作" "無法使用生物識別硬件" "已取消驗證" @@ -645,6 +643,7 @@ "無法辨識指紋" "無法辨識指紋" + "無法辨識面孔,請改用指紋完成驗證。" "驗證咗指紋" "面孔已經驗證" "面孔已經驗證,請㩒一下 [確認]" @@ -670,14 +669,14 @@ "發生錯誤,請再試一次。" "指紋圖示" + "裝置解鎖" + "改用其他解鎖方式" + "當指紋無法識別 (如手指弄濕) 時使用面孔解鎖" + "當面孔無法識別 (如光線不足) 時使用指紋解鎖" "面孔解鎖" "「面孔解鎖」功能發生問題" "請輕按這裡刪除面部模型,然後再重新新增" - "設定「面孔解鎖」" - "直望手機即可解鎖" "如要使用「面孔解鎖」,請在 [設定] > [私隱] 開啟""相機存取權" - "設定更多解鎖方法" - "輕按即可新增指紋" "指紋解鎖" "無法使用指紋感應器" "請諮詢維修服務供應商。" @@ -1868,6 +1867,7 @@ "第二個工作%1$s" "第三個工作%1$s" "複製 %1$s" + "私人%1$s" "取消固定時必須輸入 PIN" "取消固定時必須提供解鎖圖案" "取消固定時必須輸入密碼" @@ -2032,7 +2032,7 @@ "要在 ""%1$s"" 中更新嗎?" "要在 ""%2$s"" 中更新%1$s嗎?" "要在 ""%3$s"" 中更新%1$s%2$s嗎?" - "要在 ""%4$s"" 中更新%1$s%2$s%3$s嗎?" + "要在 ""%4$s"" 中更新%1$s%2$s%3$s嗎?" "儲存" "不用了,謝謝" "暫時不要" diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 717e0460cd5176df5367860dc28945c9e871823b..61fe93977e9257e1b79c56d232f36ee86309b678 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -618,8 +618,6 @@ "使用生物特徵辨識或螢幕鎖定功能" "驗證你的身分" "如要繼續操作,請使用生物特徵辨識功能驗證身分" - "如要繼續操作,請使用指紋驗證身分" - "如要繼續操作,請使用臉孔驗證身分" "請使用生物特徵辨識或螢幕鎖定功能驗證身分,才能繼續操作" "無法使用生物特徵辨識硬體" "已取消驗證" @@ -645,6 +643,7 @@ "指紋辨識失敗" "指紋辨識失敗" + "無法辨識臉孔,請改用指紋完成驗證。" "指紋驗證成功" "臉孔驗證成功" "臉孔驗證成功,請按下 [確認] 按鈕" @@ -670,14 +669,14 @@ "發生錯誤,請再試一次。" "指紋圖示" + "裝置解鎖" + "試試其他解鎖方式" + "當指紋無法辨識時 (例如手指溼溼的),可使用人臉解鎖功能" + "當人臉無法辨識時 (例如光線不足),可使用指紋解鎖功能" "人臉解鎖" "人臉解鎖功能發生問題" "請輕觸這裡刪除臉部模型,然後再重新新增" - "設定人臉解鎖功能" - "看著手機就能解鎖" "如要使用人臉解鎖功能,請前往「設定」>「隱私權」開啟""攝影機存取權" - "設定更多解鎖方式" - "輕觸即可新增指紋" "指紋解鎖" "指紋感應器無法使用" "請洽詢維修供應商。" @@ -1868,6 +1867,7 @@ "第 2 項工作:%1$s" "第 3 項工作:%1$s" "複製%1$s" + "私人 %1$s" "取消固定時必須輸入 PIN" "取消固定時必須畫出解鎖圖案" "取消固定時必須輸入密碼" @@ -2032,7 +2032,7 @@ "要更新 ""%1$s"" 中的內容嗎?" "要更新 ""%2$s"" 中的%1$s嗎?" "要更新 ""%3$s"" 中的%1$s%2$s嗎?" - "要更新 ""%4$s"" 中的%1$s%2$s%3$s嗎?" + "要更新 ""%4$s"" 中的%1$s%2$s%3$s嗎?" "儲存" "不用了,謝謝" "暫時不要" diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index 88a35479f490a1c0b73d93287ec30058c8a9c008..77a41fce44e316ecd8bfae5bec1b328979a94528 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -618,8 +618,6 @@ "Sebenzisa i-biometrics noma ukukhiya isikrini" "Qinisekisa ukuthi nguwe" "Sebenzisa i-biometric yakho ukuze uqhubeke" - "Sebenzisa isigxivizo sakho somunwe ukuze uqhubeke" - "Sebenzisa ubuso bakho ukuze uqhubeke" "Sebenzisa i-biometric noma ukukhiya isikrini ukuze uqhubeke" "I-Biometric hardware ayitholakali" "Ukufakazela ubuqiniso kukhanseliwe" @@ -645,6 +643,7 @@ "Isigxivizo somunwe asaziwa" "Isigxivizo somunwe asaziwa" + "Ayibazi ubuso. Sebenzisa izigxivizo zeminwe kunalokho." "Izigxivizo zeminwe zigunyaziwe" "Ubuso bufakazelwe ubuqiniso" "Ukuqinisekiswa kobuso, sicela ucindezele okuthi qinisekisa" @@ -670,14 +669,14 @@ "Kunento engahambanga kahle. Zama futhi." "Isithonjana sezigxivizo zeminwe" + "Ukuvula idivayisi" + "Zama enye indlela yokuvula" + "Sebenzisa i-Face Unlock uma isigxivizo somunwe wakho singaqashelwa, njengalapho iminwe yakho imanzi" + "Sebenzisa i-Fingerprint Unlock uma ubuso bakho bungaqashelwa, njengalapho kungenakukhanya okwanele" "Ukuvula ngobuso" "Inkinga Ngokuvula ngobuso" "Thepha ukuze usule imodeli yakho yobuso, bese wengeza futhi ubuso" - "Setha Ukuvula ngobuso" - "Vula ifoni yakho ngokuyibheka" "Ukuze usebenzise Ukuvula ngobuso, vula ""Ukufinyelela kwekhamera"" kokuthi Amasethingi > Ubumfihlo" - "Setha izindlela eziningi zokuvula" - "Thepha ukuze ungeze izigxivizo zomunwe" "Ukuvula ngesigxivizo somunwe" "Ayikwazi ukusebenzisa inzwa yesigxivizo somunwe" "Vakashela umhlinzeki wokulungisa." @@ -1868,6 +1867,7 @@ "Umsebenzi wesibili %1$s" "Umsebenzi wesithathu %1$s" "I-Clone %1$s" + "Okuyimfihlo %1$s" "Cela iphinikhodi ngaphambi kokuphina" "Cela iphethini yokuvula ngaphambi kokususa ukuphina" "Cela iphasiwedi ngaphambi kokususa ukuphina" @@ -2032,7 +2032,7 @@ "Buyekeza ku-""%1$s""?" "Buyekeza i-%1$s ku-""%2$s""?" "Buyekeza i-%1$s ne-%2$s ku-""%3$s""?" - "Buyekeza lezi zinto ku-""%4$s"": %1$s, %2$s, ne-%3$s ?" + "Buyekeza lezi zinto ku-""%4$s"": %1$s, %2$s, ne-%3$s?" "Londoloza" "Cha ngiyabonga" "Hhayi manje" diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index d80cfa340dcb6a0c9b1d0ff49f5ecda5871adc93..e54347fc2744a58ac1e7cf66d5c530626b952794 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -2465,7 +2465,7 @@ duration of the vector animation automatically. --> - @@ -3537,11 +3537,11 @@ + See {@link android.view.View#setAutoHandwritingEnabled}. +

    The default value of this flag is configurable by the device manufacturer. --> + shrunk or stretched to smooth its appearance. Default value is true. --> - + transition from one VR activity to another. --> - @@ -830,7 +832,7 @@ @@ -1328,7 +1330,7 @@

    Such a document is any kind of item for which an application may want to maintain multiple simultaneous instances. Examples might be text files, web pages, spreadsheets, or emails. Each such document will be in a separate - task in the recent taskss list. + task in the recent tasks list.

    This attribute is equivalent to adding the flag {@link android.content.Intent#FLAG_ACTIVITY_NEW_DOCUMENT} to every Intent used to launch @@ -1771,7 +1773,7 @@ - #FFFFFF - #FFFFFF - #202124 #5F6368 diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 72333fb5a8785edea9aeef7ff4ecf1c4c0e167c9..2e2ec5ba52b30c58340921e05ef2761c300129ff 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -45,9 +45,7 @@ @string/status_bar_phone_signal @string/status_bar_secure @string/status_bar_managed_profile - @string/status_bar_cast @string/status_bar_connected_display - @string/status_bar_screen_record @string/status_bar_vpn @string/status_bar_bluetooth @string/status_bar_camera @@ -56,6 +54,8 @@ @string/status_bar_mute @string/status_bar_volume @string/status_bar_zen + @string/status_bar_screen_record + @string/status_bar_cast @string/status_bar_ethernet @string/status_bar_wifi @string/status_bar_hotspot @@ -542,6 +542,9 @@ true false + + false @bool/config_setColorTransformAccelerated + + false + -0.4429953456 -0.2434077725 @@ -1182,6 +1188,9 @@ --> 0 + + false + 0 + + - 4dp + 2dp @@ -3036,14 +3048,15 @@ on the headphone/microphone jack. When false use the older uevent framework. --> false - + true - false @@ -3480,7 +3493,8 @@ - true + + false false @@ -5039,6 +5053,21 @@ 10.0 + + + 10.0 + 10.0 + + + + 0.0 + 1.0 + + 6500.0 + + 6500.0 + + + + + + + 8000.0 + + 8000.0 + @@ -5376,7 +5449,11 @@ fingerprint and face. If a dual-modality device only enrolled a single biometric and experiences high FRR (above threshold), system notification will be sent to encourage user to enroll the other eligible biometric. --> - 30% + 25% + + + false + + + + + @@ -5637,13 +5721,13 @@ - 24dp + 38dp - 0.75 + 0.54 true + + true + + true + 0 @@ -6465,8 +6554,19 @@ 3000 - - 4 + + + + + + false - - true - - true - false @@ -6604,4 +6699,16 @@ false + + + false + + + false + + + false diff --git a/core/res/res/values/config_battery_stats.xml b/core/res/res/values/config_battery_stats.xml new file mode 100644 index 0000000000000000000000000000000000000000..8fb48bcb894763f5dbf75fe6f6699d2734e58e73 --- /dev/null +++ b/core/res/res/values/config_battery_stats.xml @@ -0,0 +1,34 @@ + + + + + + + + + true + + true + + + 60000 + diff --git a/core/res/res/values/config_telephony.xml b/core/res/res/values/config_telephony.xml index bda194add7594eb860f90f2fe2a5570a2040e167..9bf3ce4268dd0d0944c2531864e654cef6679985 100644 --- a/core/res/res/values/config_telephony.xml +++ b/core/res/res/values/config_telephony.xml @@ -73,7 +73,7 @@ CarrierConfigManager#KEY_AUTO_DATA_SWITCH_RAT_SIGNAL_SCORE_STRING_ARRAY. If 0, the device always switch to the higher score SIM. If < 0, the network type and signal strength based auto switch is disabled. --> - 3000 + -1 + 180000 + + + + 30000 + + + + 180000 + + + + + + + false + + + Chromecast + Chromecast HD + SHIELD + Roku + Roku Express 4 + Home Theater + Fire TV Stick + PlayStation 5 + NintendoSwitch + + + + Chromecast + SHIELD + Roku + Apple + Fire TV + PlayStation + Nintendo + + diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml index c5aa8b05b948905660d3449a523d65378c69a523..fac6aac1db169d066505c1c4e842106ba87ba2d9 100644 --- a/core/res/res/values/strings.xml +++ b/core/res/res/values/strings.xml @@ -1444,6 +1444,11 @@ This app can receive callbacks when any camera device is being opened (by what application) or closed. + + Allow an application or service to access camera as Headless System User. + + This app can access camera as Headless System User. + control vibration @@ -1895,22 +1900,22 @@ Fingerprint icon + + Device unlock + + Try another way to unlock + + Use Face Unlock when your fingerprint isn\'t recognized, like when your fingers are wet + + Use Fingerprint Unlock when your face isn\'t recognized, like when there\'s not enough light Face Unlock Issue with Face Unlock Tap to delete your face model, then add your face again - - Set up Face Unlock - - Unlock your phone by looking at it To use Face Unlock, turn on Camera access in Settings > Privacy - - Set up more ways to unlock - - Tap to add a fingerprint Fingerprint Unlock @@ -5090,6 +5095,13 @@ --> Clone %1$s + + Private %1$s + -- @@ -5561,7 +5573,7 @@ - Update these items in %4$s: %1$s, %2$s, and %3$s ? + Update these items in %4$s: %1$s, %2$s, and %3$s? Save diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml index 164f713200ac4b6f8a2afcc0e974429e169d8fa5..13d04e53b508a3f121d4ddad813e3414ab10345d 100644 --- a/core/res/res/values/styles.xml +++ b/core/res/res/values/styles.xml @@ -1500,12 +1500,8 @@ please see styles_device_defaults.xml. google-sans-text-medium normal false - 6dp - 6dp - 16dp - 16dp - 8dp - 8dp + 24dp + 24dp diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java index 9aac694e41bfcee38dd269f743b3151f3dfabafb..04795768aefcecfc5d60f861a69f40fd180f3adb 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/ShellTaskOrganizer.java @@ -103,7 +103,7 @@ public class ShellTaskOrganizer extends TaskOrganizer implements default void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) {} /** Whether this task listener supports compat UI. */ default boolean supportCompatUI() { - // All TaskListeners should support compat UI except PIP. + // All TaskListeners should support compat UI except PIP and StageCoordinator. return true; } /** Attaches a child window surface to the task surface. */ 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 7e09c989e1b3ff157897fd810d8c8b1f8ea33ed6..85ea8097a2c1d26ded2d2b33b6b9cc8408186854 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 @@ -60,7 +60,6 @@ import java.util.concurrent.Executor; /** * Encapsulates the data and UI elements of a bubble. */ -@VisibleForTesting public class Bubble implements BubbleViewProvider { private static final String TAG = "Bubble"; @@ -852,7 +851,10 @@ public class Bubble implements BubbleViewProvider { return mAppIntent; } - boolean isAppBubble() { + /** + * Returns whether this bubble is from an app versus a notification. + */ + public boolean isAppBubble() { return mIsAppBubble; } @@ -971,9 +973,9 @@ public class Bubble implements BubbleViewProvider { pw.print(" suppressNotif: "); pw.println(shouldSuppressNotification()); pw.print(" autoExpand: "); pw.println(shouldAutoExpand()); pw.print(" isDismissable: "); pw.println(mIsDismissable); - pw.println(" bubbleMetadataFlagListener null: " + (mBubbleMetadataFlagListener == null)); + pw.println(" bubbleMetadataFlagListener null?: " + (mBubbleMetadataFlagListener == null)); if (mExpandedView != null) { - mExpandedView.dump(pw); + mExpandedView.dump(pw, " "); } } 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 8400ddec0af5dd85f8dc55a19c03bc6f12a21002..f259902e9565678e0b8c8971e0ef4f307ebb7715 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 @@ -16,7 +16,6 @@ package com.android.wm.shell.bubbles; -import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.service.notification.NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_DELETED; import static android.service.notification.NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_UPDATED; import static android.service.notification.NotificationListenerService.REASON_CANCEL; @@ -57,6 +56,7 @@ import android.content.pm.ShortcutInfo; import android.content.pm.UserInfo; import android.content.res.Configuration; import android.graphics.PixelFormat; +import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.Icon; import android.os.Binder; @@ -115,6 +115,7 @@ import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.taskview.TaskView; import com.android.wm.shell.taskview.TaskViewTransitions; +import com.android.wm.shell.transition.Transitions; import java.io.PrintWriter; import java.util.ArrayList; @@ -143,6 +144,8 @@ public class BubbleController implements ConfigurationChangeListener, // Should match with PhoneWindowManager private static final String SYSTEM_DIALOG_REASON_KEY = "reason"; private static final String SYSTEM_DIALOG_REASON_GESTURE_NAV = "gestureNav"; + private static final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps"; + private static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey"; /** * Common interface to send updates to bubble views. @@ -182,6 +185,7 @@ public class BubbleController implements ConfigurationChangeListener, private final ShellTaskOrganizer mTaskOrganizer; private final DisplayController mDisplayController; private final TaskViewTransitions mTaskViewTransitions; + private final Transitions mTransitions; private final SyncTransactionQueue mSyncQueue; private final ShellController mShellController; private final ShellCommandHandler mShellCommandHandler; @@ -282,6 +286,7 @@ public class BubbleController implements ConfigurationChangeListener, @ShellMainThread Handler mainHandler, @ShellBackgroundThread ShellExecutor bgExecutor, TaskViewTransitions taskViewTransitions, + Transitions transitions, SyncTransactionQueue syncQueue, IWindowManager wmService, BubbleProperties bubbleProperties) { @@ -317,6 +322,7 @@ public class BubbleController implements ConfigurationChangeListener, com.android.internal.R.dimen.importance_ring_stroke_width)); mDisplayController = displayController; mTaskViewTransitions = taskViewTransitions; + mTransitions = transitions; mOneHandedOptional = oneHandedOptional; mDragAndDropController = dragAndDropController; mSyncQueue = syncQueue; @@ -416,23 +422,9 @@ public class BubbleController implements ConfigurationChangeListener, } }, mMainHandler); - mTaskStackListener.addListener(new TaskStackListenerCallback() { - @Override - public void onTaskMovedToFront(int taskId) { - mMainExecutor.execute(() -> { - int expandedId = INVALID_TASK_ID; - if (mStackView != null && mStackView.getExpandedBubble() != null - && isStackExpanded() - && !mStackView.isExpansionAnimating() - && !mStackView.isSwitchAnimating()) { - expandedId = mStackView.getExpandedBubble().getTaskId(); - } - if (expandedId != INVALID_TASK_ID && expandedId != taskId) { - mBubbleData.setExpanded(false); - } - }); - } + mTransitions.registerObserver(new BubblesTransitionObserver(this, mBubbleData)); + mTaskStackListener.addListener(new TaskStackListenerCallback() { @Override public void onActivityRestartAttempt(ActivityManager.RunningTaskInfo task, boolean homeTaskVisible, boolean clearedTask, boolean wasVisible) { @@ -883,8 +875,10 @@ public class BubbleController implements ConfigurationChangeListener, String action = intent.getAction(); String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY); - if ((Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action) - && SYSTEM_DIALOG_REASON_GESTURE_NAV.equals(reason)) + boolean validReasonToCollapse = SYSTEM_DIALOG_REASON_RECENT_APPS.equals(reason) + || SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason) + || SYSTEM_DIALOG_REASON_GESTURE_NAV.equals(reason); + if ((Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action) && validReasonToCollapse) || Intent.ACTION_SCREEN_OFF.equals(action)) { mMainExecutor.execute(() -> collapseStack()); } @@ -1070,6 +1064,15 @@ public class BubbleController implements ConfigurationChangeListener, } } + /** + * Show bubble bar user education relative to the reference position. + * @param position the reference position in Screen coordinates. + */ + public void showUserEducation(Point position) { + if (mLayerView == null) return; + mLayerView.showUserEducation(position); + } + @VisibleForTesting public boolean isBubbleNotificationSuppressedFromShade(String key, String groupKey) { boolean isSuppressedBubble = (mBubbleData.hasAnyBubbleWithKey(key) @@ -1121,6 +1124,16 @@ public class BubbleController implements ConfigurationChangeListener, } } + /** + * Expands the stack if the selected bubble is present. This is currently used when user + * education view is clicked to expand the selected bubble. + */ + public void expandStackWithSelectedBubble() { + if (mBubbleData.getSelectedBubble() != null) { + mBubbleData.setExpanded(true); + } + } + /** * Expands and selects the provided bubble as long as it already exists in the stack or the * overflow. This is currently used when opening a bubble via clicking on a conversation widget. @@ -1737,7 +1750,8 @@ public class BubbleController implements ConfigurationChangeListener, + " expandedChanged=" + update.expandedChanged + " selectionChanged=" + update.selectionChanged + " suppressed=" + (update.suppressedBubble != null) - + " unsuppressed=" + (update.unsuppressedBubble != null)); + + " unsuppressed=" + (update.unsuppressedBubble != null) + + " shouldShowEducation=" + update.shouldShowEducation); } ensureBubbleViewsAndWindowCreated(); @@ -1961,6 +1975,15 @@ public class BubbleController implements ConfigurationChangeListener, } } + /** + * Returns whether the stack is animating or not. + */ + public boolean isStackAnimating() { + return mStackView != null + && (mStackView.isExpansionAnimating() + || mStackView.isSwitchAnimating()); + } + @VisibleForTesting @Nullable public BubbleStackView getStackView() { @@ -1989,13 +2012,20 @@ public class BubbleController implements ConfigurationChangeListener, * Description of current bubble state. */ private void dump(PrintWriter pw, String prefix) { - pw.println("BubbleController state:"); + pw.print(prefix); pw.println("BubbleController state:"); + pw.print(prefix); pw.println(" currentUserId= " + mCurrentUserId); + pw.print(prefix); pw.println(" isStatusBarShade= " + mIsStatusBarShade); + pw.print(prefix); pw.println(" isShowingAsBubbleBar= " + isShowingAsBubbleBar()); + pw.println(); + mBubbleData.dump(pw); pw.println(); + if (mStackView != null) { mStackView.dump(pw); } pw.println(); + mImpl.mCachedState.dump(pw); } @@ -2146,6 +2176,12 @@ public class BubbleController implements ConfigurationChangeListener, public void onBubbleDrag(String bubbleKey, boolean isBeingDragged) { mMainExecutor.execute(() -> mController.onBubbleDrag(bubbleKey, isBeingDragged)); } + + @Override + public void showUserEducation(int positionX, int positionY) { + mMainExecutor.execute(() -> + mController.showUserEducation(new Point(positionX, positionY))); + } } private class BubblesImpl implements Bubbles { @@ -2244,8 +2280,7 @@ public class BubbleController implements ConfigurationChangeListener, pw.println("mIsStackExpanded: " + mIsStackExpanded); pw.println("mSelectedBubbleKey: " + mSelectedBubbleKey); - pw.print("mSuppressedBubbleKeys: "); - pw.println(mSuppressedBubbleKeys.size()); + pw.println("mSuppressedBubbleKeys: " + mSuppressedBubbleKeys.size()); for (String key : mSuppressedBubbleKeys) { pw.println(" suppressing: " + key); } 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 cc8f50e09fcba222153e9c1449710ee6c6baac01..595a4afbfc8635fe39617d29ac1e31e54e4a9857 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 @@ -77,6 +77,7 @@ public class BubbleData { boolean orderChanged; boolean suppressedSummaryChanged; boolean expanded; + boolean shouldShowEducation; @Nullable BubbleViewProvider selectedBubble; @Nullable Bubble addedBubble; @Nullable Bubble updatedBubble; @@ -126,6 +127,7 @@ public class BubbleData { bubbleBarUpdate.expandedChanged = expandedChanged; bubbleBarUpdate.expanded = expanded; + bubbleBarUpdate.shouldShowEducation = shouldShowEducation; if (selectionChanged) { bubbleBarUpdate.selectedBubbleKey = selectedBubble != null ? selectedBubble.getKey() @@ -165,6 +167,7 @@ public class BubbleData { */ BubbleBarUpdate getInitialState() { BubbleBarUpdate bubbleBarUpdate = new BubbleBarUpdate(); + bubbleBarUpdate.shouldShowEducation = shouldShowEducation; for (int i = 0; i < bubbles.size(); i++) { bubbleBarUpdate.currentBubbleList.add(bubbles.get(i).asBubbleBarBubble()); } @@ -187,6 +190,7 @@ public class BubbleData { private final Context mContext; private final BubblePositioner mPositioner; + private final BubbleEducationController mEducationController; private final Executor mMainExecutor; /** Bubbles that are actively in the stack. */ private final List mBubbles; @@ -233,10 +237,11 @@ public class BubbleData { private HashMap mSuppressedGroupKeys = new HashMap<>(); public BubbleData(Context context, BubbleLogger bubbleLogger, BubblePositioner positioner, - Executor mainExecutor) { + BubbleEducationController educationController, Executor mainExecutor) { mContext = context; mLogger = bubbleLogger; mPositioner = positioner; + mEducationController = educationController; mMainExecutor = mainExecutor; mOverflow = new BubbleOverflow(context, positioner); mBubbles = new ArrayList<>(); @@ -447,6 +452,7 @@ public class BubbleData { if (bubble.shouldAutoExpand()) { bubble.setShouldAutoExpand(false); setSelectedBubbleInternal(bubble); + if (!mExpanded) { setExpandedInternal(true); } @@ -877,6 +883,9 @@ public class BubbleData { private void dispatchPendingChanges() { if (mListener != null && mStateChange.anythingChanged()) { + mStateChange.shouldShowEducation = mSelectedBubble != null + && mEducationController.shouldShowStackEducation(mSelectedBubble) + && !mExpanded; mListener.applyUpdate(mStateChange); } mStateChange = new Update(mBubbles, mOverflowBubbles); @@ -1231,29 +1240,30 @@ public class BubbleData { * Description of current bubble data state. */ public void dump(PrintWriter pw) { - pw.print("selected: "); + pw.println("BubbleData state:"); + pw.print(" selected: "); pw.println(mSelectedBubble != null ? mSelectedBubble.getKey() : "null"); - pw.print("expanded: "); + pw.print(" expanded: "); pw.println(mExpanded); - pw.print("stack bubble count: "); + pw.print("Stack bubble count: "); pw.println(mBubbles.size()); for (Bubble bubble : mBubbles) { bubble.dump(pw); } - pw.print("overflow bubble count: "); + pw.print("Overflow bubble count: "); pw.println(mOverflowBubbles.size()); for (Bubble bubble : mOverflowBubbles) { bubble.dump(pw); } - pw.print("summaryKeys: "); + pw.print("SummaryKeys: "); pw.println(mSuppressedGroupKeys.size()); for (String key : mSuppressedGroupKeys.keySet()) { - pw.println(" suppressing: " + key); + pw.println(" suppressing: " + key); } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDebugConfig.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDebugConfig.java index 250e010f4d6938fc1e20504a71ab1faee0426194..f56b1712c5c19809dc0520b5e7953ebd758d91e6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDebugConfig.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDebugConfig.java @@ -44,7 +44,7 @@ public class BubbleDebugConfig { static final boolean DEBUG_BUBBLE_EXPANDED_VIEW = false; static final boolean DEBUG_EXPERIMENTS = true; static final boolean DEBUG_OVERFLOW = false; - static final boolean DEBUG_USER_EDUCATION = false; + public static final boolean DEBUG_USER_EDUCATION = false; static final boolean DEBUG_POSITIONER = false; public static final boolean DEBUG_COLLAPSE_ANIMATOR = false; public static boolean DEBUG_EXPANDED_VIEW_DRAGGING = false; @@ -52,6 +52,11 @@ public class BubbleDebugConfig { private static final boolean FORCE_SHOW_USER_EDUCATION = false; private static final String FORCE_SHOW_USER_EDUCATION_SETTING = "force_show_bubbles_user_education"; + /** + * When set to true, bubbles user education flow never shows up. + */ + private static final String FORCE_HIDE_USER_EDUCATION_SETTING = + "force_hide_bubbles_user_education"; /** * @return whether we should force show user education for bubbles. Used for debugging & demos. @@ -62,22 +67,35 @@ public class BubbleDebugConfig { return FORCE_SHOW_USER_EDUCATION || forceShow; } + /** + * @return whether we should never show user education for bubbles. Used in tests. + */ + static boolean neverShowUserEducation(Context context) { + return Settings.Secure.getInt(context.getContentResolver(), + FORCE_HIDE_USER_EDUCATION_SETTING, 0) != 0; + } + static String formatBubblesString(List bubbles, BubbleViewProvider selected) { StringBuilder sb = new StringBuilder(); - for (Bubble bubble : bubbles) { + for (int i = 0; i < bubbles.size(); i++) { + Bubble bubble = bubbles.get(i); if (bubble == null) { - sb.append(" !!!!!\n"); + sb.append(" !!!!!"); } else { boolean isSelected = (selected != null - && selected.getKey() != BubbleOverflow.KEY + && !BubbleOverflow.KEY.equals(selected.getKey()) && bubble == selected); String arrow = isSelected ? "=>" : " "; - sb.append(String.format("%s Bubble{act=%12d, showInShade=%d, key=%s}\n", + + sb.append(String.format("%s Bubble{act=%12d, showInShade=%d, key=%s}", arrow, bubble.getLastActivity(), (bubble.showInShade() ? 1 : 0), bubble.getKey())); } + if (i != bubbles.size() - 1) { + sb.append("\n"); + } } return sb.toString(); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt new file mode 100644 index 0000000000000000000000000000000000000000..e57f02c71e44dc7487dc62f702cc929a2d10b3c3 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleEducationController.kt @@ -0,0 +1,74 @@ +/* + * Copyright (C) 2023 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.wm.shell.bubbles + +import android.content.Context +import android.util.Log +import androidx.core.content.edit +import com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_USER_EDUCATION +import com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES +import com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME + +/** Manages bubble education flags. Provides convenience methods to check the education state */ +class BubbleEducationController(private val context: Context) { + private val prefs = context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE) + + /** Whether the user has seen the stack education */ + @get:JvmName(name = "hasSeenStackEducation") + var hasSeenStackEducation: Boolean + get() = prefs.getBoolean(PREF_STACK_EDUCATION, false) + set(value) = prefs.edit { putBoolean(PREF_STACK_EDUCATION, value) } + + /** Whether the user has seen the expanded view "manage" menu education */ + @get:JvmName(name = "hasSeenManageEducation") + var hasSeenManageEducation: Boolean + get() = prefs.getBoolean(PREF_MANAGED_EDUCATION, false) + set(value) = prefs.edit { putBoolean(PREF_MANAGED_EDUCATION, value) } + + /** Whether education view should show for the collapsed stack. */ + fun shouldShowStackEducation(bubble: BubbleViewProvider?): Boolean { + val shouldShow = bubble != null && + bubble.isConversationBubble && // show education for conversation bubbles only + (!hasSeenStackEducation || BubbleDebugConfig.forceShowUserEducation(context)) + logDebug("Show stack edu: $shouldShow") + return shouldShow + } + + /** Whether the educational view should show for the expanded view "manage" menu. */ + fun shouldShowManageEducation(bubble: BubbleViewProvider?): Boolean { + val shouldShow = bubble != null && + bubble.isConversationBubble && // show education for conversation bubbles only + (!hasSeenManageEducation || BubbleDebugConfig.forceShowUserEducation(context)) + logDebug("Show manage edu: $shouldShow") + return shouldShow + } + + private fun logDebug(message: String) { + if (DEBUG_USER_EDUCATION) { + Log.d(TAG, message) + } + } + + companion object { + private val TAG = if (TAG_WITH_CLASS_NAME) "BubbleEducationController" else TAG_BUBBLES + const val PREF_STACK_EDUCATION: String = "HasSeenBubblesOnboarding" + const val PREF_MANAGED_EDUCATION: String = "HasSeenBubblesManageOnboarding" + } +} + +/** Convenience extension method to check if the bubble is a conversation bubble */ +private val BubbleViewProvider.isConversationBubble: Boolean + get() = if (this is Bubble) isConversation else false diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java index e6986012dd885edd1e06f0f7bf885db9a3abdf13..37bcf1ddeac5019f07301caad16972bdf555c1ba 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleExpandedView.java @@ -1094,9 +1094,9 @@ public class BubbleExpandedView extends LinearLayout { /** * Description of current expanded view state. */ - public void dump(@NonNull PrintWriter pw) { - pw.print("BubbleExpandedView"); - pw.print(" taskId: "); pw.println(mTaskId); - pw.print(" stackView: "); pw.println(mStackView); + public void dump(@NonNull PrintWriter pw, @NonNull String prefix) { + pw.print(prefix); pw.println("BubbleExpandedView:"); + pw.print(prefix); pw.print(" taskId: "); pw.println(mTaskId); + pw.print(prefix); pw.print(" stackView: "); pw.println(mStackView); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePopupViewExt.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePopupViewExt.kt new file mode 100644 index 0000000000000000000000000000000000000000..bdb09e11d5ad911462c7dfd99d977258c328482c --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePopupViewExt.kt @@ -0,0 +1,47 @@ +/* + * Copyright (C) 2023 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.wm.shell.bubbles + +import android.graphics.Color +import com.android.wm.shell.R +import com.android.wm.shell.common.bubbles.BubblePopupDrawable +import com.android.wm.shell.common.bubbles.BubblePopupView + +/** + * A convenience method to setup the [BubblePopupView] with the correct config using local resources + */ +fun BubblePopupView.setup() { + val attrs = + context.obtainStyledAttributes( + intArrayOf( + com.android.internal.R.attr.materialColorSurface, + android.R.attr.dialogCornerRadius + ) + ) + + val res = context.resources + val config = + BubblePopupDrawable.Config( + color = attrs.getColor(0, Color.WHITE), + cornerRadius = attrs.getDimension(1, 0f), + contentPadding = res.getDimensionPixelSize(R.dimen.bubble_popup_padding), + arrowWidth = res.getDimension(R.dimen.bubble_popup_arrow_width), + arrowHeight = res.getDimension(R.dimen.bubble_popup_arrow_height), + arrowRadius = res.getDimension(R.dimen.bubble_popup_arrow_corner_radius) + ) + attrs.recycle() + setupBackground(config) +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java index 2c100653dae0ae03a88a9521dbef3187f7202c81..ea7053d8ee495b180292dcfc044e72cda3c3aae4 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubblePositioner.java @@ -653,14 +653,38 @@ public class BubblePositioner { } /** - * @return the stack position to use if we don't have a saved location or if user education - * is being shown. + * Returns whether the {@link #getRestingPosition()} is equal to the default start position + * initialized for bubbles, if {@code true} this means the user hasn't moved the bubble + * from the initial start position (or they haven't received a bubble yet). + */ + public boolean hasUserModifiedDefaultPosition() { + PointF defaultStart = getDefaultStartPosition(); + return mRestingStackPosition != null + && !mRestingStackPosition.equals(defaultStart); + } + + /** + * Returns the stack position to use if we don't have a saved location or if user education + * is being shown, for a normal bubble. */ public PointF getDefaultStartPosition() { - // Start on the left if we're in LTR, right otherwise. - final boolean startOnLeft = - mContext.getResources().getConfiguration().getLayoutDirection() - != LAYOUT_DIRECTION_RTL; + return getDefaultStartPosition(false /* isAppBubble */); + } + + /** + * The stack position to use if we don't have a saved location or if user education + * is being shown. + * + * @param isAppBubble whether this start position is for an app bubble or not. + */ + public PointF getDefaultStartPosition(boolean isAppBubble) { + final int layoutDirection = mContext.getResources().getConfiguration().getLayoutDirection(); + // Normal bubbles start on the left if we're in LTR, right otherwise. + // TODO (b/294284894): update language around "app bubble" here + // App bubbles start on the right in RTL, left otherwise. + final boolean startOnLeft = isAppBubble + ? layoutDirection == LAYOUT_DIRECTION_RTL + : layoutDirection != LAYOUT_DIRECTION_RTL; final RectF allowableStackPositionRegion = getAllowableStackPositionRegion( 1 /* default starts with 1 bubble */); if (isLargeScreen()) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java index da5974fe3dc240ced694a111bdf3857f0c1da920..c124b532b89d08317349540f15e25f849df08ee8 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleStackView.java @@ -25,6 +25,7 @@ import static com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_STACK_ import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES; import static com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME; import static com.android.wm.shell.bubbles.BubblePositioner.NUM_VISIBLE_WHEN_RESTING; +import static com.android.wm.shell.common.bubbles.BubbleConstants.BUBBLE_EXPANDED_SCRIM_ALPHA; import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_BUBBLES; import android.animation.Animator; @@ -46,7 +47,6 @@ import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; -import android.os.SystemProperties; import android.provider.Settings; import android.util.Log; import android.view.Choreographer; @@ -108,12 +108,6 @@ import java.util.stream.Collectors; */ public class BubbleStackView extends FrameLayout implements ViewTreeObserver.OnComputeInternalInsetsListener { - - // LINT.IfChange - public static final boolean ENABLE_FLING_TO_DISMISS_BUBBLE = - SystemProperties.getBoolean("persist.wm.debug.fling_to_dismiss_bubble", true); - // LINT.ThenChange(com/android/launcher3/taskbar/bubbles/BubbleDismissController.java) - private static final String TAG = TAG_WITH_CLASS_NAME ? "BubbleStackView" : TAG_BUBBLES; /** How far the flyout needs to be dragged before it's dismissed regardless of velocity. */ @@ -138,8 +132,6 @@ public class BubbleStackView extends FrameLayout private static final int EXPANDED_VIEW_ALPHA_ANIMATION_DURATION = 150; - private static final float SCRIM_ALPHA = 0.6f; - /** Minimum alpha value for scrim when alpha is being changed via drag */ private static final float MIN_SCRIM_ALPHA_FOR_DRAG = 0.2f; @@ -312,8 +304,7 @@ public class BubbleStackView extends FrameLayout String bubblesOnScreen = BubbleDebugConfig.formatBubblesString( getBubblesOnScreen(), getExpandedBubble()); - pw.print(" stack visibility : "); pw.println(getVisibility()); - pw.print(" bubbles on screen: "); pw.println(bubblesOnScreen); + pw.println(" bubbles on screen: "); pw.println(bubblesOnScreen); pw.print(" gestureInProgress: "); pw.println(mIsGestureInProgress); pw.print(" showingDismiss: "); pw.println(mDismissView.isShowing()); pw.print(" isExpansionAnimating: "); pw.println(mIsExpansionAnimating); @@ -321,7 +312,8 @@ public class BubbleStackView extends FrameLayout pw.print(" expandedContainerAlpha: "); pw.println(mExpandedViewContainer.getAlpha()); pw.print(" expandedContainerMatrix: "); pw.println(mExpandedViewContainer.getAnimationMatrix()); - + pw.print(" stack visibility : "); pw.println(getVisibility()); + pw.print(" temporarilyInvisible: "); pw.println(mTemporarilyInvisible); mStackAnimationController.dump(pw); mExpandedAnimationController.dump(pw); @@ -786,14 +778,15 @@ public class BubbleStackView extends FrameLayout private float getScrimAlphaForDrag(float dragAmount) { // dragAmount should be negative as we allow scroll up only if (mExpandedBubble != null && mExpandedBubble.getExpandedView() != null) { - float alphaRange = SCRIM_ALPHA - MIN_SCRIM_ALPHA_FOR_DRAG; + float alphaRange = BUBBLE_EXPANDED_SCRIM_ALPHA - MIN_SCRIM_ALPHA_FOR_DRAG; int dragMax = mExpandedBubble.getExpandedView().getContentHeight(); float dragFraction = dragAmount / dragMax; - return Math.max(SCRIM_ALPHA - alphaRange * dragFraction, MIN_SCRIM_ALPHA_FOR_DRAG); + return Math.max(BUBBLE_EXPANDED_SCRIM_ALPHA - alphaRange * dragFraction, + MIN_SCRIM_ALPHA_FOR_DRAG); } - return SCRIM_ALPHA; + return BUBBLE_EXPANDED_SCRIM_ALPHA; } }; @@ -1291,6 +1284,12 @@ public class BubbleStackView extends FrameLayout if (BubbleDebugConfig.DEBUG_USER_EDUCATION) { Log.d(TAG, "Show manage edu: " + shouldShow); } + if (shouldShow && BubbleDebugConfig.neverShowUserEducation(mContext)) { + if (BubbleDebugConfig.DEBUG_USER_EDUCATION) { + Log.d(TAG, "Want to show manage edu, but it is forced hidden"); + } + return false; + } return shouldShow; } @@ -1323,6 +1322,12 @@ public class BubbleStackView extends FrameLayout if (BubbleDebugConfig.DEBUG_USER_EDUCATION) { Log.d(TAG, "Show stack edu: " + shouldShow); } + if (shouldShow && BubbleDebugConfig.neverShowUserEducation(mContext)) { + if (BubbleDebugConfig.DEBUG_USER_EDUCATION) { + Log.d(TAG, "Want to show stack edu, but it is forced hidden"); + } + return false; + } return shouldShow; } @@ -1770,13 +1775,26 @@ public class BubbleStackView extends FrameLayout return; } + if (firstBubble && bubble.isAppBubble() && !mPositioner.hasUserModifiedDefaultPosition()) { + // TODO (b/294284894): update language around "app bubble" here + // If it's an app bubble and we don't have a previous resting position, update the + // controllers to use the default position for the app bubble (it'd be different from + // the position initialized with the controllers originally). + PointF startPosition = mPositioner.getDefaultStartPosition(true /* isAppBubble */); + mStackOnLeftOrWillBe = mPositioner.isStackOnLeft(startPosition); + mStackAnimationController.setStackPosition(startPosition); + mExpandedAnimationController.setCollapsePoint(startPosition); + // Set the translation x so that this bubble will animate in from the same side they + // expand / collapse on. + bubble.getIconView().setTranslationX(startPosition.x); + } else if (firstBubble) { + mStackOnLeftOrWillBe = mStackAnimationController.isStackOnLeftSide(); + } + mBubbleContainer.addView(bubble.getIconView(), 0, new FrameLayout.LayoutParams(mPositioner.getBubbleSize(), mPositioner.getBubbleSize())); - if (firstBubble) { - mStackOnLeftOrWillBe = mStackAnimationController.isStackOnLeftSide(); - } // Set the dot position to the opposite of the side the stack is resting on, since the stack // resting slightly off-screen would result in the dot also being off-screen. bubble.getIconView().setDotBadgeOnLeft(!mStackOnLeftOrWillBe /* onLeft */); @@ -2019,6 +2037,7 @@ public class BubbleStackView extends FrameLayout }); } notifyExpansionChanged(mExpandedBubble, mIsExpanded); + announceExpandForAccessibility(mExpandedBubble, mIsExpanded); } /** @@ -2035,6 +2054,34 @@ public class BubbleStackView extends FrameLayout } } + private void announceExpandForAccessibility(BubbleViewProvider bubble, boolean expanded) { + if (bubble instanceof Bubble) { + String contentDescription = getBubbleContentDescription((Bubble) bubble); + String message = getResources().getString( + expanded + ? R.string.bubble_accessibility_announce_expand + : R.string.bubble_accessibility_announce_collapse, contentDescription); + announceForAccessibility(message); + } + } + + @NonNull + private String getBubbleContentDescription(Bubble bubble) { + final String appName = bubble.getAppName(); + final String title = bubble.getTitle() != null + ? bubble.getTitle() + : getResources().getString(R.string.notification_bubble_title); + + if (appName == null || title.equals(appName)) { + // App bubble title equals the app name, so return only the title to avoid having + // content description like: ` from `. + return title; + } else { + return getResources().getString( + R.string.bubble_content_description_single, title, appName); + } + } + private boolean isGestureNavEnabled() { return mContext.getResources().getInteger( com.android.internal.R.integer.config_navBarInteractionMode) @@ -2196,7 +2243,7 @@ public class BubbleStackView extends FrameLayout if (show) { mScrim.animate() .setInterpolator(ALPHA_IN) - .alpha(SCRIM_ALPHA) + .alpha(BUBBLE_EXPANDED_SCRIM_ALPHA) .setListener(listener) .start(); } else { @@ -2925,7 +2972,7 @@ public class BubbleStackView extends FrameLayout mBubbleController.getSysuiProxy().onManageMenuExpandChanged(show); mManageMenuScrim.animate() .setInterpolator(show ? ALPHA_IN : ALPHA_OUT) - .alpha(show ? SCRIM_ALPHA : 0f) + .alpha(show ? BUBBLE_EXPANDED_SCRIM_ALPHA : 0f) .withEndAction(endAction) .start(); 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 66e69300f45ffbae53d7c3f30ee0272cdb1924a0..39e3180ffe2a219e9eff9af46fc0e49d99c560fa 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 @@ -257,8 +257,16 @@ public class BubbleViewInfoTask extends AsyncTask mLayerBoundsSupplier; - private @Nullable Consumer mUnBubbleConversationCallback; + private @Nullable Listener mListener; private BubbleBarHandleView mHandleView = new BubbleBarHandleView(getContext()); private @Nullable TaskView mTaskView; @@ -145,15 +156,13 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView mMenuViewController.setListener(new BubbleBarMenuViewController.Listener() { @Override public void onMenuVisibilityChanged(boolean visible) { - if (mTaskView == null || mLayerBoundsSupplier == null) return; - // Updates the obscured touchable region for the task surface. - mTaskView.setObscuredTouchRect(visible ? mLayerBoundsSupplier.get() : null); + setObscured(visible); } @Override public void onUnBubbleConversation(Bubble bubble) { - if (mUnBubbleConversationCallback != null) { - mUnBubbleConversationCallback.accept(bubble.getKey()); + if (mListener != null) { + mListener.onUnBubbleConversation(bubble.getKey()); } } @@ -231,6 +240,9 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView public void onTaskCreated() { setContentVisibility(true); updateHandleColor(false /* animated */); + if (mListener != null) { + mListener.onTaskCreated(); + } } @Override @@ -240,7 +252,8 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView @Override public void onBackPressed() { - mController.collapseStack(); + if (mListener == null) return; + mListener.onBackPressed(); } /** Cleans up task view, should be called when the bubble is no longer active. */ @@ -254,6 +267,18 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView mMenuViewController.hideMenu(false /* animated */); } + /** + * Hides the current modal menu view or collapses the bubble stack. + * Called from {@link BubbleBarLayerView} + */ + public void hideMenuOrCollapse() { + if (mMenuViewController.isMenuVisible()) { + mMenuViewController.hideMenu(/* animated = */ true); + } else { + mController.collapseStack(); + } + } + /** Updates the bubble shown in the expanded view. */ public void update(Bubble bubble) { mBubbleTaskViewHelper.update(bubble); @@ -270,10 +295,16 @@ public class BubbleBarExpandedView extends FrameLayout implements BubbleTaskView mLayerBoundsSupplier = supplier; } - /** Sets the function to call to un-bubble the given conversation. */ - public void setUnBubbleConversationCallback( - @Nullable Consumer unBubbleConversationCallback) { - mUnBubbleConversationCallback = unBubbleConversationCallback; + /** Sets expanded view listener */ + void setListener(@Nullable Listener listener) { + mListener = listener; + } + + /** Sets whether the view is obscured by some modal view */ + void setObscured(boolean obscured) { + if (mTaskView == null || mLayerBoundsSupplier == null) return; + // Updates the obscured touchable region for the task surface. + mTaskView.setObscuredTouchRect(obscured ? mLayerBoundsSupplier.get() : null); } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java index bc04bfc8c18b45dd58c1d1693b7a395677e34bfb..e788341df5f861cb761ff918a621751d65d757ab 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java @@ -21,6 +21,7 @@ import static com.android.wm.shell.animation.Interpolators.ALPHA_OUT; import android.annotation.Nullable; import android.content.Context; +import android.graphics.Point; import android.graphics.Rect; import android.graphics.Region; import android.graphics.drawable.ColorDrawable; @@ -36,6 +37,8 @@ import com.android.wm.shell.bubbles.BubbleViewProvider; import java.util.function.Consumer; +import kotlin.Unit; + /** * Similar to {@link com.android.wm.shell.bubbles.BubbleStackView}, this view is added to window * manager to display bubbles. However, it is only used when bubbles are being displayed in @@ -52,6 +55,7 @@ public class BubbleBarLayerView extends FrameLayout private final BubbleController mBubbleController; private final BubblePositioner mPositioner; private final BubbleBarAnimationHelper mAnimationHelper; + private final BubbleEducationViewController mEducationViewController; private final View mScrimView; @Nullable @@ -80,6 +84,10 @@ public class BubbleBarLayerView extends FrameLayout mAnimationHelper = new BubbleBarAnimationHelper(context, this, mPositioner); + mEducationViewController = new BubbleEducationViewController(context, (boolean visible) -> { + if (mExpandedView == null) return; + mExpandedView.setObscured(visible); + }); mScrimView = new View(getContext()); mScrimView.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_NO); @@ -90,9 +98,7 @@ public class BubbleBarLayerView extends FrameLayout mScrimView.setBackgroundDrawable(new ColorDrawable( getResources().getColor(android.R.color.system_neutral1_1000))); - setOnClickListener(view -> { - mBubbleController.collapseStack(); - }); + setOnClickListener(view -> hideMenuOrCollapse()); } @Override @@ -108,6 +114,7 @@ public class BubbleBarLayerView extends FrameLayout getViewTreeObserver().removeOnComputeInternalInsetsListener(this); if (mExpandedView != null) { + mEducationViewController.hideEducation(/* animated = */ false); removeView(mExpandedView); mExpandedView = null; } @@ -162,17 +169,36 @@ public class BubbleBarLayerView extends FrameLayout final int width = mPositioner.getExpandedViewWidthForBubbleBar(isOverflowExpanded); final int height = mPositioner.getExpandedViewHeightForBubbleBar(isOverflowExpanded); mExpandedView.setVisibility(GONE); - mExpandedView.setUnBubbleConversationCallback(mUnBubbleConversationCallback); + mExpandedView.setY(mPositioner.getExpandedViewBottomForBubbleBar() - height); mExpandedView.setLayerBoundsSupplier(() -> new Rect(0, 0, getWidth(), getHeight())); - mExpandedView.setUnBubbleConversationCallback(bubbleKey -> { - if (mUnBubbleConversationCallback != null) { - mUnBubbleConversationCallback.accept(bubbleKey); + mExpandedView.setListener(new BubbleBarExpandedView.Listener() { + @Override + public void onTaskCreated() { + if (mEducationViewController != null && mExpandedView != null) { + mEducationViewController.maybeShowManageEducation(b, mExpandedView); + } + } + + @Override + public void onUnBubbleConversation(String bubbleKey) { + if (mUnBubbleConversationCallback != null) { + mUnBubbleConversationCallback.accept(bubbleKey); + } + } + + @Override + public void onBackPressed() { + hideMenuOrCollapse(); } }); - mExpandedView.setY(mPositioner.getExpandedViewBottomForBubbleBar() - height); + addView(mExpandedView, new FrameLayout.LayoutParams(width, height)); } + if (mEducationViewController.isEducationVisible()) { + mEducationViewController.hideEducation(/* animated = */ true); + } + mIsExpanded = true; mBubbleController.getSysuiProxy().onStackExpandChanged(true); mAnimationHelper.animateExpansion(mExpandedBubble, () -> { @@ -193,6 +219,7 @@ public class BubbleBarLayerView extends FrameLayout public void collapse() { mIsExpanded = false; final BubbleBarExpandedView viewToRemove = mExpandedView; + mEducationViewController.hideEducation(/* animated = */ true); mAnimationHelper.animateCollapse(() -> removeView(viewToRemove)); mBubbleController.getSysuiProxy().onStackExpandChanged(false); mExpandedView = null; @@ -200,12 +227,38 @@ public class BubbleBarLayerView extends FrameLayout showScrim(false); } + /** + * Show bubble bar user education relative to the reference position. + * @param position the reference position in Screen coordinates. + */ + public void showUserEducation(Point position) { + mEducationViewController.showStackEducation(position, /* root = */ this, () -> { + // When the user education is clicked hide it and expand the selected bubble + mEducationViewController.hideEducation(/* animated = */ true, () -> { + mBubbleController.expandStackWithSelectedBubble(); + return Unit.INSTANCE; + }); + return Unit.INSTANCE; + }); + } + /** Sets the function to call to un-bubble the given conversation. */ public void setUnBubbleConversationCallback( @Nullable Consumer unBubbleConversationCallback) { mUnBubbleConversationCallback = unBubbleConversationCallback; } + /** Hides the current modal education/menu view, expanded view or collapses the bubble stack */ + private void hideMenuOrCollapse() { + if (mEducationViewController.isEducationVisible()) { + mEducationViewController.hideEducation(/* animated = */ true); + } else if (isExpanded() && mExpandedView != null) { + mExpandedView.hideMenuOrCollapse(); + } else { + mBubbleController.collapseStack(); + } + } + /** Updates the expanded view size and position. */ private void updateExpandedView() { if (mExpandedView == null) return; @@ -246,7 +299,7 @@ public class BubbleBarLayerView extends FrameLayout */ private void getTouchableRegion(Region outRegion) { mTempRect.setEmpty(); - if (mIsExpanded) { + if (mIsExpanded || mEducationViewController.isEducationVisible()) { getBoundsOnScreen(mTempRect); outRegion.op(mTempRect, Region.Op.UNION); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java index 8be140c16435643af27c363de86fcef9d206c87a..81e7582e0dbac2c54844b596b37f0c58e69b74e0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarMenuViewController.java @@ -56,6 +56,11 @@ class BubbleBarMenuViewController { SpringForce.STIFFNESS_MEDIUM, SpringForce.DAMPING_RATIO_LOW_BOUNCY); } + /** Tells if the menu is visible or being animated */ + boolean isMenuVisible() { + return mMenuView != null && mMenuView.getVisibility() == View.VISIBLE; + } + /** Sets menu actions listener */ void setListener(@Nullable Listener listener) { mListener = listener; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleEducationViewController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleEducationViewController.kt new file mode 100644 index 0000000000000000000000000000000000000000..ee552ae204b83dd594ee85f851290e4ef82efcc6 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleEducationViewController.kt @@ -0,0 +1,246 @@ +/* + * Copyright (C) 2023 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.wm.shell.bubbles.bar + +import android.annotation.LayoutRes +import android.content.Context +import android.graphics.Point +import android.graphics.Rect +import android.util.Log +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.FrameLayout +import androidx.core.view.doOnLayout +import androidx.dynamicanimation.animation.DynamicAnimation +import androidx.dynamicanimation.animation.SpringForce +import com.android.wm.shell.R +import com.android.wm.shell.animation.PhysicsAnimator +import com.android.wm.shell.bubbles.BubbleDebugConfig.DEBUG_USER_EDUCATION +import com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_BUBBLES +import com.android.wm.shell.bubbles.BubbleDebugConfig.TAG_WITH_CLASS_NAME +import com.android.wm.shell.bubbles.BubbleEducationController +import com.android.wm.shell.bubbles.BubbleViewProvider +import com.android.wm.shell.bubbles.setup +import com.android.wm.shell.common.bubbles.BubblePopupDrawable +import com.android.wm.shell.common.bubbles.BubblePopupView +import kotlin.math.roundToInt + +/** Manages bubble education presentation and animation */ +class BubbleEducationViewController(private val context: Context, private val listener: Listener) { + interface Listener { + fun onEducationVisibilityChanged(isVisible: Boolean) + } + + private var rootView: ViewGroup? = null + private var educationView: BubblePopupView? = null + private var animator: PhysicsAnimator? = null + + private val springConfig by lazy { + PhysicsAnimator.SpringConfig( + SpringForce.STIFFNESS_MEDIUM, + SpringForce.DAMPING_RATIO_LOW_BOUNCY + ) + } + + private val scrimView by lazy { + View(context).apply { + importantForAccessibility = View.IMPORTANT_FOR_ACCESSIBILITY_NO + setOnClickListener { hideEducation(animated = true) } + } + } + + private val controller by lazy { BubbleEducationController(context) } + + /** Whether the education view is visible or being animated */ + val isEducationVisible: Boolean + get() = educationView != null && rootView != null + + /** + * Hide the current education view if visible + * + * @param animated whether should hide with animation + */ + @JvmOverloads + fun hideEducation(animated: Boolean, endActions: () -> Unit = {}) { + log { "hideEducation animated: $animated" } + + if (animated) { + animateTransition(show = false) { + cleanUp() + endActions() + listener.onEducationVisibilityChanged(isVisible = false) + } + } else { + cleanUp() + endActions() + listener.onEducationVisibilityChanged(isVisible = false) + } + } + + /** + * Show bubble bar stack user education. + * + * @param position the reference position for the user education in Screen coordinates. + * @param root the view to show user education in. + * @param educationClickHandler the on click handler for the user education view + */ + fun showStackEducation(position: Point, root: ViewGroup, educationClickHandler: () -> Unit) { + hideEducation(animated = false) + log { "showStackEducation at: $position" } + + educationView = + createEducationView(R.layout.bubble_bar_stack_education, root).apply { + setArrowDirection(BubblePopupDrawable.ArrowDirection.DOWN) + setArrowPosition(BubblePopupDrawable.ArrowPosition.End) + updateEducationPosition(view = this, position, root) + val arrowToEdgeOffset = popupDrawable?.config?.cornerRadius ?: 0f + doOnLayout { + it.pivotX = it.width - arrowToEdgeOffset + it.pivotY = it.height.toFloat() + } + setOnClickListener { educationClickHandler() } + } + + rootView = root + animator = createAnimator() + + root.addView(scrimView) + root.addView(educationView) + animateTransition(show = true) { + controller.hasSeenStackEducation = true + listener.onEducationVisibilityChanged(isVisible = true) + } + } + + /** + * Show manage bubble education if hasn't been shown before + * + * @param bubble the bubble used for the manage education check + * @param root the view to show manage education in + */ + fun maybeShowManageEducation(bubble: BubbleViewProvider, root: ViewGroup) { + log { "maybeShowManageEducation bubble: $bubble" } + if (!controller.shouldShowManageEducation(bubble)) return + showManageEducation(root) + } + + /** + * Show manage education with animation + * + * @param root the view to show manage education in + */ + private fun showManageEducation(root: ViewGroup) { + hideEducation(animated = false) + log { "showManageEducation" } + + educationView = + createEducationView(R.layout.bubble_bar_manage_education, root).apply { + pivotY = 0f + doOnLayout { it.pivotX = it.width / 2f } + setOnClickListener { hideEducation(animated = true) } + } + + rootView = root + animator = createAnimator() + + root.addView(scrimView) + root.addView(educationView) + animateTransition(show = true) { + controller.hasSeenManageEducation = true + listener.onEducationVisibilityChanged(isVisible = true) + } + } + + /** + * Animate show/hide transition for the education view + * + * @param show whether to show or hide the view + * @param endActions a closure to be called when the animation completes + */ + private fun animateTransition(show: Boolean, endActions: () -> Unit) { + animator + ?.spring(DynamicAnimation.ALPHA, if (show) 1f else 0f) + ?.spring(DynamicAnimation.SCALE_X, if (show) 1f else EDU_SCALE_HIDDEN) + ?.spring(DynamicAnimation.SCALE_Y, if (show) 1f else EDU_SCALE_HIDDEN) + ?.withEndActions(endActions) + ?.start() + ?: endActions() + } + + /** Remove education view from the root and clean up all relative properties */ + private fun cleanUp() { + log { "cleanUp" } + rootView?.removeView(educationView) + rootView?.removeView(scrimView) + educationView = null + rootView = null + animator = null + } + + /** + * Create education view by inflating layout provided. + * + * @param layout layout resource id to inflate. The root view should be [BubblePopupView] + * @param root view group to use as root for inflation, is not attached to root + */ + private fun createEducationView(@LayoutRes layout: Int, root: ViewGroup): BubblePopupView { + val view = LayoutInflater.from(context).inflate(layout, root, false) as BubblePopupView + view.setup() + view.alpha = 0f + view.scaleX = EDU_SCALE_HIDDEN + view.scaleY = EDU_SCALE_HIDDEN + return view + } + + /** Create animator for the user education transitions */ + private fun createAnimator(): PhysicsAnimator? { + return educationView?.let { + PhysicsAnimator.getInstance(it).apply { setDefaultSpringConfig(springConfig) } + } + } + + /** + * Update user education view position relative to the reference position + * + * @param view the user education view to layout + * @param position the reference position in Screen coordinates + * @param root the root view to use for the layout + */ + private fun updateEducationPosition(view: BubblePopupView, position: Point, root: ViewGroup) { + val rootBounds = Rect() + // Get root bounds on screen as position is in screen coordinates + root.getBoundsOnScreen(rootBounds) + // Get the offset to the arrow from the edge of the education view + val arrowToEdgeOffset = + view.popupDrawable?.config?.let { it.cornerRadius + it.arrowWidth / 2f }?.roundToInt() + ?: 0 + // Calculate education view margins + val params = view.layoutParams as FrameLayout.LayoutParams + params.bottomMargin = rootBounds.bottom - position.y + params.rightMargin = rootBounds.right - position.x - arrowToEdgeOffset + view.layoutParams = params + } + + private fun log(msg: () -> String) { + if (DEBUG_USER_EDUCATION) Log.d(TAG, msg()) + } + + companion object { + private val TAG = if (TAG_WITH_CLASS_NAME) "BubbleEducationViewController" else TAG_BUBBLES + private const val EDU_SCALE_HIDDEN = 0.5f + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java index 72702e7c2b88cd676ecc101c74e7f602305870df..b828aac3904002cf07ea09179137f221ac721995 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/DisplayChangeController.java @@ -18,6 +18,7 @@ package com.android.wm.shell.common; import android.annotation.Nullable; import android.os.RemoteException; +import android.os.Trace; import android.util.Slog; import android.view.IDisplayChangeWindowCallback; import android.view.IDisplayChangeWindowController; @@ -40,6 +41,7 @@ import java.util.concurrent.CopyOnWriteArrayList; */ public class DisplayChangeController { private static final String TAG = DisplayChangeController.class.getSimpleName(); + private static final String HANDLE_DISPLAY_CHANGE_TRACE_TAG = "HandleRemoteDisplayChange"; private final ShellExecutor mMainExecutor; private final IWindowManager mWmService; @@ -81,9 +83,15 @@ public class DisplayChangeController { /** Query all listeners for changes that should happen on display change. */ void dispatchOnDisplayChange(WindowContainerTransaction outWct, int displayId, int fromRotation, int toRotation, DisplayAreaInfo newDisplayAreaInfo) { + if (Trace.isTagEnabled(Trace.TRACE_TAG_WINDOW_MANAGER)) { + Trace.beginSection("dispatchOnDisplayChange"); + } for (OnDisplayChangingListener c : mDisplayChangeListener) { c.onDisplayChange(displayId, fromRotation, toRotation, newDisplayAreaInfo, outWct); } + if (Trace.isTagEnabled(Trace.TRACE_TAG_WINDOW_MANAGER)) { + Trace.endSection(); + } } private void onDisplayChange(int displayId, int fromRotation, int toRotation, @@ -94,6 +102,10 @@ public class DisplayChangeController { callback.continueDisplayChange(t); } catch (RemoteException e) { Slog.e(TAG, "Failed to continue handling display change", e); + } finally { + if (Trace.isTagEnabled(Trace.TRACE_TAG_WINDOW_MANAGER)) { + Trace.endAsyncSection(HANDLE_DISPLAY_CHANGE_TRACE_TAG, callback.hashCode()); + } } } @@ -103,6 +115,9 @@ public class DisplayChangeController { @Override public void onDisplayChange(int displayId, int fromRotation, int toRotation, DisplayAreaInfo newDisplayAreaInfo, IDisplayChangeWindowCallback callback) { + if (Trace.isTagEnabled(Trace.TRACE_TAG_WINDOW_MANAGER)) { + Trace.beginAsyncSection(HANDLE_DISPLAY_CHANGE_TRACE_TAG, callback.hashCode()); + } mMainExecutor.execute(() -> DisplayChangeController.this .onDisplayChange(displayId, fromRotation, toRotation, newDisplayAreaInfo, callback)); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleBarUpdate.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleBarUpdate.java index 81423473171d42da4f5f359d50f280a2dea126a4..fc627a8dcb36c633359a758333c4b7d28a24615f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleBarUpdate.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleBarUpdate.java @@ -35,6 +35,7 @@ public class BubbleBarUpdate implements Parcelable { public boolean expandedChanged; public boolean expanded; + public boolean shouldShowEducation; @Nullable public String selectedBubbleKey; @Nullable @@ -61,6 +62,7 @@ public class BubbleBarUpdate implements Parcelable { public BubbleBarUpdate(Parcel parcel) { expandedChanged = parcel.readBoolean(); expanded = parcel.readBoolean(); + shouldShowEducation = parcel.readBoolean(); selectedBubbleKey = parcel.readString(); addedBubble = parcel.readParcelable(BubbleInfo.class.getClassLoader(), BubbleInfo.class); @@ -95,6 +97,7 @@ public class BubbleBarUpdate implements Parcelable { return "BubbleBarUpdate{ expandedChanged=" + expandedChanged + " expanded=" + expanded + " selectedBubbleKey=" + selectedBubbleKey + + " shouldShowEducation=" + shouldShowEducation + " addedBubble=" + addedBubble + " updatedBubble=" + updatedBubble + " suppressedBubbleKey=" + suppressedBubbleKey @@ -114,6 +117,7 @@ public class BubbleBarUpdate implements Parcelable { public void writeToParcel(Parcel parcel, int flags) { parcel.writeBoolean(expandedChanged); parcel.writeBoolean(expanded); + parcel.writeBoolean(shouldShowEducation); parcel.writeString(selectedBubbleKey); parcel.writeParcelable(addedBubble, flags); parcel.writeParcelable(updatedBubble, flags); diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/shared/model/FingerprintSensorType.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleConstants.java similarity index 64% rename from packages/SystemUI/src/com/android/systemui/biometrics/shared/model/FingerprintSensorType.kt rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleConstants.java index df5cefdb876d457612a0239b5bee279d4591159e..0329b8df7544bcbbb62a3256d2e3b5bfda21272c 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/shared/model/FingerprintSensorType.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubbleConstants.java @@ -14,16 +14,13 @@ * limitations under the License. */ -package com.android.systemui.biometrics.shared.model +package com.android.wm.shell.common.bubbles; -import android.hardware.fingerprint.FingerprintSensorProperties +/** + * Constants shared between bubbles in shell & things we have to do for bubbles in launcher. + */ +public class BubbleConstants { -/** Fingerprint sensor types. Represents [FingerprintSensorProperties.SensorType]. */ -enum class FingerprintSensorType { - UNKNOWN, - REAR, - UDFPS_ULTRASONIC, - UDFPS_OPTICAL, - POWER_BUTTON, - HOME_BUTTON, + /** The alpha for the scrim shown when bubbles are expanded. */ + public static float BUBBLE_EXPANDED_SCRIM_ALPHA = .32f; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubblePopupDrawable.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubblePopupDrawable.kt new file mode 100644 index 0000000000000000000000000000000000000000..887af17c96539c578b8657a7940b72b33f650722 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubblePopupDrawable.kt @@ -0,0 +1,232 @@ +/* + * Copyright (C) 2023 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.wm.shell.common.bubbles + +import android.annotation.ColorInt +import android.graphics.Canvas +import android.graphics.ColorFilter +import android.graphics.Matrix +import android.graphics.Outline +import android.graphics.Paint +import android.graphics.Path +import android.graphics.Rect +import android.graphics.RectF +import android.graphics.drawable.Drawable +import kotlin.math.atan +import kotlin.math.cos +import kotlin.math.sin +import kotlin.properties.Delegates + +/** A drawable for the [BubblePopupView] that draws a popup background with a directional arrow */ +class BubblePopupDrawable(val config: Config) : Drawable() { + /** The direction of the arrow in the popup drawable */ + enum class ArrowDirection { + UP, + DOWN + } + + /** The arrow position on the side of the popup bubble */ + sealed class ArrowPosition { + object Start : ArrowPosition() + object Center : ArrowPosition() + object End : ArrowPosition() + class Custom(val value: Float) : ArrowPosition() + } + + /** The configuration for drawable features */ + data class Config( + @ColorInt val color: Int, + val cornerRadius: Float, + val contentPadding: Int, + val arrowWidth: Float, + val arrowHeight: Float, + val arrowRadius: Float + ) + + /** + * The direction of the arrow in the popup drawable. It affects the content padding and requires + * it to be updated in the view. + */ + var arrowDirection: ArrowDirection by + Delegates.observable(ArrowDirection.UP) { _, _, _ -> requestPathUpdate() } + + /** + * Arrow position along the X axis and its direction. The position is adjusted to the content + * corner radius when applied so it doesn't go into rounded corner area + */ + var arrowPosition: ArrowPosition by + Delegates.observable(ArrowPosition.Center) { _, _, _ -> requestPathUpdate() } + + private val path = Path() + private val paint = Paint() + private var shouldUpdatePath = true + + init { + paint.color = config.color + paint.style = Paint.Style.FILL + paint.isAntiAlias = true + } + + override fun draw(canvas: Canvas) { + updatePathIfNeeded() + canvas.drawPath(path, paint) + } + + override fun onBoundsChange(bounds: Rect) { + requestPathUpdate() + } + + /** Should be applied to the view padding if arrow direction changes */ + override fun getPadding(padding: Rect): Boolean { + padding.set( + config.contentPadding, + config.contentPadding, + config.contentPadding, + config.contentPadding + ) + when (arrowDirection) { + ArrowDirection.UP -> padding.top += config.arrowHeight.toInt() + ArrowDirection.DOWN -> padding.bottom += config.arrowHeight.toInt() + } + return true + } + + override fun getOutline(outline: Outline) { + updatePathIfNeeded() + outline.setPath(path) + } + + override fun getOpacity(): Int { + return paint.alpha + } + + override fun setAlpha(alpha: Int) { + paint.alpha = alpha + } + + override fun setColorFilter(colorFilter: ColorFilter?) { + paint.colorFilter = colorFilter + } + + /** Schedules path update for the next redraw */ + private fun requestPathUpdate() { + shouldUpdatePath = true + } + + /** Updates the path if required, when bounds or arrow direction/position changes */ + private fun updatePathIfNeeded() { + if (shouldUpdatePath) { + updatePath() + shouldUpdatePath = false + } + } + + /** Updates the path value using the current bounds, config, arrow direction and position */ + private fun updatePath() { + if (bounds.isEmpty) return + // Reset the path state + path.reset() + // The content rect where the filled rounded rect will be drawn + val contentRect = RectF(bounds) + when (arrowDirection) { + ArrowDirection.UP -> { + // Add rounded arrow pointing up to the path + addRoundedArrowPositioned(path, arrowPosition) + // Inset content rect by the arrow size from the top + contentRect.top += config.arrowHeight + } + ArrowDirection.DOWN -> { + val matrix = Matrix() + // Flip the path with the matrix to draw arrow pointing down + matrix.setScale(1f, -1f, bounds.width() / 2f, bounds.height() / 2f) + path.transform(matrix) + // Add rounded arrow with the flipped matrix applied, will point down + addRoundedArrowPositioned(path, arrowPosition) + // Restore the path matrix to the original state with inverted matrix + matrix.invert(matrix) + path.transform(matrix) + // Inset content rect by the arrow size from the bottom + contentRect.bottom -= config.arrowHeight + } + } + // Add the content area rounded rect + path.addRoundRect(contentRect, config.cornerRadius, config.cornerRadius, Path.Direction.CW) + } + + /** Add a rounded arrow pointing up in the horizontal position on the canvas */ + private fun addRoundedArrowPositioned(path: Path, position: ArrowPosition) { + val matrix = Matrix() + var translationX = positionValue(position) - config.arrowWidth / 2 + // Offset to position between rounded corners of the content view + translationX = translationX.coerceIn(config.cornerRadius, + bounds.width() - config.cornerRadius - config.arrowWidth) + // Translate to add the arrow in the center horizontally + matrix.setTranslate(-translationX, 0f) + path.transform(matrix) + // Add rounded arrow + addRoundedArrow(path) + // Restore the path matrix to the original state with inverted matrix + matrix.invert(matrix) + path.transform(matrix) + } + + /** Adds a rounded arrow pointing up to the path, can be flipped if needed */ + private fun addRoundedArrow(path: Path) { + // Theta is half of the angle inside the triangle tip + val thetaTan = config.arrowWidth / (config.arrowHeight * 2f) + val theta = atan(thetaTan) + val thetaDeg = Math.toDegrees(theta.toDouble()).toFloat() + // The center Y value of the circle for the triangle tip + val tipCircleCenterY = config.arrowRadius / sin(theta) + // The length from triangle tip to intersection point with the circle + val tipIntersectionSideLength = config.arrowRadius / thetaTan + // The offset from the top to the point of intersection + val intersectionTopOffset = tipIntersectionSideLength * cos(theta) + // The offset from the center to the point of intersection + val intersectionCenterOffset = tipIntersectionSideLength * sin(theta) + // The center X of the triangle + val arrowCenterX = config.arrowWidth / 2f + + // Set initial position in bottom left of the arrow + path.moveTo(0f, config.arrowHeight) + // Add the left side of the triangle + path.lineTo(arrowCenterX - intersectionCenterOffset, intersectionTopOffset) + // Add the arc from the left to the right side of the triangle + path.arcTo( + /* left = */ arrowCenterX - config.arrowRadius, + /* top = */ tipCircleCenterY - config.arrowRadius, + /* right = */ arrowCenterX + config.arrowRadius, + /* bottom = */ tipCircleCenterY + config.arrowRadius, + /* startAngle = */ 180 + thetaDeg, + /* sweepAngle = */ 180 - (2 * thetaDeg), + /* forceMoveTo = */ false + ) + // Add the right side of the triangle + path.lineTo(config.arrowWidth, config.arrowHeight) + // Close the path + path.close() + } + + /** The value of the arrow position provided the position and current bounds */ + private fun positionValue(position: ArrowPosition): Float { + return when (position) { + is ArrowPosition.Start -> 0f + is ArrowPosition.Center -> bounds.width().toFloat() / 2f + is ArrowPosition.End -> bounds.width().toFloat() + is ArrowPosition.Custom -> position.value + } + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubblePopupView.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubblePopupView.kt new file mode 100644 index 0000000000000000000000000000000000000000..444fbf7884beec75944aeeb586b7f7054a8eaf2f --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/BubblePopupView.kt @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2023 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.wm.shell.common.bubbles + +import android.content.Context +import android.graphics.Rect +import android.util.AttributeSet +import android.widget.LinearLayout + +/** A popup container view that uses [BubblePopupDrawable] as a background */ +open class BubblePopupView +@JvmOverloads +constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0, + defStyleRes: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr, defStyleRes) { + var popupDrawable: BubblePopupDrawable? = null + private set + + /** + * Sets up the popup drawable with the config provided. Required to remove dependency on local + * resources + */ + fun setupBackground(config: BubblePopupDrawable.Config) { + popupDrawable = BubblePopupDrawable(config) + background = popupDrawable + forceLayout() + } + + /** + * Sets the arrow direction for the background drawable and updates the padding to fit the + * content inside of the popup drawable + */ + fun setArrowDirection(direction: BubblePopupDrawable.ArrowDirection) { + popupDrawable?.let { + it.arrowDirection = direction + val padding = Rect() + if (it.getPadding(padding)) { + setPadding(padding.left, padding.top, padding.right, padding.bottom) + } + } + } + + /** Sets the arrow position for the background drawable and triggers redraw */ + fun setArrowPosition(position: BubblePopupDrawable.ArrowPosition) { + popupDrawable?.let { + it.arrowPosition = position + invalidate() + } + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/DismissView.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/DismissView.kt index d275a0be8e93950305cd697bbd2d39638fe02d27..2eb55e19a960a3b4d828a9ecf97f32422b010aad 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/DismissView.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/bubbles/DismissView.kt @@ -49,6 +49,8 @@ class DismissView(context: Context) : FrameLayout(context) { * @see [setup] method */ data class Config( + /** The resource id to set on the dismiss target circle view */ + val dismissViewResId: Int, /** dimen resource id of the dismiss target circle view size */ @DimenRes val targetSizeResId: Int, /** dimen resource id of the icon size in the dismiss target */ @@ -121,6 +123,7 @@ class DismissView(context: Context) : FrameLayout(context) { setBackgroundDrawable(gradientDrawable) // Setup DismissCircleView + circle.id = config.dismissViewResId circle.setup(config.backgroundResId, config.iconResId, config.iconSizeResId) val targetSize: Int = resources.getDimensionPixelSize(config.targetSizeResId) circle.layoutParams = LayoutParams(targetSize, targetSize, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/LegacySizeSpecSource.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/LegacySizeSpecSource.kt index fd000ee1d24f746d6898ad551a623dc96de281d3..a8743fbed5e0fd18d4b00d94e87ca2c9dfbfcf19 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/LegacySizeSpecSource.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/LegacySizeSpecSource.kt @@ -21,7 +21,6 @@ import android.content.res.Resources import android.graphics.PointF import android.util.Size import com.android.wm.shell.R -import com.android.wm.shell.pip.PipDisplayLayoutState class LegacySizeSpecSource( private val context: Context, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipKeepClearAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PhonePipKeepClearAlgorithm.java similarity index 95% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipKeepClearAlgorithm.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PhonePipKeepClearAlgorithm.java index f9332e4bdb2e7a965e8dc2f618f150c7312f95f0..133242d15822dacd27ba7e2e9a91a9fa8403d104 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipKeepClearAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PhonePipKeepClearAlgorithm.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 The Android Open Source Project + * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.wm.shell.pip.phone; +package com.android.wm.shell.common.pip; import android.content.Context; import android.content.res.Resources; @@ -24,9 +24,6 @@ import android.util.ArraySet; import android.view.Gravity; import com.android.wm.shell.R; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipBoundsState; -import com.android.wm.shell.pip.PipKeepClearAlgorithmInterface; import java.util.Set; @@ -40,6 +37,7 @@ public class PhonePipKeepClearAlgorithm implements PipKeepClearAlgorithmInterfac "persist.wm.debug.enable_pip_keep_clear_algorithm_gravity", false); protected int mKeepClearAreasPadding; + private int mImeOffset; public PhonePipKeepClearAlgorithm(Context context) { reloadResources(context); @@ -48,6 +46,7 @@ public class PhonePipKeepClearAlgorithm implements PipKeepClearAlgorithmInterfac private void reloadResources(Context context) { final Resources res = context.getResources(); mKeepClearAreasPadding = res.getDimensionPixelSize(R.dimen.pip_keep_clear_areas_padding); + mImeOffset = res.getDimensionPixelSize(R.dimen.pip_ime_offset); } /** @@ -61,7 +60,7 @@ public class PhonePipKeepClearAlgorithm implements PipKeepClearAlgorithmInterfac Rect insets = new Rect(); pipBoundsAlgorithm.getInsetBounds(insets); if (pipBoundsState.isImeShowing()) { - insets.bottom -= pipBoundsState.getImeHeight(); + insets.bottom -= (pipBoundsState.getImeHeight() + mImeOffset); } // if PiP is stashed we only adjust the vertical position if it's outside of insets and // ignore all keep clear areas, since it's already on the side diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PhoneSizeSpecSource.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PhoneSizeSpecSource.kt index c5630686f528211a0fb1f5bcac1d39be3092bdc3..18c7bdd6d5baa9b506d73b475d48c888adb03369 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PhoneSizeSpecSource.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PhoneSizeSpecSource.kt @@ -21,7 +21,6 @@ import android.content.res.Resources import android.os.SystemProperties import android.util.Size import com.android.wm.shell.R -import com.android.wm.shell.pip.PipDisplayLayoutState import java.io.PrintWriter class PhoneSizeSpecSource( diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipAppOpsListener.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipAppOpsListener.kt index a141ff9516840fc4d1dac8be057b4a82d2ac2edb..4abb35c2a4283e545a361d0d473fbe2af856663c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipAppOpsListener.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipAppOpsListener.kt @@ -19,7 +19,6 @@ import android.app.AppOpsManager import android.content.Context import android.content.pm.PackageManager import com.android.wm.shell.common.ShellExecutor -import com.android.wm.shell.pip.PipUtils class PipAppOpsListener( private val mContext: Context, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsAlgorithm.java similarity index 98% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsAlgorithm.java index ac711eafe3ef77118e3e2ebccc497e7885b3bf8c..a9f687fc9b2d20421191cc6d2fe963dbb74fc555 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsAlgorithm.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.wm.shell.pip; +package com.android.wm.shell.common.pip; import android.annotation.NonNull; import android.annotation.Nullable; @@ -28,7 +28,6 @@ import android.util.Size; import android.view.Gravity; import com.android.wm.shell.R; -import com.android.wm.shell.common.pip.SizeSpecSource; import java.io.PrintWriter; @@ -201,7 +200,8 @@ public class PipBoundsAlgorithm { * * @return {@code false} if the given source is too small to use for the entering animation. */ - static boolean isSourceRectHintValidForEnterPip(Rect sourceRectHint, Rect destinationBounds) { + public static boolean isSourceRectHintValidForEnterPip(Rect sourceRectHint, + Rect destinationBounds) { return sourceRectHint != null && sourceRectHint.width() > destinationBounds.width() && sourceRectHint.height() > destinationBounds.height(); @@ -223,7 +223,7 @@ public class PipBoundsAlgorithm { } /** - * @return whether the given {@param aspectRatio} is valid. + * @return whether the given aspectRatio is valid. */ public boolean isValidPictureInPictureAspectRatio(float aspectRatio) { return Float.compare(mMinAspectRatio, aspectRatio) <= 0 diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsState.java similarity index 97% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsState.java index 279ffc50e07ea1b9afe693a6d586897111b036e1..3b32b6c7b08361b93f7cef120fc53a2d735a3c22 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipBoundsState.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.wm.shell.pip; +package com.android.wm.shell.common.pip; import android.annotation.IntDef; import android.annotation.NonNull; @@ -36,7 +36,6 @@ import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.function.TriConsumer; import com.android.wm.shell.R; import com.android.wm.shell.common.DisplayLayout; -import com.android.wm.shell.common.pip.SizeSpecSource; import com.android.wm.shell.protolog.ShellProtoLogGroup; import java.io.PrintWriter; @@ -314,8 +313,11 @@ public class PipBoundsState { return mPipDisplayLayoutState.getDisplayLayout(); } + /** + * Clears the PiP re-entry state. + */ @VisibleForTesting - void clearReentryState() { + public void clearReentryState() { mPipReentryState = null; } @@ -400,11 +402,18 @@ public class PipBoundsState { mNamedUnrestrictedKeepClearAreas.remove(name); } + + /** + * @return restricted keep clear areas. + */ @NonNull public Set getRestrictedKeepClearAreas() { return mRestrictedKeepClearAreas; } + /** + * @return unrestricted keep clear areas. + */ @NonNull public Set getUnrestrictedKeepClearAreas() { if (mNamedUnrestrictedKeepClearAreas.isEmpty()) return mUnrestrictedKeepClearAreas; @@ -561,7 +570,11 @@ public class PipBoundsState { } } - static final class PipReentryState { + /** + * Represents the state of pip to potentially restore upon reentry. + */ + @VisibleForTesting + public static final class PipReentryState { private static final String TAG = PipReentryState.class.getSimpleName(); private final @Nullable Size mSize; @@ -573,11 +586,11 @@ public class PipBoundsState { } @Nullable - Size getSize() { + public Size getSize() { return mSize; } - float getSnapFraction() { + public float getSnapFraction() { return mSnapFraction; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipDisplayLayoutState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDisplayLayoutState.java similarity index 97% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipDisplayLayoutState.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDisplayLayoutState.java index 456f85b52da4b9f9aface4072d4e55bf0c1846b1..ed42117a55af91078d6283e7069922b92b42e973 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipDisplayLayoutState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipDisplayLayoutState.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.android.wm.shell.pip; +package com.android.wm.shell.common.pip; -import static com.android.wm.shell.pip.PipUtils.dpToPx; +import static com.android.wm.shell.common.pip.PipUtils.dpToPx; import android.content.Context; import android.content.res.Resources; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipKeepClearAlgorithmInterface.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipKeepClearAlgorithmInterface.java similarity index 95% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipKeepClearAlgorithmInterface.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipKeepClearAlgorithmInterface.java index 5045cf905ee63fc674ea1b6cb0f9e5f81bc984f0..954233c04ed4d2e221329cad5d596f30821b0f90 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipKeepClearAlgorithmInterface.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipKeepClearAlgorithmInterface.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2022 The Android Open Source Project + * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.wm.shell.pip; +package com.android.wm.shell.common.pip; import android.graphics.Rect; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipMediaController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipMediaController.kt new file mode 100644 index 0000000000000000000000000000000000000000..427a555eee928f6ce1c2fc4beeef598ded88bae7 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipMediaController.kt @@ -0,0 +1,364 @@ +/* + * Copyright (C) 2023 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.wm.shell.common.pip + +import android.annotation.DrawableRes +import android.annotation.StringRes +import android.app.PendingIntent +import android.app.RemoteAction +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter +import android.graphics.drawable.Icon +import android.media.MediaMetadata +import android.media.session.MediaController +import android.media.session.MediaSession +import android.media.session.MediaSessionManager +import android.media.session.PlaybackState +import android.os.Handler +import android.os.HandlerExecutor +import android.os.UserHandle +import com.android.wm.shell.R +import java.util.function.Consumer + +/** + * Interfaces with the [MediaSessionManager] to compose the right set of actions to show (only + * if there are no actions from the PiP activity itself). The active media controller is only set + * when there is a media session from the top PiP activity. + */ +class PipMediaController(private val mContext: Context, private val mMainHandler: Handler) { + /** + * A listener interface to receive notification on changes to the media actions. + */ + interface ActionListener { + /** + * Called when the media actions changed. + */ + fun onMediaActionsChanged(actions: List?) + } + + /** + * A listener interface to receive notification on changes to the media metadata. + */ + interface MetadataListener { + /** + * Called when the media metadata changed. + */ + fun onMediaMetadataChanged(metadata: MediaMetadata?) + } + + /** + * A listener interface to receive notification on changes to the media session token. + */ + interface TokenListener { + /** + * Called when the media session token changed. + */ + fun onMediaSessionTokenChanged(token: MediaSession.Token?) + } + + private val mHandlerExecutor: HandlerExecutor = HandlerExecutor(mMainHandler) + private val mMediaSessionManager: MediaSessionManager? + private var mMediaController: MediaController? = null + private val mPauseAction: RemoteAction + private val mPlayAction: RemoteAction + private val mNextAction: RemoteAction + private val mPrevAction: RemoteAction + private val mMediaActionReceiver: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + if (mMediaController == null) { + // no active media session, bail early. + return + } + when (intent.action) { + ACTION_PLAY -> mMediaController!!.transportControls.play() + ACTION_PAUSE -> mMediaController!!.transportControls.pause() + ACTION_NEXT -> mMediaController!!.transportControls.skipToNext() + ACTION_PREV -> mMediaController!!.transportControls.skipToPrevious() + } + } + } + private val mPlaybackChangedListener: MediaController.Callback = + object : MediaController.Callback() { + override fun onPlaybackStateChanged(state: PlaybackState?) { + notifyActionsChanged() + } + + override fun onMetadataChanged(metadata: MediaMetadata?) { + notifyMetadataChanged(metadata) + } + } + private val mSessionsChangedListener = + MediaSessionManager.OnActiveSessionsChangedListener { controllers: List? -> + resolveActiveMediaController(controllers) + } + private val mActionListeners = ArrayList() + private val mMetadataListeners = ArrayList() + private val mTokenListeners = ArrayList() + + init { + val mediaControlFilter = IntentFilter() + mediaControlFilter.addAction(ACTION_PLAY) + mediaControlFilter.addAction(ACTION_PAUSE) + mediaControlFilter.addAction(ACTION_NEXT) + mediaControlFilter.addAction(ACTION_PREV) + mContext.registerReceiverForAllUsers( + mMediaActionReceiver, mediaControlFilter, + SYSTEMUI_PERMISSION, mMainHandler, Context.RECEIVER_EXPORTED + ) + + // Creates the standard media buttons that we may show. + mPauseAction = getDefaultRemoteAction( + R.string.pip_pause, + R.drawable.pip_ic_pause_white, ACTION_PAUSE + ) + mPlayAction = getDefaultRemoteAction( + R.string.pip_play, + R.drawable.pip_ic_play_arrow_white, ACTION_PLAY + ) + mNextAction = getDefaultRemoteAction( + R.string.pip_skip_to_next, + R.drawable.pip_ic_skip_next_white, ACTION_NEXT + ) + mPrevAction = getDefaultRemoteAction( + R.string.pip_skip_to_prev, + R.drawable.pip_ic_skip_previous_white, ACTION_PREV + ) + mMediaSessionManager = mContext.getSystemService( + MediaSessionManager::class.java + ) + } + + /** + * Handles when an activity is pinned. + */ + fun onActivityPinned() { + // Once we enter PiP, try to find the active media controller for the top most activity + resolveActiveMediaController( + mMediaSessionManager!!.getActiveSessionsForUser( + null, + UserHandle.CURRENT + ) + ) + } + + /** + * Adds a new media action listener. + */ + fun addActionListener(listener: ActionListener) { + if (!mActionListeners.contains(listener)) { + mActionListeners.add(listener) + listener.onMediaActionsChanged(mediaActions) + } + } + + /** + * Removes a media action listener. + */ + fun removeActionListener(listener: ActionListener) { + listener.onMediaActionsChanged(emptyList()) + mActionListeners.remove(listener) + } + + /** + * Adds a new media metadata listener. + */ + fun addMetadataListener(listener: MetadataListener) { + if (!mMetadataListeners.contains(listener)) { + mMetadataListeners.add(listener) + listener.onMediaMetadataChanged(mediaMetadata) + } + } + + /** + * Removes a media metadata listener. + */ + fun removeMetadataListener(listener: MetadataListener) { + listener.onMediaMetadataChanged(null) + mMetadataListeners.remove(listener) + } + + /** + * Adds a new token listener. + */ + fun addTokenListener(listener: TokenListener) { + if (!mTokenListeners.contains(listener)) { + mTokenListeners.add(listener) + listener.onMediaSessionTokenChanged(token) + } + } + + /** + * Removes a token listener. + */ + fun removeTokenListener(listener: TokenListener) { + listener.onMediaSessionTokenChanged(null) + mTokenListeners.remove(listener) + } + + private val token: MediaSession.Token? + get() = if (mMediaController == null) { + null + } else mMediaController!!.sessionToken + private val mediaMetadata: MediaMetadata? + get() = if (mMediaController != null) mMediaController!!.metadata else null + + private val mediaActions: List + /** + * Gets the set of media actions currently available. + */ + get() { + if (mMediaController == null) { + return emptyList() + } + // Cache the PlaybackState since it's a Binder call. + // Safe because mMediaController is guaranteed non-null here. + val playbackState: PlaybackState = mMediaController!!.playbackState + ?: return emptyList() + val mediaActions = ArrayList() + val isPlaying = playbackState.isActive + val actions = playbackState.actions + + // Prev action + mPrevAction.isEnabled = + actions and PlaybackState.ACTION_SKIP_TO_PREVIOUS != 0L + mediaActions.add(mPrevAction) + + // Play/pause action + if (!isPlaying && actions and PlaybackState.ACTION_PLAY != 0L) { + mediaActions.add(mPlayAction) + } else if (isPlaying && actions and PlaybackState.ACTION_PAUSE != 0L) { + mediaActions.add(mPauseAction) + } + + // Next action + mNextAction.isEnabled = + actions and PlaybackState.ACTION_SKIP_TO_NEXT != 0L + mediaActions.add(mNextAction) + return mediaActions + } + + /** @return Default [RemoteAction] sends broadcast back to SysUI. + */ + private fun getDefaultRemoteAction( + @StringRes titleAndDescription: Int, + @DrawableRes icon: Int, + action: String + ): RemoteAction { + val titleAndDescriptionStr = mContext.getString(titleAndDescription) + val intent = Intent(action) + intent.setPackage(mContext.packageName) + return RemoteAction( + Icon.createWithResource(mContext, icon), + titleAndDescriptionStr, titleAndDescriptionStr, + PendingIntent.getBroadcast( + mContext, 0 /* requestCode */, intent, + PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE + ) + ) + } + + /** + * Re-registers the session listener for the current user. + */ + fun registerSessionListenerForCurrentUser() { + mMediaSessionManager!!.removeOnActiveSessionsChangedListener(mSessionsChangedListener) + mMediaSessionManager.addOnActiveSessionsChangedListener( + null, UserHandle.CURRENT, + mHandlerExecutor, mSessionsChangedListener + ) + } + + /** + * Tries to find and set the active media controller for the top PiP activity. + */ + private fun resolveActiveMediaController(controllers: List?) { + if (controllers != null) { + val topActivity = PipUtils.getTopPipActivity(mContext).first + if (topActivity != null) { + for (i in controllers.indices) { + val controller = controllers[i] + if (controller.packageName == topActivity.packageName) { + setActiveMediaController(controller) + return + } + } + } + } + setActiveMediaController(null) + } + + /** + * Sets the active media controller for the top PiP activity. + */ + private fun setActiveMediaController(controller: MediaController?) { + if (controller != mMediaController) { + if (mMediaController != null) { + mMediaController!!.unregisterCallback(mPlaybackChangedListener) + } + mMediaController = controller + controller?.registerCallback(mPlaybackChangedListener, mMainHandler) + notifyActionsChanged() + notifyMetadataChanged(mediaMetadata) + notifyTokenChanged(token) + + // TODO(winsonc): Consider if we want to close the PIP after a timeout (like on TV) + } + } + + /** + * Notifies all listeners that the actions have changed. + */ + private fun notifyActionsChanged() { + if (mActionListeners.isNotEmpty()) { + val actions = mediaActions + mActionListeners.forEach( + Consumer { l: ActionListener -> l.onMediaActionsChanged(actions) }) + } + } + + /** + * Notifies all listeners that the metadata have changed. + */ + private fun notifyMetadataChanged(metadata: MediaMetadata?) { + if (mMetadataListeners.isNotEmpty()) { + mMetadataListeners.forEach(Consumer { l: MetadataListener -> + l.onMediaMetadataChanged( + metadata + ) + }) + } + } + + private fun notifyTokenChanged(token: MediaSession.Token?) { + if (mTokenListeners.isNotEmpty()) { + mTokenListeners.forEach(Consumer { l: TokenListener -> + l.onMediaSessionTokenChanged( + token + ) + }) + } + } + + companion object { + private const val SYSTEMUI_PERMISSION = "com.android.systemui.permission.SELF" + private const val ACTION_PLAY = "com.android.wm.shell.pip.PLAY" + private const val ACTION_PAUSE = "com.android.wm.shell.pip.PAUSE" + private const val ACTION_NEXT = "com.android.wm.shell.pip.NEXT" + private const val ACTION_PREV = "com.android.wm.shell.pip.PREV" + } +} \ No newline at end of file diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipPinchResizingAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipPinchResizingAlgorithm.java similarity index 96% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipPinchResizingAlgorithm.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipPinchResizingAlgorithm.java index 23153be7289086c70b5d556375221bd8e72fc1e4..02b3a886208564ac252add944aabcd3b33165508 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipPinchResizingAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipPinchResizingAlgorithm.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright (C) 2023 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. @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.wm.shell.pip.phone; +package com.android.wm.shell.common.pip; import android.graphics.Point; import android.graphics.PointF; @@ -35,7 +35,7 @@ public class PipPinchResizingAlgorithm { private final PointF mTmpLastCentroid = new PointF(); /** - * Updates {@param resizeBoundsOut} with the new bounds of the PIP, and returns the angle in + * Updates resizeBoundsOut with the new bounds of the PIP, and returns the angle in * degrees that the PIP should be rotated. */ public float calculateBoundsAndAngle(PointF downPoint, PointF downSecondPoint, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSnapAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipSnapAlgorithm.java similarity index 84% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSnapAlgorithm.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipSnapAlgorithm.java index dd30137813e5498be84813f13796abe9340195e2..007052ee012a6e33dbb5c7d752e83f0859257d3d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSnapAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipSnapAlgorithm.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,11 +14,11 @@ * limitations under the License. */ -package com.android.wm.shell.pip; +package com.android.wm.shell.common.pip; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_LEFT; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_LEFT; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_NONE; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_RIGHT; import android.graphics.Rect; @@ -39,14 +39,14 @@ public class PipSnapAlgorithm { } /** - * @return returns a fraction that describes where along the {@param movementBounds} the - * {@param stackBounds} are. If the {@param stackBounds} are not currently on the - * {@param movementBounds} exactly, then they will be snapped to the movement bounds. + * @return returns a fraction that describes where along the movementBounds the + * stackBounds are. If the stackBounds are not currently on the + * movementBounds exactly, then they will be snapped to the movement bounds. * stashType dictates whether the PiP is stashed (off-screen) or not. If * that's the case, we will have to do some math to calculate the snap fraction * correctly. * - * The fraction is defined in a clockwise fashion against the {@param movementBounds}: + * The fraction is defined in a clockwise fashion against the movementBounds: * * 0 1 * 4 +---+ 1 @@ -58,10 +58,10 @@ public class PipSnapAlgorithm { @PipBoundsState.StashType int stashType) { final Rect tmpBounds = new Rect(); snapRectToClosestEdge(stackBounds, movementBounds, tmpBounds, stashType); - final float widthFraction = (float) (tmpBounds.left - movementBounds.left) / - movementBounds.width(); - final float heightFraction = (float) (tmpBounds.top - movementBounds.top) / - movementBounds.height(); + final float widthFraction = (float) (tmpBounds.left - movementBounds.left) + / movementBounds.width(); + final float heightFraction = (float) (tmpBounds.top - movementBounds.top) + / movementBounds.height(); if (tmpBounds.top == movementBounds.top) { return widthFraction; } else if (tmpBounds.left == movementBounds.right) { @@ -74,10 +74,10 @@ public class PipSnapAlgorithm { } /** - * Moves the {@param stackBounds} along the {@param movementBounds} to the given snap fraction. + * Moves the stackBounds along the movementBounds to the given snap fraction. * See {@link #getSnapFraction(Rect, Rect)}. * - * The fraction is define in a clockwise fashion against the {@param movementBounds}: + * The fraction is define in a clockwise fashion against the movementBounds: * * 0 1 * 4 +---+ 1 @@ -122,11 +122,11 @@ public class PipSnapAlgorithm { } /** - * Snaps the {@param stackBounds} to the closest edge of the {@param movementBounds} and writes - * the new bounds out to {@param boundsOut}. + * Snaps the stackBounds to the closest edge of the movementBounds and writes + * the new bounds out to boundsOut. */ @VisibleForTesting - void snapRectToClosestEdge(Rect stackBounds, Rect movementBounds, Rect boundsOut, + public void snapRectToClosestEdge(Rect stackBounds, Rect movementBounds, Rect boundsOut, @PipBoundsState.StashType int stashType) { int leftEdge = stackBounds.left; if (stashType == STASH_TYPE_LEFT) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUiEventLogger.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipUiEventLogger.kt similarity index 60% rename from libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUiEventLogger.java rename to libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipUiEventLogger.kt index 3e5a19b69a59dae59ade11ca58c5d815296a17f6..642dacc425d24720b79ddf7dae63c94e0392ec9f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUiEventLogger.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipUiEventLogger.kt @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright (C) 2023 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. @@ -13,68 +13,59 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package com.android.wm.shell.common.pip -package com.android.wm.shell.pip; - -import android.app.TaskInfo; -import android.content.pm.PackageManager; - -import com.android.internal.logging.UiEvent; -import com.android.internal.logging.UiEventLogger; +import android.app.TaskInfo +import android.content.pm.PackageManager +import com.android.internal.logging.UiEvent +import com.android.internal.logging.UiEventLogger /** * Helper class that ends PiP log to UiEvent, see also go/uievent */ -public class PipUiEventLogger { - - private static final int INVALID_PACKAGE_UID = -1; - - private final UiEventLogger mUiEventLogger; - private final PackageManager mPackageManager; - - private String mPackageName; - private int mPackageUid = INVALID_PACKAGE_UID; - - public PipUiEventLogger(UiEventLogger uiEventLogger, PackageManager packageManager) { - mUiEventLogger = uiEventLogger; - mPackageManager = packageManager; - } - - public void setTaskInfo(TaskInfo taskInfo) { - if (taskInfo != null && taskInfo.topActivity != null) { - mPackageName = taskInfo.topActivity.getPackageName(); - mPackageUid = getUid(mPackageName, taskInfo.userId); +class PipUiEventLogger( + private val mUiEventLogger: UiEventLogger, + private val mPackageManager: PackageManager +) { + private var mPackageName: String? = null + private var mPackageUid = INVALID_PACKAGE_UID + fun setTaskInfo(taskInfo: TaskInfo?) { + if (taskInfo?.topActivity != null) { + // safe because topActivity is guaranteed non-null here + mPackageName = taskInfo.topActivity!!.packageName + mPackageUid = getUid(mPackageName!!, taskInfo.userId) } else { - mPackageName = null; - mPackageUid = INVALID_PACKAGE_UID; + mPackageName = null + mPackageUid = INVALID_PACKAGE_UID } } /** * Sends log via UiEvent, reference go/uievent for how to debug locally */ - public void log(PipUiEventEnum event) { + fun log(event: PipUiEventEnum?) { if (mPackageName == null || mPackageUid == INVALID_PACKAGE_UID) { - return; + return } - mUiEventLogger.log(event, mPackageUid, mPackageName); + mUiEventLogger.log(event!!, mPackageUid, mPackageName) } - private int getUid(String packageName, int userId) { - int uid = INVALID_PACKAGE_UID; + private fun getUid(packageName: String, userId: Int): Int { + var uid = INVALID_PACKAGE_UID try { uid = mPackageManager.getApplicationInfoAsUser( - packageName, 0 /* ApplicationInfoFlags */, userId).uid; - } catch (PackageManager.NameNotFoundException e) { + packageName, 0 /* ApplicationInfoFlags */, userId + ).uid + } catch (e: PackageManager.NameNotFoundException) { // do nothing. } - return uid; + return uid } /** * Enums for logging the PiP events to UiEvent */ - public enum PipUiEventEnum implements UiEventLogger.UiEventEnum { + enum class PipUiEventEnum(private val mId: Int) : UiEventLogger.UiEventEnum { @UiEvent(doc = "Activity enters picture-in-picture mode") PICTURE_IN_PICTURE_ENTER(603), @@ -99,8 +90,10 @@ public class PipUiEventLogger { @UiEvent(doc = "Hides picture-in-picture menu") PICTURE_IN_PICTURE_HIDE_MENU(608), - @UiEvent(doc = "Changes the aspect ratio of picture-in-picture window. This is inherited" - + " from previous Tron-based logging and currently not in use.") + @UiEvent( + doc = "Changes the aspect ratio of picture-in-picture window. This is inherited" + + " from previous Tron-based logging and currently not in use." + ) PICTURE_IN_PICTURE_CHANGE_ASPECT_RATIO(609), @UiEvent(doc = "User resize of the picture-in-picture window") @@ -121,15 +114,12 @@ public class PipUiEventLogger { @UiEvent(doc = "Closes PiP with app-provided close action") PICTURE_IN_PICTURE_CUSTOM_CLOSE(1058); - private final int mId; - - PipUiEventEnum(int id) { - mId = id; + override fun getId(): Int { + return mId } + } - @Override - public int getId() { - return mId; - } + companion object { + private const val INVALID_PACKAGE_UID = -1 } -} +} \ No newline at end of file diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipUtils.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipUtils.kt new file mode 100644 index 0000000000000000000000000000000000000000..84feb03e6a402edf00694c8c38d360f0c4aa0287 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/pip/PipUtils.kt @@ -0,0 +1,144 @@ +/* + * Copyright (C) 2023 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.wm.shell.common.pip + +import android.app.ActivityTaskManager +import android.app.RemoteAction +import android.app.WindowConfiguration +import android.content.ComponentName +import android.content.Context +import android.os.RemoteException +import android.os.SystemProperties +import android.util.DisplayMetrics +import android.util.Log +import android.util.Pair +import android.util.TypedValue +import android.window.TaskSnapshot +import com.android.internal.protolog.common.ProtoLog +import com.android.wm.shell.protolog.ShellProtoLogGroup +import kotlin.math.abs + +/** A class that includes convenience methods. */ +object PipUtils { + private const val TAG = "PipUtils" + + // Minimum difference between two floats (e.g. aspect ratios) to consider them not equal. + private const val EPSILON = 1e-7 + private const val ENABLE_PIP2_IMPLEMENTATION = "persist.wm.debug.enable_pip2_implementation" + + /** + * @return the ComponentName and user id of the top non-SystemUI activity in the pinned stack. + * The component name may be null if no such activity exists. + */ + @JvmStatic + fun getTopPipActivity(context: Context): Pair { + try { + val sysUiPackageName = context.packageName + val pinnedTaskInfo = ActivityTaskManager.getService().getRootTaskInfo( + WindowConfiguration.WINDOWING_MODE_PINNED, + WindowConfiguration.ACTIVITY_TYPE_UNDEFINED + ) + if (pinnedTaskInfo?.childTaskIds != null && pinnedTaskInfo.childTaskIds.isNotEmpty()) { + for (i in pinnedTaskInfo.childTaskNames.indices.reversed()) { + val cn = ComponentName.unflattenFromString( + pinnedTaskInfo.childTaskNames[i] + ) + if (cn != null && cn.packageName != sysUiPackageName) { + return Pair(cn, pinnedTaskInfo.childTaskUserIds[i]) + } + } + } + } catch (e: RemoteException) { + ProtoLog.w( + ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, + "%s: Unable to get pinned stack.", TAG + ) + } + return Pair(null, 0) + } + + /** + * @return the pixels for a given dp value. + */ + @JvmStatic + fun dpToPx(dpValue: Float, dm: DisplayMetrics?): Int { + return TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue, dm).toInt() + } + + /** + * @return true if the aspect ratios differ + */ + @JvmStatic + fun aspectRatioChanged(aspectRatio1: Float, aspectRatio2: Float): Boolean { + return abs(aspectRatio1 - aspectRatio2) > EPSILON + } + + /** + * Checks whether title, description and intent match. + * Comparing icons would be good, but using equals causes false negatives + */ + @JvmStatic + fun remoteActionsMatch(action1: RemoteAction?, action2: RemoteAction?): Boolean { + if (action1 === action2) return true + if (action1 == null || action2 == null) return false + return action1.isEnabled == action2.isEnabled && + action1.shouldShowIcon() == action2.shouldShowIcon() && + action1.title == action2.title && + action1.contentDescription == action2.contentDescription && + action1.actionIntent == action2.actionIntent + } + + /** + * Returns true if the actions in the lists match each other according to + * [ ][PipUtils.remoteActionsMatch], including their position. + */ + @JvmStatic + fun remoteActionsChanged(list1: List?, list2: List?): Boolean { + if (list1 == null && list2 == null) { + return false + } + if (list1 == null || list2 == null) { + return true + } + if (list1.size != list2.size) { + return true + } + for (i in list1.indices) { + if (!remoteActionsMatch(list1[i], list2[i])) { + return true + } + } + return false + } + + /** @return [TaskSnapshot] for a given task id. + */ + @JvmStatic + fun getTaskSnapshot(taskId: Int, isLowResolution: Boolean): TaskSnapshot? { + return if (taskId <= 0) null else try { + ActivityTaskManager.getService().getTaskSnapshot( + taskId, isLowResolution, false /* takeSnapshotIfNeeded */ + ) + } catch (e: RemoteException) { + Log.e(TAG, "Failed to get task snapshot, taskId=$taskId", e) + null + } + } + + @JvmStatic + val isPip2ExperimentEnabled: Boolean + get() = SystemProperties.getBoolean(ENABLE_PIP2_IMPLEMENTATION, false) +} \ No newline at end of file diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerSnapAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerSnapAlgorithm.java index 1901e0bbe700420d9165e7d22df2a6537fa9c76e..a5000feae239d7787f75d7b94cc3eb0cb5114792 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerSnapAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/DividerSnapAlgorithm.java @@ -19,6 +19,14 @@ package com.android.wm.shell.common.split; import static android.view.WindowManager.DOCKED_INVALID; import static android.view.WindowManager.DOCKED_LEFT; import static android.view.WindowManager.DOCKED_RIGHT; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_30_70; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_50_50; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_70_30; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_END_AND_DISMISS; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_MINIMIZE; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_NONE; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_START_AND_DISMISS; +import static com.android.wm.shell.common.split.SplitScreenConstants.SnapPosition; import android.content.Context; import android.content.res.Configuration; @@ -263,7 +271,7 @@ public class DividerSnapAlgorithm { private SnapTarget snap(int position, boolean hardDismiss) { if (shouldApplyFreeSnapMode(position)) { - return new SnapTarget(position, position, SnapTarget.FLAG_NONE); + return new SnapTarget(position, position, SNAP_TO_NONE); } int minIndex = -1; float minDistance = Float.MAX_VALUE; @@ -291,8 +299,7 @@ public class DividerSnapAlgorithm { if (dockedSide == DOCKED_RIGHT) { startPos += mInsets.left; } - mTargets.add(new SnapTarget(startPos, startPos, SnapTarget.FLAG_DISMISS_START, - 0.35f)); + mTargets.add(new SnapTarget(startPos, startPos, SNAP_TO_START_AND_DISMISS, 0.35f)); switch (mSnapMode) { case SNAP_MODE_16_9: addRatio16_9Targets(isHorizontalDivision, dividerMax); @@ -307,15 +314,15 @@ public class DividerSnapAlgorithm { addMinimizedTarget(isHorizontalDivision, dockedSide); break; } - mTargets.add(new SnapTarget(dividerMax, dividerMax, SnapTarget.FLAG_DISMISS_END, 0.35f)); + mTargets.add(new SnapTarget(dividerMax, dividerMax, SNAP_TO_END_AND_DISMISS, 0.35f)); } private void addNonDismissingTargets(boolean isHorizontalDivision, int topPosition, int bottomPosition, int dividerMax) { - maybeAddTarget(topPosition, topPosition - getStartInset()); + maybeAddTarget(topPosition, topPosition - getStartInset(), SNAP_TO_30_70); addMiddleTarget(isHorizontalDivision); maybeAddTarget(bottomPosition, - dividerMax - getEndInset() - (bottomPosition + mDividerSize)); + dividerMax - getEndInset() - (bottomPosition + mDividerSize), SNAP_TO_70_30); } private void addFixedDivisionTargets(boolean isHorizontalDivision, int dividerMax) { @@ -349,16 +356,16 @@ public class DividerSnapAlgorithm { * Adds a target at {@param position} but only if the area with size of {@param smallerSize} * meets the minimal size requirement. */ - private void maybeAddTarget(int position, int smallerSize) { + private void maybeAddTarget(int position, int smallerSize, @SnapPosition int snapTo) { if (smallerSize >= mMinimalSizeResizableTask) { - mTargets.add(new SnapTarget(position, position, SnapTarget.FLAG_NONE)); + mTargets.add(new SnapTarget(position, position, snapTo)); } } private void addMiddleTarget(boolean isHorizontalDivision) { int position = DockedDividerUtils.calculateMiddlePosition(isHorizontalDivision, mInsets, mDisplayWidth, mDisplayHeight, mDividerSize); - mTargets.add(new SnapTarget(position, position, SnapTarget.FLAG_NONE)); + mTargets.add(new SnapTarget(position, position, SNAP_TO_50_50)); } private void addMinimizedTarget(boolean isHorizontalDivision, int dockedSide) { @@ -372,7 +379,7 @@ public class DividerSnapAlgorithm { position = mDisplayWidth - position - mInsets.right - mDividerSize; } } - mTargets.add(new SnapTarget(position, position, SnapTarget.FLAG_NONE)); + mTargets.add(new SnapTarget(position, position, SNAP_TO_MINIMIZE)); } public SnapTarget getMiddleTarget() { @@ -435,14 +442,6 @@ public class DividerSnapAlgorithm { * Represents a snap target for the divider. */ public static class SnapTarget { - public static final int FLAG_NONE = 0; - - /** If the divider reaches this value, the left/top task should be dismissed. */ - public static final int FLAG_DISMISS_START = 1; - - /** If the divider reaches this value, the right/bottom task should be dismissed */ - public static final int FLAG_DISMISS_END = 2; - /** Position of this snap target. The right/bottom edge of the top/left task snaps here. */ public final int position; @@ -452,7 +451,10 @@ public class DividerSnapAlgorithm { */ public final int taskPosition; - public final int flag; + /** + * An int describing the placement of the divider in this snap target. + */ + public final @SnapPosition int snapTo; public boolean isMiddleTarget; @@ -462,14 +464,15 @@ public class DividerSnapAlgorithm { */ private final float distanceMultiplier; - public SnapTarget(int position, int taskPosition, int flag) { - this(position, taskPosition, flag, 1f); + public SnapTarget(int position, int taskPosition, @SnapPosition int snapTo) { + this(position, taskPosition, snapTo, 1f); } - public SnapTarget(int position, int taskPosition, int flag, float distanceMultiplier) { + public SnapTarget(int position, int taskPosition, @SnapPosition int snapTo, + float distanceMultiplier) { this.position = position; this.taskPosition = taskPosition; - this.flag = flag; + this.snapTo = snapTo; this.distanceMultiplier = distanceMultiplier; } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java index 5d7e532d63d75b444a3382e599b4e413c596b6e3..4af03fd5b9555e99086105b62d6739cfe723db53 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitLayout.java @@ -23,12 +23,12 @@ import static android.view.WindowManager.DOCKED_INVALID; import static android.view.WindowManager.DOCKED_LEFT; import static android.view.WindowManager.DOCKED_RIGHT; import static android.view.WindowManager.DOCKED_TOP; - +import static com.android.internal.jank.InteractionJankMonitor.CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER; import static com.android.internal.jank.InteractionJankMonitor.CUJ_SPLIT_SCREEN_RESIZE; -import static com.android.wm.shell.common.split.DividerSnapAlgorithm.SnapTarget.FLAG_DISMISS_END; -import static com.android.wm.shell.common.split.DividerSnapAlgorithm.SnapTarget.FLAG_DISMISS_START; import static com.android.wm.shell.animation.Interpolators.DIM_INTERPOLATOR; import static com.android.wm.shell.animation.Interpolators.SLOWDOWN_INTERPOLATOR; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_END_AND_DISMISS; +import static com.android.wm.shell.common.split.SplitScreenConstants.SNAP_TO_START_AND_DISMISS; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_UNDEFINED; @@ -510,13 +510,13 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange * target indicates dismissing split. */ public void snapToTarget(int currentPosition, DividerSnapAlgorithm.SnapTarget snapTarget) { - switch (snapTarget.flag) { - case FLAG_DISMISS_START: + switch (snapTarget.snapTo) { + case SNAP_TO_START_AND_DISMISS: flingDividePosition(currentPosition, snapTarget.position, FLING_RESIZE_DURATION, () -> mSplitLayoutHandler.onSnappedToDismiss(false /* bottomOrRight */, EXIT_REASON_DRAG_DIVIDER)); break; - case FLAG_DISMISS_END: + case SNAP_TO_END_AND_DISMISS: flingDividePosition(currentPosition, snapTarget.position, FLING_RESIZE_DURATION, () -> mSplitLayoutHandler.onSnappedToDismiss(true /* bottomOrRight */, EXIT_REASON_DRAG_DIVIDER)); @@ -660,11 +660,23 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange set.playTogether(animator1, animator2, animator3); set.setDuration(FLING_SWITCH_DURATION); set.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + InteractionJankMonitorUtils.beginTracing(CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER, + mContext, getDividerLeash(), null /*tag*/); + } + @Override public void onAnimationEnd(Animator animation) { mDividePosition = dividerPos; updateBounds(mDividePosition); finishCallback.accept(insets); + InteractionJankMonitorUtils.endTracing(CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER); + } + + @Override + public void onAnimationCancel(Animator animation) { + InteractionJankMonitorUtils.cancelTracing(CUJ_SPLIT_SCREEN_DOUBLE_TAP_DIVIDER); } }); set.start(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitScreenConstants.java b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitScreenConstants.java index ef93a336305fb2096cec143297943ce324dddd08..ff38b7e7041056a0abde32d861539461b2663a2f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitScreenConstants.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/common/split/SplitScreenConstants.java @@ -16,6 +16,7 @@ package com.android.wm.shell.common.split; import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW; import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; @@ -56,11 +57,44 @@ public class SplitScreenConstants { public @interface SplitPosition { } + /** The divider doesn't snap to any target and is freely placeable. */ + public static final int SNAP_TO_NONE = 0; + + /** A snap target positioned near the screen edge for a minimized task */ + public static final int SNAP_TO_MINIMIZE = 1; + + /** If the divider reaches this value, the left/top task should be dismissed. */ + public static final int SNAP_TO_START_AND_DISMISS = 2; + + /** A snap target in the first half of the screen, where the split is roughly 30-70. */ + public static final int SNAP_TO_30_70 = 3; + + /** The 50-50 snap target */ + public static final int SNAP_TO_50_50 = 4; + + /** A snap target in the latter half of the screen, where the split is roughly 70-30. */ + public static final int SNAP_TO_70_30 = 5; + + /** If the divider reaches this value, the right/bottom task should be dismissed. */ + public static final int SNAP_TO_END_AND_DISMISS = 6; + + @IntDef(prefix = { "SNAP_TO_" }, value = { + SNAP_TO_NONE, + SNAP_TO_MINIMIZE, + SNAP_TO_START_AND_DISMISS, + SNAP_TO_30_70, + SNAP_TO_50_50, + SNAP_TO_70_30, + SNAP_TO_END_AND_DISMISS + }) + public @interface SnapPosition {} + public static final int[] CONTROLLED_ACTIVITY_TYPES = {ACTIVITY_TYPE_STANDARD}; public static final int[] CONTROLLED_WINDOWING_MODES = {WINDOWING_MODE_FULLSCREEN, WINDOWING_MODE_UNDEFINED}; public static final int[] CONTROLLED_WINDOWING_MODES_WHEN_ACTIVE = - {WINDOWING_MODE_FULLSCREEN, WINDOWING_MODE_UNDEFINED, WINDOWING_MODE_MULTI_WINDOW}; + {WINDOWING_MODE_FULLSCREEN, WINDOWING_MODE_UNDEFINED, WINDOWING_MODE_MULTI_WINDOW, + WINDOWING_MODE_FREEFORM}; /** Flag applied to a transition change to identify it as a divider bar for animation. */ public static final int FLAG_IS_DIVIDER_BAR = FLAG_FIRST_CUSTOM; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java index 0998e7134e000467c733d5016732c3becf0a3c57..0e6b20332a4fc656ba766b719979b4029e259d6e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIController.java @@ -16,12 +16,20 @@ package com.android.wm.shell.compatui; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; + +import android.annotation.NonNull; import android.annotation.Nullable; import android.app.TaskInfo; import android.app.TaskInfo.CameraCompatControlState; +import android.content.ComponentName; import android.content.Context; +import android.content.Intent; import android.content.res.Configuration; import android.hardware.display.DisplayManager; +import android.net.Uri; +import android.os.UserHandle; +import android.provider.Settings; import android.util.ArraySet; import android.util.Log; import android.util.Pair; @@ -29,6 +37,7 @@ import android.util.SparseArray; import android.view.Display; import android.view.InsetsSourceControl; import android.view.InsetsState; +import android.view.accessibility.AccessibilityManager; import com.android.internal.annotations.VisibleForTesting; import com.android.wm.shell.ShellTaskOrganizer; @@ -41,7 +50,6 @@ import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.DockStateReader; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; -import com.android.wm.shell.compatui.CompatUIWindowManager.CompatUIHintsState; import com.android.wm.shell.sysui.KeyguardChangeListener; import com.android.wm.shell.sysui.ShellController; import com.android.wm.shell.sysui.ShellInit; @@ -55,6 +63,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.function.Consumer; +import java.util.function.Function; import java.util.function.Predicate; /** @@ -76,6 +85,9 @@ public class CompatUIController implements OnDisplaysChangedListener, private static final String TAG = "CompatUIController"; + // The time to wait before education and button hiding + private static final int DISAPPEAR_DELAY_MS = 5000; + /** Whether the IME is shown on display id. */ private final Set mDisplaysWithIme = new ArraySet<>(1); @@ -103,6 +115,13 @@ public class CompatUIController implements OnDisplaysChangedListener, */ private Set mSetOfTaskIdsShowingRestartDialog = new HashSet<>(); + /** + * The active user aspect ratio settings button layout if there is one (there can be at most + * one active). + */ + @Nullable + private UserAspectRatioSettingsWindowManager mUserAspectRatioSettingsLayout; + /** * The active Letterbox Education layout if there is one (there can be at most one active). * @@ -121,38 +140,55 @@ public class CompatUIController implements OnDisplaysChangedListener, /** Avoid creating display context frequently for non-default display. */ private final SparseArray> mDisplayContextCache = new SparseArray<>(0); + @NonNull private final Context mContext; + @NonNull private final ShellController mShellController; + @NonNull private final DisplayController mDisplayController; + @NonNull private final DisplayInsetsController mDisplayInsetsController; + @NonNull private final DisplayImeController mImeController; + @NonNull private final SyncTransactionQueue mSyncQueue; + @NonNull private final ShellExecutor mMainExecutor; + @NonNull private final Lazy mTransitionsLazy; + @NonNull private final DockStateReader mDockStateReader; + @NonNull private final CompatUIConfiguration mCompatUIConfiguration; // Only show each hint once automatically in the process life. + @NonNull private final CompatUIHintsState mCompatUIHintsState; + @NonNull private final CompatUIShellCommandHandler mCompatUIShellCommandHandler; - private CompatUICallback mCallback; + @NonNull + private final Function mDisappearTimeSupplier; + + @Nullable + private CompatUICallback mCompatUICallback; // Indicates if the keyguard is currently showing, in which case compat UIs shouldn't // be shown. private boolean mKeyguardShowing; - public CompatUIController(Context context, - ShellInit shellInit, - ShellController shellController, - DisplayController displayController, - DisplayInsetsController displayInsetsController, - DisplayImeController imeController, - SyncTransactionQueue syncQueue, - ShellExecutor mainExecutor, - Lazy transitionsLazy, - DockStateReader dockStateReader, - CompatUIConfiguration compatUIConfiguration, - CompatUIShellCommandHandler compatUIShellCommandHandler) { + public CompatUIController(@NonNull Context context, + @NonNull ShellInit shellInit, + @NonNull ShellController shellController, + @NonNull DisplayController displayController, + @NonNull DisplayInsetsController displayInsetsController, + @NonNull DisplayImeController imeController, + @NonNull SyncTransactionQueue syncQueue, + @NonNull ShellExecutor mainExecutor, + @NonNull Lazy transitionsLazy, + @NonNull DockStateReader dockStateReader, + @NonNull CompatUIConfiguration compatUIConfiguration, + @NonNull CompatUIShellCommandHandler compatUIShellCommandHandler, + @NonNull AccessibilityManager accessibilityManager) { mContext = context; mShellController = shellController; mDisplayController = displayController; @@ -165,6 +201,8 @@ public class CompatUIController implements OnDisplaysChangedListener, mDockStateReader = dockStateReader; mCompatUIConfiguration = compatUIConfiguration; mCompatUIShellCommandHandler = compatUIShellCommandHandler; + mDisappearTimeSupplier = flags -> accessibilityManager.getRecommendedTimeoutMillis( + DISAPPEAR_DELAY_MS, flags); shellInit.addInitCallback(this::onInit, this); } @@ -175,9 +213,9 @@ public class CompatUIController implements OnDisplaysChangedListener, mCompatUIShellCommandHandler.onInit(); } - /** Sets the callback for UI interactions. */ - public void setCompatUICallback(CompatUICallback callback) { - mCallback = callback; + /** Sets the callback for Compat UI interactions. */ + public void setCompatUICallback(@NonNull CompatUICallback compatUiCallback) { + mCompatUICallback = compatUiCallback; } /** @@ -187,7 +225,7 @@ public class CompatUIController implements OnDisplaysChangedListener, * @param taskInfo {@link TaskInfo} task the activity is in. * @param taskListener listener to handle the Task Surface placement. */ - public void onCompatInfoChanged(TaskInfo taskInfo, + public void onCompatInfoChanged(@NonNull TaskInfo taskInfo, @Nullable ShellTaskOrganizer.TaskListener taskListener) { if (taskInfo != null && !taskInfo.topActivityInSizeCompat) { mSetOfTaskIdsShowingRestartDialog.remove(taskInfo.taskId); @@ -203,6 +241,18 @@ public class CompatUIController implements OnDisplaysChangedListener, createOrUpdateRestartDialogLayout(taskInfo, taskListener); if (mCompatUIConfiguration.getHasSeenLetterboxEducation(taskInfo.userId)) { createOrUpdateReachabilityEduLayout(taskInfo, taskListener); + // The user aspect ratio button should not be handled when a new TaskInfo is + // sent because of a double tap or when in multi-window mode. + if (taskInfo.getWindowingMode() != WINDOWING_MODE_FULLSCREEN) { + if (mUserAspectRatioSettingsLayout != null) { + mUserAspectRatioSettingsLayout.release(); + mUserAspectRatioSettingsLayout = null; + } + return; + } + if (!taskInfo.isFromLetterboxDoubleTap) { + createOrUpdateUserAspectRatioSettingsLayout(taskInfo, taskListener); + } } } @@ -280,8 +330,8 @@ public class CompatUIController implements OnDisplaysChangedListener, return mDisplaysWithIme.contains(displayId); } - private void createOrUpdateCompatLayout(TaskInfo taskInfo, - ShellTaskOrganizer.TaskListener taskListener) { + private void createOrUpdateCompatLayout(@NonNull TaskInfo taskInfo, + @Nullable ShellTaskOrganizer.TaskListener taskListener) { CompatUIWindowManager layout = mActiveCompatLayouts.get(taskInfo.taskId); if (layout != null) { if (layout.needsToBeRecreated(taskInfo, taskListener)) { @@ -314,7 +364,7 @@ public class CompatUIController implements OnDisplaysChangedListener, CompatUIWindowManager createCompatUiWindowManager(Context context, TaskInfo taskInfo, ShellTaskOrganizer.TaskListener taskListener) { return new CompatUIWindowManager(context, - taskInfo, mSyncQueue, mCallback, taskListener, + taskInfo, mSyncQueue, mCompatUICallback, taskListener, mDisplayController.getDisplayLayout(taskInfo.displayId), mCompatUIHintsState, mCompatUIConfiguration, this::onRestartButtonClicked); } @@ -328,12 +378,12 @@ public class CompatUIController implements OnDisplaysChangedListener, mSetOfTaskIdsShowingRestartDialog.add(taskInfoState.first.taskId); onCompatInfoChanged(taskInfoState.first, taskInfoState.second); } else { - mCallback.onSizeCompatRestartButtonClicked(taskInfoState.first.taskId); + mCompatUICallback.onSizeCompatRestartButtonClicked(taskInfoState.first.taskId); } } - private void createOrUpdateLetterboxEduLayout(TaskInfo taskInfo, - ShellTaskOrganizer.TaskListener taskListener) { + private void createOrUpdateLetterboxEduLayout(@NonNull TaskInfo taskInfo, + @Nullable ShellTaskOrganizer.TaskListener taskListener) { if (mActiveLetterboxEduLayout != null) { if (mActiveLetterboxEduLayout.needsToBeRecreated(taskInfo, taskListener)) { mActiveLetterboxEduLayout.release(); @@ -377,8 +427,8 @@ public class CompatUIController implements OnDisplaysChangedListener, mDockStateReader, mCompatUIConfiguration); } - private void createOrUpdateRestartDialogLayout(TaskInfo taskInfo, - ShellTaskOrganizer.TaskListener taskListener) { + private void createOrUpdateRestartDialogLayout(@NonNull TaskInfo taskInfo, + @Nullable ShellTaskOrganizer.TaskListener taskListener) { RestartDialogWindowManager layout = mTaskIdToRestartDialogWindowManagerMap.get(taskInfo.taskId); if (layout != null) { @@ -423,7 +473,7 @@ public class CompatUIController implements OnDisplaysChangedListener, private void onRestartDialogCallback( Pair stateInfo) { mTaskIdToRestartDialogWindowManagerMap.remove(stateInfo.first.taskId); - mCallback.onSizeCompatRestartButtonClicked(stateInfo.first.taskId); + mCompatUICallback.onSizeCompatRestartButtonClicked(stateInfo.first.taskId); } private void onRestartDialogDismissCallback( @@ -432,8 +482,8 @@ public class CompatUIController implements OnDisplaysChangedListener, onCompatInfoChanged(stateInfo.first, stateInfo.second); } - private void createOrUpdateReachabilityEduLayout(TaskInfo taskInfo, - ShellTaskOrganizer.TaskListener taskListener) { + private void createOrUpdateReachabilityEduLayout(@NonNull TaskInfo taskInfo, + @Nullable ShellTaskOrganizer.TaskListener taskListener) { if (mActiveReachabilityEduLayout != null) { if (mActiveReachabilityEduLayout.needsToBeRecreated(taskInfo, taskListener)) { mActiveReachabilityEduLayout.release(); @@ -474,14 +524,75 @@ public class CompatUIController implements OnDisplaysChangedListener, ShellTaskOrganizer.TaskListener taskListener) { return new ReachabilityEduWindowManager(context, taskInfo, mSyncQueue, taskListener, mDisplayController.getDisplayLayout(taskInfo.displayId), - mCompatUIConfiguration, mMainExecutor); + mCompatUIConfiguration, mMainExecutor, this::onInitialReachabilityEduDismissed, + mDisappearTimeSupplier); } + private void onInitialReachabilityEduDismissed(@NonNull TaskInfo taskInfo, + @NonNull ShellTaskOrganizer.TaskListener taskListener) { + // We need to update the UI otherwise it will not be shown until the user relaunches the app + createOrUpdateUserAspectRatioSettingsLayout(taskInfo, taskListener); + } + + private void createOrUpdateUserAspectRatioSettingsLayout(@NonNull TaskInfo taskInfo, + @Nullable ShellTaskOrganizer.TaskListener taskListener) { + if (mUserAspectRatioSettingsLayout != null) { + if (mUserAspectRatioSettingsLayout.needsToBeRecreated(taskInfo, taskListener)) { + mUserAspectRatioSettingsLayout.release(); + mUserAspectRatioSettingsLayout = null; + } else { + // UI already exists, update the UI layout. + if (!mUserAspectRatioSettingsLayout.updateCompatInfo(taskInfo, taskListener, + showOnDisplay(mUserAspectRatioSettingsLayout.getDisplayId()))) { + mUserAspectRatioSettingsLayout.release(); + mUserAspectRatioSettingsLayout = null; + } + return; + } + } + + // Create a new UI layout. + final Context context = getOrCreateDisplayContext(taskInfo.displayId); + if (context == null) { + return; + } + final UserAspectRatioSettingsWindowManager newLayout = + createUserAspectRatioSettingsWindowManager(context, taskInfo, taskListener); + if (newLayout.createLayout(showOnDisplay(taskInfo.displayId))) { + // The new layout is eligible to be shown, add it the active layouts. + mUserAspectRatioSettingsLayout = newLayout; + } + } + + @VisibleForTesting + @NonNull + UserAspectRatioSettingsWindowManager createUserAspectRatioSettingsWindowManager( + @NonNull Context context, @NonNull TaskInfo taskInfo, + @Nullable ShellTaskOrganizer.TaskListener taskListener) { + return new UserAspectRatioSettingsWindowManager(context, taskInfo, mSyncQueue, + taskListener, mDisplayController.getDisplayLayout(taskInfo.displayId), + mCompatUIHintsState, this::launchUserAspectRatioSettings, mMainExecutor, + mDisappearTimeSupplier); + } + + private void launchUserAspectRatioSettings( + @NonNull TaskInfo taskInfo, @NonNull ShellTaskOrganizer.TaskListener taskListener) { + final Intent intent = new Intent(Settings.ACTION_MANAGE_USER_ASPECT_RATIO_SETTINGS); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); + final ComponentName appComponent = taskInfo.topActivity; + if (appComponent != null) { + final Uri packageUri = Uri.parse("package:" + appComponent.getPackageName()); + intent.setData(packageUri); + } + final UserHandle userHandle = UserHandle.of(taskInfo.userId); + mContext.startActivityAsUser(intent, userHandle); + } private void removeLayouts(int taskId) { - final CompatUIWindowManager layout = mActiveCompatLayouts.get(taskId); - if (layout != null) { - layout.release(); + final CompatUIWindowManager compatLayout = mActiveCompatLayouts.get(taskId); + if (compatLayout != null) { + compatLayout.release(); mActiveCompatLayouts.remove(taskId); } @@ -502,6 +613,12 @@ public class CompatUIController implements OnDisplaysChangedListener, mActiveReachabilityEduLayout.release(); mActiveReachabilityEduLayout = null; } + + if (mUserAspectRatioSettingsLayout != null + && mUserAspectRatioSettingsLayout.getTaskId() == taskId) { + mUserAspectRatioSettingsLayout.release(); + mUserAspectRatioSettingsLayout = null; + } } private Context getOrCreateDisplayContext(int displayId) { @@ -557,6 +674,10 @@ public class CompatUIController implements OnDisplaysChangedListener, if (mActiveReachabilityEduLayout != null && condition.test(mActiveReachabilityEduLayout)) { callback.accept(mActiveReachabilityEduLayout); } + if (mUserAspectRatioSettingsLayout != null && condition.test( + mUserAspectRatioSettingsLayout)) { + callback.accept(mUserAspectRatioSettingsLayout); + } } /** An implementation of {@link OnInsetsChangedListener} for a given display id. */ @@ -591,4 +712,14 @@ public class CompatUIController implements OnDisplaysChangedListener, insetsChanged(insetsState); } } + + /** + * A class holding the state of the compat UI hints, which is shared between all compat UI + * window managers. + */ + static class CompatUIHintsState { + boolean mHasShownSizeCompatHint; + boolean mHasShownCameraCompatHint; + boolean mHasShownUserAspectRatioSettingsButtonHint; + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java index 065806df3dc831505d194e81f11178e7fbb0060b..ce3c5093fdd43f29a03828858c0c7cf50af35522 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/CompatUIWindowManager.java @@ -38,6 +38,7 @@ import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.compatui.CompatUIController.CompatUICallback; +import com.android.wm.shell.compatui.CompatUIController.CompatUIHintsState; import java.util.function.Consumer; @@ -235,15 +236,4 @@ class CompatUIWindowManager extends CompatUIWindowManagerAbstract { return mCameraCompatControlState != CAMERA_COMPAT_CONTROL_HIDDEN && mCameraCompatControlState != CAMERA_COMPAT_CONTROL_DISMISSED; } - - /** - * A class holding the state of the compat UI hints, which is shared between all compat UI - * window managers. - */ - static class CompatUIHintsState { - @VisibleForTesting - boolean mHasShownSizeCompatHint; - @VisibleForTesting - boolean mHasShownCameraCompatHint; - } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/ReachabilityEduWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/ReachabilityEduWindowManager.java index 95bb1fe1c98637c37ae355e31274e5b37ef7ff06..5612bc8ef226eccd5c4f7bcc9fa69eb171966d18 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/ReachabilityEduWindowManager.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/ReachabilityEduWindowManager.java @@ -28,6 +28,7 @@ import android.os.SystemClock; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; +import android.view.accessibility.AccessibilityManager; import com.android.internal.annotations.VisibleForTesting; import com.android.wm.shell.R; @@ -36,14 +37,14 @@ import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; +import java.util.function.BiConsumer; +import java.util.function.Function; + /** * Window manager for the reachability education */ class ReachabilityEduWindowManager extends CompatUIWindowManagerAbstract { - // The time to wait before hiding the education - private static final long DISAPPEAR_DELAY_MS = 4000L; - private static final int REACHABILITY_LEFT_OR_UP_POSITION = 0; private static final int REACHABILITY_RIGHT_OR_BOTTOM_POSITION = 2; @@ -73,6 +74,10 @@ class ReachabilityEduWindowManager extends CompatUIWindowManagerAbstract { // we need to animate them. private boolean mHasLetterboxSizeChanged; + private final BiConsumer mOnDismissCallback; + + private final Function mDisappearTimeSupplier; + @Nullable @VisibleForTesting ReachabilityEduLayout mLayout; @@ -80,7 +85,9 @@ class ReachabilityEduWindowManager extends CompatUIWindowManagerAbstract { ReachabilityEduWindowManager(Context context, TaskInfo taskInfo, SyncTransactionQueue syncQueue, ShellTaskOrganizer.TaskListener taskListener, DisplayLayout displayLayout, - CompatUIConfiguration compatUIConfiguration, ShellExecutor mainExecutor) { + CompatUIConfiguration compatUIConfiguration, ShellExecutor mainExecutor, + BiConsumer onDismissCallback, + Function disappearTimeSupplier) { super(context, taskInfo, syncQueue, taskListener, displayLayout); mIsActivityLetterboxed = taskInfo.isLetterboxDoubleTapEnabled; mLetterboxVerticalPosition = taskInfo.topActivityLetterboxVerticalPosition; @@ -89,6 +96,8 @@ class ReachabilityEduWindowManager extends CompatUIWindowManagerAbstract { mTopActivityLetterboxHeight = taskInfo.topActivityLetterboxHeight; mCompatUIConfiguration = compatUIConfiguration; mMainExecutor = mainExecutor; + mOnDismissCallback = onDismissCallback; + mDisappearTimeSupplier = disappearTimeSupplier; } @Override @@ -209,7 +218,12 @@ class ReachabilityEduWindowManager extends CompatUIWindowManagerAbstract { } void updateHideTime() { - mNextHideTime = SystemClock.uptimeMillis() + DISAPPEAR_DELAY_MS; + mNextHideTime = SystemClock.uptimeMillis() + getDisappearTimeMs(); + } + + private long getDisappearTimeMs() { + return mDisappearTimeSupplier.apply( + AccessibilityManager.FLAG_CONTENT_ICONS | AccessibilityManager.FLAG_CONTENT_TEXT); } private void updateVisibilityOfViews() { @@ -217,13 +231,17 @@ class ReachabilityEduWindowManager extends CompatUIWindowManagerAbstract { return; } final TaskInfo lastTaskInfo = getLastTaskInfo(); + final boolean hasSeenHorizontalReachabilityEdu = + mCompatUIConfiguration.hasSeenHorizontalReachabilityEducation(lastTaskInfo); + final boolean hasSeenVerticalReachabilityEdu = + mCompatUIConfiguration.hasSeenVerticalReachabilityEducation(lastTaskInfo); final boolean eligibleForDisplayHorizontalEducation = mForceUpdate - || !mCompatUIConfiguration.hasSeenHorizontalReachabilityEducation(lastTaskInfo) + || !hasSeenHorizontalReachabilityEdu || (mHasUserDoubleTapped && (mLetterboxHorizontalPosition == REACHABILITY_LEFT_OR_UP_POSITION || mLetterboxHorizontalPosition == REACHABILITY_RIGHT_OR_BOTTOM_POSITION)); final boolean eligibleForDisplayVerticalEducation = mForceUpdate - || !mCompatUIConfiguration.hasSeenVerticalReachabilityEducation(lastTaskInfo) + || !hasSeenVerticalReachabilityEdu || (mHasUserDoubleTapped && (mLetterboxVerticalPosition == REACHABILITY_LEFT_OR_UP_POSITION || mLetterboxVerticalPosition == REACHABILITY_RIGHT_OR_BOTTOM_POSITION)); @@ -238,7 +256,16 @@ class ReachabilityEduWindowManager extends CompatUIWindowManagerAbstract { availableHeight, mCompatUIConfiguration, lastTaskInfo); if (!mHasLetterboxSizeChanged) { updateHideTime(); - mMainExecutor.executeDelayed(this::hideReachability, DISAPPEAR_DELAY_MS); + final long disappearTimeMs = getDisappearTimeMs(); + mMainExecutor.executeDelayed(this::hideReachability, disappearTimeMs); + // If reachability education has been seen for the first time, trigger callback to + // display aspect ratio settings button once reachability education disappears + if (hasShownHorizontalReachabilityEduFirstTime(hasSeenHorizontalReachabilityEdu) + || hasShownVerticalReachabilityEduFirstTime( + hasSeenVerticalReachabilityEdu)) { + mMainExecutor.executeDelayed(this::triggerOnDismissCallback, + disappearTimeMs); + } } mHasUserDoubleTapped = false; } else { @@ -246,6 +273,38 @@ class ReachabilityEduWindowManager extends CompatUIWindowManagerAbstract { } } + /** + * Compares the value of + * {@link CompatUIConfiguration#hasSeenHorizontalReachabilityEducation} before and after the + * layout is shown. Horizontal reachability education is considered seen for the first time if + * prior to viewing the layout, + * {@link CompatUIConfiguration#hasSeenHorizontalReachabilityEducation} is {@code false} + * but becomes {@code true} once the current layout is shown. + */ + private boolean hasShownHorizontalReachabilityEduFirstTime( + boolean previouslyShownHorizontalReachabilityEducation) { + return !previouslyShownHorizontalReachabilityEducation + && mCompatUIConfiguration.hasSeenHorizontalReachabilityEducation(getLastTaskInfo()); + } + + /** + * Compares the value of + * {@link CompatUIConfiguration#hasSeenVerticalReachabilityEducation} before and after the + * layout is shown. Horizontal reachability education is considered seen for the first time if + * prior to viewing the layout, + * {@link CompatUIConfiguration#hasSeenVerticalReachabilityEducation} is {@code false} + * but becomes {@code true} once the current layout is shown. + */ + private boolean hasShownVerticalReachabilityEduFirstTime( + boolean previouslyShownVerticalReachabilityEducation) { + return !previouslyShownVerticalReachabilityEducation + && mCompatUIConfiguration.hasSeenVerticalReachabilityEducation(getLastTaskInfo()); + } + + private void triggerOnDismissCallback() { + mOnDismissCallback.accept(getLastTaskInfo(), getTaskListener()); + } + private void hideReachability() { if (mLayout == null || !shouldHideEducation()) { return; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java new file mode 100644 index 0000000000000000000000000000000000000000..5eeb3b650074455924ac6eee79049ca2a9f0b38c --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsLayout.java @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2023 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.wm.shell.compatui; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ObjectAnimator; +import android.annotation.IdRes; +import android.annotation.NonNull; +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; +import android.widget.ImageButton; +import android.widget.LinearLayout; +import android.widget.TextView; + +import com.android.wm.shell.R; + +/** + * Layout for the user aspect ratio button which opens the app list page in settings + * and allows users to change apps aspect ratio. + */ +public class UserAspectRatioSettingsLayout extends LinearLayout { + + private static final float ALPHA_FULL_TRANSPARENT = 0f; + + private static final float ALPHA_FULL_OPAQUE = 1f; + + private static final long VISIBILITY_ANIMATION_DURATION_MS = 50; + + private static final String ALPHA_PROPERTY_NAME = "alpha"; + + private UserAspectRatioSettingsWindowManager mWindowManager; + + public UserAspectRatioSettingsLayout(Context context) { + this(context, null); + } + + public UserAspectRatioSettingsLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public UserAspectRatioSettingsLayout(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + public UserAspectRatioSettingsLayout(Context context, AttributeSet attrs, int defStyleAttr, + int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + } + + void inject(@NonNull UserAspectRatioSettingsWindowManager windowManager) { + mWindowManager = windowManager; + } + + void setUserAspectRatioSettingsHintVisibility(boolean show) { + setViewVisibility(R.id.user_aspect_ratio_settings_hint, show); + } + + void setUserAspectRatioButtonVisibility(boolean show) { + setViewVisibility(R.id.user_aspect_ratio_settings_button, show); + // Hint should never be visible without button. + if (!show) { + setUserAspectRatioSettingsHintVisibility(/* show= */ false); + } + } + + private void setViewVisibility(@IdRes int resId, boolean show) { + final View view = findViewById(resId); + int visibility = show ? View.VISIBLE : View.GONE; + if (view.getVisibility() == visibility) { + return; + } + if (show) { + showItem(view); + } else { + view.setVisibility(visibility); + } + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + // Need to relayout after changes like hiding / showing a hint since they affect size. + // Doing this directly in setUserAspectRatioButtonVisibility can result in flaky animation. + mWindowManager.relayout(); + } + + @Override + protected void onFinishInflate() { + super.onFinishInflate(); + + final ImageButton userAspectRatioButton = + findViewById(R.id.user_aspect_ratio_settings_button); + userAspectRatioButton.setOnClickListener( + view -> mWindowManager.onUserAspectRatioSettingsButtonClicked()); + userAspectRatioButton.setOnLongClickListener(view -> { + mWindowManager.onUserAspectRatioSettingsButtonLongClicked(); + return true; + }); + + final LinearLayout sizeCompatHint = findViewById(R.id.user_aspect_ratio_settings_hint); + ((TextView) sizeCompatHint.findViewById(R.id.compat_mode_hint_text)) + .setText(R.string.user_aspect_ratio_settings_button_hint); + sizeCompatHint.setOnClickListener( + view -> setUserAspectRatioSettingsHintVisibility(/* show= */ false)); + } + + private void showItem(@NonNull View view) { + view.setVisibility(View.VISIBLE); + final ObjectAnimator fadeIn = ObjectAnimator.ofFloat(view, ALPHA_PROPERTY_NAME, + ALPHA_FULL_TRANSPARENT, ALPHA_FULL_OPAQUE); + fadeIn.setDuration(VISIBILITY_ANIMATION_DURATION_MS); + fadeIn.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + view.setVisibility(View.VISIBLE); + } + }); + fadeIn.start(); + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsWindowManager.java b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsWindowManager.java new file mode 100644 index 0000000000000000000000000000000000000000..77aefc8f7e4a6220f7d8558826c1a0f196659d07 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/compatui/UserAspectRatioSettingsWindowManager.java @@ -0,0 +1,219 @@ +/* + * Copyright (C) 2023 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.wm.shell.compatui; + +import static android.window.TaskConstants.TASK_CHILD_LAYER_COMPAT_UI; + +import android.annotation.NonNull; +import android.annotation.Nullable; +import android.app.TaskInfo; +import android.content.Context; +import android.graphics.Rect; +import android.os.SystemClock; +import android.view.LayoutInflater; +import android.view.View; +import android.view.accessibility.AccessibilityManager; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.wm.shell.R; +import com.android.wm.shell.ShellTaskOrganizer; +import com.android.wm.shell.common.DisplayLayout; +import com.android.wm.shell.common.ShellExecutor; +import com.android.wm.shell.common.SyncTransactionQueue; +import com.android.wm.shell.compatui.CompatUIController.CompatUIHintsState; + +import java.util.function.BiConsumer; +import java.util.function.Function; + +/** + * Window manager for the user aspect ratio settings button which allows users to go to + * app settings and change apps aspect ratio. + */ +class UserAspectRatioSettingsWindowManager extends CompatUIWindowManagerAbstract { + + private static final long SHOW_USER_ASPECT_RATIO_BUTTON_DELAY_MS = 500L; + + private long mNextButtonHideTimeMs = -1L; + + private final BiConsumer mOnButtonClicked; + + private final Function mDisappearTimeSupplier; + + private final ShellExecutor mShellExecutor; + + @VisibleForTesting + @NonNull + final CompatUIHintsState mCompatUIHintsState; + + @Nullable + private UserAspectRatioSettingsLayout mLayout; + + // Remember the last reported states in case visibility changes due to keyguard or IME updates. + @VisibleForTesting + boolean mHasUserAspectRatioSettingsButton; + + UserAspectRatioSettingsWindowManager(@NonNull Context context, @NonNull TaskInfo taskInfo, + @NonNull SyncTransactionQueue syncQueue, + @Nullable ShellTaskOrganizer.TaskListener taskListener, + @NonNull DisplayLayout displayLayout, @NonNull CompatUIHintsState compatUIHintsState, + @NonNull BiConsumer onButtonClicked, + @NonNull ShellExecutor shellExecutor, + @NonNull Function disappearTimeSupplier) { + super(context, taskInfo, syncQueue, taskListener, displayLayout); + mShellExecutor = shellExecutor; + mHasUserAspectRatioSettingsButton = getHasUserAspectRatioSettingsButton(taskInfo); + mCompatUIHintsState = compatUIHintsState; + mOnButtonClicked = onButtonClicked; + mDisappearTimeSupplier = disappearTimeSupplier; + } + + @Override + protected int getZOrder() { + return TASK_CHILD_LAYER_COMPAT_UI + 1; + } + + @Override + protected @Nullable View getLayout() { + return mLayout; + } + + @Override + protected void removeLayout() { + mLayout = null; + } + + @Override + protected boolean eligibleToShowLayout() { + return mHasUserAspectRatioSettingsButton; + } + + @Override + protected View createLayout() { + mLayout = inflateLayout(); + mLayout.inject(this); + + updateVisibilityOfViews(); + + return mLayout; + } + + @VisibleForTesting + UserAspectRatioSettingsLayout inflateLayout() { + return (UserAspectRatioSettingsLayout) LayoutInflater.from(mContext).inflate( + R.layout.user_aspect_ratio_settings_layout, null); + } + + @Override + public boolean updateCompatInfo(@NonNull TaskInfo taskInfo, + @NonNull ShellTaskOrganizer.TaskListener taskListener, boolean canShow) { + final boolean prevHasUserAspectRatioSettingsButton = mHasUserAspectRatioSettingsButton; + mHasUserAspectRatioSettingsButton = getHasUserAspectRatioSettingsButton(taskInfo); + + if (!super.updateCompatInfo(taskInfo, taskListener, canShow)) { + return false; + } + + if (prevHasUserAspectRatioSettingsButton != mHasUserAspectRatioSettingsButton) { + updateVisibilityOfViews(); + } + return true; + } + + /** Called when the user aspect ratio settings button is clicked. */ + void onUserAspectRatioSettingsButtonClicked() { + mOnButtonClicked.accept(getLastTaskInfo(), getTaskListener()); + } + + /** Called when the user aspect ratio settings button is long clicked. */ + void onUserAspectRatioSettingsButtonLongClicked() { + if (mLayout == null) { + return; + } + mLayout.setUserAspectRatioSettingsHintVisibility(/* show= */ true); + final long disappearTimeMs = getDisappearTimeMs(); + mNextButtonHideTimeMs = updateHideTime(disappearTimeMs); + mShellExecutor.executeDelayed(this::hideUserAspectRatioButton, disappearTimeMs); + } + + @Override + @VisibleForTesting + public void updateSurfacePosition() { + if (mLayout == null) { + return; + } + // Position of the button in the container coordinate. + final Rect taskBounds = getTaskBounds(); + final Rect taskStableBounds = getTaskStableBounds(); + final int positionX = getLayoutDirection() == View.LAYOUT_DIRECTION_RTL + ? taskStableBounds.left - taskBounds.left + : taskStableBounds.right - taskBounds.left - mLayout.getMeasuredWidth(); + final int positionY = taskStableBounds.bottom - taskBounds.top + - mLayout.getMeasuredHeight(); + updateSurfacePosition(positionX, positionY); + } + + @VisibleForTesting + void updateVisibilityOfViews() { + if (mHasUserAspectRatioSettingsButton) { + mShellExecutor.executeDelayed(this::showUserAspectRatioButton, + SHOW_USER_ASPECT_RATIO_BUTTON_DELAY_MS); + final long disappearTimeMs = getDisappearTimeMs(); + mNextButtonHideTimeMs = updateHideTime(disappearTimeMs); + mShellExecutor.executeDelayed(this::hideUserAspectRatioButton, disappearTimeMs); + } else { + mShellExecutor.removeCallbacks(this::showUserAspectRatioButton); + mShellExecutor.execute(this::hideUserAspectRatioButton); + } + } + + private void showUserAspectRatioButton() { + if (mLayout == null) { + return; + } + mLayout.setUserAspectRatioButtonVisibility(true); + // Only show by default for the first time. + if (!mCompatUIHintsState.mHasShownUserAspectRatioSettingsButtonHint) { + mLayout.setUserAspectRatioSettingsHintVisibility(/* show= */ true); + mCompatUIHintsState.mHasShownUserAspectRatioSettingsButtonHint = true; + } + } + + private void hideUserAspectRatioButton() { + if (mLayout == null || !isHideDelayReached(mNextButtonHideTimeMs)) { + return; + } + mLayout.setUserAspectRatioButtonVisibility(false); + } + + private boolean isHideDelayReached(long nextHideTime) { + return SystemClock.uptimeMillis() >= nextHideTime; + } + + private long updateHideTime(long hideDelay) { + return SystemClock.uptimeMillis() + hideDelay; + } + + private boolean getHasUserAspectRatioSettingsButton(@NonNull TaskInfo taskInfo) { + return taskInfo.topActivityEligibleForUserAspectRatioButton + && (taskInfo.topActivityBoundsLetterboxed + || taskInfo.isUserFullscreenOverrideEnabled); + } + + private long getDisappearTimeMs() { + return mDisappearTimeSupplier.apply(AccessibilityManager.FLAG_CONTENT_CONTROLS); + } +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java index c06b22cdb8a43c33f6338ecab3ac8566699f3da8..998cd5d08c723e56e08f1be9a85e228815306ebe 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellBaseModule.java @@ -20,9 +20,11 @@ import static com.android.wm.shell.onehanded.OneHandedController.SUPPORT_ONE_HAN import android.app.ActivityTaskManager; import android.content.Context; +import android.content.pm.PackageManager; import android.os.Handler; import android.os.SystemProperties; import android.view.IWindowManager; +import android.view.accessibility.AccessibilityManager; import com.android.internal.logging.UiEventLogger; import com.android.launcher3.icons.IconProvider; @@ -57,11 +59,19 @@ import com.android.wm.shell.common.annotations.ShellAnimationThread; import com.android.wm.shell.common.annotations.ShellBackgroundThread; import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.common.annotations.ShellSplashscreenThread; +import com.android.wm.shell.common.pip.PhonePipKeepClearAlgorithm; +import com.android.wm.shell.common.pip.PhoneSizeSpecSource; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipMediaController; +import com.android.wm.shell.common.pip.PipSnapAlgorithm; +import com.android.wm.shell.common.pip.PipUiEventLogger; +import com.android.wm.shell.common.pip.SizeSpecSource; import com.android.wm.shell.compatui.CompatUIConfiguration; import com.android.wm.shell.compatui.CompatUIController; import com.android.wm.shell.compatui.CompatUIShellCommandHandler; import com.android.wm.shell.desktopmode.DesktopMode; -import com.android.wm.shell.desktopmode.DesktopModeController; import com.android.wm.shell.desktopmode.DesktopModeStatus; import com.android.wm.shell.desktopmode.DesktopModeTaskRepository; import com.android.wm.shell.desktopmode.DesktopTasksController; @@ -98,13 +108,13 @@ import com.android.wm.shell.unfold.UnfoldAnimationController; import com.android.wm.shell.unfold.UnfoldTransitionHandler; import com.android.wm.shell.windowdecor.WindowDecorViewModel; +import java.util.Optional; + import dagger.BindsOptionalOf; import dagger.Lazy; import dagger.Module; import dagger.Provides; -import java.util.Optional; - /** * Provides basic dependencies from {@link com.android.wm.shell}, these dependencies are only * accessible from components within the WM subcomponent (can be explicitly exposed to the @@ -230,10 +240,12 @@ public abstract class WMShellBaseModule { DisplayImeController imeController, SyncTransactionQueue syncQueue, @ShellMainThread ShellExecutor mainExecutor, Lazy transitionsLazy, DockStateReader dockStateReader, CompatUIConfiguration compatUIConfiguration, - CompatUIShellCommandHandler compatUIShellCommandHandler) { + CompatUIShellCommandHandler compatUIShellCommandHandler, + AccessibilityManager accessibilityManager) { return new CompatUIController(context, shellInit, shellController, displayController, displayInsetsController, imeController, syncQueue, mainExecutor, transitionsLazy, - dockStateReader, compatUIConfiguration, compatUIShellCommandHandler); + dockStateReader, compatUIConfiguration, compatUIShellCommandHandler, + accessibilityManager); } @WMSingleton @@ -330,6 +342,61 @@ public abstract class WMShellBaseModule { @BindsOptionalOf abstract ShellBackAnimationRegistry optionalBackAnimationRegistry(); + // + // PiP (optional feature) + // + + @WMSingleton + @Provides + static PipUiEventLogger providePipUiEventLogger(UiEventLogger uiEventLogger, + PackageManager packageManager) { + return new PipUiEventLogger(uiEventLogger, packageManager); + } + + @WMSingleton + @Provides + static PipMediaController providePipMediaController(Context context, + @ShellMainThread Handler mainHandler) { + return new PipMediaController(context, mainHandler); + } + + @WMSingleton + @Provides + static SizeSpecSource provideSizeSpecSource(Context context, + PipDisplayLayoutState pipDisplayLayoutState) { + return new PhoneSizeSpecSource(context, pipDisplayLayoutState); + } + + @WMSingleton + @Provides + static PipBoundsState providePipBoundsState(Context context, + SizeSpecSource sizeSpecSource, PipDisplayLayoutState pipDisplayLayoutState) { + return new PipBoundsState(context, sizeSpecSource, pipDisplayLayoutState); + } + + + @WMSingleton + @Provides + static PipSnapAlgorithm providePipSnapAlgorithm() { + return new PipSnapAlgorithm(); + } + + @WMSingleton + @Provides + static PhonePipKeepClearAlgorithm providePhonePipKeepClearAlgorithm(Context context) { + return new PhonePipKeepClearAlgorithm(context); + } + + @WMSingleton + @Provides + static PipBoundsAlgorithm providesPipBoundsAlgorithm(Context context, + PipBoundsState pipBoundsState, PipSnapAlgorithm pipSnapAlgorithm, + PhonePipKeepClearAlgorithm pipKeepClearAlgorithm, + PipDisplayLayoutState pipDisplayLayoutState, SizeSpecSource sizeSpecSource) { + return new PipBoundsAlgorithm(context, pipBoundsState, pipSnapAlgorithm, + pipKeepClearAlgorithm, pipDisplayLayoutState, sizeSpecSource); + } + // // Bubbles (optional feature) // @@ -732,30 +799,10 @@ public abstract class WMShellBaseModule { @WMSingleton @Provides static Optional provideDesktopMode( - Optional desktopModeController, Optional desktopTasksController) { - if (DesktopModeStatus.isProto2Enabled()) { - return desktopTasksController.map(DesktopTasksController::asDesktopMode); - } - return desktopModeController.map(DesktopModeController::asDesktopMode); + return desktopTasksController.map(DesktopTasksController::asDesktopMode); } - @BindsOptionalOf - @DynamicOverride - abstract DesktopModeController optionalDesktopModeController(); - - @WMSingleton - @Provides - static Optional provideDesktopModeController( - @DynamicOverride Optional> desktopModeController) { - // Use optional-of-lazy for the dependency that this provider relies on. - // Lazy ensures that this provider will not be the cause the dependency is created - // when it will not be returned due to the condition below. - if (DesktopModeStatus.isProto1Enabled()) { - return desktopModeController.map(Lazy::get); - } - return Optional.empty(); - } @BindsOptionalOf @DynamicOverride @@ -768,7 +815,7 @@ public abstract class WMShellBaseModule { // Use optional-of-lazy for the dependency that this provider relies on. // Lazy ensures that this provider will not be the cause the dependency is created // when it will not be returned due to the condition below. - if (DesktopModeStatus.isProto2Enabled()) { + if (DesktopModeStatus.isEnabled()) { return desktopTasksController.map(Lazy::get); } return Optional.empty(); @@ -785,7 +832,7 @@ public abstract class WMShellBaseModule { // Use optional-of-lazy for the dependency that this provider relies on. // Lazy ensures that this provider will not be the cause the dependency is created // when it will not be returned due to the condition below. - if (DesktopModeStatus.isAnyEnabled()) { + if (DesktopModeStatus.isEnabled()) { return desktopModeTaskRepository.map(Lazy::get); } return Optional.empty(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java index 36d2a706b88b2d500907b78b3086a3dce3970208..9f9854e7e2444eb61167e98c4a8fc87e35d1dbe0 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/WMShellModule.java @@ -35,6 +35,7 @@ import com.android.wm.shell.WindowManagerShellWrapper; import com.android.wm.shell.bubbles.BubbleController; import com.android.wm.shell.bubbles.BubbleData; import com.android.wm.shell.bubbles.BubbleDataRepository; +import com.android.wm.shell.bubbles.BubbleEducationController; import com.android.wm.shell.bubbles.BubbleLogger; import com.android.wm.shell.bubbles.BubblePositioner; import com.android.wm.shell.bubbles.properties.ProdBubbleProperties; @@ -54,7 +55,6 @@ import com.android.wm.shell.common.annotations.ShellBackgroundThread; import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.dagger.back.ShellBackAnimationModule; import com.android.wm.shell.dagger.pip.PipModule; -import com.android.wm.shell.desktopmode.DesktopModeController; import com.android.wm.shell.desktopmode.DesktopModeStatus; import com.android.wm.shell.desktopmode.DesktopModeTaskRepository; import com.android.wm.shell.desktopmode.DesktopTasksController; @@ -133,13 +133,20 @@ public abstract class WMShellModule { return new BubblePositioner(context, windowManager); } + @WMSingleton + @Provides + static BubbleEducationController provideBubbleEducationProvider(Context context) { + return new BubbleEducationController(context); + } + @WMSingleton @Provides static BubbleData provideBubbleData(Context context, BubbleLogger logger, BubblePositioner positioner, + BubbleEducationController educationController, @ShellMainThread ShellExecutor mainExecutor) { - return new BubbleData(context, logger, positioner, mainExecutor); + return new BubbleData(context, logger, positioner, educationController, mainExecutor); } // Note: Handler needed for LauncherApps.register @@ -167,6 +174,7 @@ public abstract class WMShellModule { @ShellMainThread Handler mainHandler, @ShellBackgroundThread ShellExecutor bgExecutor, TaskViewTransitions taskViewTransitions, + Transitions transitions, SyncTransactionQueue syncQueue, IWindowManager wmService) { return new BubbleController(context, shellInit, shellCommandHandler, shellController, data, @@ -176,7 +184,8 @@ public abstract class WMShellModule { statusBarService, windowManager, windowManagerShellWrapper, userManager, launcherApps, logger, taskStackListener, organizer, positioner, displayController, oneHandedOptional, dragAndDropController, mainExecutor, mainHandler, bgExecutor, - taskViewTransitions, syncQueue, wmService, ProdBubbleProperties.INSTANCE); + taskViewTransitions, transitions, syncQueue, wmService, + ProdBubbleProperties.INSTANCE); } // @@ -195,9 +204,10 @@ public abstract class WMShellModule { ShellController shellController, SyncTransactionQueue syncQueue, Transitions transitions, - Optional desktopModeController, - Optional desktopTasksController) { - if (DesktopModeStatus.isAnyEnabled()) { + Optional desktopTasksController, + RecentsTransitionHandler recentsTransitionHandler, + RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) { + if (DesktopModeStatus.isEnabled()) { return new DesktopModeWindowDecorViewModel( context, mainHandler, @@ -208,8 +218,9 @@ public abstract class WMShellModule { shellController, syncQueue, transitions, - desktopModeController, - desktopTasksController); + desktopTasksController, + recentsTransitionHandler, + rootTaskDisplayAreaOrganizer); } return new CaptionWindowDecorViewModel( context, @@ -349,13 +360,12 @@ public abstract class WMShellModule { @Nullable PipTransitionController pipTransitionController, Optional recentsTransitionHandler, KeyguardTransitionHandler keyguardTransitionHandler, - Optional desktopModeController, Optional desktopTasksController, Optional unfoldHandler, Transitions transitions) { return new DefaultMixedHandler(shellInit, transitions, splitScreenOptional, pipTransitionController, recentsTransitionHandler, - keyguardTransitionHandler, desktopModeController, desktopTasksController, + keyguardTransitionHandler, desktopTasksController, unfoldHandler); } @@ -464,24 +474,6 @@ public abstract class WMShellModule { // Desktop mode (optional feature) // - @WMSingleton - @Provides - @DynamicOverride - static DesktopModeController provideDesktopModeController(Context context, - ShellInit shellInit, - ShellController shellController, - ShellTaskOrganizer shellTaskOrganizer, - RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer, - Transitions transitions, - @DynamicOverride DesktopModeTaskRepository desktopModeTaskRepository, - @ShellMainThread Handler mainHandler, - @ShellMainThread ShellExecutor mainExecutor - ) { - return new DesktopModeController(context, shellInit, shellController, shellTaskOrganizer, - rootTaskDisplayAreaOrganizer, transitions, desktopModeTaskRepository, mainHandler, - mainExecutor); - } - @WMSingleton @Provides @DynamicOverride @@ -549,8 +541,7 @@ public abstract class WMShellModule { @ShellCreateTriggerOverride @Provides static Object provideIndependentShellComponentsToCreate( - DefaultMixedHandler defaultMixedHandler, - Optional desktopModeController) { + DefaultMixedHandler defaultMixedHandler) { return new Object(); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java index 9bf973f523bffc5af26e695d95279b24d3a2857e..ba882c403aed3dba50d42db9b0a880d7d54a8fb2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1Module.java @@ -30,28 +30,27 @@ import com.android.wm.shell.common.SystemWindows; import com.android.wm.shell.common.TabletopModeController; import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.annotations.ShellMainThread; -import com.android.wm.shell.common.pip.PhoneSizeSpecSource; +import com.android.wm.shell.common.pip.PhonePipKeepClearAlgorithm; import com.android.wm.shell.common.pip.PipAppOpsListener; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipMediaController; +import com.android.wm.shell.common.pip.PipSnapAlgorithm; +import com.android.wm.shell.common.pip.PipUiEventLogger; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.common.pip.SizeSpecSource; import com.android.wm.shell.dagger.WMShellBaseModule; import com.android.wm.shell.dagger.WMSingleton; import com.android.wm.shell.onehanded.OneHandedController; import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipBoundsState; -import com.android.wm.shell.pip.PipDisplayLayoutState; -import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipParamsChangedForwarder; -import com.android.wm.shell.pip.PipSnapAlgorithm; import com.android.wm.shell.pip.PipSurfaceTransactionHelper; import com.android.wm.shell.pip.PipTaskOrganizer; import com.android.wm.shell.pip.PipTransition; import com.android.wm.shell.pip.PipTransitionController; import com.android.wm.shell.pip.PipTransitionState; -import com.android.wm.shell.pip.PipUiEventLogger; -import com.android.wm.shell.pip.PipUtils; -import com.android.wm.shell.pip.phone.PhonePipKeepClearAlgorithm; import com.android.wm.shell.pip.phone.PhonePipMenuController; import com.android.wm.shell.pip.phone.PipController; import com.android.wm.shell.pip.phone.PipMotionHelper; @@ -119,35 +118,6 @@ public abstract class Pip1Module { } } - @WMSingleton - @Provides - static PipBoundsState providePipBoundsState(Context context, - SizeSpecSource sizeSpecSource, PipDisplayLayoutState pipDisplayLayoutState) { - return new PipBoundsState(context, sizeSpecSource, pipDisplayLayoutState); - } - - @WMSingleton - @Provides - static PipSnapAlgorithm providePipSnapAlgorithm() { - return new PipSnapAlgorithm(); - } - - @WMSingleton - @Provides - static PhonePipKeepClearAlgorithm providePhonePipKeepClearAlgorithm(Context context) { - return new PhonePipKeepClearAlgorithm(context); - } - - @WMSingleton - @Provides - static PipBoundsAlgorithm providesPipBoundsAlgorithm(Context context, - PipBoundsState pipBoundsState, PipSnapAlgorithm pipSnapAlgorithm, - PhonePipKeepClearAlgorithm pipKeepClearAlgorithm, - PipDisplayLayoutState pipDisplayLayoutState, SizeSpecSource sizeSpecSource) { - return new PipBoundsAlgorithm(context, pipBoundsState, pipSnapAlgorithm, - pipKeepClearAlgorithm, pipDisplayLayoutState, sizeSpecSource); - } - // Handler is used by Icon.loadDrawableAsync @WMSingleton @Provides @@ -211,13 +181,6 @@ public abstract class Pip1Module { shellTaskOrganizer, mainExecutor); } - @WMSingleton - @Provides - static PipAnimationController providePipAnimationController(PipSurfaceTransactionHelper - pipSurfaceTransactionHelper) { - return new PipAnimationController(pipSurfaceTransactionHelper); - } - @WMSingleton @Provides static PipTransition providePipTransition(Context context, @@ -233,13 +196,6 @@ public abstract class Pip1Module { splitScreenOptional); } - @WMSingleton - @Provides - static SizeSpecSource provideSizeSpecSource(Context context, - PipDisplayLayoutState pipDisplayLayoutState) { - return new PhoneSizeSpecSource(context, pipDisplayLayoutState); - } - @WMSingleton @Provides static PipAppOpsListener providePipAppOpsListener(Context context, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1SharedModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1SharedModule.java index e8fae2490bc5ee32436a507563dbfd6c5b2e1c3f..b42372b869dd5f934d4cef760ef22ff9ee2fce1a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1SharedModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip1SharedModule.java @@ -17,15 +17,10 @@ package com.android.wm.shell.dagger.pip; import android.content.Context; -import android.content.pm.PackageManager; -import android.os.Handler; -import com.android.internal.logging.UiEventLogger; -import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.dagger.WMSingleton; -import com.android.wm.shell.pip.PipMediaController; +import com.android.wm.shell.pip.PipAnimationController; import com.android.wm.shell.pip.PipSurfaceTransactionHelper; -import com.android.wm.shell.pip.PipUiEventLogger; import dagger.Module; import dagger.Provides; @@ -36,14 +31,6 @@ import dagger.Provides; */ @Module public abstract class Pip1SharedModule { - // Needs handler for registering broadcast receivers - @WMSingleton - @Provides - static PipMediaController providePipMediaController(Context context, - @ShellMainThread Handler mainHandler) { - return new PipMediaController(context, mainHandler); - } - @WMSingleton @Provides static PipSurfaceTransactionHelper providePipSurfaceTransactionHelper(Context context) { @@ -52,8 +39,8 @@ public abstract class Pip1SharedModule { @WMSingleton @Provides - static PipUiEventLogger providePipUiEventLogger(UiEventLogger uiEventLogger, - PackageManager packageManager) { - return new PipUiEventLogger(uiEventLogger, packageManager); + static PipAnimationController providePipAnimationController(PipSurfaceTransactionHelper + pipSurfaceTransactionHelper) { + return new PipAnimationController(pipSurfaceTransactionHelper); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java index c7c6e8a14278fce093ada3f1e98cfa367d9f8753..af97cf68915fb96ce1b09f3309e463368fc5c394 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/Pip2Module.java @@ -16,24 +16,34 @@ package com.android.wm.shell.dagger.pip; -import android.annotation.Nullable; +import android.annotation.NonNull; +import com.android.wm.shell.ShellTaskOrganizer; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.dagger.WMShellBaseModule; import com.android.wm.shell.dagger.WMSingleton; import com.android.wm.shell.pip2.PipTransition; +import com.android.wm.shell.sysui.ShellInit; +import com.android.wm.shell.transition.Transitions; import dagger.Module; import dagger.Provides; /** * Provides dependencies from {@link com.android.wm.shell.pip2}, this implementation is meant to be - * the successor of its sibling {@link Pip1SharedModule}. + * the successor of its sibling {@link Pip1Module}. */ -@Module +@Module(includes = WMShellBaseModule.class) public abstract class Pip2Module { @WMSingleton @Provides - @Nullable - static PipTransition providePipTransition() { - return null; + static PipTransition providePipTransition(@NonNull ShellInit shellInit, + @NonNull ShellTaskOrganizer shellTaskOrganizer, + @NonNull Transitions transitions, + PipBoundsState pipBoundsState, + PipBoundsAlgorithm pipBoundsAlgorithm) { + return new PipTransition(shellInit, shellTaskOrganizer, transitions, pipBoundsState, null, + pipBoundsAlgorithm); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/PipModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/PipModule.java index 04032bb17fec9d799b6fdfebd91562519b141dc2..570f0a3db35ac4cfb5870fa745ad4b3f93f12eb7 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/PipModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/PipModule.java @@ -16,11 +16,9 @@ package com.android.wm.shell.dagger.pip; -import android.annotation.Nullable; - +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.dagger.WMSingleton; import com.android.wm.shell.pip.PipTransitionController; -import com.android.wm.shell.pip.PipUtils; import dagger.Module; import dagger.Provides; @@ -38,8 +36,8 @@ public abstract class PipModule { @Provides static PipTransitionController providePipTransitionController( com.android.wm.shell.pip.PipTransition legacyPipTransition, - @Nullable com.android.wm.shell.pip2.PipTransition newPipTransition) { - if (PipUtils.isPip2ExperimentEnabled() && newPipTransition != null) { + com.android.wm.shell.pip2.PipTransition newPipTransition) { + if (PipUtils.isPip2ExperimentEnabled()) { return newPipTransition; } else { return legacyPipTransition; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/TvPipModule.java b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/TvPipModule.java index 80ffbb0968f35f9d27a559f0b39915b04ccd2ca7..a9675f976fa947862d459fd07724b712376a8183 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/TvPipModule.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/dagger/pip/TvPipModule.java @@ -30,20 +30,19 @@ import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.annotations.ShellMainThread; import com.android.wm.shell.common.pip.LegacySizeSpecSource; import com.android.wm.shell.common.pip.PipAppOpsListener; -import com.android.wm.shell.common.pip.SizeSpecSource; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipMediaController; +import com.android.wm.shell.common.pip.PipSnapAlgorithm; +import com.android.wm.shell.common.pip.PipUiEventLogger; import com.android.wm.shell.dagger.WMShellBaseModule; import com.android.wm.shell.dagger.WMSingleton; import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipDisplayLayoutState; -import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipParamsChangedForwarder; -import com.android.wm.shell.pip.PipSnapAlgorithm; import com.android.wm.shell.pip.PipSurfaceTransactionHelper; import com.android.wm.shell.pip.PipTaskOrganizer; import com.android.wm.shell.pip.PipTransitionController; import com.android.wm.shell.pip.PipTransitionState; -import com.android.wm.shell.pip.PipUiEventLogger; import com.android.wm.shell.pip.tv.TvPipBoundsAlgorithm; import com.android.wm.shell.pip.tv.TvPipBoundsController; import com.android.wm.shell.pip.tv.TvPipBoundsState; @@ -129,17 +128,11 @@ public abstract class TvPipModule { tvPipBoundsAlgorithm); } - @WMSingleton - @Provides - static PipSnapAlgorithm providePipSnapAlgorithm() { - return new PipSnapAlgorithm(); - } - @WMSingleton @Provides static TvPipBoundsAlgorithm provideTvPipBoundsAlgorithm(Context context, TvPipBoundsState tvPipBoundsState, PipSnapAlgorithm pipSnapAlgorithm, - PipDisplayLayoutState pipDisplayLayoutState, SizeSpecSource sizeSpecSource) { + PipDisplayLayoutState pipDisplayLayoutState, LegacySizeSpecSource sizeSpecSource) { return new TvPipBoundsAlgorithm(context, tvPipBoundsState, pipSnapAlgorithm, pipDisplayLayoutState, sizeSpecSource); } @@ -147,13 +140,13 @@ public abstract class TvPipModule { @WMSingleton @Provides static TvPipBoundsState provideTvPipBoundsState(Context context, - SizeSpecSource sizeSpecSource, PipDisplayLayoutState pipDisplayLayoutState) { + LegacySizeSpecSource sizeSpecSource, PipDisplayLayoutState pipDisplayLayoutState) { return new TvPipBoundsState(context, sizeSpecSource, pipDisplayLayoutState); } @WMSingleton @Provides - static SizeSpecSource provideSizeSpecSource(Context context, + static LegacySizeSpecSource provideSizeSpecSource(Context context, PipDisplayLayoutState pipDisplayLayoutState) { return new LegacySizeSpecSource(context, pipDisplayLayoutState); } @@ -198,13 +191,6 @@ public abstract class TvPipModule { pipParamsChangedForwarder); } - @WMSingleton - @Provides - static PipAnimationController providePipAnimationController(PipSurfaceTransactionHelper - pipSurfaceTransactionHelper) { - return new PipAnimationController(pipSurfaceTransactionHelper); - } - @WMSingleton @Provides static PipTransitionState providePipTransitionState() { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java deleted file mode 100644 index 5b24d7a60c4e7100a90873db3a1ff4905944786c..0000000000000000000000000000000000000000 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeController.java +++ /dev/null @@ -1,557 +0,0 @@ -/* - * Copyright (C) 2022 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.wm.shell.desktopmode; - -import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; -import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; -import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; -import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; -import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED; -import static android.view.WindowManager.TRANSIT_CHANGE; -import static android.view.WindowManager.TRANSIT_NONE; -import static android.view.WindowManager.TRANSIT_OPEN; -import static android.view.WindowManager.TRANSIT_TO_FRONT; - -import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission; -import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE; -import static com.android.wm.shell.sysui.ShellSharedConstants.KEY_EXTRA_SHELL_DESKTOP_MODE; - -import android.app.ActivityManager.RunningTaskInfo; -import android.app.WindowConfiguration; -import android.content.Context; -import android.content.res.TypedArray; -import android.database.ContentObserver; -import android.graphics.Region; -import android.net.Uri; -import android.os.Handler; -import android.os.IBinder; -import android.os.RemoteException; -import android.os.UserHandle; -import android.provider.Settings; -import android.util.ArraySet; -import android.view.SurfaceControl; -import android.view.WindowManager; -import android.window.DisplayAreaInfo; -import android.window.TransitionInfo; -import android.window.TransitionRequestInfo; -import android.window.WindowContainerTransaction; - -import androidx.annotation.BinderThread; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.protolog.common.ProtoLog; -import com.android.wm.shell.RootTaskDisplayAreaOrganizer; -import com.android.wm.shell.ShellTaskOrganizer; -import com.android.wm.shell.common.ExternalInterfaceBinder; -import com.android.wm.shell.common.RemoteCallable; -import com.android.wm.shell.common.ShellExecutor; -import com.android.wm.shell.common.annotations.ExternalThread; -import com.android.wm.shell.common.annotations.ShellMainThread; -import com.android.wm.shell.sysui.ShellController; -import com.android.wm.shell.sysui.ShellInit; -import com.android.wm.shell.transition.Transitions; - -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.concurrent.Executor; -import java.util.function.Consumer; - -/** - * Handles windowing changes when desktop mode system setting changes - */ -public class DesktopModeController implements RemoteCallable, - Transitions.TransitionHandler { - - private final Context mContext; - private final ShellController mShellController; - private final ShellTaskOrganizer mShellTaskOrganizer; - private final RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer; - private final Transitions mTransitions; - private final DesktopModeTaskRepository mDesktopModeTaskRepository; - private final ShellExecutor mMainExecutor; - private final DesktopModeImpl mDesktopModeImpl = new DesktopModeImpl(); - private final SettingsObserver mSettingsObserver; - - public DesktopModeController(Context context, - ShellInit shellInit, - ShellController shellController, - ShellTaskOrganizer shellTaskOrganizer, - RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer, - Transitions transitions, - DesktopModeTaskRepository desktopModeTaskRepository, - @ShellMainThread Handler mainHandler, - @ShellMainThread ShellExecutor mainExecutor) { - mContext = context; - mShellController = shellController; - mShellTaskOrganizer = shellTaskOrganizer; - mRootTaskDisplayAreaOrganizer = rootTaskDisplayAreaOrganizer; - mTransitions = transitions; - mDesktopModeTaskRepository = desktopModeTaskRepository; - mMainExecutor = mainExecutor; - mSettingsObserver = new SettingsObserver(mContext, mainHandler); - if (DesktopModeStatus.isProto1Enabled()) { - shellInit.addInitCallback(this::onInit, this); - } - } - - private void onInit() { - ProtoLog.d(WM_SHELL_DESKTOP_MODE, "Initialize DesktopModeController"); - mShellController.addExternalInterface(KEY_EXTRA_SHELL_DESKTOP_MODE, - this::createExternalInterface, this); - mSettingsObserver.observe(); - if (DesktopModeStatus.isActive(mContext)) { - updateDesktopModeActive(true); - } - mTransitions.addHandler(this); - } - - @Override - public Context getContext() { - return mContext; - } - - @Override - public ShellExecutor getRemoteCallExecutor() { - return mMainExecutor; - } - - /** - * Get connection interface between sysui and shell - */ - public DesktopMode asDesktopMode() { - return mDesktopModeImpl; - } - - /** - * Creates a new instance of the external interface to pass to another process. - */ - private ExternalInterfaceBinder createExternalInterface() { - return new IDesktopModeImpl(this); - } - - /** - * Adds a listener to find out about changes in the visibility of freeform tasks. - * - * @param listener the listener to add. - * @param callbackExecutor the executor to call the listener on. - */ - public void addVisibleTasksListener(DesktopModeTaskRepository.VisibleTasksListener listener, - Executor callbackExecutor) { - mDesktopModeTaskRepository.addVisibleTasksListener(listener, callbackExecutor); - } - - /** - * Adds a listener to track changes to corners of desktop mode tasks. - * @param listener the listener to add. - * @param callbackExecutor the executor to call the listener on. - */ - public void addTaskCornerListener(Consumer listener, - Executor callbackExecutor) { - mDesktopModeTaskRepository.setTaskCornerListener(listener, callbackExecutor); - } - - @VisibleForTesting - void updateDesktopModeActive(boolean active) { - ProtoLog.d(WM_SHELL_DESKTOP_MODE, "updateDesktopModeActive: active=%s", active); - - int displayId = mContext.getDisplayId(); - - ArrayList runningTasks = mShellTaskOrganizer.getRunningTasks(displayId); - - WindowContainerTransaction wct = new WindowContainerTransaction(); - // Reset freeform windowing mode that is set per task level so tasks inherit it - clearFreeformForStandardTasks(runningTasks, wct); - if (active) { - moveHomeBehindVisibleTasks(runningTasks, wct); - setDisplayAreaWindowingMode(displayId, WINDOWING_MODE_FREEFORM, wct); - } else { - clearBoundsForStandardTasks(runningTasks, wct); - setDisplayAreaWindowingMode(displayId, WINDOWING_MODE_FULLSCREEN, wct); - } - if (Transitions.ENABLE_SHELL_TRANSITIONS) { - mTransitions.startTransition(TRANSIT_CHANGE, wct, null); - } else { - mRootTaskDisplayAreaOrganizer.applyTransaction(wct); - } - } - - private WindowContainerTransaction clearBoundsForStandardTasks( - ArrayList runningTasks, WindowContainerTransaction wct) { - ProtoLog.v(WM_SHELL_DESKTOP_MODE, "prepareClearBoundsForTasks"); - for (RunningTaskInfo taskInfo : runningTasks) { - if (taskInfo.getActivityType() == ACTIVITY_TYPE_STANDARD) { - ProtoLog.v(WM_SHELL_DESKTOP_MODE, "clearing bounds for token=%s taskInfo=%s", - taskInfo.token, taskInfo); - wct.setBounds(taskInfo.token, null); - } - } - return wct; - } - - private void clearFreeformForStandardTasks(ArrayList runningTasks, - WindowContainerTransaction wct) { - ProtoLog.v(WM_SHELL_DESKTOP_MODE, "prepareClearFreeformForTasks"); - for (RunningTaskInfo taskInfo : runningTasks) { - if (taskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM - && taskInfo.getActivityType() == ACTIVITY_TYPE_STANDARD) { - ProtoLog.v(WM_SHELL_DESKTOP_MODE, - "clearing windowing mode for token=%s taskInfo=%s", taskInfo.token, - taskInfo); - wct.setWindowingMode(taskInfo.token, WINDOWING_MODE_UNDEFINED); - } - } - } - - private void moveHomeBehindVisibleTasks(ArrayList runningTasks, - WindowContainerTransaction wct) { - ProtoLog.v(WM_SHELL_DESKTOP_MODE, "moveHomeBehindVisibleTasks"); - RunningTaskInfo homeTask = null; - ArrayList visibleTasks = new ArrayList<>(); - for (RunningTaskInfo taskInfo : runningTasks) { - if (taskInfo.getActivityType() == ACTIVITY_TYPE_HOME) { - homeTask = taskInfo; - } else if (taskInfo.getActivityType() == ACTIVITY_TYPE_STANDARD - && taskInfo.isVisible()) { - visibleTasks.add(taskInfo); - } - } - if (homeTask == null) { - ProtoLog.w(WM_SHELL_DESKTOP_MODE, "moveHomeBehindVisibleTasks: home task not found"); - } else { - ProtoLog.v(WM_SHELL_DESKTOP_MODE, "moveHomeBehindVisibleTasks: visible tasks %d", - visibleTasks.size()); - wct.reorder(homeTask.getToken(), true /* onTop */); - for (RunningTaskInfo task : visibleTasks) { - wct.reorder(task.getToken(), true /* onTop */); - } - } - } - - private void setDisplayAreaWindowingMode(int displayId, - @WindowConfiguration.WindowingMode int windowingMode, WindowContainerTransaction wct) { - DisplayAreaInfo displayAreaInfo = mRootTaskDisplayAreaOrganizer.getDisplayAreaInfo( - displayId); - if (displayAreaInfo == null) { - ProtoLog.e(WM_SHELL_DESKTOP_MODE, - "unable to update windowing mode for display %d display not found", displayId); - return; - } - - ProtoLog.v(WM_SHELL_DESKTOP_MODE, - "setWindowingMode: displayId=%d current wmMode=%d new wmMode=%d", displayId, - displayAreaInfo.configuration.windowConfiguration.getWindowingMode(), - windowingMode); - - wct.setWindowingMode(displayAreaInfo.token, windowingMode); - } - - /** - * Show apps on desktop - */ - void showDesktopApps(int displayId) { - // Bring apps to front, ignoring their visibility status to always ensure they are on top. - WindowContainerTransaction wct = new WindowContainerTransaction(); - bringDesktopAppsToFront(displayId, wct); - - if (!wct.isEmpty()) { - if (Transitions.ENABLE_SHELL_TRANSITIONS) { - // TODO(b/268662477): add animation for the transition - mTransitions.startTransition(TRANSIT_NONE, wct, null /* handler */); - } else { - mShellTaskOrganizer.applyTransaction(wct); - } - } - } - - /** Get number of tasks that are marked as visible */ - int getVisibleTaskCount(int displayId) { - return mDesktopModeTaskRepository.getVisibleTaskCount(displayId); - } - - private void bringDesktopAppsToFront(int displayId, WindowContainerTransaction wct) { - final ArraySet activeTasks = mDesktopModeTaskRepository.getActiveTasks(displayId); - ProtoLog.d(WM_SHELL_DESKTOP_MODE, "bringDesktopAppsToFront: tasks=%s", activeTasks.size()); - - final List taskInfos = new ArrayList<>(); - for (Integer taskId : activeTasks) { - RunningTaskInfo taskInfo = mShellTaskOrganizer.getRunningTaskInfo(taskId); - if (taskInfo != null) { - taskInfos.add(taskInfo); - } - } - - if (taskInfos.isEmpty()) { - return; - } - - moveHomeTaskToFront(wct); - - ProtoLog.d(WM_SHELL_DESKTOP_MODE, - "bringDesktopAppsToFront: reordering all active tasks to the front"); - final List allTasksInZOrder = - mDesktopModeTaskRepository.getFreeformTasksInZOrder(); - // Sort by z-order, bottom to top, so that the top-most task is reordered to the top last - // in the WCT. - taskInfos.sort(Comparator.comparingInt(task -> -allTasksInZOrder.indexOf(task.taskId))); - for (RunningTaskInfo task : taskInfos) { - wct.reorder(task.token, true); - } - } - - private void moveHomeTaskToFront(WindowContainerTransaction wct) { - for (RunningTaskInfo task : mShellTaskOrganizer.getRunningTasks(mContext.getDisplayId())) { - if (task.getActivityType() == ACTIVITY_TYPE_HOME) { - wct.reorder(task.token, true /* onTop */); - return; - } - } - } - - /** - * Update corner rects stored for a specific task - * @param taskId task to update - * @param taskCorners task's new corner handles - */ - public void onTaskCornersChanged(int taskId, Region taskCorners) { - mDesktopModeTaskRepository.updateTaskCorners(taskId, taskCorners); - } - - /** - * Remove corners saved for a task. Likely used due to task closure. - * @param taskId task to remove - */ - public void removeCornersForTask(int taskId) { - mDesktopModeTaskRepository.removeTaskCorners(taskId); - } - - /** - * Moves a specifc task to the front. - * @param taskInfo the task to show in front. - */ - public void moveTaskToFront(RunningTaskInfo taskInfo) { - WindowContainerTransaction wct = new WindowContainerTransaction(); - wct.reorder(taskInfo.token, true /* onTop */); - if (Transitions.ENABLE_SHELL_TRANSITIONS) { - mTransitions.startTransition(TRANSIT_TO_FRONT, wct, null); - } else { - mShellTaskOrganizer.applyTransaction(wct); - } - } - - /** - * Turn desktop mode on or off - * @param active the desired state for desktop mode setting - */ - public void setDesktopModeActive(boolean active) { - int value = active ? 1 : 0; - Settings.System.putInt(mContext.getContentResolver(), Settings.System.DESKTOP_MODE, value); - } - - /** - * Returns the windowing mode of the display area with the specified displayId. - * @param displayId - * @return - */ - public int getDisplayAreaWindowingMode(int displayId) { - return mRootTaskDisplayAreaOrganizer.getDisplayAreaInfo(displayId) - .configuration.windowConfiguration.getWindowingMode(); - } - - @Override - public boolean startAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info, - @NonNull SurfaceControl.Transaction startTransaction, - @NonNull SurfaceControl.Transaction finishTransaction, - @NonNull Transitions.TransitionFinishCallback finishCallback) { - // This handler should never be the sole handler, so should not animate anything. - return false; - } - - @Nullable - @Override - public WindowContainerTransaction handleRequest(@NonNull IBinder transition, - @NonNull TransitionRequestInfo request) { - RunningTaskInfo triggerTask = request.getTriggerTask(); - // Only do anything if we are in desktop mode and opening/moving-to-front a task/app in - // freeform - if (!DesktopModeStatus.isActive(mContext)) { - ProtoLog.d(WM_SHELL_DESKTOP_MODE, - "skip shell transition request: desktop mode not active"); - return null; - } - if (request.getType() != TRANSIT_OPEN && request.getType() != TRANSIT_TO_FRONT) { - ProtoLog.d(WM_SHELL_DESKTOP_MODE, - "skip shell transition request: unsupported type %s", - WindowManager.transitTypeToString(request.getType())); - return null; - } - if (triggerTask == null || triggerTask.getWindowingMode() != WINDOWING_MODE_FREEFORM) { - ProtoLog.d(WM_SHELL_DESKTOP_MODE, "skip shell transition request: not freeform task"); - return null; - } - ProtoLog.d(WM_SHELL_DESKTOP_MODE, "handle shell transition request: %s", request); - - WindowContainerTransaction wct = new WindowContainerTransaction(); - bringDesktopAppsToFront(triggerTask.displayId, wct); - wct.reorder(triggerTask.token, true /* onTop */); - - return wct; - } - - /** - * Applies the proper surface states (rounded corners) to tasks when desktop mode is active. - * This is intended to be used when desktop mode is part of another animation but isn't, itself, - * animating. - */ - public void syncSurfaceState(@NonNull TransitionInfo info, - SurfaceControl.Transaction finishTransaction) { - // Add rounded corners to freeform windows - final TypedArray ta = mContext.obtainStyledAttributes( - new int[]{android.R.attr.dialogCornerRadius}); - final int cornerRadius = ta.getDimensionPixelSize(0, 0); - ta.recycle(); - for (TransitionInfo.Change change: info.getChanges()) { - if (change.getTaskInfo().getWindowingMode() == WINDOWING_MODE_FREEFORM) { - finishTransaction.setCornerRadius(change.getLeash(), cornerRadius); - } - } - } - - /** - * A {@link ContentObserver} for listening to changes to {@link Settings.System#DESKTOP_MODE} - */ - private final class SettingsObserver extends ContentObserver { - - private final Uri mDesktopModeSetting = Settings.System.getUriFor( - Settings.System.DESKTOP_MODE); - - private final Context mContext; - - SettingsObserver(Context context, Handler handler) { - super(handler); - mContext = context; - } - - public void observe() { - // TODO(b/242867463): listen for setting change for all users - mContext.getContentResolver().registerContentObserver(mDesktopModeSetting, - false /* notifyForDescendants */, this /* observer */, UserHandle.USER_CURRENT); - } - - @Override - public void onChange(boolean selfChange, @Nullable Uri uri) { - if (mDesktopModeSetting.equals(uri)) { - ProtoLog.d(WM_SHELL_DESKTOP_MODE, "Received update for desktop mode setting"); - desktopModeSettingChanged(); - } - } - - private void desktopModeSettingChanged() { - boolean enabled = DesktopModeStatus.isActive(mContext); - updateDesktopModeActive(enabled); - } - } - - /** - * The interface for calls from outside the shell, within the host process. - */ - @ExternalThread - private final class DesktopModeImpl implements DesktopMode { - - @Override - public void addVisibleTasksListener( - DesktopModeTaskRepository.VisibleTasksListener listener, - Executor callbackExecutor) { - mMainExecutor.execute(() -> { - DesktopModeController.this.addVisibleTasksListener(listener, callbackExecutor); - }); - } - - @Override - public void addDesktopGestureExclusionRegionListener(Consumer listener, - Executor callbackExecutor) { - mMainExecutor.execute(() -> { - DesktopModeController.this.addTaskCornerListener(listener, callbackExecutor); - }); - } - } - - /** - * The interface for calls from outside the host process. - */ - @BinderThread - private static class IDesktopModeImpl extends IDesktopMode.Stub - implements ExternalInterfaceBinder { - - private DesktopModeController mController; - - IDesktopModeImpl(DesktopModeController controller) { - mController = controller; - } - - /** - * Invalidates this instance, preventing future calls from updating the controller. - */ - @Override - public void invalidate() { - mController = null; - } - - @Override - public void showDesktopApps(int displayId) { - executeRemoteCallWithTaskPermission(mController, "showDesktopApps", - controller -> controller.showDesktopApps(displayId)); - } - - @Override - public void showDesktopApp(int taskId) throws RemoteException { - // TODO - } - - @Override - public int getVisibleTaskCount(int displayId) throws RemoteException { - int[] result = new int[1]; - executeRemoteCallWithTaskPermission(mController, "getVisibleTaskCount", - controller -> result[0] = controller.getVisibleTaskCount(displayId), - true /* blocking */ - ); - return result[0]; - } - - @Override - public void onDesktopSplitSelectAnimComplete(RunningTaskInfo taskInfo) { - - } - - @Override - public void stashDesktopApps(int displayId) throws RemoteException { - // Stashing of desktop apps not needed. Apps always launch on desktop - } - - @Override - public void hideStashedDesktopApps(int displayId) throws RemoteException { - // Stashing of desktop apps not needed. Apps always launch on desktop - } - - @Override - public void setTaskListener(IDesktopTaskListener listener) throws RemoteException { - // TODO(b/261234402): move visibility from sysui state to listener - } - } -} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeStatus.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeStatus.java index 517f9f2aba2717d90d3dffc744f6c95c7e2a7a22..77831136b0bc3509b425ad3601ca5e34127bcfac 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeStatus.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeStatus.java @@ -16,14 +16,7 @@ package com.android.wm.shell.desktopmode; -import static com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE; - -import android.content.Context; import android.os.SystemProperties; -import android.os.UserHandle; -import android.provider.Settings; - -import com.android.internal.protolog.common.ProtoLog; /** * Constants for desktop mode feature @@ -31,13 +24,7 @@ import com.android.internal.protolog.common.ProtoLog; public class DesktopModeStatus { /** - * Flag to indicate whether desktop mode is available on the device - */ - private static final boolean IS_SUPPORTED = SystemProperties.getBoolean( - "persist.wm.debug.desktop_mode", false); - - /** - * Flag to indicate whether desktop mode proto 2 is available on the device + * Flag to indicate whether desktop mode proto is available on the device */ private static final boolean IS_PROTO2_ENABLED = SystemProperties.getBoolean( "persist.wm.debug.desktop_mode_2", false); @@ -63,28 +50,13 @@ public class DesktopModeStatus { private static final boolean IS_STASHING_ENABLED = SystemProperties.getBoolean( "persist.wm.debug.desktop_stashing", false); - /** - * Return {@code true} if desktop mode support is enabled - */ - public static boolean isProto1Enabled() { - return IS_SUPPORTED; - } - /** * Return {@code true} is desktop windowing proto 2 is enabled */ - public static boolean isProto2Enabled() { + public static boolean isEnabled() { return IS_PROTO2_ENABLED; } - /** - * Return {@code true} if proto 1 or 2 is enabled. - * Can be used to guard logic that is common for both prototypes. - */ - public static boolean isAnyEnabled() { - return isProto1Enabled() || isProto2Enabled(); - } - /** * Return {@code true} if veiled resizing is active. If false, fluid resizing is used. */ @@ -99,26 +71,4 @@ public class DesktopModeStatus { public static boolean isStashingEnabled() { return IS_STASHING_ENABLED; } - /** - * Check if desktop mode is active - * - * @return {@code true} if active - */ - public static boolean isActive(Context context) { - if (!isAnyEnabled()) { - return false; - } - if (isProto2Enabled()) { - // Desktop mode is always active in prototype 2 - return true; - } - try { - int result = Settings.System.getIntForUser(context.getContentResolver(), - Settings.System.DESKTOP_MODE, UserHandle.USER_CURRENT); - return result != 0; - } catch (Exception e) { - ProtoLog.e(WM_SHELL_DESKTOP_MODE, "Failed to read DESKTOP_MODE setting %s", e); - return false; - } - } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt index c05af73e67653c0596172f07606935db9d999912..c0fc02fadd4d8e9464ac36df35ca3a25979c7e12 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeTaskRepository.kt @@ -52,8 +52,8 @@ class DesktopModeTaskRepository { private val activeTasksListeners = ArraySet() // Track visible tasks separately because a task may be part of the desktop but not visible. private val visibleTasksListeners = ArrayMap() - // Track corners of desktop tasks, used to determine gesture exclusion - private val desktopCorners = SparseArray() + // Track corner/caption regions of desktop tasks, used to determine gesture exclusion + private val desktopExclusionRegions = SparseArray() private var desktopGestureExclusionListener: Consumer? = null private var desktopGestureExclusionExecutor: Executor? = null @@ -96,10 +96,11 @@ class DesktopModeTaskRepository { } /** - * Add a Consumer which will inform other classes of changes to corners for all Desktop tasks. + * Add a Consumer which will inform other classes of changes to exclusion regions for all + * Desktop tasks. */ - fun setTaskCornerListener(cornersListener: Consumer, executor: Executor) { - desktopGestureExclusionListener = cornersListener + fun setExclusionRegionListener(regionListener: Consumer, executor: Executor) { + desktopGestureExclusionListener = regionListener desktopGestureExclusionExecutor = executor executor.execute { desktopGestureExclusionListener?.accept(calculateDesktopExclusionRegion()) @@ -107,14 +108,14 @@ class DesktopModeTaskRepository { } /** - * Create a new merged region representative of all corners in all desktop tasks. + * Create a new merged region representative of all exclusion regions in all desktop tasks. */ private fun calculateDesktopExclusionRegion(): Region { - val desktopCornersRegion = Region() - desktopCorners.valueIterator().forEach { taskCorners -> - desktopCornersRegion.op(taskCorners, Region.Op.UNION) + val desktopExclusionRegion = Region() + desktopExclusionRegions.valueIterator().forEach { taskExclusionRegion -> + desktopExclusionRegion.op(taskExclusionRegion, Region.Op.UNION) } - return desktopCornersRegion + return desktopExclusionRegion } /** @@ -294,22 +295,24 @@ class DesktopModeTaskRepository { } /** - * Updates the active desktop corners; if desktopCorners has been accepted by - * desktopCornersListener, it will be updated in the appropriate classes. + * Updates the active desktop gesture exclusion regions; if desktopExclusionRegions has been + * accepted by desktopGestureExclusionListener, it will be updated in the + * appropriate classes. */ - fun updateTaskCorners(taskId: Int, taskCorners: Region) { - desktopCorners.put(taskId, taskCorners) + fun updateTaskExclusionRegions(taskId: Int, taskExclusionRegions: Region) { + desktopExclusionRegions.put(taskId, taskExclusionRegions) desktopGestureExclusionExecutor?.execute { desktopGestureExclusionListener?.accept(calculateDesktopExclusionRegion()) } } /** - * Removes the active desktop corners for the specified task; if desktopCorners has been - * accepted by desktopCornersListener, it will be updated in the appropriate classes. + * Removes the desktop gesture exclusion region for the specified task; if exclusionRegion + * has been accepted by desktopGestureExclusionListener, it will be updated in the + * appropriate classes. */ - fun removeTaskCorners(taskId: Int) { - desktopCorners.delete(taskId) + fun removeExclusionRegion(taskId: Int) { + desktopExclusionRegions.delete(taskId) desktopGestureExclusionExecutor?.execute { desktopGestureExclusionListener?.accept(calculateDesktopExclusionRegion()) } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java index 0f0d572f8eaedf6ad3aa1c537775ecd1fa3f8a99..a587bed3fef02f359e923e3e39d28f452816a709 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeVisualIndicator.java @@ -27,6 +27,7 @@ import android.app.ActivityManager; import android.content.Context; import android.content.res.Resources; import android.graphics.PixelFormat; +import android.graphics.PointF; import android.graphics.Rect; import android.util.DisplayMetrics; import android.view.SurfaceControl; @@ -47,6 +48,15 @@ import com.android.wm.shell.common.SyncTransactionQueue; * Animated visual indicator for Desktop Mode windowing transitions. */ public class DesktopModeVisualIndicator { + public static final int INVALID_INDICATOR = -1; + /** Indicates impending transition into desktop mode */ + public static final int TO_DESKTOP_INDICATOR = 1; + /** Indicates impending transition into fullscreen */ + public static final int TO_FULLSCREEN_INDICATOR = 2; + /** Indicates impending transition into split select on the left side */ + public static final int TO_SPLIT_LEFT_INDICATOR = 3; + /** Indicates impending transition into split select on the right side */ + public static final int TO_SPLIT_RIGHT_INDICATOR = 4; private final Context mContext; private final DisplayController mDisplayController; @@ -54,6 +64,7 @@ public class DesktopModeVisualIndicator { private final RootTaskDisplayAreaOrganizer mRootTdaOrganizer; private final ActivityManager.RunningTaskInfo mTaskInfo; private final SurfaceControl mTaskSurface; + private final Rect mIndicatorRange = new Rect(); private SurfaceControl mLeash; private final SyncTransactionQueue mSyncQueue; @@ -61,11 +72,12 @@ public class DesktopModeVisualIndicator { private View mView; private boolean mIsFullscreen; + private int mType; public DesktopModeVisualIndicator(SyncTransactionQueue syncQueue, ActivityManager.RunningTaskInfo taskInfo, DisplayController displayController, Context context, SurfaceControl taskSurface, ShellTaskOrganizer taskOrganizer, - RootTaskDisplayAreaOrganizer taskDisplayAreaOrganizer) { + RootTaskDisplayAreaOrganizer taskDisplayAreaOrganizer, int type) { mSyncQueue = syncQueue; mTaskInfo = taskInfo; mDisplayController = displayController; @@ -73,9 +85,63 @@ public class DesktopModeVisualIndicator { mTaskSurface = taskSurface; mTaskOrganizer = taskOrganizer; mRootTdaOrganizer = taskDisplayAreaOrganizer; + mType = type; + defineIndicatorRange(); createView(); } + /** + * If an indicator is warranted based on the input and task bounds, return the type of + * indicator that should be created. + */ + public static int determineIndicatorType(PointF inputCoordinates, Rect taskBounds, + DisplayLayout layout, Context context) { + int transitionAreaHeight = context.getResources().getDimensionPixelSize( + com.android.wm.shell.R.dimen.desktop_mode_transition_area_height); + int transitionAreaWidth = context.getResources().getDimensionPixelSize( + com.android.wm.shell.R.dimen.desktop_mode_transition_area_width); + if (taskBounds.top <= transitionAreaHeight) return TO_FULLSCREEN_INDICATOR; + if (inputCoordinates.x <= transitionAreaWidth) return TO_SPLIT_LEFT_INDICATOR; + if (inputCoordinates.x >= layout.width() - transitionAreaWidth) { + return TO_SPLIT_RIGHT_INDICATOR; + } + return INVALID_INDICATOR; + } + + /** + * Determine range of inputs that will keep this indicator displaying. + */ + private void defineIndicatorRange() { + DisplayLayout layout = mDisplayController.getDisplayLayout(mTaskInfo.displayId); + int captionHeight = mContext.getResources().getDimensionPixelSize( + com.android.wm.shell.R.dimen.freeform_decor_caption_height); + int transitionAreaHeight = mContext.getResources().getDimensionPixelSize( + com.android.wm.shell.R.dimen.desktop_mode_transition_area_height); + int transitionAreaWidth = mContext.getResources().getDimensionPixelSize( + com.android.wm.shell.R.dimen.desktop_mode_transition_area_width); + switch (mType) { + case TO_DESKTOP_INDICATOR: + // TO_DESKTOP indicator is only dismissed on release; entire display is valid. + mIndicatorRange.set(0, 0, layout.width(), layout.height()); + break; + case TO_FULLSCREEN_INDICATOR: + // If drag results in caption going above the top edge of the display, we still + // want to transition to fullscreen. + mIndicatorRange.set(0, -captionHeight, layout.width(), transitionAreaHeight); + break; + case TO_SPLIT_LEFT_INDICATOR: + mIndicatorRange.set(0, transitionAreaHeight, transitionAreaWidth, layout.height()); + break; + case TO_SPLIT_RIGHT_INDICATOR: + mIndicatorRange.set(layout.width() - transitionAreaWidth, transitionAreaHeight, + layout.width(), layout.height()); + break; + default: + break; + } + } + + /** * Create a fullscreen indicator with no animation */ @@ -85,11 +151,30 @@ public class DesktopModeVisualIndicator { final DisplayMetrics metrics = resources.getDisplayMetrics(); final int screenWidth = metrics.widthPixels; final int screenHeight = metrics.heightPixels; + mView = new View(mContext); final SurfaceControl.Builder builder = new SurfaceControl.Builder(); mRootTdaOrganizer.attachToDisplayArea(mTaskInfo.displayId, builder); + String description; + switch (mType) { + case TO_DESKTOP_INDICATOR: + description = "Desktop indicator"; + break; + case TO_FULLSCREEN_INDICATOR: + description = "Fullscreen indicator"; + break; + case TO_SPLIT_LEFT_INDICATOR: + description = "Split Left indicator"; + break; + case TO_SPLIT_RIGHT_INDICATOR: + description = "Split Right indicator"; + break; + default: + description = "Invalid indicator"; + break; + } mLeash = builder - .setName("Fullscreen Indicator") + .setName(description) .setContainerLayer() .build(); t.show(mLeash); @@ -97,14 +182,14 @@ public class DesktopModeVisualIndicator { new WindowManager.LayoutParams(screenWidth, screenHeight, WindowManager.LayoutParams.TYPE_APPLICATION, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, PixelFormat.TRANSPARENT); - lp.setTitle("Fullscreen indicator for Task=" + mTaskInfo.taskId); + lp.setTitle(description + " for Task=" + mTaskInfo.taskId); lp.setTrustedOverlay(); final WindowlessWindowManager windowManager = new WindowlessWindowManager( mTaskInfo.configuration, mLeash, null /* hostInputToken */); mViewHost = new SurfaceControlViewHost(mContext, mDisplayController.getDisplay(mTaskInfo.displayId), windowManager, - "FullscreenVisualIndicator"); + "DesktopModeVisualIndicator"); mViewHost.setView(mView, lp); // We want this indicator to be behind the dragged task, but in front of all others. t.setRelativeLayer(mLeash, mTaskSurface, -1); @@ -116,24 +201,13 @@ public class DesktopModeVisualIndicator { } /** - * Create fullscreen indicator and fades it in. - */ - public void createFullscreenIndicator() { - mIsFullscreen = true; - mView.setBackgroundResource(R.drawable.desktop_windowing_transition_background); - final VisualIndicatorAnimator animator = VisualIndicatorAnimator.toFullscreenAnimator( - mView, mDisplayController.getDisplayLayout(mTaskInfo.displayId)); - animator.start(); - } - - /** - * Create a fullscreen indicator. Animator fades it in while expanding the bounds outwards. + * Create an indicator. Animator fades it in while expanding the bounds outwards. */ - public void createFullscreenIndicatorWithAnimatedBounds() { - mIsFullscreen = true; + public void createIndicatorWithAnimatedBounds() { + mIsFullscreen = mType == TO_FULLSCREEN_INDICATOR; mView.setBackgroundResource(R.drawable.desktop_windowing_transition_background); final VisualIndicatorAnimator animator = VisualIndicatorAnimator - .toFullscreenAnimatorWithAnimatedBounds(mView, + .animateBounds(mView, mType, mDisplayController.getDisplayLayout(mTaskInfo.displayId)); animator.start(); } @@ -143,6 +217,7 @@ public class DesktopModeVisualIndicator { */ public void transitionFullscreenIndicatorToFreeform() { mIsFullscreen = false; + mType = TO_DESKTOP_INDICATOR; final VisualIndicatorAnimator animator = VisualIndicatorAnimator.toFreeformAnimator( mView, mDisplayController.getDisplayLayout(mTaskInfo.displayId)); animator.start(); @@ -153,12 +228,21 @@ public class DesktopModeVisualIndicator { */ public void transitionFreeformIndicatorToFullscreen() { mIsFullscreen = true; + mType = TO_FULLSCREEN_INDICATOR; final VisualIndicatorAnimator animator = VisualIndicatorAnimator.toFullscreenAnimatorWithAnimatedBounds( mView, mDisplayController.getDisplayLayout(mTaskInfo.displayId)); animator.start(); } + /** + * Determine if a MotionEvent is in the same range that enabled the indicator. + * Used to dismiss the indicator when a transition will no longer result from releasing. + */ + public boolean eventOutsideRange(float x, float y) { + return !mIndicatorRange.contains((int) x, (int) y); + } + /** * Release the indicator and its components when it is no longer needed. */ @@ -210,32 +294,45 @@ public class DesktopModeVisualIndicator { * @param view the view for this indicator * @param displayLayout information about the display the transitioning task is currently on */ - public static VisualIndicatorAnimator toFullscreenAnimator(@NonNull View view, - @NonNull DisplayLayout displayLayout) { - final Rect bounds = getMaxBounds(displayLayout); + public static VisualIndicatorAnimator toFullscreenAnimatorWithAnimatedBounds( + @NonNull View view, @NonNull DisplayLayout displayLayout) { + final int padding = displayLayout.stableInsets().top; + Rect startBounds = new Rect(padding, padding, + displayLayout.width() - padding, displayLayout.height() - padding); + view.getBackground().setBounds(startBounds); + final VisualIndicatorAnimator animator = new VisualIndicatorAnimator( - view, bounds, bounds); + view, startBounds, getMaxBounds(startBounds)); animator.setInterpolator(new DecelerateInterpolator()); setupIndicatorAnimation(animator); return animator; } - - /** - * Create animator for visual indicator of fullscreen transition - * - * @param view the view for this indicator - * @param displayLayout information about the display the transitioning task is currently on - */ - public static VisualIndicatorAnimator toFullscreenAnimatorWithAnimatedBounds( - @NonNull View view, @NonNull DisplayLayout displayLayout) { + public static VisualIndicatorAnimator animateBounds( + @NonNull View view, int type, @NonNull DisplayLayout displayLayout) { final int padding = displayLayout.stableInsets().top; - Rect startBounds = new Rect(padding, padding, - displayLayout.width() - padding, displayLayout.height() - padding); + Rect startBounds = new Rect(); + switch (type) { + case TO_FULLSCREEN_INDICATOR: + startBounds.set(padding, padding, + displayLayout.width() - padding, + displayLayout.height() - padding); + break; + case TO_SPLIT_LEFT_INDICATOR: + startBounds.set(padding, padding, + displayLayout.width() / 2 - padding, + displayLayout.height() - padding); + break; + case TO_SPLIT_RIGHT_INDICATOR: + startBounds.set(displayLayout.width() / 2 + padding, padding, + displayLayout.width() - padding, + displayLayout.height() - padding); + break; + } view.getBackground().setBounds(startBounds); final VisualIndicatorAnimator animator = new VisualIndicatorAnimator( - view, startBounds, getMaxBounds(displayLayout)); + view, startBounds, getMaxBounds(startBounds)); animator.setInterpolator(new DecelerateInterpolator()); setupIndicatorAnimation(animator); return animator; @@ -252,12 +349,13 @@ public class DesktopModeVisualIndicator { final float adjustmentPercentage = 1f - FINAL_FREEFORM_SCALE; final int width = displayLayout.width(); final int height = displayLayout.height(); + Rect startBounds = new Rect(0, 0, width, height); Rect endBounds = new Rect((int) (adjustmentPercentage * width / 2), (int) (adjustmentPercentage * height / 2), (int) (displayLayout.width() - (adjustmentPercentage * width / 2)), (int) (displayLayout.height() - (adjustmentPercentage * height / 2))); final VisualIndicatorAnimator animator = new VisualIndicatorAnimator( - view, getMaxBounds(displayLayout), endBounds); + view, startBounds, endBounds); animator.setInterpolator(new DecelerateInterpolator()); setupIndicatorAnimation(animator); return animator; @@ -310,21 +408,17 @@ public class DesktopModeVisualIndicator { } /** - * Return the max bounds of a fullscreen indicator + * Return the max bounds of a visual indicator */ - private static Rect getMaxBounds(@NonNull DisplayLayout displayLayout) { - final int padding = displayLayout.stableInsets().top; - final int width = displayLayout.width() - 2 * padding; - final int height = displayLayout.height() - 2 * padding; - Rect endBounds = new Rect((int) (padding - - (FULLSCREEN_SCALE_ADJUSTMENT_PERCENT * width)), - (int) (padding - - (FULLSCREEN_SCALE_ADJUSTMENT_PERCENT * height)), - (int) (displayLayout.width() - padding - + (FULLSCREEN_SCALE_ADJUSTMENT_PERCENT * width)), - (int) (displayLayout.height() - padding - + (FULLSCREEN_SCALE_ADJUSTMENT_PERCENT * height))); - return endBounds; + private static Rect getMaxBounds(Rect startBounds) { + return new Rect((int) (startBounds.left + - (FULLSCREEN_SCALE_ADJUSTMENT_PERCENT * startBounds.width())), + (int) (startBounds.top + - (FULLSCREEN_SCALE_ADJUSTMENT_PERCENT * startBounds.height())), + (int) (startBounds.right + + (FULLSCREEN_SCALE_ADJUSTMENT_PERCENT * startBounds.width())), + (int) (startBounds.bottom + + (FULLSCREEN_SCALE_ADJUSTMENT_PERCENT * startBounds.height()))); } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt index 1d46e755ec9d6f10a9398428891020dc505d920e..f8dd208f96db60c8cf10de487caaa9fdcb562d60 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopTasksController.kt @@ -16,7 +16,6 @@ package com.android.wm.shell.desktopmode -import android.R import android.app.ActivityManager.RunningTaskInfo import android.app.WindowConfiguration.ACTIVITY_TYPE_HOME import android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD @@ -26,8 +25,8 @@ import android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW import android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED import android.app.WindowConfiguration.WindowingMode import android.content.Context -import android.content.res.TypedArray import android.graphics.Point +import android.graphics.PointF import android.graphics.Rect import android.graphics.Region import android.os.IBinder @@ -42,6 +41,7 @@ import android.window.TransitionInfo import android.window.TransitionRequestInfo import android.window.WindowContainerTransaction import androidx.annotation.BinderThread +import com.android.internal.policy.ScreenDecorationsUtils import com.android.wm.shell.RootTaskDisplayAreaOrganizer import com.android.wm.shell.ShellTaskOrganizer import com.android.wm.shell.common.DisplayController @@ -54,9 +54,13 @@ import com.android.wm.shell.common.SingleInstanceRemoteListener import com.android.wm.shell.common.SyncTransactionQueue import com.android.wm.shell.common.annotations.ExternalThread import com.android.wm.shell.common.annotations.ShellMainThread +import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT +import com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT import com.android.wm.shell.desktopmode.DesktopModeTaskRepository.VisibleTasksListener +import com.android.wm.shell.desktopmode.DesktopModeVisualIndicator.TO_DESKTOP_INDICATOR import com.android.wm.shell.protolog.ShellProtoLogGroup.WM_SHELL_DESKTOP_MODE import com.android.wm.shell.splitscreen.SplitScreenController +import com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_ENTER_DESKTOP import com.android.wm.shell.sysui.ShellCommandHandler import com.android.wm.shell.sysui.ShellController import com.android.wm.shell.sysui.ShellInit @@ -104,14 +108,20 @@ class DesktopTasksController( private val transitionAreaHeight get() = context.resources.getDimensionPixelSize( - com.android.wm.shell.R.dimen.desktop_mode_transition_area_height) + com.android.wm.shell.R.dimen.desktop_mode_transition_area_height + ) + + private val transitionAreaWidth + get() = context.resources.getDimensionPixelSize( + com.android.wm.shell.R.dimen.desktop_mode_transition_area_width + ) // This is public to avoid cyclic dependency; it is set by SplitScreenController lateinit var splitScreenController: SplitScreenController init { desktopMode = DesktopModeImpl() - if (DesktopModeStatus.isProto2Enabled()) { + if (DesktopModeStatus.isEnabled()) { shellInit.addInitCallback({ onInit() }, this) } } @@ -203,6 +213,7 @@ class DesktopTasksController( "DesktopTasksController: moveToDesktop taskId=%d", task.taskId ) + exitSplitIfApplicable(wct, task) // Bring other apps to front first bringDesktopAppsToFront(task.displayId, wct) addMoveToDesktopChanges(wct, task) @@ -230,6 +241,7 @@ class DesktopTasksController( taskInfo.taskId ) val wct = WindowContainerTransaction() + exitSplitIfApplicable(wct, taskInfo) moveHomeTaskToFront(wct) addMoveToDesktopChanges(wct, taskInfo) wct.setBounds(taskInfo.token, startBounds) @@ -301,6 +313,31 @@ class DesktopTasksController( } } + /** Move a desktop app to split screen. */ + fun moveToSplit(task: RunningTaskInfo) { + KtProtoLog.v( + WM_SHELL_DESKTOP_MODE, + "DesktopTasksController: moveToSplit taskId=%d", + task.taskId + ) + val wct = WindowContainerTransaction() + wct.setWindowingMode(task.token, WINDOWING_MODE_MULTI_WINDOW) + wct.setBounds(task.token, Rect()) + wct.setDensityDpi(task.token, getDefaultDensityDpi()) + if (Transitions.ENABLE_SHELL_TRANSITIONS) { + transitions.startTransition(TRANSIT_CHANGE, wct, null /* handler */) + } else { + shellTaskOrganizer.applyTransaction(wct) + } + } + + private fun exitSplitIfApplicable(wct: WindowContainerTransaction, taskInfo: RunningTaskInfo) { + if (taskInfo.windowingMode == WINDOWING_MODE_MULTI_WINDOW) { + splitScreenController.prepareExitSplitScreen(wct, + splitScreenController.getStageOfTask(taskInfo.taskId), EXIT_REASON_ENTER_DESKTOP) + } + } + /** * The second part of the animated move to desktop transition, called after * {@link startMoveToDesktop}. Move a task to fullscreen after being dragged from fullscreen @@ -466,6 +503,55 @@ class DesktopTasksController( } } + /** + * Quick-resize to the right or left half of the stable bounds. + * + * @param position the portion of the screen (RIGHT or LEFT) we want to snap the task to. + */ + fun snapToHalfScreen( + taskInfo: RunningTaskInfo, + windowDecor: DesktopModeWindowDecoration, + position: SnapPosition + ) { + val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) ?: return + + val stableBounds = Rect() + displayLayout.getStableBounds(stableBounds) + + val destinationWidth = stableBounds.width() / 2 + val destinationBounds = when (position) { + SnapPosition.LEFT -> { + Rect( + stableBounds.left, + stableBounds.top, + stableBounds.left + destinationWidth, + stableBounds.bottom + ) + } + SnapPosition.RIGHT -> { + Rect( + stableBounds.right - destinationWidth, + stableBounds.top, + stableBounds.right, + stableBounds.bottom + ) + } + } + + if (destinationBounds == taskInfo.configuration.windowConfiguration.bounds) return + + val wct = WindowContainerTransaction().setBounds(taskInfo.token, destinationBounds) + if (Transitions.ENABLE_SHELL_TRANSITIONS) { + toggleResizeDesktopTaskTransitionHandler.startTransition( + wct, + taskInfo.taskId, + windowDecor + ) + } else { + shellTaskOrganizer.applyTransaction(wct) + } + } + private fun getDefaultDesktopTaskBounds(density: Float, stableBounds: Rect, outBounds: Rect) { val width = (DESKTOP_MODE_DEFAULT_WIDTH_DP * density + 0.5f).toInt() val height = (DESKTOP_MODE_DEFAULT_HEIGHT_DP * density + 0.5f).toInt() @@ -618,10 +704,7 @@ class DesktopTasksController( finishTransaction: SurfaceControl.Transaction ) { // Add rounded corners to freeform windows - val ta: TypedArray = context.obtainStyledAttributes( - intArrayOf(R.attr.dialogCornerRadius)) - val cornerRadius = ta.getDimensionPixelSize(0, 0).toFloat() - ta.recycle() + val cornerRadius = ScreenDecorationsUtils.getWindowCornerRadius(context) info.changes .filter { it.taskInfo?.windowingMode == WINDOWING_MODE_FREEFORM } .forEach { finishTransaction.setCornerRadius(it.leash, cornerRadius) } @@ -736,7 +819,8 @@ class DesktopTasksController( ) { val wct = WindowContainerTransaction() addMoveToSplitChanges(wct, taskInfo) - splitScreenController.requestEnterSplitSelect(taskInfo, wct) + splitScreenController.requestEnterSplitSelect(taskInfo, wct, + SPLIT_POSITION_BOTTOM_OR_RIGHT, taskInfo.configuration.windowConfiguration.bounds) } } @@ -760,25 +844,36 @@ class DesktopTasksController( /** * Perform checks required on drag move. Create/release fullscreen indicator as needed. + * Different sources for x and y coordinates are used due to different needs for each: + * We want split transitions to be based on input coordinates but fullscreen transition + * to be based on task edge coordinate. * * @param taskInfo the task being dragged. * @param taskSurface SurfaceControl of dragged task. - * @param y coordinate of dragged task. Used for checks against status bar height. + * @param inputCoordinate coordinates of input. Used for checks against left/right edge of screen. + * @param taskBounds bounds of dragged task. Used for checks against status bar height. */ fun onDragPositioningMove( - taskInfo: RunningTaskInfo, - taskSurface: SurfaceControl, - y: Float + taskInfo: RunningTaskInfo, + taskSurface: SurfaceControl, + inputCoordinate: PointF, + taskBounds: Rect ) { - if (taskInfo.windowingMode == WINDOWING_MODE_FREEFORM) { - if (y <= transitionAreaHeight && visualIndicator == null) { - visualIndicator = DesktopModeVisualIndicator(syncQueue, taskInfo, - displayController, context, taskSurface, shellTaskOrganizer, - rootTaskDisplayAreaOrganizer) - visualIndicator?.createFullscreenIndicatorWithAnimatedBounds() - } else if (y > transitionAreaHeight && visualIndicator != null) { - releaseVisualIndicator() - } + val displayLayout = displayController.getDisplayLayout(taskInfo.displayId) ?: return + if (taskInfo.windowingMode != WINDOWING_MODE_FREEFORM) return + var type = DesktopModeVisualIndicator.determineIndicatorType(inputCoordinate, + taskBounds, displayLayout, context) + if (type != DesktopModeVisualIndicator.INVALID_INDICATOR && visualIndicator == null) { + visualIndicator = DesktopModeVisualIndicator( + syncQueue, taskInfo, + displayController, context, taskSurface, shellTaskOrganizer, + rootTaskDisplayAreaOrganizer, type) + visualIndicator?.createIndicatorWithAnimatedBounds() + return + } + if (visualIndicator?.eventOutsideRange(inputCoordinate.x, + taskBounds.top.toFloat()) == true) { + releaseVisualIndicator() } } @@ -787,19 +882,39 @@ class DesktopTasksController( * * @param taskInfo the task being dragged. * @param position position of surface when drag ends. - * @param y the Y position of the top edge of the task + * @param inputCoordinate the coordinates of the motion event + * @param taskBounds the updated bounds of the task being dragged. * @param windowDecor the window decoration for the task being dragged */ fun onDragPositioningEnd( - taskInfo: RunningTaskInfo, - position: Point, - y: Float, - windowDecor: DesktopModeWindowDecoration + taskInfo: RunningTaskInfo, + position: Point, + inputCoordinate: PointF, + taskBounds: Rect, + windowDecor: DesktopModeWindowDecoration ) { - if (y <= transitionAreaHeight && taskInfo.windowingMode == WINDOWING_MODE_FREEFORM) { + if (taskInfo.configuration.windowConfiguration.windowingMode != WINDOWING_MODE_FREEFORM) { + return + } + if (taskBounds.top <= transitionAreaHeight) { windowDecor.incrementRelayoutBlock() moveToFullscreenWithAnimation(taskInfo, position) } + if (inputCoordinate.x <= transitionAreaWidth) { + releaseVisualIndicator() + var wct = WindowContainerTransaction() + addMoveToSplitChanges(wct, taskInfo) + splitScreenController.requestEnterSplitSelect(taskInfo, wct, + SPLIT_POSITION_TOP_OR_LEFT, taskBounds) + } + if (inputCoordinate.x >= (displayController.getDisplayLayout(taskInfo.displayId)?.width() + ?.minus(transitionAreaWidth) ?: return)) { + releaseVisualIndicator() + var wct = WindowContainerTransaction() + addMoveToSplitChanges(wct, taskInfo) + splitScreenController.requestEnterSplitSelect(taskInfo, wct, + SPLIT_POSITION_BOTTOM_OR_RIGHT, taskBounds) + } } /** @@ -823,8 +938,8 @@ class DesktopTasksController( if (visualIndicator == null) { visualIndicator = DesktopModeVisualIndicator(syncQueue, taskInfo, displayController, context, taskSurface, shellTaskOrganizer, - rootTaskDisplayAreaOrganizer) - visualIndicator?.createFullscreenIndicator() + rootTaskDisplayAreaOrganizer, TO_DESKTOP_INDICATOR) + visualIndicator?.createIndicatorWithAnimatedBounds() } val indicator = visualIndicator ?: return if (y >= getFreeformTransitionStatusBarDragThreshold(taskInfo)) { @@ -862,17 +977,17 @@ class DesktopTasksController( } /** - * Update the corner region for a specified task + * Update the exclusion region for a specified task */ - fun onTaskCornersChanged(taskId: Int, corner: Region) { - desktopModeTaskRepository.updateTaskCorners(taskId, corner) + fun onExclusionRegionChanged(taskId: Int, exclusionRegion: Region) { + desktopModeTaskRepository.updateTaskExclusionRegions(taskId, exclusionRegion) } /** - * Remove a previously tracked corner region for a specified task. + * Remove a previously tracked exclusion region for a specified task. */ - fun removeCornersForTask(taskId: Int) { - desktopModeTaskRepository.removeTaskCorners(taskId) + fun removeExclusionRegionForTask(taskId: Int) { + desktopModeTaskRepository.removeExclusionRegion(taskId) } /** @@ -886,16 +1001,16 @@ class DesktopTasksController( } /** - * Adds a listener to track changes to desktop task corners + * Adds a listener to track changes to desktop task gesture exclusion regions * * @param listener the listener to add. * @param callbackExecutor the executor to call the listener on. */ - fun setTaskCornerListener( + fun setTaskRegionListener( listener: Consumer, callbackExecutor: Executor ) { - desktopModeTaskRepository.setTaskCornerListener(listener, callbackExecutor) + desktopModeTaskRepository.setExclusionRegionListener(listener, callbackExecutor) } private fun dump(pw: PrintWriter, prefix: String) { @@ -921,7 +1036,7 @@ class DesktopTasksController( callbackExecutor: Executor ) { mainExecutor.execute { - this@DesktopTasksController.setTaskCornerListener(listener, callbackExecutor) + this@DesktopTasksController.setTaskRegionListener(listener, callbackExecutor) } } } @@ -1058,4 +1173,7 @@ class DesktopTasksController( return DESKTOP_DENSITY_OVERRIDE in DESKTOP_DENSITY_ALLOWED_RANGE } } + + /** The positions on a screen that a task can snap to. */ + enum class SnapPosition { RIGHT, LEFT } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java index 22541bbd892a816fc3ad054ce328332ffb0b31ee..a80241e0ac5c2ef08a89713910e4e727fd3b021c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/freeform/FreeformTaskListener.java @@ -68,7 +68,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener, private void onInit() { mShellTaskOrganizer.addListenerForType(this, TASK_LISTENER_TYPE_FREEFORM); - if (DesktopModeStatus.isAnyEnabled()) { + if (DesktopModeStatus.isEnabled()) { mShellTaskOrganizer.addFocusListener(this); } } @@ -90,7 +90,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener, t.apply(); } - if (DesktopModeStatus.isAnyEnabled()) { + if (DesktopModeStatus.isEnabled()) { mDesktopModeTaskRepository.ifPresent(repository -> { repository.addOrMoveFreeformTaskToTop(taskInfo.taskId); if (taskInfo.isVisible) { @@ -111,7 +111,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener, taskInfo.taskId); mTasks.remove(taskInfo.taskId); - if (DesktopModeStatus.isAnyEnabled()) { + if (DesktopModeStatus.isEnabled()) { mDesktopModeTaskRepository.ifPresent(repository -> { repository.removeFreeformTask(taskInfo.taskId); if (repository.removeActiveTask(taskInfo.taskId)) { @@ -135,7 +135,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener, taskInfo.taskId); mWindowDecorationViewModel.onTaskInfoChanged(taskInfo); state.mTaskInfo = taskInfo; - if (DesktopModeStatus.isAnyEnabled()) { + if (DesktopModeStatus.isEnabled()) { mDesktopModeTaskRepository.ifPresent(repository -> { if (taskInfo.isVisible) { if (repository.addActiveTask(taskInfo.displayId, taskInfo.taskId)) { @@ -154,7 +154,7 @@ public class FreeformTaskListener implements ShellTaskOrganizer.TaskListener, ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TASK_ORG, "Freeform Task Focus Changed: #%d focused=%b", taskInfo.taskId, taskInfo.isFocused); - if (DesktopModeStatus.isAnyEnabled() && taskInfo.isFocused) { + if (DesktopModeStatus.isEnabled() && taskInfo.isFocused) { mDesktopModeTaskRepository.ifPresent(repository -> { repository.addOrMoveFreeformTaskToTop(taskInfo.taskId); }); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java index 2ef92adb90f55722406fe4e4a42fa93c4f6237c2..13c0ac4bbaa7dac559c9ac9bdf5657aad72fe11c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/keyguard/KeyguardTransitionHandler.java @@ -16,7 +16,10 @@ package com.android.wm.shell.keyguard; +import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.WindowConfiguration.ACTIVITY_TYPE_DREAM; +import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.view.WindowManager.KEYGUARD_VISIBILITY_TRANSIT_FLAGS; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_GOING_AWAY; import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_OCCLUDING; @@ -27,6 +30,7 @@ import static com.android.wm.shell.util.TransitionUtil.isOpeningType; import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.ActivityManager; import android.os.Binder; import android.os.Handler; import android.os.IBinder; @@ -165,10 +169,16 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler if (sct != null) { finishTransaction.merge(sct); } + final WindowContainerTransaction mergedWct = + new WindowContainerTransaction(); + if (wct != null) { + mergedWct.merge(wct, true); + } + maybeDismissFreeformOccludingKeyguard(mergedWct, info); // Post our finish callback to let startAnimation finish first. mMainExecutor.executeDelayed(() -> { mStartedTransitions.remove(transition); - finishCallback.onTransitionFinished(wct); + finishCallback.onTransitionFinished(mergedWct); }, 0); } }); @@ -260,6 +270,26 @@ public class KeyguardTransitionHandler implements Transitions.TransitionHandler } } + private void maybeDismissFreeformOccludingKeyguard( + WindowContainerTransaction wct, TransitionInfo info) { + if ((info.getFlags() & TRANSIT_FLAG_KEYGUARD_OCCLUDING) == 0) { + return; + } + // There's a window occluding the Keyguard, find it and if it's in freeform mode, change it + // to fullscreen. + for (int i = 0; i < info.getChanges().size(); i++) { + final TransitionInfo.Change change = info.getChanges().get(i); + final ActivityManager.RunningTaskInfo taskInfo = change.getTaskInfo(); + if (taskInfo != null && taskInfo.taskId != INVALID_TASK_ID + && taskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM + && taskInfo.isFocused && change.getContainer() != null) { + wct.setWindowingMode(change.getContainer(), WINDOWING_MODE_FULLSCREEN); + wct.setBounds(change.getContainer(), null); + return; + } + } + } + private static class FakeFinishCallback extends IRemoteTransitionFinishedCallback.Stub { @Override public void onTransitionFinished( 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 deleted file mode 100644 index ddffb5bdacded9feba24abbac6cf6f4912f0ded7..0000000000000000000000000000000000000000 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java +++ /dev/null @@ -1,369 +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.wm.shell.pip; - -import static android.app.PendingIntent.FLAG_IMMUTABLE; -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; -import android.content.ComponentName; -import android.content.Context; -import android.content.Intent; -import android.content.IntentFilter; -import android.graphics.drawable.Icon; -import android.media.MediaMetadata; -import android.media.session.MediaController; -import android.media.session.MediaSession; -import android.media.session.MediaSessionManager; -import android.media.session.PlaybackState; -import android.os.Handler; -import android.os.HandlerExecutor; -import android.os.UserHandle; - -import androidx.annotation.Nullable; - -import com.android.wm.shell.R; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; - -/** - * Interfaces with the {@link MediaSessionManager} to compose the right set of actions to show (only - * if there are no actions from the PiP activity itself). The active media controller is only set - * when there is a media session from the top PiP activity. - */ -public class PipMediaController { - private static final String SYSTEMUI_PERMISSION = "com.android.systemui.permission.SELF"; - - private static final String ACTION_PLAY = "com.android.wm.shell.pip.PLAY"; - private static final String ACTION_PAUSE = "com.android.wm.shell.pip.PAUSE"; - private static final String ACTION_NEXT = "com.android.wm.shell.pip.NEXT"; - private static final String ACTION_PREV = "com.android.wm.shell.pip.PREV"; - - /** - * A listener interface to receive notification on changes to the media actions. - */ - public interface ActionListener { - /** - * Called when the media actions changed. - */ - void onMediaActionsChanged(List actions); - } - - /** - * A listener interface to receive notification on changes to the media metadata. - */ - public interface MetadataListener { - /** - * Called when the media metadata changed. - */ - void onMediaMetadataChanged(MediaMetadata metadata); - } - - /** - * A listener interface to receive notification on changes to the media session token. - */ - public interface TokenListener { - /** - * Called when the media session token changed. - */ - void onMediaSessionTokenChanged(MediaSession.Token token); - } - - private final Context mContext; - private final Handler mMainHandler; - private final HandlerExecutor mHandlerExecutor; - - private final MediaSessionManager mMediaSessionManager; - private MediaController mMediaController; - - private RemoteAction mPauseAction; - private RemoteAction mPlayAction; - private RemoteAction mNextAction; - private RemoteAction mPrevAction; - - private final BroadcastReceiver mMediaActionReceiver = new BroadcastReceiver() { - @Override - public void onReceive(Context context, Intent intent) { - if (mMediaController == null || mMediaController.getTransportControls() == null) { - // no active media session, bail early. - return; - } - switch (intent.getAction()) { - case ACTION_PLAY: - mMediaController.getTransportControls().play(); - break; - case ACTION_PAUSE: - mMediaController.getTransportControls().pause(); - break; - case ACTION_NEXT: - mMediaController.getTransportControls().skipToNext(); - break; - case ACTION_PREV: - mMediaController.getTransportControls().skipToPrevious(); - break; - } - } - }; - - private final MediaController.Callback mPlaybackChangedListener = - new MediaController.Callback() { - @Override - public void onPlaybackStateChanged(PlaybackState state) { - notifyActionsChanged(); - } - - @Override - public void onMetadataChanged(@Nullable MediaMetadata metadata) { - notifyMetadataChanged(metadata); - } - }; - - private final MediaSessionManager.OnActiveSessionsChangedListener mSessionsChangedListener = - this::resolveActiveMediaController; - - private final ArrayList mActionListeners = new ArrayList<>(); - private final ArrayList mMetadataListeners = new ArrayList<>(); - private final ArrayList mTokenListeners = new ArrayList<>(); - - public PipMediaController(Context context, Handler mainHandler) { - mContext = context; - mMainHandler = mainHandler; - mHandlerExecutor = new HandlerExecutor(mMainHandler); - if (!PipUtils.isPip2ExperimentEnabled()) { - IntentFilter mediaControlFilter = new IntentFilter(); - mediaControlFilter.addAction(ACTION_PLAY); - mediaControlFilter.addAction(ACTION_PAUSE); - mediaControlFilter.addAction(ACTION_NEXT); - mediaControlFilter.addAction(ACTION_PREV); - mContext.registerReceiverForAllUsers(mMediaActionReceiver, mediaControlFilter, - SYSTEMUI_PERMISSION, mainHandler, Context.RECEIVER_EXPORTED); - } - - // Creates the standard media buttons that we may show. - mPauseAction = getDefaultRemoteAction(R.string.pip_pause, - R.drawable.pip_ic_pause_white, ACTION_PAUSE); - mPlayAction = getDefaultRemoteAction(R.string.pip_play, - R.drawable.pip_ic_play_arrow_white, ACTION_PLAY); - mNextAction = getDefaultRemoteAction(R.string.pip_skip_to_next, - R.drawable.pip_ic_skip_next_white, ACTION_NEXT); - mPrevAction = getDefaultRemoteAction(R.string.pip_skip_to_prev, - R.drawable.pip_ic_skip_previous_white, ACTION_PREV); - - mMediaSessionManager = context.getSystemService(MediaSessionManager.class); - } - - /** - * Handles when an activity is pinned. - */ - public void onActivityPinned() { - // Once we enter PiP, try to find the active media controller for the top most activity - resolveActiveMediaController(mMediaSessionManager.getActiveSessionsForUser(null, - UserHandle.CURRENT)); - } - - /** - * Adds a new media action listener. - */ - public void addActionListener(ActionListener listener) { - if (!mActionListeners.contains(listener)) { - mActionListeners.add(listener); - listener.onMediaActionsChanged(getMediaActions()); - } - } - - /** - * Removes a media action listener. - */ - public void removeActionListener(ActionListener listener) { - listener.onMediaActionsChanged(Collections.emptyList()); - mActionListeners.remove(listener); - } - - /** - * Adds a new media metadata listener. - */ - public void addMetadataListener(MetadataListener listener) { - if (!mMetadataListeners.contains(listener)) { - mMetadataListeners.add(listener); - listener.onMediaMetadataChanged(getMediaMetadata()); - } - } - - /** - * Removes a media metadata listener. - */ - public void removeMetadataListener(MetadataListener listener) { - listener.onMediaMetadataChanged(null); - mMetadataListeners.remove(listener); - } - - /** - * Adds a new token listener. - */ - public void addTokenListener(TokenListener listener) { - if (!mTokenListeners.contains(listener)) { - mTokenListeners.add(listener); - listener.onMediaSessionTokenChanged(getToken()); - } - } - - /** - * Removes a token listener. - */ - public void removeTokenListener(TokenListener listener) { - listener.onMediaSessionTokenChanged(null); - mTokenListeners.remove(listener); - } - - private MediaSession.Token getToken() { - if (mMediaController == null) { - return null; - } - return mMediaController.getSessionToken(); - } - - private MediaMetadata getMediaMetadata() { - return mMediaController != null ? mMediaController.getMetadata() : null; - } - - /** - * 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 getMediaActions() { - // Cache the PlaybackState since it's a Binder call. - final PlaybackState playbackState; - if (mMediaController == null - || (playbackState = mMediaController.getPlaybackState()) == null) { - return Collections.emptyList(); - } - - ArrayList mediaActions = new ArrayList<>(); - boolean isPlaying = playbackState.isActive(); - long actions = playbackState.getActions(); - - // Prev action - mPrevAction.setEnabled((actions & PlaybackState.ACTION_SKIP_TO_PREVIOUS) != 0); - mediaActions.add(mPrevAction); - - // Play/pause action - if (!isPlaying && ((actions & PlaybackState.ACTION_PLAY) != 0)) { - mediaActions.add(mPlayAction); - } else if (isPlaying && ((actions & PlaybackState.ACTION_PAUSE) != 0)) { - mediaActions.add(mPauseAction); - } - - // Next action - mNextAction.setEnabled((actions & PlaybackState.ACTION_SKIP_TO_NEXT) != 0); - mediaActions.add(mNextAction); - return mediaActions; - } - - /** @return Default {@link RemoteAction} sends broadcast back to SysUI. */ - private RemoteAction getDefaultRemoteAction(@StringRes int titleAndDescription, - @DrawableRes int icon, String action) { - final String titleAndDescriptionStr = mContext.getString(titleAndDescription); - final Intent intent = new Intent(action); - intent.setPackage(mContext.getPackageName()); - return new RemoteAction(Icon.createWithResource(mContext, icon), - titleAndDescriptionStr, titleAndDescriptionStr, - PendingIntent.getBroadcast(mContext, 0 /* requestCode */, intent, - FLAG_UPDATE_CURRENT | FLAG_IMMUTABLE)); - } - - /** - * Re-registers the session listener for the current user. - */ - public void registerSessionListenerForCurrentUser() { - mMediaSessionManager.removeOnActiveSessionsChangedListener(mSessionsChangedListener); - mMediaSessionManager.addOnActiveSessionsChangedListener(null, UserHandle.CURRENT, - mHandlerExecutor, mSessionsChangedListener); - } - - /** - * Tries to find and set the active media controller for the top PiP activity. - */ - private void resolveActiveMediaController(List controllers) { - if (controllers != null) { - final ComponentName topActivity = PipUtils.getTopPipActivity(mContext).first; - if (topActivity != null) { - for (int i = 0; i < controllers.size(); i++) { - final MediaController controller = controllers.get(i); - if (controller.getPackageName().equals(topActivity.getPackageName())) { - setActiveMediaController(controller); - return; - } - } - } - } - setActiveMediaController(null); - } - - /** - * Sets the active media controller for the top PiP activity. - */ - private void setActiveMediaController(MediaController controller) { - if (controller != mMediaController) { - if (mMediaController != null) { - mMediaController.unregisterCallback(mPlaybackChangedListener); - } - mMediaController = controller; - if (controller != null) { - controller.registerCallback(mPlaybackChangedListener, mMainHandler); - } - notifyActionsChanged(); - notifyMetadataChanged(getMediaMetadata()); - notifyTokenChanged(getToken()); - - // TODO(winsonc): Consider if we want to close the PIP after a timeout (like on TV) - } - } - - /** - * Notifies all listeners that the actions have changed. - */ - private void notifyActionsChanged() { - if (!mActionListeners.isEmpty()) { - List actions = getMediaActions(); - mActionListeners.forEach(l -> l.onMediaActionsChanged(actions)); - } - } - - /** - * Notifies all listeners that the metadata have changed. - */ - private void notifyMetadataChanged(MediaMetadata metadata) { - if (!mMetadataListeners.isEmpty()) { - mMetadataListeners.forEach(l -> l.onMediaMetadataChanged(metadata)); - } - } - - private void notifyTokenChanged(MediaSession.Token token) { - if (!mTokenListeners.isEmpty()) { - mTokenListeners.forEach(l -> l.onMediaSessionTokenChanged(token)); - } - } -} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java index 0d55018ba580433dd5d9f382cdb75508d4afb0d8..9e8f9c68d43d6def4ba59c41fd104a364a2fb208 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTaskOrganizer.java @@ -63,7 +63,6 @@ import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.graphics.Rect; import android.os.RemoteException; -import android.os.SystemProperties; import android.view.Choreographer; import android.view.Display; import android.view.Surface; @@ -83,6 +82,11 @@ import com.android.wm.shell.common.ScreenshotUtils; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.common.annotations.ShellMainThread; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipUiEventLogger; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.pip.phone.PipMotionHelper; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.SplitScreenController; @@ -1735,17 +1739,13 @@ public class PipTaskOrganizer implements ShellTaskOrganizer.TaskListener, // animation. // TODO(b/272819817): cleanup the null-check and extra logging. final boolean hasTopActivityInfo = mTaskInfo.topActivityInfo != null; - if (!hasTopActivityInfo) { - ProtoLog.w(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, - "%s: TaskInfo.topActivityInfo is null", TAG); - } - if (SystemProperties.getBoolean( - "persist.wm.debug.enable_pip_app_icon_overlay", true) - && hasTopActivityInfo) { + if (hasTopActivityInfo) { animator.setAppIconContentOverlay( mContext, currentBounds, mTaskInfo.topActivityInfo, mPipBoundsState.getLauncherState().getAppIconSizePx()); } else { + ProtoLog.w(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, + "%s: TaskInfo.topActivityInfo is null", TAG); animator.setColorContentOverlay(mContext); } } else { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java index 2563d984b793eb85f0cdccbf92d87803cb717952..018d674e54276b43adedfed7c197ac41bb21d8a8 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransition.java @@ -49,7 +49,6 @@ import android.content.Context; import android.graphics.Point; import android.graphics.Rect; import android.os.IBinder; -import android.os.SystemProperties; import android.view.Surface; import android.view.SurfaceControl; import android.view.WindowManager; @@ -65,6 +64,10 @@ import androidx.annotation.Nullable; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.SplitScreenController; import com.android.wm.shell.sysui.ShellInit; @@ -89,6 +92,7 @@ public class PipTransition extends PipTransitionController { private final int mEnterExitAnimationDuration; private final PipSurfaceTransactionHelper mSurfaceTransactionHelper; private final Optional mSplitScreenOptional; + private final PipAnimationController mPipAnimationController; private @PipAnimationController.AnimationType int mEnterAnimationType = ANIM_TYPE_BOUNDS; private Transitions.TransitionFinishCallback mFinishCallback; private SurfaceControl.Transaction mFinishTransaction; @@ -137,16 +141,24 @@ public class PipTransition extends PipTransitionController { PipSurfaceTransactionHelper pipSurfaceTransactionHelper, Optional splitScreenOptional) { super(shellInit, shellTaskOrganizer, transitions, pipBoundsState, pipMenuController, - pipBoundsAlgorithm, pipAnimationController); + pipBoundsAlgorithm); mContext = context; mPipTransitionState = pipTransitionState; mPipDisplayLayoutState = pipDisplayLayoutState; + mPipAnimationController = pipAnimationController; mEnterExitAnimationDuration = context.getResources() .getInteger(R.integer.config_pipResizeAnimationDuration); mSurfaceTransactionHelper = pipSurfaceTransactionHelper; mSplitScreenOptional = splitScreenOptional; } + @Override + protected void onInit() { + if (!PipUtils.isPip2ExperimentEnabled()) { + mTransitions.addHandler(this); + } + } + @Override public void startExitTransition(int type, WindowContainerTransaction out, @Nullable Rect destinationBounds) { @@ -902,17 +914,13 @@ public class PipTransition extends PipTransitionController { // animation. // TODO(b/272819817): cleanup the null-check and extra logging. final boolean hasTopActivityInfo = taskInfo.topActivityInfo != null; - if (!hasTopActivityInfo) { - ProtoLog.w(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, - "%s: TaskInfo.topActivityInfo is null", TAG); - } - if (SystemProperties.getBoolean( - "persist.wm.debug.enable_pip_app_icon_overlay", true) - && hasTopActivityInfo) { + if (hasTopActivityInfo) { animator.setAppIconContentOverlay( mContext, currentBounds, taskInfo.topActivityInfo, mPipBoundsState.getLauncherState().getAppIconSizePx()); } else { + ProtoLog.w(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, + "%s: TaskInfo.topActivityInfo is null", TAG); animator.setColorContentOverlay(mContext); } } else { @@ -1051,7 +1059,21 @@ public class PipTransition extends PipTransitionController { private void resetPrevPip(@NonNull TransitionInfo.Change prevPipTaskChange, @NonNull SurfaceControl.Transaction startTransaction) { final SurfaceControl leash = prevPipTaskChange.getLeash(); - startTransaction.remove(leash); + final Rect bounds = prevPipTaskChange.getEndAbsBounds(); + final Point offset = prevPipTaskChange.getEndRelOffset(); + bounds.offset(-offset.x, -offset.y); + + startTransaction.setWindowCrop(leash, null); + startTransaction.setMatrix(leash, 1, 0, 0, 1); + startTransaction.setCornerRadius(leash, 0); + startTransaction.setPosition(leash, bounds.left, bounds.top); + + if (mHasFadeOut && prevPipTaskChange.getTaskInfo().isVisible()) { + if (mPipAnimationController.getCurrentAnimator() != null) { + mPipAnimationController.getCurrentAnimator().cancel(); + } + startTransaction.setAlpha(leash, 1); + } mHasFadeOut = false; mCurrentPipTaskToken = null; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java index 0f74f9e323a53df2eb9c9ed359c71a5a5ca6b641..20c57fa5e566297a276ca4c01a944e6ec4b3fcad 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipTransitionController.java @@ -38,6 +38,8 @@ import android.window.WindowContainerTransaction; import androidx.annotation.NonNull; import com.android.wm.shell.ShellTaskOrganizer; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; import com.android.wm.shell.common.split.SplitScreenUtils; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.transition.Transitions; @@ -51,7 +53,6 @@ import java.util.List; */ public abstract class PipTransitionController implements Transitions.TransitionHandler { - protected final PipAnimationController mPipAnimationController; protected final PipBoundsAlgorithm mPipBoundsAlgorithm; protected final PipBoundsState mPipBoundsState; protected final ShellTaskOrganizer mShellTaskOrganizer; @@ -134,22 +135,18 @@ public abstract class PipTransitionController implements Transitions.TransitionH @NonNull ShellTaskOrganizer shellTaskOrganizer, @NonNull Transitions transitions, PipBoundsState pipBoundsState, - PipMenuController pipMenuController, PipBoundsAlgorithm pipBoundsAlgorithm, - PipAnimationController pipAnimationController) { + PipMenuController pipMenuController, PipBoundsAlgorithm pipBoundsAlgorithm) { mPipBoundsState = pipBoundsState; mPipMenuController = pipMenuController; mShellTaskOrganizer = shellTaskOrganizer; mPipBoundsAlgorithm = pipBoundsAlgorithm; - mPipAnimationController = pipAnimationController; mTransitions = transitions; - if (!PipUtils.isPip2ExperimentEnabled()) { - if (Transitions.ENABLE_SHELL_TRANSITIONS) { - shellInit.addInitCallback(this::onInit, this); - } + if (Transitions.ENABLE_SHELL_TRANSITIONS) { + shellInit.addInitCallback(this::onInit, this); } } - private void onInit() { + protected void onInit() { mTransitions.addHandler(this); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java deleted file mode 100644 index 3cd9848d56869b229d8dbbedd784a5363aaa17d8..0000000000000000000000000000000000000000 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipUtils.java +++ /dev/null @@ -1,145 +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.wm.shell.pip; - -import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; -import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED; -import static android.util.TypedValue.COMPLEX_UNIT_DIP; - -import android.annotation.Nullable; -import android.app.ActivityTaskManager; -import android.app.ActivityTaskManager.RootTaskInfo; -import android.app.RemoteAction; -import android.content.ComponentName; -import android.content.Context; -import android.os.RemoteException; -import android.os.SystemProperties; -import android.util.DisplayMetrics; -import android.util.Log; -import android.util.Pair; -import android.util.TypedValue; -import android.window.TaskSnapshot; - -import com.android.internal.protolog.common.ProtoLog; -import com.android.wm.shell.protolog.ShellProtoLogGroup; - -import java.util.List; -import java.util.Objects; - -/** A class that includes convenience methods. */ -public class PipUtils { - private static final String TAG = "PipUtils"; - - // Minimum difference between two floats (e.g. aspect ratios) to consider them not equal. - private static final double EPSILON = 1e-7; - - private static final String ENABLE_PIP2_IMPLEMENTATION = - "persist.wm.debug.enable_pip2_implementation"; - - /** - * @return the ComponentName and user id of the top non-SystemUI activity in the pinned stack. - * The component name may be null if no such activity exists. - */ - public static Pair getTopPipActivity(Context context) { - try { - final String sysUiPackageName = context.getPackageName(); - final RootTaskInfo pinnedTaskInfo = ActivityTaskManager.getService().getRootTaskInfo( - WINDOWING_MODE_PINNED, ACTIVITY_TYPE_UNDEFINED); - if (pinnedTaskInfo != null && pinnedTaskInfo.childTaskIds != null - && pinnedTaskInfo.childTaskIds.length > 0) { - for (int i = pinnedTaskInfo.childTaskNames.length - 1; i >= 0; i--) { - ComponentName cn = ComponentName.unflattenFromString( - pinnedTaskInfo.childTaskNames[i]); - if (cn != null && !cn.getPackageName().equals(sysUiPackageName)) { - return new Pair<>(cn, pinnedTaskInfo.childTaskUserIds[i]); - } - } - } - } catch (RemoteException e) { - ProtoLog.w(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, - "%s: Unable to get pinned stack.", TAG); - } - return new Pair<>(null, 0); - } - - /** - * @return the pixels for a given dp value. - */ - public static int dpToPx(float dpValue, DisplayMetrics dm) { - return (int) TypedValue.applyDimension(COMPLEX_UNIT_DIP, dpValue, dm); - } - - /** - * @return true if the aspect ratios differ - */ - public static boolean aspectRatioChanged(float aspectRatio1, float aspectRatio2) { - return Math.abs(aspectRatio1 - aspectRatio2) > EPSILON; - } - - /** - * Checks whether title, description and intent match. - * Comparing icons would be good, but using equals causes false negatives - */ - public static boolean remoteActionsMatch(RemoteAction action1, RemoteAction action2) { - if (action1 == action2) return true; - if (action1 == null || action2 == null) return false; - return action1.isEnabled() == action2.isEnabled() - && action1.shouldShowIcon() == action2.shouldShowIcon() - && Objects.equals(action1.getTitle(), action2.getTitle()) - && Objects.equals(action1.getContentDescription(), action2.getContentDescription()) - && Objects.equals(action1.getActionIntent(), action2.getActionIntent()); - } - - /** - * Returns true if the actions in the lists match each other according to {@link - * PipUtils#remoteActionsMatch(RemoteAction, RemoteAction)}, including their position. - */ - public static boolean remoteActionsChanged(List list1, List list2) { - if (list1 == null && list2 == null) { - return false; - } - if (list1 == null || list2 == null) { - return true; - } - if (list1.size() != list2.size()) { - return true; - } - for (int i = 0; i < list1.size(); i++) { - if (!remoteActionsMatch(list1.get(i), list2.get(i))) { - return true; - } - } - return false; - } - - /** @return {@link TaskSnapshot} for a given task id. */ - @Nullable - public static TaskSnapshot getTaskSnapshot(int taskId, boolean isLowResolution) { - if (taskId <= 0) return null; - try { - return ActivityTaskManager.getService().getTaskSnapshot( - taskId, isLowResolution, false /* takeSnapshotIfNeeded */); - } catch (RemoteException e) { - Log.e(TAG, "Failed to get task snapshot, taskId=" + taskId, e); - return null; - } - } - - public static boolean isPip2ExperimentEnabled() { - return SystemProperties.getBoolean(ENABLE_PIP2_IMPLEMENTATION, false); - } -} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java index 5e1b6becfa459c0ffd76e7443dc4e790ad98a903..760652625f9ee9cb4148a0c8df3c7cb59bf9bf3c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java @@ -38,12 +38,12 @@ import android.view.WindowManagerGlobal; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SystemWindows; -import com.android.wm.shell.pip.PipBoundsState; -import com.android.wm.shell.pip.PipMediaController; -import com.android.wm.shell.pip.PipMediaController.ActionListener; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipMediaController; +import com.android.wm.shell.common.pip.PipMediaController.ActionListener; +import com.android.wm.shell.common.pip.PipUiEventLogger; import com.android.wm.shell.pip.PipMenuController; import com.android.wm.shell.pip.PipSurfaceTransactionHelper; -import com.android.wm.shell.pip.PipUiEventLogger; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.SplitScreenController; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipAccessibilityInteractionConnection.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipAccessibilityInteractionConnection.java index 8c2879e0d816f3ca32b0e3aa500694ee1719ba2b..118ad9c4bfe3dfe8b3a02fcda222475bd49dafac 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipAccessibilityInteractionConnection.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipAccessibilityInteractionConnection.java @@ -15,7 +15,7 @@ */ package com.android.wm.shell.pip.phone; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_NONE; import android.annotation.NonNull; import android.content.Context; @@ -36,8 +36,8 @@ import androidx.annotation.BinderThread; import com.android.wm.shell.R; import com.android.wm.shell.common.ShellExecutor; -import com.android.wm.shell.pip.PipBoundsState; -import com.android.wm.shell.pip.PipSnapAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipSnapAlgorithm; import com.android.wm.shell.pip.PipTaskOrganizer; import java.util.ArrayList; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java index b872267947dce9747dd65b0988f7c684dcc6f2b2..106486714a5c1c8101d13b7a804acc3526f60560 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipController.java @@ -76,6 +76,13 @@ import com.android.wm.shell.common.TabletopModeController; import com.android.wm.shell.common.TaskStackListenerCallback; import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.pip.PipAppOpsListener; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipKeepClearAlgorithmInterface; +import com.android.wm.shell.common.pip.PipMediaController; +import com.android.wm.shell.common.pip.PipSnapAlgorithm; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.onehanded.OneHandedController; import com.android.wm.shell.onehanded.OneHandedTransitionCallback; import com.android.wm.shell.pip.IPip; @@ -83,17 +90,10 @@ import com.android.wm.shell.pip.IPipAnimationListener; import com.android.wm.shell.pip.PinnedStackListenerForwarder; import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipBoundsState; -import com.android.wm.shell.pip.PipDisplayLayoutState; -import com.android.wm.shell.pip.PipKeepClearAlgorithmInterface; -import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipParamsChangedForwarder; -import com.android.wm.shell.pip.PipSnapAlgorithm; import com.android.wm.shell.pip.PipTaskOrganizer; import com.android.wm.shell.pip.PipTransitionController; import com.android.wm.shell.pip.PipTransitionState; -import com.android.wm.shell.pip.PipUtils; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.sysui.ConfigurationChangeListener; import com.android.wm.shell.sysui.KeyguardChangeListener; @@ -123,14 +123,6 @@ public class PipController implements PipTransitionController.PipTransitionCallb private static final long PIP_KEEP_CLEAR_AREAS_DELAY = SystemProperties.getLong("persist.wm.debug.pip_keep_clear_areas_delay", 200); - private boolean mEnablePipKeepClearAlgorithm = - SystemProperties.getBoolean("persist.wm.debug.enable_pip_keep_clear_algorithm", true); - - @VisibleForTesting - void setEnablePipKeepClearAlgorithm(boolean value) { - mEnablePipKeepClearAlgorithm = value; - } - private Context mContext; protected ShellExecutor mMainExecutor; private DisplayController mDisplayController; @@ -166,10 +158,6 @@ public class PipController implements PipTransitionController.PipTransitionCallb // early bail out if the change was caused by keyguard showing up return; } - if (!mEnablePipKeepClearAlgorithm) { - // early bail out if the keep clear areas feature is disabled - return; - } if (mPipBoundsState.isStashed()) { // don't move when stashed return; @@ -187,10 +175,6 @@ public class PipController implements PipTransitionController.PipTransitionCallb } private void updatePipPositionForKeepClearAreas() { - if (!mEnablePipKeepClearAlgorithm) { - // early bail out if the keep clear areas feature is disabled - return; - } if (mIsKeyguardShowingOrAnimating) { // early bail out if the change was caused by keyguard showing up return; @@ -343,19 +327,17 @@ public class PipController implements PipTransitionController.PipTransitionCallb public void onKeepClearAreasChanged(int displayId, Set restricted, Set unrestricted) { if (mPipDisplayLayoutState.getDisplayId() == displayId) { - if (mEnablePipKeepClearAlgorithm) { - mPipBoundsState.setKeepClearAreas(restricted, unrestricted); - - mMainExecutor.removeCallbacks( - mMovePipInResponseToKeepClearAreasChangeCallback); - mMainExecutor.executeDelayed( - mMovePipInResponseToKeepClearAreasChangeCallback, - PIP_KEEP_CLEAR_AREAS_DELAY); - - ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, - "onKeepClearAreasChanged: restricted=%s, unrestricted=%s", - restricted, unrestricted); - } + mPipBoundsState.setKeepClearAreas(restricted, unrestricted); + + mMainExecutor.removeCallbacks( + mMovePipInResponseToKeepClearAreasChangeCallback); + mMainExecutor.executeDelayed( + mMovePipInResponseToKeepClearAreasChangeCallback, + PIP_KEEP_CLEAR_AREAS_DELAY); + + ProtoLog.d(ShellProtoLogGroup.WM_SHELL_PICTURE_IN_PICTURE, + "onKeepClearAreasChanged: restricted=%s, unrestricted=%s", + restricted, unrestricted); } } }; @@ -660,25 +642,9 @@ public class PipController implements PipTransitionController.PipTransitionCallb // there's a keyguard present return; } - int oldMaxMovementBound = mPipBoundsState.getMovementBounds().bottom; onDisplayChangedUncheck(mDisplayController .getDisplayLayout(mPipDisplayLayoutState.getDisplayId()), false /* saveRestoreSnapFraction */); - int newMaxMovementBound = mPipBoundsState.getMovementBounds().bottom; - if (!mEnablePipKeepClearAlgorithm) { - // offset PiP to adjust for bottom inset change - int pipTop = mPipBoundsState.getBounds().top; - int diff = newMaxMovementBound - oldMaxMovementBound; - if (diff < 0 && pipTop > newMaxMovementBound) { - // bottom inset has increased, move PiP up if it is too low - mPipMotionHelper.animateToOffset(mPipBoundsState.getBounds(), - newMaxMovementBound - pipTop); - } - if (diff > 0 && oldMaxMovementBound == pipTop) { - // bottom inset has decreased, move PiP down if it was by the edge - mPipMotionHelper.animateToOffset(mPipBoundsState.getBounds(), diff); - } - } } }); @@ -947,14 +913,8 @@ public class PipController implements PipTransitionController.PipTransitionCallb * Sets both shelf visibility and its height. */ private void setShelfHeight(boolean visible, int height) { - if (mEnablePipKeepClearAlgorithm) { - // turn this into Launcher keep clear area registration instead - setLauncherKeepClearAreaHeight(visible, height); - return; - } - if (!mIsKeyguardShowingOrAnimating) { - setShelfHeightLocked(visible, height); - } + // turn this into Launcher keep clear area registration instead + setLauncherKeepClearAreaHeight(visible, height); } private void setLauncherKeepClearAreaHeight(boolean visible, int height) { @@ -1015,16 +975,10 @@ public class PipController implements PipTransitionController.PipTransitionCallb private Rect startSwipePipToHome(ComponentName componentName, ActivityInfo activityInfo, PictureInPictureParams pictureInPictureParams, int launcherRotation, Rect hotseatKeepClearArea) { - - if (mEnablePipKeepClearAlgorithm) { - // preemptively add the keep clear area for Hotseat, so that it is taken into account - // when calculating the entry destination bounds of PiP window - mPipBoundsState.addNamedUnrestrictedKeepClearArea(LAUNCHER_KEEP_CLEAR_AREA_TAG, - hotseatKeepClearArea); - } else { - int shelfHeight = hotseatKeepClearArea.height(); - setShelfHeightLocked(shelfHeight > 0 /* visible */, shelfHeight); - } + // preemptively add the keep clear area for Hotseat, so that it is taken into account + // when calculating the entry destination bounds of PiP window + mPipBoundsState.addNamedUnrestrictedKeepClearArea(LAUNCHER_KEEP_CLEAR_AREA_TAG, + hotseatKeepClearArea); onDisplayRotationChangedNotInPip(mContext, launcherRotation); final Rect entryBounds = mPipTaskOrganizer.startSwipePipToHome(componentName, activityInfo, pictureInPictureParams); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDismissTargetHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDismissTargetHandler.java index da455f85d908c4147b93ec434351ac553713398c..4e75847b6bc0ee999111c79924c7ecdd2568ce48 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDismissTargetHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDismissTargetHandler.java @@ -38,7 +38,7 @@ import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.bubbles.DismissCircleView; import com.android.wm.shell.common.bubbles.DismissView; import com.android.wm.shell.common.magnetictarget.MagnetizedObject; -import com.android.wm.shell.pip.PipUiEventLogger; +import com.android.wm.shell.common.pip.PipUiEventLogger; import kotlin.Unit; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDoubleTapHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDoubleTapHelper.java index d7d335b856be2627fd63c7bdb6ff22f7af9a474d..1b1ebc39b558ef09157d73cb4082afc99013ac4c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDoubleTapHelper.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipDoubleTapHelper.java @@ -20,7 +20,7 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.graphics.Rect; -import com.android.wm.shell.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipBoundsState; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; 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 779c539a2097dd70506b57ad05fca6819deb816a..fc34772f2fce7cdaaec25c7212fe91a3b033acbf 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 @@ -66,8 +66,8 @@ import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; import com.android.wm.shell.animation.Interpolators; import com.android.wm.shell.common.ShellExecutor; -import com.android.wm.shell.pip.PipUiEventLogger; -import com.android.wm.shell.pip.PipUtils; +import com.android.wm.shell.common.pip.PipUiEventLogger; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.splitscreen.SplitScreenController; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java index b251f6f55794886627eac3c723f0d340c7af3d66..c708b86e88c51b27822794b5bb022fcb85c82fd2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMotionHelper.java @@ -20,10 +20,10 @@ import static androidx.dynamicanimation.animation.SpringForce.DAMPING_RATIO_NO_B import static androidx.dynamicanimation.animation.SpringForce.STIFFNESS_LOW; import static androidx.dynamicanimation.animation.SpringForce.STIFFNESS_MEDIUM; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_LEFT; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_NONE; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_RIGHT; import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_EXPAND_OR_UNEXPAND; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_LEFT; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT; import static com.android.wm.shell.pip.phone.PipMenuView.ANIM_TYPE_DISMISS; import static com.android.wm.shell.pip.phone.PipMenuView.ANIM_TYPE_NONE; @@ -33,7 +33,6 @@ import android.content.Context; import android.graphics.PointF; import android.graphics.Rect; import android.os.Debug; -import android.os.SystemProperties; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; @@ -42,25 +41,22 @@ import com.android.wm.shell.animation.PhysicsAnimator; import com.android.wm.shell.common.FloatingContentCoordinator; import com.android.wm.shell.common.magnetictarget.MagnetizedObject; import com.android.wm.shell.common.pip.PipAppOpsListener; -import com.android.wm.shell.pip.PipBoundsState; -import com.android.wm.shell.pip.PipSnapAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipSnapAlgorithm; import com.android.wm.shell.pip.PipTaskOrganizer; import com.android.wm.shell.pip.PipTransitionController; import com.android.wm.shell.protolog.ShellProtoLogGroup; -import java.util.function.Consumer; - import kotlin.Unit; import kotlin.jvm.functions.Function0; +import java.util.function.Consumer; + /** * A helper to animate and manipulate the PiP. */ public class PipMotionHelper implements PipAppOpsListener.Callback, FloatingContentCoordinator.FloatingContent { - - public static final boolean ENABLE_FLING_TO_DISMISS_PIP = - SystemProperties.getBoolean("persist.wm.debug.fling_to_dismiss_pip", false); private static final String TAG = "PipMotionHelper"; private static final boolean DEBUG = false; @@ -707,7 +703,7 @@ public class PipMotionHelper implements PipAppOpsListener.Callback, loc[1] = animatedPipBounds.top; } }; - mMagnetizedPip.setFlingToTargetEnabled(ENABLE_FLING_TO_DISMISS_PIP); + mMagnetizedPip.setFlingToTargetEnabled(false); } return mMagnetizedPip; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java index abe2db094a5c6f750a11d79fb562209ce2b1aa23..e5f9fdc7a74029268ba594d7c4f4f71047b3967c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipResizeGestureHandler.java @@ -46,11 +46,12 @@ import androidx.annotation.VisibleForTesting; import com.android.internal.policy.TaskResizingAlgorithm; import com.android.wm.shell.R; import com.android.wm.shell.common.ShellExecutor; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipPinchResizingAlgorithm; +import com.android.wm.shell.common.pip.PipUiEventLogger; import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipBoundsState; import com.android.wm.shell.pip.PipTaskOrganizer; -import com.android.wm.shell.pip.PipUiEventLogger; import java.io.PrintWriter; import java.util.function.Consumer; 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 3e95498a832b8a5e31248f0c6f5471381117dbc4..2ce4fb9e297bfde301d381e7b800a3a01b97048a 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 @@ -18,10 +18,10 @@ package com.android.wm.shell.pip.phone; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.PIP_STASHING; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.PIP_STASH_MINIMUM_VELOCITY_THRESHOLD; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_LEFT; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_NONE; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_RIGHT; import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_LEFT; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT; import static com.android.wm.shell.pip.phone.PhonePipMenuController.MENU_STATE_FULL; import static com.android.wm.shell.pip.phone.PhonePipMenuController.MENU_STATE_NONE; import static com.android.wm.shell.pip.phone.PipMenuView.ANIM_TYPE_NONE; @@ -34,7 +34,6 @@ import android.content.res.Resources; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; -import android.os.SystemProperties; import android.provider.DeviceConfig; import android.util.Size; import android.view.DisplayCutout; @@ -51,14 +50,14 @@ import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; import com.android.wm.shell.common.FloatingContentCoordinator; import com.android.wm.shell.common.ShellExecutor; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipUiEventLogger; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.common.pip.SizeSpecSource; import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipBoundsState; import com.android.wm.shell.pip.PipTaskOrganizer; import com.android.wm.shell.pip.PipTransitionController; -import com.android.wm.shell.pip.PipUiEventLogger; -import com.android.wm.shell.pip.PipUtils; import com.android.wm.shell.protolog.ShellProtoLogGroup; import com.android.wm.shell.sysui.ShellInit; @@ -73,14 +72,6 @@ public class PipTouchHandler { private static final String TAG = "PipTouchHandler"; private static final float DEFAULT_STASH_VELOCITY_THRESHOLD = 18000.f; - private boolean mEnablePipKeepClearAlgorithm = - SystemProperties.getBoolean("persist.wm.debug.enable_pip_keep_clear_algorithm", true); - - @VisibleForTesting - void setEnablePipKeepClearAlgorithm(boolean value) { - mEnablePipKeepClearAlgorithm = value; - } - // Allow PIP to resize to a slightly bigger state upon touch private boolean mEnableResize; private final Context mContext; @@ -430,48 +421,6 @@ public class PipTouchHandler { mIsImeShowing ? mImeOffset : 0, !mIsImeShowing && mIsShelfShowing ? mShelfHeight : 0); - // If this is from an IME or shelf adjustment, then we should move the PiP so that it is not - // occluded by the IME or shelf. - if (fromImeAdjustment || fromShelfAdjustment) { - if (mTouchState.isUserInteracting() && mTouchState.isDragging()) { - // Defer the update of the current movement bounds until after the user finishes - // touching the screen - } else if (mEnablePipKeepClearAlgorithm) { - // Ignore moving PiP if keep clear algorithm is enabled, since IME and shelf height - // now are accounted for in the keep clear algorithm calculations - } else { - final boolean isExpanded = mMenuState == MENU_STATE_FULL && willResizeMenu(); - final Rect toMovementBounds = new Rect(); - mPipBoundsAlgorithm.getMovementBounds(curBounds, insetBounds, - toMovementBounds, mIsImeShowing ? mImeHeight : 0); - final int prevBottom = mPipBoundsState.getMovementBounds().bottom - - mMovementBoundsExtraOffsets; - // This is to handle landscape fullscreen IMEs, don't apply the extra offset in this - // case - final int toBottom = toMovementBounds.bottom < toMovementBounds.top - ? toMovementBounds.bottom - : toMovementBounds.bottom - extraOffset; - - if (isExpanded) { - curBounds.set(mPipBoundsState.getExpandedBounds()); - mPipBoundsAlgorithm.getSnapAlgorithm().applySnapFraction(curBounds, - toMovementBounds, mSavedSnapFraction); - } - - if (prevBottom < toBottom) { - // The movement bounds are expanding - if (curBounds.top > prevBottom - mBottomOffsetBufferPx) { - mMotionHelper.animateToOffset(curBounds, toBottom - curBounds.top); - } - } else if (prevBottom > toBottom) { - // The movement bounds are shrinking - if (curBounds.top > toBottom - mBottomOffsetBufferPx) { - mMotionHelper.animateToOffset(curBounds, toBottom - curBounds.top); - } - } - } - } - // Update the movement bounds after doing the calculations based on the old movement bounds // above mPipBoundsState.setNormalMovementBounds(normalMovementBounds); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipActionsProvider.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipActionsProvider.java index 11c2665c9665bd6920e3885420a02796fab2b41b..6b890c49b713559eb6e80b615c64a9a70b476e95 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipActionsProvider.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipActionsProvider.java @@ -35,8 +35,8 @@ import android.content.Context; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; -import com.android.wm.shell.pip.PipMediaController; -import com.android.wm.shell.pip.PipUtils; +import com.android.wm.shell.common.pip.PipMediaController; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.protolog.ShellProtoLogGroup; import java.util.ArrayList; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsAlgorithm.java index cd58ff4f5154dccfe9741da5e0e514d0b1329d5e..a48e969fde352bd0a82c894bb0b4725bf9d89499 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsAlgorithm.java @@ -36,11 +36,11 @@ import androidx.annotation.NonNull; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.R; import com.android.wm.shell.common.DisplayLayout; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipKeepClearAlgorithmInterface; +import com.android.wm.shell.common.pip.PipSnapAlgorithm; import com.android.wm.shell.common.pip.SizeSpecSource; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipDisplayLayoutState; -import com.android.wm.shell.pip.PipKeepClearAlgorithmInterface; -import com.android.wm.shell.pip.PipSnapAlgorithm; import com.android.wm.shell.pip.tv.TvPipKeepClearAlgorithm.Placement; import com.android.wm.shell.protolog.ShellProtoLogGroup; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsController.java index 8d4a38442ce5d6d80eb4acca969d33d1806215e0..8a215b4b2e256b91ea958aa725c2213c1accec4d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsController.java @@ -16,7 +16,7 @@ package com.android.wm.shell.pip.tv; -import static com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE; +import static com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_NONE; import android.annotation.NonNull; import android.annotation.Nullable; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java index d11f4d59a41de99ae899af9a05665be3ee9669cc..2b3a93e3c3e83dd132a5581e7a813caa7bcfc72a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipBoundsState.java @@ -29,10 +29,10 @@ import android.util.Size; import android.view.Gravity; import android.view.View; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; import com.android.wm.shell.common.pip.SizeSpecSource; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipBoundsState; -import com.android.wm.shell.pip.PipDisplayLayoutState; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipController.java index e3544c63dd6e6352c85170a7e6216b2662773b02..72115fdefa058f41edba43397b8997b3011c3364 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipController.java @@ -48,11 +48,11 @@ import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.TaskStackListenerCallback; import com.android.wm.shell.common.TaskStackListenerImpl; import com.android.wm.shell.common.pip.PipAppOpsListener; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipMediaController; import com.android.wm.shell.pip.PinnedStackListenerForwarder; import com.android.wm.shell.pip.Pip; import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipDisplayLayoutState; -import com.android.wm.shell.pip.PipMediaController; import com.android.wm.shell.pip.PipParamsChangedForwarder; import com.android.wm.shell.pip.PipTaskOrganizer; import com.android.wm.shell.pip.PipTransitionController; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt index a94bd6ec104067220708b539f0a93aa0c67d72d5..93f6826ac96b03da53f204c774963d052cc00500 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipKeepClearAlgorithm.kt @@ -21,12 +21,12 @@ import android.graphics.Point import android.graphics.Rect import android.util.Size import android.view.Gravity -import com.android.wm.shell.pip.PipBoundsState -import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_BOTTOM -import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_LEFT -import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_NONE -import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_RIGHT -import com.android.wm.shell.pip.PipBoundsState.STASH_TYPE_TOP +import com.android.wm.shell.common.pip.PipBoundsState +import com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_BOTTOM +import com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_LEFT +import com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_NONE +import com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_RIGHT +import com.android.wm.shell.common.pip.PipBoundsState.STASH_TYPE_TOP import kotlin.math.abs import kotlin.math.max import kotlin.math.min @@ -54,11 +54,11 @@ class TvPipKeepClearAlgorithm() { * the unstash timeout if already stashed. */ data class Placement( - val bounds: Rect, - val anchorBounds: Rect, - @PipBoundsState.StashType val stashType: Int = STASH_TYPE_NONE, - val unstashDestinationBounds: Rect? = null, - val triggerStash: Boolean = false + val bounds: Rect, + val anchorBounds: Rect, + @PipBoundsState.StashType val stashType: Int = STASH_TYPE_NONE, + val unstashDestinationBounds: Rect? = null, + val triggerStash: Boolean = false ) { /** Bounds to use if the PiP should not be stashed. */ fun getUnstashedBounds() = unstashDestinationBounds ?: bounds diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java index 7c1563787a12ee8c6272a15c752af1b2daf0448b..57439a59ccca33ea7e7e588dcc38e6729042ef37 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipMenuView.java @@ -55,7 +55,7 @@ import com.android.internal.widget.LinearLayoutManager; import com.android.internal.widget.RecyclerView; import com.android.wm.shell.R; import com.android.wm.shell.common.TvWindowMenuActionButton; -import com.android.wm.shell.pip.PipUtils; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.protolog.ShellProtoLogGroup; import java.util.List; 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 f22ee595e6c93e53e1d30c67fd2977ba46e5e4e1..1c94625ddde9297e0fd6f093ee4a0c8c076a625e 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 @@ -36,9 +36,9 @@ import com.android.internal.messages.nano.SystemMessageProto.SystemMessage; import com.android.internal.protolog.common.ProtoLog; import com.android.internal.util.ImageUtils; import com.android.wm.shell.R; -import com.android.wm.shell.pip.PipMediaController; +import com.android.wm.shell.common.pip.PipMediaController; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.pip.PipParamsChangedForwarder; -import com.android.wm.shell.pip.PipUtils; import com.android.wm.shell.protolog.ShellProtoLogGroup; import java.util.List; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTaskOrganizer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTaskOrganizer.java index 4819f665d6d3cc1853971e788acccafb951524ec..f315afba9a03cbba58505a1279584e5eb4b2409b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTaskOrganizer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTaskOrganizer.java @@ -25,18 +25,18 @@ import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; import com.android.wm.shell.common.ShellExecutor; import com.android.wm.shell.common.SyncTransactionQueue; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; +import com.android.wm.shell.common.pip.PipUiEventLogger; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipBoundsState; -import com.android.wm.shell.pip.PipDisplayLayoutState; import com.android.wm.shell.pip.PipMenuController; import com.android.wm.shell.pip.PipParamsChangedForwarder; import com.android.wm.shell.pip.PipSurfaceTransactionHelper; import com.android.wm.shell.pip.PipTaskOrganizer; import com.android.wm.shell.pip.PipTransitionController; import com.android.wm.shell.pip.PipTransitionState; -import com.android.wm.shell.pip.PipUiEventLogger; -import com.android.wm.shell.pip.PipUtils; import com.android.wm.shell.splitscreen.SplitScreenController; import java.util.Objects; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java index d3253a5e4d94889ff950ccbb9b3ebd6500e274cd..f24b2b385cad800fc96be78752a416c601471967 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipTransition.java @@ -21,8 +21,8 @@ import android.content.Context; import androidx.annotation.NonNull; import com.android.wm.shell.ShellTaskOrganizer; +import com.android.wm.shell.common.pip.PipDisplayLayoutState; import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipDisplayLayoutState; import com.android.wm.shell.pip.PipSurfaceTransactionHelper; import com.android.wm.shell.pip.PipTransition; import com.android.wm.shell.pip.PipTransitionState; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/OWNERS b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/OWNERS new file mode 100644 index 0000000000000000000000000000000000000000..6dabb3bf6f9a2b8e6c26b0a189d63ef66af58c80 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/OWNERS @@ -0,0 +1,4 @@ +# WM shell sub-module pip owner +hwwang@google.com +mateuszc@google.com +gabiyev@google.com diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipTransition.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipTransition.java index 8ab85d0829dfedcc4125b7b33dc4627d545e504d..b8e4c04ac2629adcd5b572411e07308eb4acbe26 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipTransition.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip2/PipTransition.java @@ -17,27 +17,65 @@ package com.android.wm.shell.pip2; import android.annotation.NonNull; +import android.os.IBinder; +import android.view.SurfaceControl; +import android.window.TransitionInfo; +import android.window.TransitionRequestInfo; +import android.window.WindowContainerTransaction; + +import androidx.annotation.Nullable; import com.android.wm.shell.ShellTaskOrganizer; -import com.android.wm.shell.pip.PipAnimationController; -import com.android.wm.shell.pip.PipBoundsAlgorithm; -import com.android.wm.shell.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipBoundsAlgorithm; +import com.android.wm.shell.common.pip.PipBoundsState; +import com.android.wm.shell.common.pip.PipUtils; import com.android.wm.shell.pip.PipMenuController; import com.android.wm.shell.pip.PipTransitionController; import com.android.wm.shell.sysui.ShellInit; import com.android.wm.shell.transition.Transitions; /** Placeholder, for demonstrate purpose only. */ -public abstract class PipTransition extends PipTransitionController { +public class PipTransition extends PipTransitionController { public PipTransition( @NonNull ShellInit shellInit, @NonNull ShellTaskOrganizer shellTaskOrganizer, @NonNull Transitions transitions, PipBoundsState pipBoundsState, PipMenuController pipMenuController, - PipBoundsAlgorithm pipBoundsAlgorithm, - PipAnimationController pipAnimationController) { + PipBoundsAlgorithm pipBoundsAlgorithm) { super(shellInit, shellTaskOrganizer, transitions, pipBoundsState, pipMenuController, - pipBoundsAlgorithm, pipAnimationController); + pipBoundsAlgorithm); + } + + @Override + protected void onInit() { + if (PipUtils.isPip2ExperimentEnabled()) { + mTransitions.addHandler(this); + } + } + + @Nullable + @Override + public WindowContainerTransaction handleRequest(@NonNull IBinder transition, + @NonNull TransitionRequestInfo request) { + return null; } + + @Override + public boolean startAnimation(@NonNull IBinder transition, + @NonNull TransitionInfo info, + @NonNull SurfaceControl.Transaction startTransaction, + @NonNull SurfaceControl.Transaction finishTransaction, + @NonNull Transitions.TransitionFinishCallback finishCallback) { + return false; + } + + @Override + public void mergeAnimation(@NonNull IBinder transition, @NonNull TransitionInfo info, + @NonNull SurfaceControl.Transaction t, @NonNull IBinder mergeTarget, + @NonNull Transitions.TransitionFinishCallback finishCallback) {} + + @Override + public void onTransitionConsumed(@NonNull IBinder transition, boolean aborted, + @Nullable SurfaceControl.Transaction finishT) {} } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasks.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasks.java index 069066e4bd49d7915eb31b958b297efdbe83fcd2..2616b8b08bf125ecdfd9dba728d6b908bd50b813 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasks.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasks.java @@ -34,4 +34,10 @@ public interface RecentTasks { default void getRecentTasks(int maxNum, int flags, int userId, Executor callbackExecutor, Consumer> callback) { } + + /** + * Adds the listener to be notified of whether the recent task animation is running. + */ + default void addAnimationStateListener(Executor listenerExecutor, Consumer listener) { + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java index f35eda6caef00325f27d996422ce8ce197e45ba6..ccc34389557cd46878a75b272f357691f4dbc7c2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentTasksController.java @@ -203,6 +203,17 @@ public class RecentTasksController implements TaskStackListenerCallback, } } + @Nullable + public SplitBounds getSplitBoundsForTaskId(int taskId) { + if (taskId == INVALID_TASK_ID) { + return null; + } + + // We could do extra verification of requiring both taskIds of a pair and verifying that + // the same split bounds object is returned... but meh. Seems unnecessary. + return mTaskSplitBoundsMap.get(taskId); + } + @Override public Context getContext() { return mContext; @@ -329,7 +340,7 @@ public class RecentTasksController implements TaskStackListenerCallback, continue; } - if (DesktopModeStatus.isProto2Enabled() && mDesktopModeTaskRepository.isPresent() + if (DesktopModeStatus.isEnabled() && mDesktopModeTaskRepository.isPresent() && mDesktopModeTaskRepository.get().isActiveTask(taskInfo.taskId)) { // Freeform tasks will be added as a separate entry freeformTasks.add(taskInfo); @@ -417,6 +428,21 @@ public class RecentTasksController implements TaskStackListenerCallback, executor.execute(() -> callback.accept(tasks)); }); } + + @Override + public void addAnimationStateListener(Executor executor, Consumer listener) { + mMainExecutor.execute(() -> { + if (mTransitionHandler == null) { + return; + } + mTransitionHandler.addTransitionStateListener(new RecentsTransitionStateListener() { + @Override + public void onAnimationStateChanged(boolean running) { + executor.execute(() -> listener.accept(running)); + } + }); + }); + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java index a11d9528a17099dd13ae8e0519291e85896363e9..ead2f9cbd1addffd907c1ee4286f9fa552239b0e 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionHandler.java @@ -16,6 +16,7 @@ package com.android.wm.shell.recents; +import static android.app.ActivityTaskManager.INVALID_TASK_ID; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.view.WindowManager.TRANSIT_CHANGE; @@ -23,6 +24,8 @@ import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_LOCKED; import static android.view.WindowManager.TRANSIT_SLEEP; import static android.view.WindowManager.TRANSIT_TO_FRONT; +import static com.android.wm.shell.util.SplitBounds.KEY_EXTRA_SPLIT_BOUNDS; + import android.annotation.Nullable; import android.annotation.SuppressLint; import android.app.ActivityManager; @@ -69,8 +72,11 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { private final Transitions mTransitions; private final ShellExecutor mExecutor; + @Nullable + private final RecentTasksController mRecentTasksController; private IApplicationThread mAnimApp = null; private final ArrayList mControllers = new ArrayList<>(); + private final ArrayList mStateListeners = new ArrayList<>(); /** * List of other handlers which might need to mix recents with other things. These are checked @@ -82,6 +88,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { @Nullable RecentTasksController recentTasksController) { mTransitions = transitions; mExecutor = transitions.getMainExecutor(); + mRecentTasksController = recentTasksController; if (!Transitions.ENABLE_SHELL_TRANSITIONS) return; if (recentTasksController == null) return; shellInit.addInitCallback(() -> { @@ -100,6 +107,11 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { mMixers.remove(mixer); } + /** Adds the callback for receiving the state change of transition. */ + public void addTransitionStateListener(RecentsTransitionStateListener listener) { + mStateListeners.add(listener); + } + @VisibleForTesting public IBinder startRecentsTransition(PendingIntent intent, Intent fillIn, Bundle options, IApplicationThread appThread, IRecentsAnimationRunner listener) { @@ -122,6 +134,9 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { } final IBinder transition = mTransitions.startTransition(TRANSIT_TO_FRONT, wct, mixedHandler == null ? this : mixedHandler); + for (int i = 0; i < mStateListeners.size(); i++) { + mStateListeners.get(i).onTransitionStarted(transition); + } if (mixer != null) { mixer.setRecentsTransition(transition); } @@ -165,13 +180,14 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { return false; } final RecentsController controller = mControllers.get(controllerIdx); - Transitions.setRunningRemoteTransitionDelegate(mAnimApp); + final IApplicationThread animApp = mAnimApp; mAnimApp = null; if (!controller.start(info, startTransaction, finishTransaction, finishCallback)) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, "RecentsTransitionHandler.startAnimation: failed to start animation"); return false; } + Transitions.setRunningRemoteTransitionDelegate(animApp); return true; } @@ -218,6 +234,13 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { */ private ArrayList mPausingTasks = null; + /** + * List of tasks were pausing but closed in a subsequent merged transition. If a + * closing task is reopened, the leash is not initially hidden since it is already + * visible. + */ + private ArrayList mClosingTasks = null; + /** * List of tasks that we are switching to. Upon finish, these will remain visible and * on top. @@ -369,11 +392,15 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { } mFinishTransaction = null; mPausingTasks = null; + mClosingTasks = null; mOpeningTasks = null; mInfo = null; mTransition = null; mPendingPauseSnapshotsForCancel = null; mControllers.remove(this); + for (int i = 0; i < mStateListeners.size(); i++) { + mStateListeners.get(i).onAnimationStateChanged(false); + } } boolean start(TransitionInfo info, SurfaceControl.Transaction t, @@ -413,10 +440,12 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { mFinishCB = finishCB; mFinishTransaction = finishT; mPausingTasks = new ArrayList<>(); + mClosingTasks = new ArrayList<>(); mOpeningTasks = new ArrayList<>(); mLeashMap = new ArrayMap<>(); mKeyguardLocked = (info.getFlags() & TRANSIT_FLAG_KEYGUARD_LOCKED) != 0; + int closingSplitTaskId = INVALID_TASK_ID; final ArrayList apps = new ArrayList<>(); final ArrayList wallpapers = new ArrayList<>(); TransitionUtil.LeafTaskFilter leafTaskFilter = new TransitionUtil.LeafTaskFilter(); @@ -443,6 +472,7 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { apps.add(target); if (TransitionUtil.isClosingType(change.getMode())) { mPausingTasks.add(new TaskState(change, target.leash)); + closingSplitTaskId = change.getTaskInfo().taskId; if (taskInfo.topActivityType == ACTIVITY_TYPE_HOME) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " adding pausing leaf home taskId=%d", taskInfo.taskId); @@ -500,13 +530,19 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { } } t.apply(); + Bundle b = new Bundle(1 /*capacity*/); + b.putParcelable(KEY_EXTRA_SPLIT_BOUNDS, + mRecentTasksController.getSplitBoundsForTaskId(closingSplitTaskId)); try { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, "[%d] RecentsController.start: calling onAnimationStart", mInstanceId); mListener.onAnimationStart(this, apps.toArray(new RemoteAnimationTarget[apps.size()]), wallpapers.toArray(new RemoteAnimationTarget[wallpapers.size()]), - new Rect(0, 0, 0, 0), new Rect()); + new Rect(0, 0, 0, 0), new Rect(), b); + for (int i = 0; i < mStateListeners.size(); i++) { + mStateListeners.get(i).onAnimationStateChanged(true); + } } catch (RemoteException e) { Slog.e(TAG, "Error starting recents animation", e); cancel("onAnimationStart() failed"); @@ -659,7 +695,10 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { final TransitionInfo.Change change = closingTasks.get(i); final int pausingIdx = TaskState.indexOf(mPausingTasks, change); if (pausingIdx >= 0) { - mPausingTasks.remove(pausingIdx); + // We are closing the pausing task, but it is still visible and can be + // restart by another transition prior to this transition finishing + final TaskState closingTask = mPausingTasks.remove(pausingIdx); + mClosingTasks.add(closingTask); didMergeThings = true; ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, " closing pausing taskId=%d", change.getTaskInfo().taskId); @@ -695,7 +734,12 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { for (int i = 0; i < openingTasks.size(); ++i) { final TransitionInfo.Change change = openingTasks.get(i); final boolean isLeaf = openingTaskIsLeafs.get(i) == 1; - int pausingIdx = TaskState.indexOf(mPausingTasks, change); + final int closingIdx = TaskState.indexOf(mClosingTasks, change); + if (closingIdx >= 0) { + // Remove opening tasks from closing set + mClosingTasks.remove(closingIdx); + } + final int pausingIdx = TaskState.indexOf(mPausingTasks, change); if (pausingIdx >= 0) { // Something is showing/opening a previously-pausing app. if (isLeaf) { @@ -718,12 +762,23 @@ public class RecentsTransitionHandler implements Transitions.TransitionHandler { appearedTargets[nextTargetIdx++] = target; // reparent into the original `mInfo` since that's where we are animating. final int rootIdx = TransitionUtil.rootIndexFor(change, mInfo); + final boolean wasClosing = closingIdx >= 0; t.reparent(target.leash, mInfo.getRoot(rootIdx).getLeash()); t.setLayer(target.leash, layer); - // Hide the animation leash, let listener show it. - t.hide(target.leash); + if (wasClosing) { + // App was previously visible and is closing + t.show(target.leash); + t.setAlpha(target.leash, 1f); + // Also override the task alpha as it was set earlier when dispatching + // the transition and setting up the leash to hide the + t.setAlpha(change.getLeash(), 1f); + } else { + // Hide the animation leash, let the listener show it + t.hide(target.leash); + } ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, - " opening new leaf taskId=%d", target.taskId); + " opening new leaf taskId=%d wasClosing=%b", + target.taskId, wasClosing); mOpeningTasks.add(new TaskState(change, target.leash)); } else { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_RECENTS_TRANSITION, diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionStateListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionStateListener.java new file mode 100644 index 0000000000000000000000000000000000000000..e8733ebd8f0375db811452b0b17734ccaa3a69f3 --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/recents/RecentsTransitionStateListener.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2023 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.wm.shell.recents; + +import android.os.IBinder; + +/** The listener for the events from {@link RecentsTransitionHandler}. */ +public interface RecentsTransitionStateListener { + + /** Notifies whether the recents animation is running. */ + default void onAnimationStateChanged(boolean running) { + } + + /** Notifies that a recents shell transition has started. */ + default void onTransitionStarted(IBinder transition) {} +} diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/ISplitSelectListener.aidl b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/ISplitSelectListener.aidl index 7171da5d885df470a7b9a2cbdff9ef296c43be86..a25f39148b89f2e27df791bc78c883392b9c80a4 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/ISplitSelectListener.aidl +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/ISplitSelectListener.aidl @@ -17,7 +17,7 @@ package com.android.wm.shell.splitscreen; import android.app.ActivityManager.RunningTaskInfo; - +import android.graphics.Rect; /** * Listener interface that Launcher attaches to SystemUI to get split-select callbacks. */ @@ -25,5 +25,5 @@ interface ISplitSelectListener { /** * Called when a task requests to enter split select */ - boolean onRequestSplitSelect(in RunningTaskInfo taskInfo); + boolean onRequestSplitSelect(in RunningTaskInfo taskInfo, int splitPosition, in Rect taskBounds); } \ No newline at end of file diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java index f20fe0b88e12b3254464f15c74484fa9aeb016e5..ad4049320d9367acbbc3b072eab8a90c95ece9ed 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreen.java @@ -66,7 +66,8 @@ public interface SplitScreen { /** Callback interface for listening to requests to enter split select */ interface SplitSelectListener { - default boolean onRequestEnterSplitSelect(ActivityManager.RunningTaskInfo taskInfo) { + default boolean onRequestEnterSplitSelect(ActivityManager.RunningTaskInfo taskInfo, + int splitPosition, Rect taskBounds) { return false; } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java index 210bf68f3d4f09c60d1ff179cdda93557aa44cc5..f70b0fc5af48bb09a896653e31fb1233a152bea9 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitScreenController.java @@ -23,7 +23,6 @@ import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK; import static android.content.Intent.FLAG_ACTIVITY_NO_USER_ACTION; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.RemoteAnimationTarget.MODE_OPENING; - import static com.android.wm.shell.common.ExecutorUtils.executeRemoteCallWithTaskPermission; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_BOTTOM_OR_RIGHT; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_TOP_OR_LEFT; @@ -43,6 +42,7 @@ import android.app.ActivityOptions; import android.app.ActivityTaskManager; import android.app.PendingIntent; import android.app.TaskInfo; +import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.ShortcutInfo; @@ -130,6 +130,7 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, public static final int EXIT_REASON_CHILD_TASK_ENTER_PIP = 9; public static final int EXIT_REASON_RECREATE_SPLIT = 10; public static final int EXIT_REASON_FULLSCREEN_SHORTCUT = 11; + public static final int EXIT_REASON_ENTER_DESKTOP = 12; @IntDef(value = { EXIT_REASON_UNKNOWN, EXIT_REASON_APP_DOES_NOT_SUPPORT_MULTIWINDOW, @@ -143,6 +144,7 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, EXIT_REASON_CHILD_TASK_ENTER_PIP, EXIT_REASON_RECREATE_SPLIT, EXIT_REASON_FULLSCREEN_SHORTCUT, + EXIT_REASON_ENTER_DESKTOP }) @Retention(RetentionPolicy.SOURCE) @interface ExitReason{} @@ -507,10 +509,12 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, * Move a task to split select * @param taskInfo the task being moved to split select * @param wct transaction to apply if this is a valid request + * @param splitPosition the split position this task should move to + * @param taskBounds current freeform bounds of the task entering split */ public void requestEnterSplitSelect(ActivityManager.RunningTaskInfo taskInfo, - WindowContainerTransaction wct) { - mStageCoordinator.requestEnterSplitSelect(taskInfo, wct); + WindowContainerTransaction wct, int splitPosition, Rect taskBounds) { + mStageCoordinator.requestEnterSplitSelect(taskInfo, wct, splitPosition, taskBounds); } public void startTask(int taskId, @SplitPosition int position, @Nullable Bundle options) { @@ -812,21 +816,22 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, final String packageName1 = SplitScreenUtils.getPackageName(intent); final String packageName2 = getPackageName(reverseSplitPosition(position)); final int userId2 = getUserId(reverseSplitPosition(position)); + final ComponentName component = intent.getIntent().getComponent(); + + // To prevent accumulating large number of instances in the background, reuse task + // in the background. If we don't explicitly reuse, new may be created even if the app + // isn't multi-instance because WM won't automatically remove/reuse the previous instance + final ActivityManager.RecentTaskInfo taskInfo = mRecentTasksOptional + .map(recentTasks -> recentTasks.findTaskInBackground(component, userId1)) + .orElse(null); + if (taskInfo != null) { + startTask(taskInfo.taskId, position, options); + ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, + "Start task in background"); + return; + } if (samePackage(packageName1, packageName2, userId1, userId2)) { if (supportMultiInstancesSplit(packageName1)) { - // To prevent accumulating large number of instances in the background, reuse task - // in the background with priority. - final ActivityManager.RecentTaskInfo taskInfo = mRecentTasksOptional - .map(recentTasks -> recentTasks.findTaskInBackground( - intent.getIntent().getComponent(), userId1)) - .orElse(null); - if (taskInfo != null) { - startTask(taskInfo.taskId, position, options); - ProtoLog.v(ShellProtoLogGroup.WM_SHELL_SPLIT_SCREEN, - "Start task in background"); - return; - } - // Flag with MULTIPLE_TASK if this is launching the same activity into both sides of // the split and there is no reusable background task. fillInIntent.addFlags(FLAG_ACTIVITY_MULTIPLE_TASK); @@ -1007,6 +1012,8 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, return "CHILD_TASK_ENTER_PIP"; case EXIT_REASON_RECREATE_SPLIT: return "RECREATE_SPLIT"; + case EXIT_REASON_ENTER_DESKTOP: + return "ENTER_DESKTOP"; default: return "unknown reason, reason int = " + exitReason; } @@ -1135,9 +1142,11 @@ public class SplitScreenController implements DragAndDropPolicy.Starter, new SplitScreen.SplitSelectListener() { @Override public boolean onRequestEnterSplitSelect( - ActivityManager.RunningTaskInfo taskInfo) { + ActivityManager.RunningTaskInfo taskInfo, int splitPosition, + Rect taskBounds) { AtomicBoolean result = new AtomicBoolean(false); - mSelectListener.call(l -> result.set(l.onRequestSplitSelect(taskInfo))); + mSelectListener.call(l -> result.set(l.onRequestSplitSelect(taskInfo, + splitPosition, taskBounds))); return result.get(); } }; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java index 5483fa5d29f6d6e452cf69c55d7d000aeab05841..f4ab2266179af61604b489cc6e9bbfb94f32a9b6 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/SplitscreenEventLogger.java @@ -25,6 +25,7 @@ import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED_ import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__DEVICE_FOLDED; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__DRAG_DIVIDER; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__FULLSCREEN_SHORTCUT; +import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__ENTER_DESKTOP; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__RECREATE_SPLIT; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__RETURN_HOME; import static com.android.internal.util.FrameworkStatsLog.SPLITSCREEN_UICHANGED__EXIT_REASON__ROOT_TASK_VANISHED; @@ -42,6 +43,7 @@ import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_CHILD_TASK_ENTER_PIP; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_DEVICE_FOLDED; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_DRAG_DIVIDER; +import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_ENTER_DESKTOP; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_FULLSCREEN_SHORTCUT; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_RECREATE_SPLIT; import static com.android.wm.shell.splitscreen.SplitScreenController.EXIT_REASON_RETURN_HOME; @@ -192,6 +194,8 @@ public class SplitscreenEventLogger { return SPLITSCREEN_UICHANGED__EXIT_REASON__RECREATE_SPLIT; case EXIT_REASON_FULLSCREEN_SHORTCUT: return SPLITSCREEN_UICHANGED__EXIT_REASON__FULLSCREEN_SHORTCUT; + case EXIT_REASON_ENTER_DESKTOP: + return SPLITSCREEN_UICHANGED__EXIT_REASON__ENTER_DESKTOP; case EXIT_REASON_UNKNOWN: // Fall through default: diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 697006868e5a07f553939ad23656ed89cf285457..94fa485efd5c0c1204b9726a1a7fa4fc34386882 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -228,6 +228,15 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, private final Toast mSplitUnsupportedToast; private SplitRequest mSplitRequest; + /** + * Since StageCoordinator only coordinates MainStage and SideStage, it shouldn't support + * CompatUI layouts. CompatUI is handled separately by MainStage and SideStage. + */ + @Override + public boolean supportCompatUI() { + return false; + } + class SplitRequest { @SplitPosition int mActivatePosition; @@ -466,10 +475,11 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } void requestEnterSplitSelect(ActivityManager.RunningTaskInfo taskInfo, - WindowContainerTransaction wct) { + WindowContainerTransaction wct, int splitPosition, Rect taskBounds) { boolean enteredSplitSelect = false; for (SplitScreen.SplitSelectListener listener : mSelectListeners) { - enteredSplitSelect |= listener.onRequestEnterSplitSelect(taskInfo); + enteredSplitSelect |= listener.onRequestEnterSplitSelect(taskInfo, splitPosition, + taskBounds); } if (enteredSplitSelect) mTaskOrganizer.applyTransaction(wct); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SnapshotWindowCreator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SnapshotWindowCreator.java index 20c4d5ae5f58168c9171a1bb460abd84e7162ecf..e7e1e0a985509a11088f720466d823082e219f0a 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SnapshotWindowCreator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SnapshotWindowCreator.java @@ -35,13 +35,14 @@ class SnapshotWindowCreator { void makeTaskSnapshotWindow(StartingWindowInfo startingWindowInfo, TaskSnapshot snapshot) { final int taskId = startingWindowInfo.taskInfo.taskId; // Remove any existing starting window for this task before adding. - mStartingWindowRecordManager.removeWindow(taskId, true); + mStartingWindowRecordManager.removeWindow(taskId); final TaskSnapshotWindow surface = TaskSnapshotWindow.create(startingWindowInfo, startingWindowInfo.appToken, snapshot, mMainExecutor, - () -> mStartingWindowRecordManager.removeWindow(taskId, true)); + () -> mStartingWindowRecordManager.removeWindow(taskId)); if (surface != null) { final SnapshotWindowRecord tView = new SnapshotWindowRecord(surface, - startingWindowInfo.taskInfo.topActivityType, mMainExecutor); + startingWindowInfo.taskInfo.topActivityType, mMainExecutor, + taskId, mStartingWindowRecordManager); mStartingWindowRecordManager.addRecord(taskId, tView); } } @@ -50,8 +51,9 @@ class SnapshotWindowCreator { private final TaskSnapshotWindow mTaskSnapshotWindow; SnapshotWindowRecord(TaskSnapshotWindow taskSnapshotWindow, - int activityType, ShellExecutor removeExecutor) { - super(activityType, removeExecutor); + int activityType, ShellExecutor removeExecutor, int id, + StartingSurfaceDrawer.StartingWindowRecordManager recordManager) { + super(activityType, removeExecutor, id, recordManager); mTaskSnapshotWindow = taskSnapshotWindow; mBGColor = mTaskSnapshotWindow.getBackgroundColor(); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java index 20da8773f38728ae3bc2aa9eb3064404d9b45967..edb5aba1e46be771a2a90e152da44e510363131c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimation.java @@ -46,6 +46,8 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { private final int mIconFadeOutDuration; private final int mAppRevealDelay; private final int mAppRevealDuration; + @SplashScreenExitAnimationUtils.ExitAnimationType + private final int mAnimationType; private final int mAnimationDuration; private final float mIconStartAlpha; private final float mBrandingStartAlpha; @@ -91,6 +93,8 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { } mAppRevealDuration = context.getResources().getInteger( R.integer.starting_window_app_reveal_anim_duration); + mAnimationType = context.getResources().getInteger( + R.integer.starting_window_exit_animation_type); mAnimationDuration = Math.max(mIconFadeOutDuration, mAppRevealDelay + mAppRevealDuration); mMainWindowShiftLength = mainWindowShiftLength; mFinishCallback = handleFinish; @@ -98,10 +102,10 @@ public class SplashScreenExitAnimation implements Animator.AnimatorListener { } void startAnimations() { - SplashScreenExitAnimationUtils.startAnimations(mSplashScreenView, mFirstWindowSurface, - mMainWindowShiftLength, mTransactionPool, mFirstWindowFrame, mAnimationDuration, - mIconFadeOutDuration, mIconStartAlpha, mBrandingStartAlpha, mAppRevealDelay, - mAppRevealDuration, this, mRoundedCornerRadius); + SplashScreenExitAnimationUtils.startAnimations(mAnimationType, mSplashScreenView, + mFirstWindowSurface, mMainWindowShiftLength, mTransactionPool, mFirstWindowFrame, + mAnimationDuration, mIconFadeOutDuration, mIconStartAlpha, mBrandingStartAlpha, + mAppRevealDelay, mAppRevealDuration, this, mRoundedCornerRadius); } private void reset() { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimationUtils.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimationUtils.java index a7e4385b60c878b3d9a8421fdd88ea92f7df226a..e86b62dee86df5c6236de9934d849d8522077212 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimationUtils.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashScreenExitAnimationUtils.java @@ -20,6 +20,7 @@ import static android.view.Choreographer.CALLBACK_COMMIT; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; +import android.annotation.IntDef; import android.annotation.SuppressLint; import android.content.Context; import android.content.res.Configuration; @@ -54,6 +55,7 @@ import com.android.wm.shell.common.TransactionPool; public class SplashScreenExitAnimationUtils { private static final boolean DEBUG_EXIT_ANIMATION = false; private static final boolean DEBUG_EXIT_ANIMATION_BLEND = false; + private static final boolean DEBUG_EXIT_FADE_ANIMATION = false; private static final String TAG = "SplashScreenExitAnimationUtils"; private static final Interpolator ICON_INTERPOLATOR = new PathInterpolator(0.15f, 0f, 1f, 1f); @@ -61,21 +63,48 @@ public class SplashScreenExitAnimationUtils { new PathInterpolator(0f, 0f, 0.4f, 1f); private static final Interpolator SHIFT_UP_INTERPOLATOR = new PathInterpolator(0f, 0f, 0f, 1f); + /** + * This splash screen exit animation type uses a radial vanish to hide + * the starting window and slides up the main window content. + * @hide + */ + public static final int TYPE_RADIAL_VANISH_SLIDE_UP = 0; + + /** + * This splash screen exit animation type fades out the starting window + * to reveal the main window content. + * @hide + */ + public static final int TYPE_FADE_OUT = 1; + + /** @hide */ + @IntDef(prefix = { "TYPE_" }, value = { + TYPE_RADIAL_VANISH_SLIDE_UP, + TYPE_FADE_OUT, + }) + public @interface ExitAnimationType {} + /** * Creates and starts the animator to fade out the icon, reveal the app, and shift up main * window with rounded corner radius. */ - static void startAnimations(ViewGroup splashScreenView, - SurfaceControl firstWindowSurface, int mainWindowShiftLength, - TransactionPool transactionPool, Rect firstWindowFrame, int animationDuration, - int iconFadeOutDuration, float iconStartAlpha, float brandingStartAlpha, - int appRevealDelay, int appRevealDuration, Animator.AnimatorListener animatorListener, - float roundedCornerRadius) { - ValueAnimator animator = - createAnimator(splashScreenView, firstWindowSurface, mainWindowShiftLength, - transactionPool, firstWindowFrame, animationDuration, iconFadeOutDuration, - iconStartAlpha, brandingStartAlpha, appRevealDelay, appRevealDuration, - animatorListener, roundedCornerRadius); + static void startAnimations(@ExitAnimationType int animationType, + ViewGroup splashScreenView, SurfaceControl firstWindowSurface, + int mainWindowShiftLength, TransactionPool transactionPool, Rect firstWindowFrame, + int animationDuration, int iconFadeOutDuration, float iconStartAlpha, + float brandingStartAlpha, int appRevealDelay, int appRevealDuration, + Animator.AnimatorListener animatorListener, float roundedCornerRadius) { + ValueAnimator animator; + if (animationType == TYPE_FADE_OUT) { + animator = createFadeOutAnimation(splashScreenView, animationDuration, + iconFadeOutDuration, iconStartAlpha, brandingStartAlpha, appRevealDelay, + appRevealDuration, animatorListener); + } else { + animator = createRadialVanishSlideUpAnimator(splashScreenView, + firstWindowSurface, mainWindowShiftLength, transactionPool, firstWindowFrame, + animationDuration, iconFadeOutDuration, iconStartAlpha, brandingStartAlpha, + appRevealDelay, appRevealDuration, animatorListener, roundedCornerRadius); + } animator.start(); } @@ -89,17 +118,18 @@ public class SplashScreenExitAnimationUtils { TransactionPool transactionPool, Rect firstWindowFrame, int animationDuration, int iconFadeOutDuration, float iconStartAlpha, float brandingStartAlpha, int appRevealDelay, int appRevealDuration, Animator.AnimatorListener animatorListener) { - startAnimations(splashScreenView, firstWindowSurface, mainWindowShiftLength, - transactionPool, firstWindowFrame, animationDuration, iconFadeOutDuration, - iconStartAlpha, brandingStartAlpha, appRevealDelay, appRevealDuration, - animatorListener, 0f /* roundedCornerRadius */); + // Start the default 'reveal' animation. + startAnimations(TYPE_RADIAL_VANISH_SLIDE_UP, splashScreenView, + firstWindowSurface, mainWindowShiftLength, transactionPool, firstWindowFrame, + animationDuration, iconFadeOutDuration, iconStartAlpha, brandingStartAlpha, + appRevealDelay, appRevealDuration, animatorListener, 0f /* roundedCornerRadius */); } /** * Creates the animator to fade out the icon, reveal the app, and shift up main window. * @hide */ - private static ValueAnimator createAnimator(ViewGroup splashScreenView, + private static ValueAnimator createRadialVanishSlideUpAnimator(ViewGroup splashScreenView, SurfaceControl firstWindowSurface, int mMainWindowShiftLength, TransactionPool transactionPool, Rect firstWindowFrame, int animationDuration, int iconFadeOutDuration, float iconStartAlpha, float brandingStartAlpha, @@ -210,6 +240,59 @@ public class SplashScreenExitAnimationUtils { return nightMode == Configuration.UI_MODE_NIGHT_YES; } + private static ValueAnimator createFadeOutAnimation(ViewGroup splashScreenView, + int animationDuration, int iconFadeOutDuration, float iconStartAlpha, + float brandingStartAlpha, int appRevealDelay, int appRevealDuration, + Animator.AnimatorListener animatorListener) { + + if (DEBUG_EXIT_FADE_ANIMATION) { + splashScreenView.setBackgroundColor(Color.BLUE); + } + + final ValueAnimator animator = ValueAnimator.ofFloat(0f, 1f); + animator.setDuration(animationDuration); + animator.setInterpolator(Interpolators.LINEAR); + animator.addUpdateListener(animation -> { + + float linearProgress = (float) animation.getAnimatedValue(); + + // Icon fade out progress (always starts immediately) + final float iconFadeProgress = ICON_INTERPOLATOR.getInterpolation(getProgress( + linearProgress, 0 /* delay */, iconFadeOutDuration, animationDuration)); + View iconView = null; + View brandingView = null; + + if (splashScreenView instanceof SplashScreenView) { + iconView = ((SplashScreenView) splashScreenView).getIconView(); + brandingView = ((SplashScreenView) splashScreenView).getBrandingView(); + } + if (iconView != null) { + iconView.setAlpha(iconStartAlpha * (1f - iconFadeProgress)); + } + if (brandingView != null) { + brandingView.setAlpha(brandingStartAlpha * (1f - iconFadeProgress)); + } + + // Splash screen fade out progress (possibly delayed) + final float splashFadeProgress = Interpolators.ALPHA_OUT.getInterpolation( + getProgress(linearProgress, appRevealDelay, + appRevealDuration, animationDuration)); + + splashScreenView.setAlpha(1f - splashFadeProgress); + + if (DEBUG_EXIT_FADE_ANIMATION) { + Slog.d(TAG, "progress -> animation: " + linearProgress + + "\t icon alpha: " + ((iconView != null) ? iconView.getAlpha() : "n/a") + + "\t splash alpha: " + splashScreenView.getAlpha() + ); + } + }); + if (animatorListener != null) { + animator.addListener(animatorListener); + } + return animator; + } + /** * View which creates a circular reveal of the underlying view. * @hide diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java index 4cfbbd971fe3877cce192e8d3345f9d8b9e419f3..31fc98b713ab13ea7eded0e984fee7540d766b48 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenWindowCreator.java @@ -358,7 +358,7 @@ class SplashscreenWindowCreator extends AbsSplashWindowCreator { } } if (shouldSaveView) { - mStartingWindowRecordManager.removeWindow(taskId, true); + mStartingWindowRecordManager.removeWindow(taskId); saveSplashScreenRecord(appToken, taskId, view, suggestType); } return shouldSaveView; 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 7cbf263f7cb1e3ceda681d6bc64a54f076c3bd39..e2be1533118adcbcddf78f21f2f4c8db83d004ac 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 @@ -188,7 +188,7 @@ public class StartingSurfaceDrawer { final SnapshotRecord record = sRecord instanceof SnapshotRecord ? (SnapshotRecord) sRecord : null; if (record != null && record.hasImeSurface()) { - records.removeWindow(taskId, true); + records.removeWindow(taskId); } } @@ -256,10 +256,15 @@ public class StartingSurfaceDrawer { @WindowConfiguration.ActivityType protected final int mActivityType; protected final ShellExecutor mRemoveExecutor; + private final int mTaskId; + private final StartingWindowRecordManager mRecordManager; - SnapshotRecord(int activityType, ShellExecutor removeExecutor) { + SnapshotRecord(int activityType, ShellExecutor removeExecutor, int taskId, + StartingWindowRecordManager recordManager) { mActivityType = activityType; mRemoveExecutor = removeExecutor; + mTaskId = taskId; + mRecordManager = recordManager; } @Override @@ -301,6 +306,7 @@ public class StartingSurfaceDrawer { @CallSuper protected void removeImmediately() { mRemoveExecutor.removeCallbacks(mScheduledRunnable); + mRecordManager.onRecordRemoved(mTaskId); } } @@ -316,7 +322,7 @@ public class StartingSurfaceDrawer { taskIds[i] = mStartingWindowRecords.keyAt(i); } for (int i = taskSize - 1; i >= 0; --i) { - removeWindow(taskIds[i], true); + removeWindow(taskIds[i]); } } @@ -335,9 +341,13 @@ public class StartingSurfaceDrawer { } } - void removeWindow(int taskId, boolean immediately) { + void removeWindow(int taskId) { mTmpRemovalInfo.taskId = taskId; - removeWindow(mTmpRemovalInfo, immediately); + removeWindow(mTmpRemovalInfo, true/* immediately */); + } + + void onRecordRemoved(int taskId) { + mStartingWindowRecords.remove(taskId); } StartingWindowRecord getRecord(int taskId) { diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/WindowlessSnapshotWindowCreator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/WindowlessSnapshotWindowCreator.java index 14454788550167b93d227e7a533ac5dee591b4a9..fed2f34b5e0cc4bb692c1c141f1a2b38266acb07 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/WindowlessSnapshotWindowCreator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/WindowlessSnapshotWindowCreator.java @@ -92,7 +92,8 @@ class WindowlessSnapshotWindowCreator { final SnapshotWindowRecord record = new SnapshotWindowRecord(mViewHost, wlw.mChildSurface, taskDescription.getBackgroundColor(), snapshot.hasImeSurface(), - runningTaskInfo.topActivityType, removeExecutor); + runningTaskInfo.topActivityType, removeExecutor, + taskId, mStartingWindowRecordManager); mStartingWindowRecordManager.addRecord(taskId, record); info.notifyAddComplete(wlw.mChildSurface); } @@ -104,8 +105,9 @@ class WindowlessSnapshotWindowCreator { SnapshotWindowRecord(SurfaceControlViewHost viewHost, SurfaceControl childSurface, int bgColor, boolean hasImeSurface, int activityType, - ShellExecutor removeExecutor) { - super(activityType, removeExecutor); + ShellExecutor removeExecutor, int id, + StartingSurfaceDrawer.StartingWindowRecordManager recordManager) { + super(activityType, removeExecutor, id, recordManager); mViewHost = viewHost; mChildSurface = childSurface; mBGColor = bgColor; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/phone/PhoneStartingWindowTypeAlgorithm.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/phone/PhoneStartingWindowTypeAlgorithm.java index 72fc8686f648775f53dad170f88f2b19ad5b2298..6ea6516a96f5885137258780eb2611638fede803 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/phone/PhoneStartingWindowTypeAlgorithm.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/phone/PhoneStartingWindowTypeAlgorithm.java @@ -30,7 +30,7 @@ import static android.window.StartingWindowInfo.TYPE_PARAMETER_LEGACY_SPLASH_SCR import static android.window.StartingWindowInfo.TYPE_PARAMETER_NEW_TASK; import static android.window.StartingWindowInfo.TYPE_PARAMETER_PROCESS_RUNNING; import static android.window.StartingWindowInfo.TYPE_PARAMETER_TASK_SWITCH; -import static android.window.StartingWindowInfo.TYPE_PARAMETER_USE_SOLID_COLOR_SPLASH_SCREEN; +import static android.window.StartingWindowInfo.TYPE_PARAMETER_ALLOW_ICON; import static android.window.StartingWindowInfo.TYPE_PARAMETER_WINDOWLESS; import android.window.StartingWindowInfo; @@ -52,8 +52,7 @@ public class PhoneStartingWindowTypeAlgorithm implements StartingWindowTypeAlgor final boolean processRunning = (parameter & TYPE_PARAMETER_PROCESS_RUNNING) != 0; final boolean allowTaskSnapshot = (parameter & TYPE_PARAMETER_ALLOW_TASK_SNAPSHOT) != 0; final boolean activityCreated = (parameter & TYPE_PARAMETER_ACTIVITY_CREATED) != 0; - final boolean isSolidColorSplashScreen = - (parameter & TYPE_PARAMETER_USE_SOLID_COLOR_SPLASH_SCREEN) != 0; + final boolean allowIcon = (parameter & TYPE_PARAMETER_ALLOW_ICON) != 0; final boolean legacySplashScreen = ((parameter & TYPE_PARAMETER_LEGACY_SPLASH_SCREEN) != 0); final boolean activityDrawn = (parameter & TYPE_PARAMETER_ACTIVITY_DRAWN) != 0; @@ -67,13 +66,13 @@ public class PhoneStartingWindowTypeAlgorithm implements StartingWindowTypeAlgor + "processRunning=%b, " + "allowTaskSnapshot=%b, " + "activityCreated=%b, " - + "isSolidColorSplashScreen=%b, " + + "allowIcon=%b, " + "legacySplashScreen=%b, " + "activityDrawn=%b, " + "windowless=%b, " + "topIsHome=%b", newTask, taskSwitch, processRunning, allowTaskSnapshot, activityCreated, - isSolidColorSplashScreen, legacySplashScreen, activityDrawn, windowlessSurface, + allowIcon, legacySplashScreen, activityDrawn, windowlessSurface, topIsHome); if (windowlessSurface) { @@ -81,7 +80,7 @@ public class PhoneStartingWindowTypeAlgorithm implements StartingWindowTypeAlgor } if (!topIsHome) { if (!processRunning || newTask || (taskSwitch && !activityCreated)) { - return getSplashscreenType(isSolidColorSplashScreen, legacySplashScreen); + return getSplashscreenType(allowIcon, legacySplashScreen); } } @@ -95,18 +94,18 @@ public class PhoneStartingWindowTypeAlgorithm implements StartingWindowTypeAlgor } } if (!activityDrawn && !topIsHome) { - return getSplashscreenType(isSolidColorSplashScreen, legacySplashScreen); + return getSplashscreenType(allowIcon, legacySplashScreen); } } return STARTING_WINDOW_TYPE_NONE; } - private static int getSplashscreenType(boolean solidColorSplashScreen, - boolean legacySplashScreen) { - return solidColorSplashScreen - ? STARTING_WINDOW_TYPE_SOLID_COLOR_SPLASH_SCREEN - : legacySplashScreen - ? STARTING_WINDOW_TYPE_LEGACY_SPLASH_SCREEN + private static int getSplashscreenType(boolean allowIcon, boolean legacySplashScreen) { + if (allowIcon) { + return legacySplashScreen ? STARTING_WINDOW_TYPE_LEGACY_SPLASH_SCREEN : STARTING_WINDOW_TYPE_SPLASH_SCREEN; + } else { + return STARTING_WINDOW_TYPE_SOLID_COLOR_SPLASH_SCREEN; + } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java index adae21b20b3cf1c0999e455ba66be7cc8d7eed49..93d763608b5f907a4a901225b9bc318e9b8fe2ec 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/taskview/TaskViewTaskController.java @@ -54,12 +54,13 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener { private static final String TAG = TaskViewTaskController.class.getSimpleName(); private final CloseGuard mGuard = new CloseGuard(); - + private final SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction(); + /** Used to inset the activity content to allow space for a caption bar. */ + private final Binder mCaptionInsetsOwner = new Binder(); private final ShellTaskOrganizer mTaskOrganizer; private final Executor mShellExecutor; private final SyncTransactionQueue mSyncQueue; private final TaskViewTransitions mTaskViewTransitions; - private TaskViewBase mTaskViewBase; private final Context mContext; /** @@ -70,21 +71,19 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener { * in this situation to allow us to notify listeners correctly if the task failed to open. */ private ActivityManager.RunningTaskInfo mPendingInfo; - /* Indicates that the task we attempted to launch in the task view failed to launch. */ - private boolean mTaskNotFound; + private TaskViewBase mTaskViewBase; protected ActivityManager.RunningTaskInfo mTaskInfo; private WindowContainerToken mTaskToken; private SurfaceControl mTaskLeash; - private final SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction(); + /* Indicates that the task we attempted to launch in the task view failed to launch. */ + private boolean mTaskNotFound; private boolean mSurfaceCreated; private SurfaceControl mSurfaceControl; private boolean mIsInitialized; private boolean mNotifiedForInitialized; + private boolean mHideTaskWithSurface = true; private TaskView.Listener mListener; private Executor mListenerExecutor; - - /** Used to inset the activity content to allow space for a caption bar. */ - private final Binder mCaptionInsetsOwner = new Binder(); private Rect mCaptionInsets; public TaskViewTaskController(Context context, ShellTaskOrganizer organizer, @@ -102,6 +101,19 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener { mGuard.open("release"); } + /** + * Specifies if the task should be hidden when the surface is destroyed. + *

    This is {@code true} by default. + * + * @param hideTaskWithSurface {@code false} if task needs to remain visible even when the + * surface is destroyed, {@code true} otherwise. + */ + public void setHideTaskWithSurface(boolean hideTaskWithSurface) { + // TODO(b/299535374): Remove mHideTaskWithSurface once the taskviews with launch root tasks + // are moved to a window in SystemUI in auto. + mHideTaskWithSurface = hideTaskWithSurface; + } + SurfaceControl getSurfaceControl() { return mSurfaceControl; } @@ -257,9 +269,17 @@ public class TaskViewTaskController implements ShellTaskOrganizer.TaskListener { mTaskNotFound = false; } + /** This method shouldn't be called when shell transitions are enabled. */ private void updateTaskVisibility() { + boolean visible = mSurfaceCreated; + if (!visible && !mHideTaskWithSurface) { + return; + } WindowContainerTransaction wct = new WindowContainerTransaction(); - wct.setHidden(mTaskToken, !mSurfaceCreated /* hidden */); + wct.setHidden(mTaskToken, !visible /* hidden */); + if (!visible) { + wct.reorder(mTaskToken, false /* onTop */); + } mSyncQueue.queue(wct); if (mListener == null) { return; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java index 986560bd60533177631c90653e3110cd81146230..00f6a1cc1167d3290c4ce84261cd2ae71b21ef10 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/DefaultMixedHandler.java @@ -19,10 +19,10 @@ package com.android.wm.shell.transition; import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; +import static android.view.Display.DEFAULT_DISPLAY; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_TO_BACK; import static android.window.TransitionInfo.FLAG_IS_WALLPAPER; - import static com.android.wm.shell.common.split.SplitScreenConstants.FLAG_IS_DIVIDER_BAR; import static com.android.wm.shell.common.split.SplitScreenConstants.SPLIT_POSITION_UNDEFINED; import static com.android.wm.shell.pip.PipAnimationController.ANIM_TYPE_ALPHA; @@ -43,7 +43,6 @@ import android.window.WindowContainerTransaction; import com.android.internal.protolog.common.ProtoLog; import com.android.wm.shell.common.split.SplitScreenUtils; -import com.android.wm.shell.desktopmode.DesktopModeController; import com.android.wm.shell.desktopmode.DesktopModeStatus; import com.android.wm.shell.desktopmode.DesktopTasksController; import com.android.wm.shell.keyguard.KeyguardTransitionHandler; @@ -71,7 +70,6 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, private RecentsTransitionHandler mRecentsHandler; private StageCoordinator mSplitHandler; private final KeyguardTransitionHandler mKeyguardHandler; - private DesktopModeController mDesktopModeController; private DesktopTasksController mDesktopTasksController; private UnfoldTransitionHandler mUnfoldHandler; @@ -141,7 +139,6 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, @Nullable PipTransitionController pipTransitionController, Optional recentsHandlerOptional, KeyguardTransitionHandler keyguardHandler, - Optional desktopModeControllerOptional, Optional desktopTasksControllerOptional, Optional unfoldHandler) { mPlayer = player; @@ -161,7 +158,6 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, if (mRecentsHandler != null) { mRecentsHandler.addMixer(this); } - mDesktopModeController = desktopModeControllerOptional.orElse(null); mDesktopTasksController = desktopTasksControllerOptional.orElse(null); mUnfoldHandler = unfoldHandler.orElse(null); }, this); @@ -243,9 +239,14 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, @Override public Transitions.TransitionHandler handleRecentsRequest(WindowContainerTransaction outWCT) { - if (mRecentsHandler != null && (mSplitHandler.isSplitScreenVisible() - || DesktopModeStatus.isActive(mPlayer.getContext()))) { - return this; + if (mRecentsHandler != null) { + if (mSplitHandler.isSplitScreenVisible()) { + return this; + } else if (mDesktopTasksController != null + // Check on the default display. Recents/gesture nav is only available there + && mDesktopTasksController.getVisibleTaskCount(DEFAULT_DISPLAY) > 0) { + return this; + } } return null; } @@ -259,7 +260,7 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, MixedTransition.TYPE_RECENTS_DURING_SPLIT, transition); mixed.mLeftoversHandler = mRecentsHandler; mActiveTransitions.add(mixed); - } else if (DesktopModeStatus.isActive(mPlayer.getContext())) { + } else if (DesktopModeStatus.isEnabled()) { ProtoLog.v(ShellProtoLogGroup.WM_SHELL_TRANSITIONS, " Got a recents request while " + "desktop mode is active, so treat it as Mixed."); final MixedTransition mixed = new MixedTransition( @@ -666,12 +667,6 @@ public class DefaultMixedHandler implements Transitions.TransitionHandler, if (!consumed) { return false; } - //Sync desktop mode state (proto 1) - if (mDesktopModeController != null) { - mDesktopModeController.syncSurfaceState(info, finishTransaction); - return true; - } - //Sync desktop mode state (proto 2) if (mDesktopTasksController != null) { mDesktopTasksController.syncSurfaceState(info, finishTransaction); return true; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java index bbf67a6155d7a3d12cd6b067623789e33ac3d508..a90edf20f94eb2ab3bec2c98c8e7ad82f2757646 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/RemoteTransitionHandler.java @@ -137,7 +137,6 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler { }); } }; - Transitions.setRunningRemoteTransitionDelegate(remote.getAppThread()); try { // If the remote is actually in the same process, then make a copy of parameters since // remote impls assume that they have to clean-up native references. @@ -149,6 +148,7 @@ public class RemoteTransitionHandler implements Transitions.TransitionHandler { remote.getRemoteTransition().startAnimation(transition, remoteInfo, remoteStartT, cb); // assume that remote will apply the start transaction. startTransaction.clear(); + Transitions.setRunningRemoteTransitionDelegate(remote.getAppThread()); } catch (RemoteException e) { Log.e(Transitions.TAG, "Error running remote transition.", e); unhandleDeath(remote.asBinder(), finishCallback); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java index b4d0a31dc8c1845455c331bf96f0e7b8014310b6..c74b3f30e52dd94dd1927db467bce894837fbc8b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/transition/Transitions.java @@ -21,6 +21,7 @@ import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.view.WindowManager.TRANSIT_CHANGE; import static android.view.WindowManager.TRANSIT_CLOSE; import static android.view.WindowManager.TRANSIT_FIRST_CUSTOM; +import static android.view.WindowManager.TRANSIT_FLAG_KEYGUARD_OCCLUDING; import static android.view.WindowManager.TRANSIT_KEYGUARD_OCCLUDE; import static android.view.WindowManager.TRANSIT_OPEN; import static android.view.WindowManager.TRANSIT_SLEEP; @@ -1104,7 +1105,9 @@ public class Transitions implements RemoteCallable, } } } - if (request.getType() == TRANSIT_KEYGUARD_OCCLUDE && request.getTriggerTask() != null + final boolean isOccludingKeyguard = request.getType() == TRANSIT_KEYGUARD_OCCLUDE + || ((request.getFlags() & TRANSIT_FLAG_KEYGUARD_OCCLUDING) != 0); + if (isOccludingKeyguard && request.getTriggerTask() != null && request.getTriggerTask().getWindowingMode() == WINDOWING_MODE_FREEFORM) { // This freeform task is on top of keyguard, so its windowing mode should be changed to // fullscreen. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/ShellUnfoldProgressProvider.java b/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/ShellUnfoldProgressProvider.java index 367676f54aba6fbbffb89b1971255db7213d0fb3..f7a060f0638bc0bff43c0d3c50fe44a00321b112 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/ShellUnfoldProgressProvider.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/ShellUnfoldProgressProvider.java @@ -46,5 +46,7 @@ public interface ShellUnfoldProgressProvider { default void onStateChangeProgress(@FloatRange(from = 0.0, to = 1.0) float progress) {} default void onStateChangeFinished() {} + + default void onFoldStateChanged(boolean isFolded) {} } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java index 2eb6e71456db54e5e21c5d03b97c030daf49a759..68b5a81f8d7bd71fce2b3732e3ec0416dfa7267f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/unfold/UnfoldTransitionHandler.java @@ -63,6 +63,7 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene @Nullable private IBinder mTransition; + private boolean mAnimationFinished = false; private final List mAnimators = new ArrayList<>(); public UnfoldTransitionHandler(ShellInit shellInit, @@ -132,6 +133,13 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene startTransaction.apply(); mFinishCallback = finishCallback; + + // Shell transition started when unfold animation has already finished, + // finish shell transition immediately + if (mAnimationFinished) { + finishTransitionIfNeeded(); + } + return true; } @@ -161,17 +169,8 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene @Override public void onStateChangeFinished() { - if (mFinishCallback == null) return; - - for (int i = 0; i < mAnimators.size(); i++) { - final UnfoldTaskAnimator animator = mAnimators.get(i); - animator.clearTasks(); - animator.stop(); - } - - mFinishCallback.onTransitionFinished(null); - mFinishCallback = null; - mTransition = null; + mAnimationFinished = true; + finishTransitionIfNeeded(); } @Override @@ -218,4 +217,25 @@ public class UnfoldTransitionHandler implements TransitionHandler, UnfoldListene public boolean willHandleTransition() { return mTransition != null; } + + @Override + public void onFoldStateChanged(boolean isFolded) { + if (isFolded) { + mAnimationFinished = false; + } + } + + private void finishTransitionIfNeeded() { + if (mFinishCallback == null) return; + + for (int i = 0; i < mAnimators.size(); i++) { + final UnfoldTaskAnimator animator = mAnimators.get(i); + animator.clearTasks(); + animator.stop(); + } + + mFinishCallback.onTransitionFinished(null); + mFinishCallback = null; + mTransition = null; + } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/util/SplitBounds.java b/libs/WindowManager/Shell/src/com/android/wm/shell/util/SplitBounds.java index f209521b1da494534af96bfdd45ec6af2e8a109c..0edcff45f648bc1d1d4fed91a6caf1cdc0a9daf4 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/util/SplitBounds.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/util/SplitBounds.java @@ -26,6 +26,8 @@ import java.util.Objects; * tasks/leashes/etc in Launcher */ public class SplitBounds implements Parcelable { + public static final String KEY_EXTRA_SPLIT_BOUNDS = "key_SplitBounds"; + public final Rect leftTopBounds; public final Rect rightBottomBounds; /** This rect represents the actual gap between the two apps */ diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java index ce8191067ae9994134c7831487007e3fdea577b1..82fc0f49c143a39dad5aafbcbde9244338834f47 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/CaptionWindowDecoration.java @@ -18,6 +18,7 @@ package com.android.wm.shell.windowdecor; import android.app.ActivityManager.RunningTaskInfo; import android.app.WindowConfiguration; +import android.app.WindowConfiguration.WindowingMode; import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Color; @@ -64,7 +65,8 @@ public class CaptionWindowDecoration extends WindowDecoration mDesktopModeController; private final Optional mDesktopTasksController; + private final RecentsTransitionHandler mRecentsTransitionHandler; private boolean mTransitionDragActive; private SparseArray mEventReceiversByDisplay = new SparseArray<>(); - private final TaskCornersListener mCornersListener = new TaskCornersListenerImpl(); + private final ExclusionRegionListener mExclusionRegionListener = + new ExclusionRegionListenerImpl(); private final SparseArray mWindowDecorByTaskId = new SparseArray<>(); @@ -118,7 +125,9 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { private MoveToDesktopAnimator mMoveToDesktopAnimator; private final Rect mDragToDesktopAnimationStartBounds = new Rect(); - private final DesktopModeKeyguardChangeListener mDesktopModeKeyguardChangeListener; + private final DesktopModeKeyguardChangeListener mDesktopModeKeyguardChangeListener = + new DesktopModeKeyguardChangeListener(); + private final RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer; public DesktopModeWindowDecorViewModel( Context context, @@ -130,8 +139,9 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { ShellController shellController, SyncTransactionQueue syncQueue, Transitions transitions, - Optional desktopModeController, - Optional desktopTasksController + Optional desktopTasksController, + RecentsTransitionHandler recentsTransitionHandler, + RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer ) { this( context, @@ -143,12 +153,12 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { shellController, syncQueue, transitions, - desktopModeController, desktopTasksController, + recentsTransitionHandler, new DesktopModeWindowDecoration.Factory(), new InputMonitorFactory(), SurfaceControl.Transaction::new, - new DesktopModeKeyguardChangeListener()); + rootTaskDisplayAreaOrganizer); } @VisibleForTesting @@ -162,12 +172,12 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { ShellController shellController, SyncTransactionQueue syncQueue, Transitions transitions, - Optional desktopModeController, Optional desktopTasksController, + RecentsTransitionHandler recentsTransitionHandler, DesktopModeWindowDecoration.Factory desktopModeWindowDecorFactory, InputMonitorFactory inputMonitorFactory, Supplier transactionFactory, - DesktopModeKeyguardChangeListener desktopModeKeyguardChangeListener) { + RootTaskDisplayAreaOrganizer rootTaskDisplayAreaOrganizer) { mContext = context; mMainHandler = mainHandler; mMainChoreographer = mainChoreographer; @@ -177,19 +187,25 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mDisplayController = displayController; mSyncQueue = syncQueue; mTransitions = transitions; - mDesktopModeController = desktopModeController; mDesktopTasksController = desktopTasksController; + mRecentsTransitionHandler = recentsTransitionHandler; mDesktopModeWindowDecorFactory = desktopModeWindowDecorFactory; mInputMonitorFactory = inputMonitorFactory; mTransactionFactory = transactionFactory; - mDesktopModeKeyguardChangeListener = desktopModeKeyguardChangeListener; + mRootTaskDisplayAreaOrganizer = rootTaskDisplayAreaOrganizer; shellInit.addInitCallback(this::onInit, this); } private void onInit() { mShellController.addKeyguardChangeListener(mDesktopModeKeyguardChangeListener); + mRecentsTransitionHandler.addTransitionStateListener(new RecentsTransitionStateListener() { + @Override + public void onTransitionStarted(IBinder transition) { + onRecentsTransitionStarted(transition); + } + }); } @Override @@ -200,6 +216,18 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { @Override public void setSplitScreenController(SplitScreenController splitScreenController) { mSplitScreenController = splitScreenController; + mSplitScreenController.registerSplitScreenListener(new SplitScreen.SplitScreenListener() { + @Override + public void onTaskStageChanged(int taskId, int stage, boolean visible) { + if (visible) { + DesktopModeWindowDecoration decor = mWindowDecorByTaskId.get(taskId); + if (decor != null && DesktopModeStatus.isEnabled() + && decor.mTaskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM) { + mDesktopTasksController.ifPresent(c -> c.moveToSplit(decor.mTaskInfo)); + } + } + } + }); } @Override @@ -303,8 +331,19 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } } + private void onRecentsTransitionStarted(IBinder transition) { + // Block relayout on window decorations originating from #onTaskInfoChanges until the + // animation completes to avoid interfering with the transition animation. + for (int i = 0; i < mWindowDecorByTaskId.size(); i++) { + final DesktopModeWindowDecoration decor = mWindowDecorByTaskId.valueAt(i); + decor.incrementRelayoutBlock(); + decor.addTransitionPausingRelayout(transition); + } + } + private class DesktopModeTouchEventListener extends GestureDetector.SimpleOnGestureListener - implements View.OnClickListener, View.OnTouchListener, DragDetector.MotionEventHandler { + implements View.OnClickListener, View.OnTouchListener, View.OnLongClickListener, + DragDetector.MotionEventHandler{ private final int mTaskId; private final WindowContainerToken mTaskToken; @@ -332,18 +371,15 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { final int id = v.getId(); if (id == R.id.close_window || id == R.id.close_button) { mTaskOperations.closeTask(mTaskToken); - if (mSplitScreenController != null - && mSplitScreenController.isSplitScreenVisible()) { - int remainingTaskPosition = mTaskId == mSplitScreenController - .getTaskInfo(SPLIT_POSITION_TOP_OR_LEFT).taskId - ? SPLIT_POSITION_BOTTOM_OR_RIGHT : SPLIT_POSITION_TOP_OR_LEFT; - ActivityManager.RunningTaskInfo remainingTask = mSplitScreenController - .getTaskInfo(remainingTaskPosition); + if (isTaskInSplitScreen(mTaskId)) { + RunningTaskInfo remainingTask = getOtherSplitTask(mTaskId); mSplitScreenController.moveTaskToFullscreen(remainingTask.taskId); } + decoration.closeMaximizeMenu(); } else if (id == R.id.back_button) { mTaskOperations.injectBackKey(); } else if (id == R.id.caption_handle || id == R.id.open_menu_button) { + decoration.closeMaximizeMenu(); if (!decoration.isHandleMenuActive()) { moveTaskToFront(mTaskOrganizer.getRunningTaskInfo(mTaskId)); decoration.createHandleMenu(); @@ -351,7 +387,6 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { decoration.closeHandleMenu(); } } else if (id == R.id.desktop_button) { - mDesktopModeController.ifPresent(c -> c.setDesktopModeActive(true)); if (mDesktopTasksController.isPresent()) { final WindowContainerTransaction wct = new WindowContainerTransaction(); // App sometimes draws before the insets from WindowDecoration#relayout have @@ -359,10 +394,10 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mWindowDecorByTaskId.get(mTaskId).addCaptionInset(wct); decoration.incrementRelayoutBlock(); mDesktopTasksController.get().moveToDesktop(decoration, mTaskId, wct); + closeOtherSplitTask(mTaskId); } decoration.closeHandleMenu(); } else if (id == R.id.fullscreen_button) { - mDesktopModeController.ifPresent(c -> c.setDesktopModeActive(false)); mDesktopTasksController.ifPresent(c -> c.moveToFullscreen(mTaskId)); decoration.closeHandleMenu(); } else if (id == R.id.split_screen_button) { @@ -377,13 +412,35 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { // TODO(b/278084491): dev option to enable display switching // remove when select is implemented mDesktopTasksController.ifPresent(c -> c.moveToNextDisplay(mTaskId)); - decoration.closeHandleMenu(); } } else if (id == R.id.maximize_window) { + moveTaskToFront(decoration.mTaskInfo); + if (decoration.isMaximizeMenuActive()) { + decoration.closeMaximizeMenu(); + return; + } final RunningTaskInfo taskInfo = decoration.mTaskInfo; mDesktopTasksController.ifPresent(c -> c.toggleDesktopTaskSize( taskInfo, decoration)); decoration.closeHandleMenu(); + } else if (id == R.id.maximize_menu_maximize_button) { + final RunningTaskInfo taskInfo = decoration.mTaskInfo; + mDesktopTasksController.ifPresent(c -> c.toggleDesktopTaskSize( + taskInfo, mWindowDecorByTaskId.get(taskInfo.taskId))); + decoration.closeHandleMenu(); + decoration.closeMaximizeMenu(); + } else if (id == R.id.maximize_menu_snap_left_button) { + final RunningTaskInfo taskInfo = decoration.mTaskInfo; + mDesktopTasksController.ifPresent(c -> c.snapToHalfScreen( + taskInfo, mWindowDecorByTaskId.get(taskInfo.taskId), SnapPosition.LEFT)); + decoration.closeHandleMenu(); + decoration.closeMaximizeMenu(); + } else if (id == R.id.maximize_menu_snap_right_button) { + final RunningTaskInfo taskInfo = decoration.mTaskInfo; + mDesktopTasksController.ifPresent(c -> c.snapToHalfScreen( + taskInfo, mWindowDecorByTaskId.get(taskInfo.taskId), SnapPosition.RIGHT)); + decoration.closeHandleMenu(); + decoration.closeMaximizeMenu(); } } @@ -398,10 +455,26 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { return mDragDetector.onMotionEvent(v, e); } + @Override + public boolean onLongClick(View v) { + final int id = v.getId(); + if (id == R.id.maximize_window) { + final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(mTaskId); + moveTaskToFront(decoration.mTaskInfo); + if (decoration.isMaximizeMenuActive()) { + decoration.closeMaximizeMenu(); + } else { + decoration.closeHandleMenu(); + decoration.createMaximizeMenu(); + } + return true; + } + return false; + } + private void moveTaskToFront(RunningTaskInfo taskInfo) { if (!taskInfo.isFocused) { mDesktopTasksController.ifPresent(c -> c.moveTaskToFront(taskInfo)); - mDesktopModeController.ifPresent(c -> c.moveTaskToFront(taskInfo)); } } @@ -412,15 +485,10 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { @Override public boolean handleMotionEvent(@Nullable View v, MotionEvent e) { final RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); - if (DesktopModeStatus.isProto2Enabled() + if (DesktopModeStatus.isEnabled() && taskInfo.getWindowingMode() == WINDOWING_MODE_FULLSCREEN) { return false; } - if (DesktopModeStatus.isProto1Enabled() && mDesktopModeController.isPresent() - && mDesktopModeController.get().getDisplayAreaWindowingMode(taskInfo.displayId) - == WINDOWING_MODE_FULLSCREEN) { - return false; - } if (mGestureDetector.onTouchEvent(e)) { return true; } @@ -444,7 +512,9 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { final Rect newTaskBounds = mDragPositioningCallback.onDragPositioningMove( e.getRawX(dragPointerIdx), e.getRawY(dragPointerIdx)); mDesktopTasksController.ifPresent(c -> c.onDragPositioningMove(taskInfo, - decoration.mTaskSurface, newTaskBounds.top)); + decoration.mTaskSurface, + new PointF(e.getRawX(dragPointerIdx), e.getRawY(dragPointerIdx)), + newTaskBounds)); mIsDragging = true; mShouldClick = false; return true; @@ -473,7 +543,9 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { final Rect newTaskBounds = mDragPositioningCallback.onDragPositioningEnd( e.getRawX(dragPointerIdx), e.getRawY(dragPointerIdx)); mDesktopTasksController.ifPresent(c -> c.onDragPositioningEnd(taskInfo, - position, newTaskBounds.top, mWindowDecorByTaskId.get(mTaskId))); + position, + new PointF(e.getRawX(dragPointerIdx), e.getRawY(dragPointerIdx)), + newTaskBounds, mWindowDecorByTaskId.get(mTaskId))); mIsDragging = false; return true; } @@ -566,7 +638,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { */ private void handleReceivedMotionEvent(MotionEvent ev, InputMonitor inputMonitor) { final DesktopModeWindowDecoration relevantDecor = getRelevantWindowDecor(ev); - if (DesktopModeStatus.isProto2Enabled()) { + if (DesktopModeStatus.isEnabled()) { if (relevantDecor == null || relevantDecor.mTaskInfo.getWindowingMode() != WINDOWING_MODE_FREEFORM || mTransitionDragActive) { @@ -575,14 +647,10 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } handleEventOutsideFocusedCaption(ev, relevantDecor); // Prevent status bar from reacting to a caption drag. - if (DesktopModeStatus.isProto2Enabled()) { + if (DesktopModeStatus.isEnabled()) { if (mTransitionDragActive) { inputMonitor.pilferPointers(); } - } else if (DesktopModeStatus.isProto1Enabled()) { - if (mTransitionDragActive && !DesktopModeStatus.isActive(mContext)) { - inputMonitor.pilferPointers(); - } } } @@ -615,7 +683,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { mDragToDesktopAnimationStartBounds.set( relevantDecor.mTaskInfo.configuration.windowConfiguration.getBounds()); boolean dragFromStatusBarAllowed = false; - if (DesktopModeStatus.isProto2Enabled()) { + if (DesktopModeStatus.isEnabled()) { // In proto2 any full screen or multi-window task can be dragged to // freeform. final int windowingMode = relevantDecor.mTaskInfo.getWindowingMode(); @@ -640,10 +708,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { final int statusBarHeight = getStatusBarHeight( relevantDecor.mTaskInfo.displayId); if (ev.getY() > 2 * statusBarHeight) { - if (DesktopModeStatus.isProto2Enabled()) { + if (DesktopModeStatus.isEnabled()) { animateToDesktop(relevantDecor, ev); - } else if (DesktopModeStatus.isProto1Enabled()) { - mDesktopModeController.ifPresent(c -> c.setDesktopModeActive(true)); } mMoveToDesktopAnimator = null; return; @@ -673,6 +739,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { relevantDecor.mTaskInfo.displayId); if (ev.getY() > statusBarHeight) { if (mMoveToDesktopAnimator == null) { + closeOtherSplitTask(relevantDecor.mTaskInfo.taskId); mMoveToDesktopAnimator = new MoveToDesktopAnimator( mDragToDesktopAnimationStartBounds, relevantDecor.mTaskInfo, relevantDecor.mTaskSurface); @@ -763,7 +830,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { private DesktopModeWindowDecoration getRelevantWindowDecor(MotionEvent ev) { if (mSplitScreenController != null && mSplitScreenController.isSplitScreenVisible()) { // We can't look at focused task here as only one task will have focus. - return getSplitScreenDecor(ev); + DesktopModeWindowDecoration splitTaskDecor = getSplitScreenDecor(ev); + return splitTaskDecor == null ? getFocusedDecor() : splitTaskDecor; } else { return getFocusedDecor(); } @@ -834,7 +902,7 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { && taskInfo.isFocused) { return false; } - return DesktopModeStatus.isProto2Enabled() + return DesktopModeStatus.isEnabled() && taskInfo.getWindowingMode() != WINDOWING_MODE_PINNED && taskInfo.getActivityType() == ACTIVITY_TYPE_STANDARD && !taskInfo.configuration.windowConfiguration.isAlwaysOnTop() @@ -861,7 +929,8 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { taskSurface, mMainHandler, mMainChoreographer, - mSyncQueue); + mSyncQueue, + mRootTaskDisplayAreaOrganizer); mWindowDecorByTaskId.put(taskInfo.taskId, windowDecoration); windowDecoration.createResizeVeil(); @@ -870,8 +939,9 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { final DesktopModeTouchEventListener touchEventListener = new DesktopModeTouchEventListener(taskInfo, dragPositioningCallback); - windowDecoration.setCaptionListeners(touchEventListener, touchEventListener); - windowDecoration.setCornersListener(mCornersListener); + windowDecoration.setCaptionListeners( + touchEventListener, touchEventListener, touchEventListener); + windowDecoration.setExclusionRegionListener(mExclusionRegionListener); windowDecoration.setDragPositioningCallback(dragPositioningCallback); windowDecoration.setDragDetector(touchEventListener.mDragDetector); windowDecoration.relayout(taskInfo, startT, finishT, @@ -893,11 +963,31 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } } + private RunningTaskInfo getOtherSplitTask(int taskId) { + @SplitPosition int remainingTaskPosition = mSplitScreenController + .getSplitPosition(taskId) == SPLIT_POSITION_BOTTOM_OR_RIGHT + ? SPLIT_POSITION_TOP_OR_LEFT : SPLIT_POSITION_BOTTOM_OR_RIGHT; + return mSplitScreenController.getTaskInfo(remainingTaskPosition); + } + + private void closeOtherSplitTask(int taskId) { + if (isTaskInSplitScreen(taskId)) { + mTaskOperations.closeTask(getOtherSplitTask(taskId).token); + } + } + + private boolean isTaskInSplitScreen(int taskId) { + return mSplitScreenController != null + && mSplitScreenController.isTaskInSplitScreen(taskId); + } + private class DragStartListenerImpl implements DragPositioningCallbackUtility.DragStartListener { @Override public void onDragStart(int taskId) { - mWindowDecorByTaskId.get(taskId).closeHandleMenu(); + final DesktopModeWindowDecoration decoration = mWindowDecorByTaskId.get(taskId); + decoration.closeHandleMenu(); + decoration.closeMaximizeMenu(); } } @@ -907,19 +997,17 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { } } - private class TaskCornersListenerImpl - implements DesktopModeWindowDecoration.TaskCornersListener { + private class ExclusionRegionListenerImpl + implements ExclusionRegionListener { @Override - public void onTaskCornersChanged(int taskId, Region corner) { - mDesktopModeController.ifPresent(d -> d.onTaskCornersChanged(taskId, corner)); - mDesktopTasksController.ifPresent(d -> d.onTaskCornersChanged(taskId, corner)); + public void onExclusionRegionChanged(int taskId, Region region) { + mDesktopTasksController.ifPresent(d -> d.onExclusionRegionChanged(taskId, region)); } @Override - public void onTaskCornersRemoved(int taskId) { - mDesktopModeController.ifPresent(d -> d.removeCornersForTask(taskId)); - mDesktopTasksController.ifPresent(d -> d.removeCornersForTask(taskId)); + public void onExclusionRegionDismissed(int taskId) { + mDesktopTasksController.ifPresent(d -> d.removeExclusionRegionForTask(taskId)); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java index a359395711e33b3a87f2d58153633ef8ab0d4b5f..84ec6b389c4aa23d872e87984d9c1e60f8680aeb 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecoration.java @@ -17,12 +17,15 @@ package com.android.wm.shell.windowdecor; import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import android.app.ActivityManager; +import android.app.WindowConfiguration.WindowingMode; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.res.Configuration; +import android.content.res.Resources; import android.graphics.Point; import android.graphics.PointF; import android.graphics.Rect; @@ -36,13 +39,16 @@ import android.view.MotionEvent; import android.view.SurfaceControl; import android.view.View; import android.view.ViewConfiguration; +import android.widget.ImageButton; import android.window.WindowContainerTransaction; import com.android.internal.policy.ScreenDecorationsUtils; import com.android.launcher3.icons.IconProvider; import com.android.wm.shell.R; +import com.android.wm.shell.RootTaskDisplayAreaOrganizer; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.common.DisplayController; +import com.android.wm.shell.common.DisplayLayout; import com.android.wm.shell.common.SyncTransactionQueue; import com.android.wm.shell.desktopmode.DesktopModeStatus; import com.android.wm.shell.desktopmode.DesktopTasksController; @@ -52,6 +58,7 @@ import com.android.wm.shell.windowdecor.viewholder.DesktopModeWindowDecorationVi import java.util.HashSet; import java.util.Set; +import java.util.function.Supplier; /** * Defines visuals and behaviors of a window decoration of a caption bar and shadows. It works with @@ -69,6 +76,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration mTransitionsPausingRelayout = new HashSet<>(); private int mRelayoutBlock; + private final RootTaskDisplayAreaOrganizer mRootTaskDisplayAreaOrganizer; DesktopModeWindowDecoration( Context context, @@ -96,38 +107,55 @@ public class DesktopModeWindowDecoration extends WindowDecoration surfaceControlBuilderSupplier, + Supplier surfaceControlTransactionSupplier, + Supplier windowContainerTransactionSupplier, + SurfaceControlViewHostFactory surfaceControlViewHostFactory) { + super(context, displayController, taskOrganizer, taskInfo, taskSurface, windowDecorConfig, + surfaceControlBuilderSupplier, surfaceControlTransactionSupplier, + windowContainerTransactionSupplier, surfaceControlViewHostFactory); mHandler = handler; mChoreographer = choreographer; mSyncQueue = syncQueue; + mRootTaskDisplayAreaOrganizer = rootTaskDisplayAreaOrganizer; loadAppInfo(); } - @Override - protected Configuration getConfigurationWithOverrides( - ActivityManager.RunningTaskInfo taskInfo) { - Configuration configuration = taskInfo.getConfiguration(); - if (DesktopTasksController.isDesktopDensityOverrideSet()) { - // Density is overridden for desktop tasks. Keep system density for window decoration. - configuration.densityDpi = mContext.getResources().getConfiguration().densityDpi; - } - return configuration; - } - void setCaptionListeners( View.OnClickListener onCaptionButtonClickListener, - View.OnTouchListener onCaptionTouchListener) { + View.OnTouchListener onCaptionTouchListener, + View.OnLongClickListener onLongClickListener) { mOnCaptionButtonClickListener = onCaptionButtonClickListener; mOnCaptionTouchListener = onCaptionTouchListener; + mOnCaptionLongClickListener = onLongClickListener; } - void setCornersListener(TaskCornersListener cornersListener) { - mCornersListener = cornersListener; + void setExclusionRegionListener(ExclusionRegionListener exclusionRegionListener) { + mExclusionRegionListener = exclusionRegionListener; } void setDragPositioningCallback(DragPositioningCallback dragPositioningCallback) { @@ -148,7 +176,7 @@ public class DesktopModeWindowDecoration extends WindowDecoration displayWidth) { + menuLeft = (displayWidth - menuWidth); + } + if (menuBottom > displayHeight) { + menuTop = (displayHeight - menuHeight); + } + + return new PointF(menuLeft, menuTop); } boolean isHandleMenuActive() { @@ -334,6 +427,29 @@ public class DesktopModeWindowDecoration extends WindowDecoration disallowedAreaForEndBoundsHeight; + } + /** * Updates repositionTaskBounds to the final bounds of the task after the drag is finished. If * the bounds are outside of the stable bounds, they are shifted to place task at the top of the diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java index e0ee252425505104f12ab63352043c3a4f0de148..389db62ef9d27c0cd659022ef32416c0249d71b8 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/FluidResizeTaskPositioner.java @@ -125,7 +125,9 @@ class FluidResizeTaskPositioner implements DragPositioningCallback { } mTaskOrganizer.applyTransaction(wct); } else if (mCtrlType == CTRL_TYPE_UNDEFINED - && y > mDisallowedAreaForEndBoundsHeight) { + && DragPositioningCallbackUtility.isBelowDisallowedArea( + mDisallowedAreaForEndBoundsHeight, mTaskBoundsAtDragStart, mRepositionStartPoint, + y)) { final WindowContainerTransaction wct = new WindowContainerTransaction(); DragPositioningCallbackUtility.onDragEnd(mRepositionTaskBounds, mTaskBoundsAtDragStart, mStableBounds, mRepositionStartPoint, x, y); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java index ac4a597c15d178704a0db8114cdcfcfaf9e3e4dd..f82b212c344ca198e999df7313c28aee4003d49d 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/HandleMenu.java @@ -26,7 +26,10 @@ import android.annotation.Nullable; import android.app.ActivityManager.RunningTaskInfo; import android.content.Context; import android.content.res.ColorStateList; +import android.content.res.Configuration; import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.Color; import android.graphics.PointF; import android.graphics.drawable.Drawable; import android.view.MotionEvent; @@ -167,10 +170,9 @@ class HandleMenu { desktopBtn.setOnClickListener(mOnClickListener); // The button corresponding to the windowing mode that the task is currently in uses a // different color than the others. - final ColorStateList activeColorStateList = ColorStateList.valueOf( - mContext.getColor(R.color.desktop_mode_caption_menu_buttons_color_active)); - final ColorStateList inActiveColorStateList = ColorStateList.valueOf( - mContext.getColor(R.color.desktop_mode_caption_menu_buttons_color_inactive)); + final int[] iconColors = getWindowingIconColor(); + final ColorStateList inActiveColorStateList = ColorStateList.valueOf(iconColors[0]); + final ColorStateList activeColorStateList = ColorStateList.valueOf(iconColors[1]); fullscreenBtn.setImageTintList( mTaskInfo.getWindowingMode() == WINDOWING_MODE_FULLSCREEN ? activeColorStateList : inActiveColorStateList); @@ -186,11 +188,33 @@ class HandleMenu { // More Actions pill setup. final View moreActionsPillView = mMoreActionsPill.mWindowViewHost.getView(); final Button closeBtn = moreActionsPillView.findViewById(R.id.close_button); - closeBtn.setOnClickListener(mOnClickListener); + if (shouldShowCloseButton()) { + closeBtn.setVisibility(View.GONE); + } else { + closeBtn.setVisibility(View.VISIBLE); + closeBtn.setOnClickListener(mOnClickListener); + } final Button selectBtn = moreActionsPillView.findViewById(R.id.select_button); selectBtn.setOnClickListener(mOnClickListener); } + /** + * Returns array of windowing icon color based on current UI theme. First element of the + * array is for inactive icons and the second is for active icons. + */ + private int[] getWindowingIconColor() { + final int mode = mContext.getResources().getConfiguration().uiMode + & Configuration.UI_MODE_NIGHT_MASK; + final boolean isNightMode = (mode == Configuration.UI_MODE_NIGHT_YES); + final TypedArray typedArray = mContext.obtainStyledAttributes(new int[]{ + com.android.internal.R.attr.materialColorOnSurface, + com.android.internal.R.attr.materialColorPrimary}); + final int inActiveColor = typedArray.getColor(0, isNightMode ? Color.WHITE : Color.BLACK); + final int activeColor = typedArray.getColor(1, isNightMode ? Color.WHITE : Color.BLACK); + typedArray.recycle(); + return new int[] {inActiveColor, activeColor}; + } + /** * Updates the handle menu pills' position variables to reflect their next positions */ @@ -228,7 +252,6 @@ class HandleMenu { /** * Update pill layout, in case task changes have caused positioning to change. - * @param t */ void relayout(SurfaceControl.Transaction t) { if (mAppInfoPill != null) { @@ -236,7 +259,7 @@ class HandleMenu { t.setPosition(mAppInfoPill.mWindowSurface, mAppInfoPillPosition.x, mAppInfoPillPosition.y); // Only show windowing buttons in proto2. Proto1 uses a system-level mode only. - final boolean shouldShowWindowingPill = DesktopModeStatus.isProto2Enabled(); + final boolean shouldShowWindowingPill = DesktopModeStatus.isEnabled(); if (shouldShowWindowingPill) { t.setPosition(mWindowingPill.mWindowSurface, mWindowingPillPosition.x, mWindowingPillPosition.y); @@ -245,10 +268,12 @@ class HandleMenu { mMoreActionsPillPosition.x, mMoreActionsPillPosition.y); } } + /** * Check a passed MotionEvent if a click has occurred on any button on this caption * Note this should only be called when a regular onClick is not possible * (i.e. the button was clicked through status bar layer) + * * @param ev the MotionEvent to compare against. */ void checkClickEvent(MotionEvent ev) { @@ -267,6 +292,7 @@ class HandleMenu { * A valid menu input is one of the following: * An input that happens in the menu views. * Any input before the views have been laid out. + * * @param inputPoint the input to compare against. */ boolean isValidMenuInput(PointF inputPoint) { @@ -297,7 +323,6 @@ class HandleMenu { /** * Check if the views for handle menu can be seen. - * @return */ private boolean viewsLaidOut() { return mAppInfoPill.mWindowViewHost.getView().isLaidOut(); @@ -318,8 +343,11 @@ class HandleMenu { R.dimen.desktop_mode_handle_menu_app_info_pill_height); mWindowingPillHeight = loadDimensionPixelSize(resources, R.dimen.desktop_mode_handle_menu_windowing_pill_height); - mMoreActionsPillHeight = loadDimensionPixelSize(resources, - R.dimen.desktop_mode_handle_menu_more_actions_pill_height); + mMoreActionsPillHeight = shouldShowCloseButton() + ? loadDimensionPixelSize(resources, + R.dimen.desktop_mode_handle_menu_more_actions_pill_freeform_height) + : loadDimensionPixelSize(resources, + R.dimen.desktop_mode_handle_menu_more_actions_pill_height); mShadowRadius = loadDimensionPixelSize(resources, R.dimen.desktop_mode_handle_menu_shadow_radius); mCornerRadius = loadDimensionPixelSize(resources, @@ -333,6 +361,10 @@ class HandleMenu { return resources.getDimensionPixelSize(resourceId); } + private boolean shouldShowCloseButton() { + return mTaskInfo.getWindowingMode() == WINDOWING_MODE_FREEFORM; + } + void close() { mAppInfoPill.releaseView(); mAppInfoPill = null; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt new file mode 100644 index 0000000000000000000000000000000000000000..050d1e9df39241f93126d3d3e0fd4c82690bf2de --- /dev/null +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/MaximizeMenu.kt @@ -0,0 +1,154 @@ +/* + * Copyright (C) 2023 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.wm.shell.windowdecor + +import android.app.ActivityManager.RunningTaskInfo +import android.content.Context +import android.content.res.Resources +import android.graphics.PixelFormat +import android.graphics.PointF +import android.view.LayoutInflater +import android.view.SurfaceControl +import android.view.SurfaceControl.Transaction +import android.view.SurfaceControlViewHost +import android.view.View.OnClickListener +import android.view.WindowManager +import android.view.WindowlessWindowManager +import android.widget.Button +import android.window.TaskConstants +import com.android.wm.shell.R +import com.android.wm.shell.RootTaskDisplayAreaOrganizer +import com.android.wm.shell.common.DisplayController +import com.android.wm.shell.common.SyncTransactionQueue +import com.android.wm.shell.windowdecor.WindowDecoration.AdditionalWindow +import java.util.function.Supplier + + +/** + * Menu that appears when user long clicks the maximize button. Gives the user the option to + * maximize the task or snap the task to the right or left half of the screen. + */ +class MaximizeMenu( + private val syncQueue: SyncTransactionQueue, + private val rootTdaOrganizer: RootTaskDisplayAreaOrganizer, + private val displayController: DisplayController, + private val taskInfo: RunningTaskInfo, + private val onClickListener: OnClickListener, + private val decorWindowContext: Context, + private val menuPosition: PointF, + private val transactionSupplier: Supplier = Supplier { Transaction() } +) { + private var maximizeMenu: AdditionalWindow? = null + private lateinit var viewHost: SurfaceControlViewHost + private lateinit var leash: SurfaceControl + private val shadowRadius = loadDimensionPixelSize( + R.dimen.desktop_mode_maximize_menu_shadow_radius + ).toFloat() + private val cornerRadius = loadDimensionPixelSize( + R.dimen.desktop_mode_maximize_menu_corner_radius + ).toFloat() + + /** Position the menu relative to the caption's position. */ + fun positionMenu(position: PointF, t: Transaction) { + menuPosition.set(position) + t.setPosition(leash, menuPosition.x, menuPosition.y) + } + + /** Creates and shows the maximize window. */ + fun show() { + if (maximizeMenu != null) return + createMaximizeMenu() + setupMaximizeMenu() + } + + /** Closes the maximize window and releases its view. */ + fun close() { + maximizeMenu?.releaseView() + maximizeMenu = null + } + + /** Create a maximize menu that is attached to the display area. */ + private fun createMaximizeMenu() { + val t = transactionSupplier.get() + val v = LayoutInflater.from(decorWindowContext).inflate( + R.layout.desktop_mode_window_decor_maximize_menu, + null // Root + ) + val builder = SurfaceControl.Builder() + rootTdaOrganizer.attachToDisplayArea(taskInfo.displayId, builder) + leash = builder + .setName("Maximize Menu") + .setContainerLayer() + .build() + val menuWidth = loadDimensionPixelSize(R.dimen.desktop_mode_maximize_menu_width) + val menuHeight = loadDimensionPixelSize(R.dimen.desktop_mode_maximize_menu_height) + val lp = WindowManager.LayoutParams( + menuWidth, + menuHeight, + WindowManager.LayoutParams.TYPE_APPLICATION, + WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, + PixelFormat.TRANSPARENT + ) + lp.title = "Maximize Menu for Task=" + taskInfo.taskId + lp.setTrustedOverlay() + val windowManager = WindowlessWindowManager( + taskInfo.configuration, + leash, + null // HostInputToken + ) + viewHost = SurfaceControlViewHost(decorWindowContext, + displayController.getDisplay(taskInfo.displayId), windowManager, + "MaximizeMenu") + viewHost.setView(v, lp) + + // Bring menu to front when open + t.setLayer(leash, TaskConstants.TASK_CHILD_LAYER_FLOATING_MENU) + .setPosition(leash, menuPosition.x, menuPosition.y) + .setWindowCrop(leash, menuWidth, menuHeight) + .setShadowRadius(leash, shadowRadius) + .setCornerRadius(leash, cornerRadius) + .show(leash) + maximizeMenu = AdditionalWindow(leash, viewHost, transactionSupplier) + + syncQueue.runInSync { transaction -> + transaction.merge(t) + t.close() + } + } + + private fun loadDimensionPixelSize(resourceId: Int): Int { + return if (resourceId == Resources.ID_NULL) { + 0 + } else { + decorWindowContext.resources.getDimensionPixelSize(resourceId) + } + } + + private fun setupMaximizeMenu() { + val maximizeMenuView = maximizeMenu?.mWindowViewHost?.view ?: return + + maximizeMenuView.requireViewById