diff options
291 files changed, 4202 insertions, 8561 deletions
diff --git a/Android.bp b/Android.bp index f11341e254a0..3a5fcfaedd9a 100644 --- a/Android.bp +++ b/Android.bp @@ -25,8 +25,8 @@ // // READ ME: ######################################################## -java_library { - name: "framework", +java_defaults { + name: "framework-defaults", installable: true, srcs: [ @@ -476,6 +476,8 @@ java_library { "media/java/android/media/tv/ITvRemoteServiceInput.aidl", "media/java/android/service/media/IMediaBrowserService.aidl", "media/java/android/service/media/IMediaBrowserServiceCallbacks.aidl", + "telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl", + "telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl", "telecomm/java/com/android/internal/telecom/ICallScreeningAdapter.aidl", "telecomm/java/com/android/internal/telecom/ICallScreeningService.aidl", "telecomm/java/com/android/internal/telecom/IVideoCallback.aidl", @@ -693,12 +695,38 @@ java_library { "libmedia2_jni", ], - javac_shard_size: 150, - dxflags: [ "--core-library", "--multi-dex", ], + +} + +java_library { + name: "framework", + defaults: ["framework-defaults"], + javac_shard_size: 150, +} + +java_library { + name: "framework-annotation-proc", + defaults: ["framework-defaults"], + // Use UsedByApps annotation processor + annotation_processors: ["unsupportedappusage-annotation-processor"], + // b/25860419: annotation processors must be explicitly specified for grok + annotation_processor_classes: [ + "android.processor.unsupportedappusage.UsedByAppsProcessor", + ], +} + +// A host library including just UnsupportedAppUsage.java so that the annotation +// processor can also use this annotation. +java_library_host { + name: "unsupportedappusage-annotation", + srcs: [ + "core/java/android/annotation/IntDef.java", + "core/java/android/annotation/UnsupportedAppUsage.java", + ], } // A temporary build target that is conditionally included on the bootclasspath if @@ -1042,107 +1070,95 @@ framework_docs_args = "-android -manifest $(location core/res/AndroidManifest.xm "-federate SupportLib https://developer.android.com " + "-federationapi SupportLib $(location current/support-api.txt) " -doc_defaults { - name: "api-stubs-default", +framework_docs_only_args = " -android -manifest $(location core/res/AndroidManifest.xml) " + + "-overview $(location core/java/overview.html) " + + // Federate Support Library references against local API file. + "-federate SupportLib https://developer.android.com " + + "-federationapi SupportLib $(location current/support-api.txt) " + +framework_docs_only_libs = [ + "conscrypt", + "bouncycastle", + "voip-common", + "android.test.mock", + "android-support-annotations", + "android-support-compat", + "android-support-core-ui", + "android-support-core-utils", + "android-support-customtabs", + "android-support-design", + "android-support-dynamic-animation", + "android-support-exifinterface", + "android-support-fragment", + "android-support-media-compat", + "android-support-percent", + "android-support-recommendation", + "android-support-transition", + "android-support-tv-provider", + "android-support-v7-cardview", + "android-support-v7-gridlayout", + "android-support-v7-mediarouter", + "android-support-v7-palette", + "android-support-v7-preference", + "android-support-v13", + "android-support-v14-preference", + "android-support-v17-leanback", + "android-support-v17-preference-leanback", + "android-support-wear", + "android-support-vectordrawable", + "android-support-animatedvectordrawable", + "android-support-v7-appcompat", + "android-support-v7-recyclerview", + "android-support-emoji", + "android-support-emoji-appcompat", + "android-support-emoji-bundled", + "android-support-v8-renderscript", + "android-support-multidex", + "android-support-multidex-instrumentation", +] + +metalava_framework_docs_args = "--manifest $(location core/res/AndroidManifest.xml) " + + "--hide-package com.android.okhttp " + + "--hide-package com.android.org.conscrypt --hide-package com.android.server " + + "--hide RequiresPermission " + + "--hide MissingPermission --hide BroadcastBehavior " + + "--hide HiddenSuperclass --hide DeprecationMismatch --hide UnavailableSymbol " + + "--hide SdkConstant --hide HiddenTypeParameter --hide Todo --hide Typo" + +stubs_defaults { + name: "framework-doc-stubs-default", srcs: [ + "test-base/src/**/*.java", ":opt-telephony-srcs", ":opt-net-voip-srcs", ":openjdk_javadoc_files", ":non_openjdk_javadoc_files", ":android_icu4j_src_files_for_docs", + "test-mock/src/**/*.java", + "test-runner/src/**/*.java", ], srcs_lib: "framework", srcs_lib_whitelist_dirs: frameworks_base_subdirs, srcs_lib_whitelist_pkgs: packages_to_document, - libs: [ - "core-oj", - "core-libart", - "conscrypt", - "bouncycastle", - "okhttp", - "ext", - "framework", - "voip-common", - "android.test.mock", - ], + libs: framework_docs_only_libs, local_sourcepaths: frameworks_base_subdirs, - html_dirs: [ - "docs/html", - ], - knowntags: [ - "docs/knowntags.txt", - ":known-oj-tags", + create_doc_stubs: true, + annotations_enabled: true, + api_levels_annotations_enabled: true, + api_levels_annotations_dirs: [ + "sdk-dir", + "api-versions-jars-dir", ], - custom_template: "droiddoc-templates-sdk", - hdf: [ - "dac true", - "sdk.codename O", - "sdk.preview.version 1", - "sdk.version 7.0", - "sdk.rel.id 1", - "sdk.preview 0", + previous_api: ":last-released-public-api", + merge_annotations_dirs: [ + "metalava-manual", + "ojluni-annotated-stubs", ], - resourcesdir: "docs/html/reference/images", - resourcesoutdir: "reference/android/images", - installable: false, } doc_defaults { name: "framework-docs-default", - srcs: [ - "test-base/src/**/*.java", - ":opt-telephony-srcs", - ":opt-net-voip-srcs", - ":openjdk_javadoc_files", - ":non_openjdk_javadoc_files", - ":android_icu4j_src_files_for_docs", - "test-mock/src/**/*.java", - "test-runner/src/**/*.java", - ], - srcs_lib: "framework", - srcs_lib_whitelist_dirs: frameworks_base_subdirs, - srcs_lib_whitelist_pkgs: packages_to_document, - libs: [ - "conscrypt", - "bouncycastle", - "voip-common", - "android.test.mock", - "android-support-annotations", - "android-support-compat", - "android-support-core-ui", - "android-support-core-utils", - "android-support-customtabs", - "android-support-design", - "android-support-dynamic-animation", - "android-support-exifinterface", - "android-support-fragment", - "android-support-media-compat", - "android-support-percent", - "android-support-recommendation", - "android-support-transition", - "android-support-tv-provider", - "android-support-v7-cardview", - "android-support-v7-gridlayout", - "android-support-v7-mediarouter", - "android-support-v7-palette", - "android-support-v7-preference", - "android-support-v13", - "android-support-v14-preference", - "android-support-v17-leanback", - "android-support-v17-preference-leanback", - "android-support-wear", - "android-support-vectordrawable", - "android-support-animatedvectordrawable", - "android-support-v7-appcompat", - "android-support-v7-recyclerview", - "android-support-emoji", - "android-support-emoji-appcompat", - "android-support-emoji-bundled", - "android-support-v8-renderscript", - "android-support-multidex", - "android-support-multidex-instrumentation", - ], - local_sourcepaths: frameworks_base_subdirs, + libs: framework_docs_only_libs, html_dirs: [ "docs/html", ], @@ -1163,23 +1179,13 @@ doc_defaults { ], arg_files: [ "core/res/AndroidManifest.xml", - ":api-version-xml", "core/java/overview.html", ":current-support-api", - "api/current.txt", ], create_stubs: false, } -metalava_framework_docs_args = "--manifest $(location core/res/AndroidManifest.xml) " + - "--hide-package com.android.okhttp " + - "--hide-package com.android.org.conscrypt --hide-package com.android.server " + - "--hide RequiresPermission " + - "--hide MissingPermission --hide BroadcastBehavior " + - "--hide HiddenSuperclass --hide DeprecationMismatch --hide UnavailableSymbol " + - "--hide SdkConstant --hide HiddenTypeParameter --hide Todo --hide Typo" - -doc_defaults { +stubs_defaults { name: "metalava-api-stubs-default", srcs: [ ":opt-telephony-srcs", @@ -1200,34 +1206,57 @@ doc_defaults { "ext", "framework", "voip-common", - "android.test.mock", + "android.test.mock.impl", ], local_sourcepaths: frameworks_base_subdirs, installable: false, - metalava_enabled: true, - metalava_annotations_enabled: true, - metalava_previous_api: ":last-released-public-api", - metalava_merge_annotations_dirs: [ + annotations_enabled: true, + previous_api: ":last-released-public-api", + merge_annotations_dirs: [ "metalava-manual", "ojluni-annotated-stubs", ], } +droidstubs { + name: "framework-doc-stubs", + defaults: ["framework-doc-stubs-default"], + arg_files: [ + "core/res/AndroidManifest.xml", + ], + args: metalava_framework_docs_args, +} + +droidstubs { + name: "framework-doc-system-stubs", + defaults: ["framework-doc-stubs-default"], + arg_files: [ + "core/res/AndroidManifest.xml", + ], + args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi ", +} + droiddoc { name: "doc-comment-check-docs", defaults: ["framework-docs-default"], - args: framework_docs_args + " -referenceonly -parsecomments", + srcs: [ + ":framework-doc-stubs", + ], + args: framework_docs_only_args + " -referenceonly -parsecomments", installable: false, } droiddoc { name: "offline-sdk-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-stubs", + ], hdf: [ "android.whichdoc offline", ], proofread_file: "offline-sdk-docs-proofrerad.txt", - args: framework_docs_args + " -offlinemode -title \"Android SDK\"", + args: framework_docs_only_args + " -offlinemode -title \"Android SDK\"", write_sdk_values: true, static_doc_index_redirect: "docs/docs-preview-index.html", } @@ -1235,11 +1264,14 @@ droiddoc { droiddoc { name: "offline-sdk-referenceonly-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-stubs", + ], hdf: [ "android.whichdoc offline", ], proofread_file: "offline-sdk-referenceonly-docs-proofrerad.txt", - args: framework_docs_args + " -offlinemode -title \"Android SDK\" -referenceonly", + args: framework_docs_only_args + " -offlinemode -title \"Android SDK\" -referenceonly", write_sdk_values: true, static_doc_index_redirect: "docs/docs-documentation-redirect.html", static_doc_properties: "docs/source.properties", @@ -1248,13 +1280,15 @@ droiddoc { droiddoc { name: "offline-system-sdk-referenceonly-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-system-stubs", + ], hdf: [ "android.whichdoc offline", ], proofread_file: "offline-system-sdk-referenceonly-docs-proofrerad.txt", - args: framework_docs_args + " -hide 101 -hide 104 -hide 108" + - " -showAnnotation android.annotation.SystemApi " + - " -offlinemode -title \"Android System SDK\" -referenceonly", + args: framework_docs_only_args + " -hide 101 -hide 104 -hide 108" + + " -offlinemode -title \"Android System SDK\" -referenceonly", write_sdk_values: true, static_doc_index_redirect: "docs/docs-documentation-redirect.html", static_doc_properties: "docs/source.properties", @@ -1263,12 +1297,15 @@ droiddoc { droiddoc { name: "online-sdk-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-stubs", + ], hdf: [ "android.whichdoc online", "android.hasSamples true", ], proofread_file: "online-sdk-docs-proofrerad.txt", - args: framework_docs_args + + args: framework_docs_only_args + " -toroot / -samplegroup Admin " + " -samplegroup Background " + " -samplegroup Connectivity " + @@ -1289,14 +1326,16 @@ droiddoc { droiddoc { name: "online-system-api-sdk-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-system-stubs", + ], hdf: [ "android.whichdoc online", "android.hasSamples true", ], proofread_file: "online-system-api-sdk-docs-proofrerad.txt", - args: framework_docs_args + + args: framework_docs_only_args + " -referenceonly " + - " -showAnnotation android.annotation.SystemApi " + " -title \"Android SDK - Including system APIs.\" " + " -hide 101 " + " -hide 104 " + @@ -1322,12 +1361,15 @@ droiddoc { droiddoc { name: "ds-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-stubs", + ], hdf: [ "android.whichdoc online", "android.hasSamples true", ], proofread_file: "ds-docs-proofrerad.txt", - args: framework_docs_args + + args: framework_docs_only_args + " -toroot / -samplegroup Admin " + " -samplegroup Background " + " -samplegroup Connectivity " + @@ -1348,11 +1390,14 @@ droiddoc { droiddoc { name: "ds-static-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-stubs", + ], hdf: [ "android.whichdoc online", ], proofread_file: "ds-static-docs-proofrerad.txt", - args: framework_docs_args + + args: framework_docs_only_args + " -staticonly " + " -toroot / " + " -devsite " + @@ -1362,11 +1407,14 @@ droiddoc { droiddoc { name: "ds-ref-navtree-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-stubs", + ], hdf: [ "android.whichdoc online", ], proofread_file: "ds-ref-navtree-docs-proofrerad.txt", - args: framework_docs_args + + args: framework_docs_only_args + " -toroot / " + " -atLinksNavtree " + " -navtreeonly ", @@ -1375,12 +1423,15 @@ droiddoc { droiddoc { name: "online-sdk-dev-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-stubs", + ], hdf: [ "android.whichdoc online", "android.hasSamples true", ], proofread_file: "online-sdk-dev-docs-proofrerad.txt", - args: framework_docs_args + + args: framework_docs_only_args + " -toroot / -samplegroup Admin " + " -samplegroup Background " + " -samplegroup Connectivity " + @@ -1401,13 +1452,16 @@ droiddoc { droiddoc { name: "hidden-docs", defaults: ["framework-docs-default"], + srcs: [ + ":framework-doc-stubs", + ], proofread_file: "hidden-docs-proofrerad.txt", - args: framework_docs_args + + args: framework_docs_only_args + " -referenceonly " + " -title \"Android SDK - Including hidden APIs.\"", } -droiddoc { +droidstubs { name: "hwbinder-stubs-docs", srcs: [ "core/java/android/os/HidlSupport.java", @@ -1425,10 +1479,15 @@ droiddoc { "core/java/android/os/RemoteException.java", "core/java/android/util/AndroidException.java", ], - custom_template: "droiddoc-templates-sdk", installable: false, no_framework_libs: true, - args: "-showAnnotation android.annotation.SystemApi -nodocs -stubsourceonly", + annotations_enabled: true, + previous_api: ":last-released-public-api", + merge_annotations_dirs: [ + "metalava-manual", + "ojluni-annotated-stubs", + ], + args: " --show-annotation android.annotation.SystemApi", } java_library_static { @@ -1439,7 +1498,7 @@ java_library_static { ], } -droiddoc { +droidstubs { name: "hiddenapi-lists-docs", defaults: ["metalava-api-stubs-default"], arg_files: [ @@ -1455,23 +1514,17 @@ droiddoc { } -droiddoc { +droidstubs { name: "hiddenapi-mappings", - defaults: ["api-stubs-default"], + defaults: ["metalava-api-stubs-default"], arg_files: [ "core/res/AndroidManifest.xml", - ":api-version-xml", - "core/java/overview.html", - ":current-support-api", - "api/current.txt", ], dex_mapping_filename: "dex-mapping.txt", - args: framework_docs_args + - " -referenceonly" + - " -nodocs" + - " -showUnannotated" + - " -showAnnotation android.annotation.SystemApi" + - " -showAnnotation android.annotation.TestApi", + args: metalava_framework_docs_args + + " --show-unannotated " + + " --show-annotation android.annotation.SystemApi " + + " --show-annotation android.annotation.TestApi " } filegroup { @@ -1498,7 +1551,7 @@ filegroup { ], } -droiddoc { +droidstubs { name: "api-stubs-docs", defaults: ["metalava-api-stubs-default"], api_filename: "public_api.txt", @@ -1520,7 +1573,7 @@ droiddoc { }, } -droiddoc { +droidstubs { name: "system-api-stubs-docs", defaults: ["metalava-api-stubs-default"], api_tag_name: "SYSTEM", @@ -1544,7 +1597,7 @@ droiddoc { }, } -droiddoc { +droidstubs { name: "test-api-stubs-docs", defaults: ["metalava-api-stubs-default"], api_tag_name: "TEST", diff --git a/Android.mk b/Android.mk index 988c009bdbac..5c4c2376f80e 100644 --- a/Android.mk +++ b/Android.mk @@ -322,6 +322,11 @@ $(OUT_DOCS)/offline-sdk-timestamp: $(OUT_DOCS)/offline-sdk-docs-docs.zip ( unzip -qo $< -d $(OUT_DOCS)/offline-sdk && touch -f $@ ) || exit 1 # ==== hiddenapi lists ======================================= +.KATI_RESTAT: \ + $(INTERNAL_PLATFORM_HIDDENAPI_WHITELIST) \ + $(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST) \ + $(INTERNAL_PLATFORM_HIDDENAPI_DARK_GREYLIST) \ + $(INTERNAL_PLATFORM_HIDDENAPI_BLACKLIST) $(INTERNAL_PLATFORM_HIDDENAPI_WHITELIST): \ .KATI_IMPLICIT_OUTPUTS := \ $(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST) \ @@ -346,10 +351,14 @@ $(INTERNAL_PLATFORM_HIDDENAPI_WHITELIST): \ $(INTERNAL_PLATFORM_HIDDENAPI_PRIVATE_LIST)) \ $(PRIVATE_GREYLIST_INPUTS) \ --input-blacklists frameworks/base/config/hiddenapi-force-blacklist.txt \ - --output-whitelist $(INTERNAL_PLATFORM_HIDDENAPI_WHITELIST) \ - --output-light-greylist $(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST) \ - --output-dark-greylist $(INTERNAL_PLATFORM_HIDDENAPI_DARK_GREYLIST) \ - --output-blacklist $(INTERNAL_PLATFORM_HIDDENAPI_BLACKLIST) + --output-whitelist $(INTERNAL_PLATFORM_HIDDENAPI_WHITELIST).tmp \ + --output-light-greylist $(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST).tmp \ + --output-dark-greylist $(INTERNAL_PLATFORM_HIDDENAPI_DARK_GREYLIST).tmp \ + --output-blacklist $(INTERNAL_PLATFORM_HIDDENAPI_BLACKLIST).tmp + $(call commit-change-for-toc,$(INTERNAL_PLATFORM_HIDDENAPI_WHITELIST)) + $(call commit-change-for-toc,$(INTERNAL_PLATFORM_HIDDENAPI_LIGHT_GREYLIST)) + $(call commit-change-for-toc,$(INTERNAL_PLATFORM_HIDDENAPI_DARK_GREYLIST)) + $(call commit-change-for-toc,$(INTERNAL_PLATFORM_HIDDENAPI_BLACKLIST)) # Include subdirectory makefiles # ============================================================ diff --git a/PREUPLOAD.cfg b/PREUPLOAD.cfg index 1f8ab21783ac..07b0ae10fd55 100644 --- a/PREUPLOAD.cfg +++ b/PREUPLOAD.cfg @@ -14,3 +14,5 @@ api_lint_hook = ${REPO_ROOT}/frameworks/base/tools/apilint/apilint_sha.sh ${PREU strings_lint_hook = ${REPO_ROOT}/frameworks/base/tools/stringslint/stringslint_sha.sh ${PREUPLOAD_COMMIT} hidden_api_txt_hook = ${REPO_ROOT}/frameworks/base/tools/hiddenapi/checksorted_sha.sh ${PREUPLOAD_COMMIT} ${REPO_ROOT} + +owners_hook = ${REPO_ROOT}/frameworks/base/tools/aosp/aosp_sha.sh ${PREUPLOAD_COMMIT} "OWNERS$" diff --git a/api/current.txt b/api/current.txt index 7ec3fd916497..2a1295c1ed02 100644..100755 --- a/api/current.txt +++ b/api/current.txt @@ -40899,6 +40899,16 @@ package android.telecom { field public static final int ROUTE_WIRED_OR_EARPIECE = 5; // 0x5 } + public abstract class CallRedirectionService extends android.app.Service { + ctor public CallRedirectionService(); + method public final void cancelCall(); + method public android.os.IBinder onBind(android.content.Intent); + method public abstract void onPlaceCall(android.net.Uri, android.telecom.PhoneAccountHandle); + method public final void placeCallUnmodified(); + method public final void redirectCall(android.net.Uri, android.telecom.PhoneAccountHandle); + field public static final java.lang.String SERVICE_INTERFACE = "android.telecom.CallRedirectionService"; + } + public abstract class CallScreeningService extends android.app.Service { ctor public CallScreeningService(); method public android.os.IBinder onBind(android.content.Intent); @@ -41695,6 +41705,9 @@ package android.telephony { field public static final java.lang.String KEY_ALWAYS_SHOW_EMERGENCY_ALERT_ONOFF_BOOL = "always_show_emergency_alert_onoff_bool"; field public static final java.lang.String KEY_APN_EXPAND_BOOL = "apn_expand_bool"; field public static final java.lang.String KEY_AUTO_RETRY_ENABLED_BOOL = "auto_retry_enabled_bool"; + field public static final java.lang.String KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL = "call_barring_supports_deactivate_all_bool"; + field public static final java.lang.String KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL = "call_barring_supports_password_change_bool"; + field public static final java.lang.String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool"; field public static final java.lang.String KEY_CALL_FORWARDING_BLOCKS_WHILE_ROAMING_STRING_ARRAY = "call_forwarding_blocks_while_roaming_string_array"; field public static final java.lang.String KEY_CARRIER_ALLOW_TURNOFF_IMS_BOOL = "carrier_allow_turnoff_ims_bool"; field public static final java.lang.String KEY_CARRIER_DATA_CALL_PERMANENT_FAILURE_STRINGS = "carrier_data_call_permanent_failure_strings"; @@ -42427,6 +42440,7 @@ package android.telephony { } public class SubscriptionManager { + method public void addOnOpportunisticSubscriptionsChangedListener(java.util.concurrent.Executor, android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener); method public void addOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener); method public boolean canManageSubscription(android.telephony.SubscriptionInfo); method public static deprecated android.telephony.SubscriptionManager from(android.content.Context); @@ -42440,8 +42454,11 @@ package android.telephony { method public static int getDefaultSmsSubscriptionId(); method public static int getDefaultSubscriptionId(); method public static int getDefaultVoiceSubscriptionId(); + method public static int[] getSubscriptionIds(int); method public java.util.List<android.telephony.SubscriptionPlan> getSubscriptionPlans(int); method public boolean isNetworkRoaming(int); + method public static boolean isValidSubscriptionId(int); + method public void removeOnOpportunisticSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnOpportunisticSubscriptionsChangedListener); method public void removeOnSubscriptionsChangedListener(android.telephony.SubscriptionManager.OnSubscriptionsChangedListener); method public void setSubscriptionOverrideCongested(int, boolean, long); method public void setSubscriptionOverrideUnmetered(int, boolean, long); @@ -42457,6 +42474,11 @@ package android.telephony { field public static final int INVALID_SUBSCRIPTION_ID = -1; // 0xffffffff } + public static class SubscriptionManager.OnOpportunisticSubscriptionsChangedListener { + ctor public SubscriptionManager.OnOpportunisticSubscriptionsChangedListener(); + method public void onOpportunisticSubscriptionsChanged(); + } + public static class SubscriptionManager.OnSubscriptionsChangedListener { ctor public SubscriptionManager.OnSubscriptionsChangedListener(); method public void onSubscriptionsChanged(); @@ -45250,6 +45272,7 @@ package android.util { field public static final int DENSITY_420 = 420; // 0x1a4 field public static final int DENSITY_440 = 440; // 0x1b8 field public static final int DENSITY_560 = 560; // 0x230 + field public static final int DENSITY_600 = 600; // 0x258 field public static final int DENSITY_DEFAULT = 160; // 0xa0 field public static final int DENSITY_DEVICE_STABLE; field public static final int DENSITY_HIGH = 240; // 0xf0 diff --git a/api/system-current.txt b/api/system-current.txt index 52bb10bc36ec..1df9a466ddc7 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5262,10 +5262,10 @@ package android.telephony { method public boolean handlePinMmi(java.lang.String); method public boolean handlePinMmiForSubscriber(int, java.lang.String); method public boolean isDataConnectivityPossible(); - method public boolean isIdle(); - method public boolean isOffhook(); - method public boolean isRadioOn(); - method public boolean isRinging(); + method public deprecated boolean isIdle(); + method public deprecated boolean isOffhook(); + method public deprecated boolean isRadioOn(); + method public deprecated boolean isRinging(); method public boolean isVideoCallingEnabled(); method public deprecated boolean isVisualVoicemailEnabled(android.telecom.PhoneAccountHandle); method public boolean needsOtaServiceProvisioning(); diff --git a/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp b/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp index 0615c74b8d64..2a89c920c119 100644 --- a/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp +++ b/cmds/incident_helper/src/parsers/PageTypeInfoParser.cpp @@ -75,18 +75,13 @@ PageTypeInfoParser::Parse(const int in, const int out) const } else return BAD_VALUE; // expect part 2 starts with "type" if (stripPrefix(&record[2], "type")) { - // expect the rest of part 2 has number of (pageBlockOrder + 2) parts // An example looks like: // header line: type 0 1 2 3 4 5 6 7 8 9 10 // record line: Unmovable 426 279 226 1 1 1 0 0 2 2 0 - // The pageBlockOrder = 10 and it's zero-indexed. so total parts - // are 10 + 1(zero-indexed) + 1(the type part) = 12. record_t pageCounts = parseRecord(record[2]); - int pageCountsSize = pageBlockOrder + 2; - if ((int)pageCounts.size() != pageCountsSize) return BAD_VALUE; proto.write(PageTypeInfoProto::MigrateType::TYPE, pageCounts[0]); - for (auto i=1; i<pageCountsSize; i++) { + for (size_t i=1; i<pageCounts.size(); i++) { proto.write(PageTypeInfoProto::MigrateType::FREE_PAGES_COUNT, toInt(pageCounts[i])); } } else return BAD_VALUE; @@ -125,4 +120,4 @@ PageTypeInfoParser::Parse(const int in, const int out) const fprintf(stderr, "[%s]Proto size: %zu bytes\n", this->name.string(), proto.size()); return NO_ERROR; -}
\ No newline at end of file +} diff --git a/cmds/incident_helper/testdata/pagetypeinfo.txt b/cmds/incident_helper/testdata/pagetypeinfo.txt index d45ddc408c0f..c65b5a1fa1e1 100644 --- a/cmds/incident_helper/testdata/pagetypeinfo.txt +++ b/cmds/incident_helper/testdata/pagetypeinfo.txt @@ -1,5 +1,5 @@ -Page block order: 10 -Pages per block: 1024 +Page block order: 9 +Pages per block: 512 Free pages count per migrate type at order 0 1 2 3 4 5 6 7 8 9 10 Node 0, zone DMA, type Unmovable 426 279 226 1 1 1 0 0 2 2 0 diff --git a/cmds/incident_helper/tests/PageTypeInfoParser_test.cpp b/cmds/incident_helper/tests/PageTypeInfoParser_test.cpp index 9bad7be4a07e..5688681e45fd 100644 --- a/cmds/incident_helper/tests/PageTypeInfoParser_test.cpp +++ b/cmds/incident_helper/tests/PageTypeInfoParser_test.cpp @@ -54,8 +54,8 @@ TEST_F(PageTypeInfoParserTest, Success) { PageTypeInfoParser parser; PageTypeInfoProto expected; - expected.set_page_block_order(10); - expected.set_pages_per_block(1024); + expected.set_page_block_order(9); + expected.set_pages_per_block(512); PageTypeInfoProto::MigrateType* mt1 = expected.add_migrate_types(); mt1->set_node(0); diff --git a/cmds/statsd/src/external/Perfetto.cpp b/cmds/statsd/src/external/Perfetto.cpp index 05544837b752..c1f9a643e153 100644 --- a/cmds/statsd/src/external/Perfetto.cpp +++ b/cmds/statsd/src/external/Perfetto.cpp @@ -105,9 +105,9 @@ bool CollectPerfettoTraceAndUploadToDropbox(const PerfettoDetails& config, readPipe.reset(); // Close the read end (owned by the child process). - // Using fopen() because fwrite() has the right logic to chunking write() + // Using fdopen() because fwrite() has the right logic to chunking write() // over a pipe (see __sfvwrite()). - FILE* writePipeStream = fdopen(writePipe.get(), "wb"); + FILE* writePipeStream = android::base::Fdopen(std::move(writePipe), "wb"); if (!writePipeStream) { ALOGE("fdopen() failed while calling the Perfetto client: %s", strerror(errno)); return false; diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt index 9ca0745c04f4..35676059124a 100644 --- a/config/boot-image-profile.txt +++ b/config/boot-image-profile.txt @@ -11825,6 +11825,7 @@ HPLlibcore/io/BlockGuardOs;->readlink(Ljava/lang/String;)Ljava/lang/String; HPLlibcore/io/BlockGuardOs;->rename(Ljava/lang/String;Ljava/lang/String;)V HPLlibcore/io/BlockGuardOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I HPLlibcore/io/BlockGuardOs;->write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;)I +HPLlibcore/io/ForwardingOs;->android_fdsan_exchange_owner_tag(Ljava/io/FileDescriptor;JJ)V HPLlibcore/io/ForwardingOs;->munlock(JJ)V HPLlibcore/io/ForwardingOs;->munmap(JJ)V HPLlibcore/io/ForwardingOs;->setsockoptByte(Ljava/io/FileDescriptor;III)V @@ -51627,6 +51628,7 @@ HSPLlibcore/io/IoTracker;->trackIo(ILlibcore/io/IoTracker$Mode;)V HSPLlibcore/io/IoUtils$FileReader;-><init>(Ljava/lang/String;)V HSPLlibcore/io/IoUtils$FileReader;->readFully()Llibcore/io/IoUtils$FileReader; HSPLlibcore/io/IoUtils$FileReader;->toByteArray()[B +HSPLlibcore/io/IoUtils;->acquireRawFd(Ljava/io/FileDescriptor;)I HSPLlibcore/io/IoUtils;->canOpenReadOnly(Ljava/lang/String;)Z HSPLlibcore/io/IoUtils;->close(Ljava/io/FileDescriptor;)V HSPLlibcore/io/IoUtils;->closeQuietly(Ljava/io/FileDescriptor;)V @@ -51634,6 +51636,7 @@ HSPLlibcore/io/IoUtils;->closeQuietly(Ljava/lang/AutoCloseable;)V HSPLlibcore/io/IoUtils;->readFileAsByteArray(Ljava/lang/String;)[B HSPLlibcore/io/IoUtils;->readFileAsString(Ljava/lang/String;)Ljava/lang/String; HSPLlibcore/io/IoUtils;->setBlocking(Ljava/io/FileDescriptor;Z)V +HSPLlibcore/io/IoUtils;->setFdOwner(Ljava/io/FileDescriptor;Ljava/lang/Object;)V HSPLlibcore/io/Linux;->read(Ljava/io/FileDescriptor;[BII)I HSPLlibcore/io/Linux;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I HSPLlibcore/io/Linux;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt index 99b58d9eb42d..d520b28d42f7 100644 --- a/config/hiddenapi-light-greylist.txt +++ b/config/hiddenapi-light-greylist.txt @@ -2209,7 +2209,6 @@ Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;-><init>(Landr Lcom/android/internal/util/HexDump;->toHexString([BZ)Ljava/lang/String; Lcom/android/internal/view/BaseIWindow;-><init>()V Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getEnabledInputMethodList()Ljava/util/List; Lcom/android/internal/view/IInputMethodManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodManager; Lcom/android/internal/view/IInputMethodSession$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodSession; Lcom/android/internal/widget/ILockSettings$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/ILockSettings; diff --git a/config/hiddenapi-p-light-greylist.txt b/config/hiddenapi-p-light-greylist.txt deleted file mode 100644 index 1bcb6850d929..000000000000 --- a/config/hiddenapi-p-light-greylist.txt +++ /dev/null @@ -1,5998 +0,0 @@ -Landroid/R$styleable;->ActionBar:[I -Landroid/R$styleable;->ActionBar_background:I -Landroid/R$styleable;->ActionBar_backgroundSplit:I -Landroid/R$styleable;->ActionBar_backgroundStacked:I -Landroid/R$styleable;->ActionBar_divider:I -Landroid/R$styleable;->ActionBar_itemPadding:I -Landroid/R$styleable;->CalendarView:[I -Landroid/R$styleable;->CalendarView_dateTextAppearance:I -Landroid/R$styleable;->CalendarView_firstDayOfWeek:I -Landroid/R$styleable;->CalendarView_focusedMonthDateColor:I -Landroid/R$styleable;->CalendarView_selectedDateVerticalBar:I -Landroid/R$styleable;->CalendarView_selectedWeekBackgroundColor:I -Landroid/R$styleable;->CalendarView_showWeekNumber:I -Landroid/R$styleable;->CalendarView_shownWeekCount:I -Landroid/R$styleable;->CalendarView_unfocusedMonthDateColor:I -Landroid/R$styleable;->CalendarView_weekDayTextAppearance:I -Landroid/R$styleable;->CalendarView_weekNumberColor:I -Landroid/R$styleable;->CalendarView_weekSeparatorLineColor:I -Landroid/R$styleable;->CheckBoxPreference:[I -Landroid/R$styleable;->CheckedTextView:[I -Landroid/R$styleable;->CheckedTextView_checkMark:I -Landroid/R$styleable;->CompoundButton:[I -Landroid/R$styleable;->CompoundButton_button:I -Landroid/R$styleable;->DrawableStates:[I -Landroid/R$styleable;->ImageView:[I -Landroid/R$styleable;->ImageView_adjustViewBounds:I -Landroid/R$styleable;->ImageView_baselineAlignBottom:I -Landroid/R$styleable;->ImageView_cropToPadding:I -Landroid/R$styleable;->ImageView_maxHeight:I -Landroid/R$styleable;->ImageView_maxWidth:I -Landroid/R$styleable;->ImageView_scaleType:I -Landroid/R$styleable;->ImageView_src:I -Landroid/R$styleable;->ImageView_tint:I -Landroid/R$styleable;->LinearLayout:[I -Landroid/R$styleable;->LinearLayout_divider:I -Landroid/R$styleable;->LinearLayout_dividerPadding:I -Landroid/R$styleable;->LinearLayout_showDividers:I -Landroid/R$styleable;->ListView:[I -Landroid/R$styleable;->ListView_divider:I -Landroid/R$styleable;->ListView_dividerHeight:I -Landroid/R$styleable;->ProgressBar:[I -Landroid/R$styleable;->ProgressBar_indeterminateDrawable:I -Landroid/R$styleable;->ProgressBar_indeterminateDuration:I -Landroid/R$styleable;->ProgressBar_maxHeight:I -Landroid/R$styleable;->ProgressBar_maxWidth:I -Landroid/R$styleable;->ProgressBar_minHeight:I -Landroid/R$styleable;->ProgressBar_minWidth:I -Landroid/R$styleable;->ProgressBar_progressDrawable:I -Landroid/R$styleable;->SeekBar:[I -Landroid/R$styleable;->SeekBar_thumb:I -Landroid/R$styleable;->SeekBar_thumbOffset:I -Landroid/R$styleable;->Switch:[I -Landroid/R$styleable;->Switch_showText:I -Landroid/R$styleable;->Switch_splitTrack:I -Landroid/R$styleable;->Switch_switchMinWidth:I -Landroid/R$styleable;->Switch_switchPadding:I -Landroid/R$styleable;->Switch_switchTextAppearance:I -Landroid/R$styleable;->Switch_textOff:I -Landroid/R$styleable;->Switch_textOn:I -Landroid/R$styleable;->Switch_thumb:I -Landroid/R$styleable;->Switch_thumbTextPadding:I -Landroid/R$styleable;->Switch_track:I -Landroid/R$styleable;->TextAppearance:[I -Landroid/R$styleable;->TextAppearance_textAllCaps:I -Landroid/R$styleable;->TextAppearance_textColor:I -Landroid/R$styleable;->TextAppearance_textColorHighlight:I -Landroid/R$styleable;->TextAppearance_textColorHint:I -Landroid/R$styleable;->TextAppearance_textColorLink:I -Landroid/R$styleable;->TextAppearance_textSize:I -Landroid/R$styleable;->TextAppearance_textStyle:I -Landroid/R$styleable;->TextAppearance_typeface:I -Landroid/R$styleable;->TextView:[I -Landroid/R$styleable;->TextView_autoLink:I -Landroid/R$styleable;->TextView_autoText:I -Landroid/R$styleable;->TextView_bufferType:I -Landroid/R$styleable;->TextView_capitalize:I -Landroid/R$styleable;->TextView_cursorVisible:I -Landroid/R$styleable;->TextView_digits:I -Landroid/R$styleable;->TextView_drawableBottom:I -Landroid/R$styleable;->TextView_drawableEnd:I -Landroid/R$styleable;->TextView_drawableLeft:I -Landroid/R$styleable;->TextView_drawablePadding:I -Landroid/R$styleable;->TextView_drawableRight:I -Landroid/R$styleable;->TextView_drawableStart:I -Landroid/R$styleable;->TextView_drawableTop:I -Landroid/R$styleable;->TextView_editable:I -Landroid/R$styleable;->TextView_ellipsize:I -Landroid/R$styleable;->TextView_ems:I -Landroid/R$styleable;->TextView_enabled:I -Landroid/R$styleable;->TextView_freezesText:I -Landroid/R$styleable;->TextView_gravity:I -Landroid/R$styleable;->TextView_height:I -Landroid/R$styleable;->TextView_hint:I -Landroid/R$styleable;->TextView_imeActionId:I -Landroid/R$styleable;->TextView_imeActionLabel:I -Landroid/R$styleable;->TextView_imeOptions:I -Landroid/R$styleable;->TextView_includeFontPadding:I -Landroid/R$styleable;->TextView_inputMethod:I -Landroid/R$styleable;->TextView_inputType:I -Landroid/R$styleable;->TextView_lineSpacingExtra:I -Landroid/R$styleable;->TextView_lineSpacingMultiplier:I -Landroid/R$styleable;->TextView_lines:I -Landroid/R$styleable;->TextView_linksClickable:I -Landroid/R$styleable;->TextView_marqueeRepeatLimit:I -Landroid/R$styleable;->TextView_maxEms:I -Landroid/R$styleable;->TextView_maxHeight:I -Landroid/R$styleable;->TextView_maxLength:I -Landroid/R$styleable;->TextView_maxLines:I -Landroid/R$styleable;->TextView_maxWidth:I -Landroid/R$styleable;->TextView_minEms:I -Landroid/R$styleable;->TextView_minHeight:I -Landroid/R$styleable;->TextView_minLines:I -Landroid/R$styleable;->TextView_minWidth:I -Landroid/R$styleable;->TextView_numeric:I -Landroid/R$styleable;->TextView_password:I -Landroid/R$styleable;->TextView_phoneNumber:I -Landroid/R$styleable;->TextView_privateImeOptions:I -Landroid/R$styleable;->TextView_scrollHorizontally:I -Landroid/R$styleable;->TextView_selectAllOnFocus:I -Landroid/R$styleable;->TextView_shadowColor:I -Landroid/R$styleable;->TextView_shadowDx:I -Landroid/R$styleable;->TextView_shadowDy:I -Landroid/R$styleable;->TextView_shadowRadius:I -Landroid/R$styleable;->TextView_singleLine:I -Landroid/R$styleable;->TextView_text:I -Landroid/R$styleable;->TextView_textAllCaps:I -Landroid/R$styleable;->TextView_textAppearance:I -Landroid/R$styleable;->TextView_textColor:I -Landroid/R$styleable;->TextView_textColorHighlight:I -Landroid/R$styleable;->TextView_textColorHint:I -Landroid/R$styleable;->TextView_textColorLink:I -Landroid/R$styleable;->TextView_textCursorDrawable:I -Landroid/R$styleable;->TextView_textIsSelectable:I -Landroid/R$styleable;->TextView_textScaleX:I -Landroid/R$styleable;->TextView_textSelectHandle:I -Landroid/R$styleable;->TextView_textSelectHandleLeft:I -Landroid/R$styleable;->TextView_textSelectHandleRight:I -Landroid/R$styleable;->TextView_textSize:I -Landroid/R$styleable;->TextView_textStyle:I -Landroid/R$styleable;->TextView_typeface:I -Landroid/R$styleable;->TextView_width:I -Landroid/R$styleable;->View:[I -Landroid/R$styleable;->ViewDrawableStates:[I -Landroid/R$styleable;->ViewGroup_Layout:[I -Landroid/R$styleable;->ViewGroup_MarginLayout:[I -Landroid/R$styleable;->View_background:I -Landroid/R$styleable;->View_clickable:I -Landroid/R$styleable;->View_contentDescription:I -Landroid/R$styleable;->View_drawingCacheQuality:I -Landroid/R$styleable;->View_duplicateParentState:I -Landroid/R$styleable;->View_fadingEdge:I -Landroid/R$styleable;->View_filterTouchesWhenObscured:I -Landroid/R$styleable;->View_fitsSystemWindows:I -Landroid/R$styleable;->View_focusable:I -Landroid/R$styleable;->View_focusableInTouchMode:I -Landroid/R$styleable;->View_hapticFeedbackEnabled:I -Landroid/R$styleable;->View_id:I -Landroid/R$styleable;->View_isScrollContainer:I -Landroid/R$styleable;->View_keepScreenOn:I -Landroid/R$styleable;->View_longClickable:I -Landroid/R$styleable;->View_minHeight:I -Landroid/R$styleable;->View_minWidth:I -Landroid/R$styleable;->View_nextFocusDown:I -Landroid/R$styleable;->View_nextFocusLeft:I -Landroid/R$styleable;->View_nextFocusRight:I -Landroid/R$styleable;->View_nextFocusUp:I -Landroid/R$styleable;->View_onClick:I -Landroid/R$styleable;->View_overScrollMode:I -Landroid/R$styleable;->View_padding:I -Landroid/R$styleable;->View_paddingBottom:I -Landroid/R$styleable;->View_paddingEnd:I -Landroid/R$styleable;->View_paddingLeft:I -Landroid/R$styleable;->View_paddingRight:I -Landroid/R$styleable;->View_paddingStart:I -Landroid/R$styleable;->View_paddingTop:I -Landroid/R$styleable;->View_saveEnabled:I -Landroid/R$styleable;->View_scrollX:I -Landroid/R$styleable;->View_scrollY:I -Landroid/R$styleable;->View_scrollbarDefaultDelayBeforeFade:I -Landroid/R$styleable;->View_scrollbarFadeDuration:I -Landroid/R$styleable;->View_scrollbarSize:I -Landroid/R$styleable;->View_scrollbarStyle:I -Landroid/R$styleable;->View_scrollbarThumbHorizontal:I -Landroid/R$styleable;->View_scrollbarThumbVertical:I -Landroid/R$styleable;->View_scrollbarTrackHorizontal:I -Landroid/R$styleable;->View_scrollbarTrackVertical:I -Landroid/R$styleable;->View_scrollbars:I -Landroid/R$styleable;->View_soundEffectsEnabled:I -Landroid/R$styleable;->View_tag:I -Landroid/R$styleable;->View_visibility:I -Landroid/R$styleable;->Window:[I -Landroid/R$styleable;->Window_windowBackground:I -Landroid/R$styleable;->Window_windowFrame:I -Landroid/accounts/AccountManager;-><init>(Landroid/content/Context;Landroid/accounts/IAccountManager;Landroid/os/Handler;)V -Landroid/accounts/AccountManager;->mContext:Landroid/content/Context; -Landroid/accounts/IAccountAuthenticator$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/accounts/IAccountAuthenticator$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/accounts/IAccountAuthenticator$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountAuthenticator; -Landroid/accounts/IAccountAuthenticator;->addAccount(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;)V -Landroid/accounts/IAccountAuthenticator;->confirmCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Landroid/os/Bundle;)V -Landroid/accounts/IAccountAuthenticator;->editProperties(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;)V -Landroid/accounts/IAccountAuthenticator;->getAccountRemovalAllowed(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;)V -Landroid/accounts/IAccountAuthenticator;->getAuthToken(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V -Landroid/accounts/IAccountAuthenticator;->getAuthTokenLabel(Landroid/accounts/IAccountAuthenticatorResponse;Ljava/lang/String;)V -Landroid/accounts/IAccountAuthenticator;->hasFeatures(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)V -Landroid/accounts/IAccountAuthenticator;->updateCredentials(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V -Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/accounts/IAccountAuthenticatorResponse$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/accounts/IAccountAuthenticatorResponse$Stub;-><init>()V -Landroid/accounts/IAccountAuthenticatorResponse$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountAuthenticatorResponse; -Landroid/accounts/IAccountManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/accounts/IAccountManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountManager; -Landroid/accounts/IAccountManagerResponse$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/accounts/IAccountManagerResponse$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/accounts/IAccountManagerResponse$Stub;-><init>()V -Landroid/accounts/IAccountManagerResponse$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountManagerResponse; -Landroid/accounts/IAccountManagerResponse;->onError(ILjava/lang/String;)V -Landroid/accounts/IAccountManagerResponse;->onResult(Landroid/os/Bundle;)V -Landroid/animation/LayoutTransition;->cancel()V -Landroid/animation/LayoutTransition;->cancel(I)V -Landroid/animation/ValueAnimator;->animateValue(F)V -Landroid/animation/ValueAnimator;->sDurationScale:F -Landroid/app/ActionBar;->setShowHideAnimationEnabled(Z)V -Landroid/app/Activity;->enterPictureInPictureMode(Landroid/app/PictureInPictureArgs;)Z -Landroid/app/Activity;->getActivityOptions()Landroid/app/ActivityOptions; -Landroid/app/Activity;->getActivityToken()Landroid/os/IBinder; -Landroid/app/Activity;->mActivityInfo:Landroid/content/pm/ActivityInfo; -Landroid/app/Activity;->mApplication:Landroid/app/Application; -Landroid/app/Activity;->mComponent:Landroid/content/ComponentName; -Landroid/app/Activity;->mFinished:Z -Landroid/app/Activity;->mFragments:Landroid/app/FragmentController; -Landroid/app/Activity;->mHandler:Landroid/os/Handler; -Landroid/app/Activity;->mInstrumentation:Landroid/app/Instrumentation; -Landroid/app/Activity;->mMainThread:Landroid/app/ActivityThread; -Landroid/app/Activity;->mReferrer:Ljava/lang/String; -Landroid/app/Activity;->mResultCode:I -Landroid/app/Activity;->mResultData:Landroid/content/Intent; -Landroid/app/Activity;->mResumed:Z -Landroid/app/Activity;->mToken:Landroid/os/IBinder; -Landroid/app/Activity;->mWindow:Landroid/view/Window; -Landroid/app/Activity;->mWindowManager:Landroid/view/WindowManager; -Landroid/app/Activity;->managedQuery(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; -Landroid/app/Activity;->registerRemoteAnimations(Landroid/view/RemoteAnimationDefinition;)V -Landroid/app/Activity;->setDisablePreviewScreenshots(Z)V -Landroid/app/Activity;->setPersistent(Z)V -Landroid/app/Activity;->setPictureInPictureArgs(Landroid/app/PictureInPictureArgs;)V -Landroid/app/ActivityGroup;->mLocalActivityManager:Landroid/app/LocalActivityManager; -Landroid/app/ActivityManager$RecentTaskInfo;->configuration:Landroid/content/res/Configuration; -Landroid/app/ActivityManager$RecentTaskInfo;->firstActiveTime:J -Landroid/app/ActivityManager$RecentTaskInfo;->lastActiveTime:J -Landroid/app/ActivityManager$RecentTaskInfo;->resizeMode:I -Landroid/app/ActivityManager$RecentTaskInfo;->supportsSplitScreenMultiWindow:Z -Landroid/app/ActivityManager$RecentTaskInfo;->userId:I -Landroid/app/ActivityManager$RunningAppProcessInfo;->flags:I -Landroid/app/ActivityManager$RunningAppProcessInfo;->processState:I -Landroid/app/ActivityManager$TaskDescription;->getBackgroundColor()I -Landroid/app/ActivityManager$TaskDescription;->getInMemoryIcon()Landroid/graphics/Bitmap; -Landroid/app/ActivityManager$TaskDescription;->loadTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap; -Landroid/app/ActivityManager$TaskSnapshot;->getContentInsets()Landroid/graphics/Rect; -Landroid/app/ActivityManager$TaskSnapshot;->getOrientation()I -Landroid/app/ActivityManager$TaskSnapshot;->getScale()F -Landroid/app/ActivityManager$TaskSnapshot;->getSnapshot()Landroid/graphics/GraphicBuffer; -Landroid/app/ActivityManager$TaskSnapshot;->isRealSnapshot()Z -Landroid/app/ActivityManager$TaskSnapshot;->isReducedResolution()Z -Landroid/app/ActivityManager;->IActivityManagerSingleton:Landroid/util/Singleton; -Landroid/app/ActivityManager;->PROCESS_STATE_IMPORTANT_BACKGROUND:I -Landroid/app/ActivityManager;->PROCESS_STATE_TOP:I -Landroid/app/ActivityManager;->clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;)Z -Landroid/app/ActivityManager;->getMaxNumPictureInPictureActions()I -Landroid/app/ActivityManager;->getMaxRecentTasksStatic()I -Landroid/app/ActivityManager;->getService()Landroid/app/IActivityManager; -Landroid/app/ActivityManager;->isHighEndGfx()Z -Landroid/app/ActivityManager;->isLowRamDeviceStatic()Z -Landroid/app/ActivityManager;->isUserRunning(I)Z -Landroid/app/ActivityManager;->mContext:Landroid/content/Context; -Landroid/app/ActivityManager;->setPersistentVrThread(I)V -Landroid/app/ActivityManagerNative;->asInterface(Landroid/os/IBinder;)Landroid/app/IActivityManager; -Landroid/app/ActivityManagerNative;->broadcastStickyIntent(Landroid/content/Intent;Ljava/lang/String;I)V -Landroid/app/ActivityManagerNative;->getDefault()Landroid/app/IActivityManager; -Landroid/app/ActivityOptions;->makeMultiThumbFutureAspectScaleAnimation(Landroid/content/Context;Landroid/os/Handler;Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/app/ActivityOptions$OnAnimationStartedListener;Z)Landroid/app/ActivityOptions; -Landroid/app/ActivityOptions;->makeRemoteAnimation(Landroid/view/RemoteAnimationAdapter;)Landroid/app/ActivityOptions; -Landroid/app/ActivityOptions;->setSplitScreenCreateMode(I)V -Landroid/app/ActivityThread$ActivityClientRecord;->activity:Landroid/app/Activity; -Landroid/app/ActivityThread$ActivityClientRecord;->activityInfo:Landroid/content/pm/ActivityInfo; -Landroid/app/ActivityThread$ActivityClientRecord;->compatInfo:Landroid/content/res/CompatibilityInfo; -Landroid/app/ActivityThread$ActivityClientRecord;->intent:Landroid/content/Intent; -Landroid/app/ActivityThread$ActivityClientRecord;->mPreserveWindow:Z -Landroid/app/ActivityThread$ActivityClientRecord;->packageInfo:Landroid/app/LoadedApk; -Landroid/app/ActivityThread$ActivityClientRecord;->paused:Z -Landroid/app/ActivityThread$ActivityClientRecord;->stopped:Z -Landroid/app/ActivityThread$ActivityClientRecord;->token:Landroid/os/IBinder; -Landroid/app/ActivityThread$AppBindData;->appInfo:Landroid/content/pm/ApplicationInfo; -Landroid/app/ActivityThread$AppBindData;->info:Landroid/app/LoadedApk; -Landroid/app/ActivityThread$AppBindData;->instrumentationArgs:Landroid/os/Bundle; -Landroid/app/ActivityThread$AppBindData;->persistent:Z -Landroid/app/ActivityThread$AppBindData;->processName:Ljava/lang/String; -Landroid/app/ActivityThread$AppBindData;->providers:Ljava/util/List; -Landroid/app/ActivityThread$AppBindData;->restrictedBackupMode:Z -Landroid/app/ActivityThread$BindServiceData;->intent:Landroid/content/Intent; -Landroid/app/ActivityThread$BindServiceData;->token:Landroid/os/IBinder; -Landroid/app/ActivityThread$CreateServiceData;-><init>()V -Landroid/app/ActivityThread$CreateServiceData;->compatInfo:Landroid/content/res/CompatibilityInfo; -Landroid/app/ActivityThread$CreateServiceData;->info:Landroid/content/pm/ServiceInfo; -Landroid/app/ActivityThread$CreateServiceData;->intent:Landroid/content/Intent; -Landroid/app/ActivityThread$CreateServiceData;->token:Landroid/os/IBinder; -Landroid/app/ActivityThread$H;->BIND_SERVICE:I -Landroid/app/ActivityThread$H;->CREATE_SERVICE:I -Landroid/app/ActivityThread$H;->DUMP_PROVIDER:I -Landroid/app/ActivityThread$H;->ENTER_ANIMATION_COMPLETE:I -Landroid/app/ActivityThread$H;->EXIT_APPLICATION:I -Landroid/app/ActivityThread$H;->GC_WHEN_IDLE:I -Landroid/app/ActivityThread$H;->INSTALL_PROVIDER:I -Landroid/app/ActivityThread$H;->RECEIVER:I -Landroid/app/ActivityThread$H;->REMOVE_PROVIDER:I -Landroid/app/ActivityThread$H;->SCHEDULE_CRASH:I -Landroid/app/ActivityThread$H;->SERVICE_ARGS:I -Landroid/app/ActivityThread$H;->STOP_SERVICE:I -Landroid/app/ActivityThread$H;->UNBIND_SERVICE:I -Landroid/app/ActivityThread$ProviderClientRecord;->mHolder:Landroid/app/ContentProviderHolder; -Landroid/app/ActivityThread$ProviderClientRecord;->mLocalProvider:Landroid/content/ContentProvider; -Landroid/app/ActivityThread$ProviderClientRecord;->mProvider:Landroid/content/IContentProvider; -Landroid/app/ActivityThread$ReceiverData;->compatInfo:Landroid/content/res/CompatibilityInfo; -Landroid/app/ActivityThread$ReceiverData;->info:Landroid/content/pm/ActivityInfo; -Landroid/app/ActivityThread$ReceiverData;->intent:Landroid/content/Intent; -Landroid/app/ActivityThread$ServiceArgsData;->args:Landroid/content/Intent; -Landroid/app/ActivityThread$ServiceArgsData;->token:Landroid/os/IBinder; -Landroid/app/ActivityThread;->currentActivityThread()Landroid/app/ActivityThread; -Landroid/app/ActivityThread;->currentApplication()Landroid/app/Application; -Landroid/app/ActivityThread;->currentPackageName()Ljava/lang/String; -Landroid/app/ActivityThread;->currentProcessName()Ljava/lang/String; -Landroid/app/ActivityThread;->getActivity(Landroid/os/IBinder;)Landroid/app/Activity; -Landroid/app/ActivityThread;->getApplication()Landroid/app/Application; -Landroid/app/ActivityThread;->getApplicationThread()Landroid/app/ActivityThread$ApplicationThread; -Landroid/app/ActivityThread;->getHandler()Landroid/os/Handler; -Landroid/app/ActivityThread;->getInstrumentation()Landroid/app/Instrumentation; -Landroid/app/ActivityThread;->getPackageInfo(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)Landroid/app/LoadedApk; -Landroid/app/ActivityThread;->getPackageInfoNoCheck(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;)Landroid/app/LoadedApk; -Landroid/app/ActivityThread;->getPackageManager()Landroid/content/pm/IPackageManager; -Landroid/app/ActivityThread;->getProcessName()Ljava/lang/String; -Landroid/app/ActivityThread;->getSystemContext()Landroid/app/ContextImpl; -Landroid/app/ActivityThread;->handleBindApplication(Landroid/app/ActivityThread$AppBindData;)V -Landroid/app/ActivityThread;->installContentProviders(Landroid/content/Context;Ljava/util/List;)V -Landroid/app/ActivityThread;->installProvider(Landroid/content/Context;Landroid/app/ContentProviderHolder;Landroid/content/pm/ProviderInfo;ZZZ)Landroid/app/ContentProviderHolder; -Landroid/app/ActivityThread;->mActivities:Landroid/util/ArrayMap; -Landroid/app/ActivityThread;->mAllApplications:Ljava/util/ArrayList; -Landroid/app/ActivityThread;->mBoundApplication:Landroid/app/ActivityThread$AppBindData; -Landroid/app/ActivityThread;->mConfiguration:Landroid/content/res/Configuration; -Landroid/app/ActivityThread;->mCurDefaultDisplayDpi:I -Landroid/app/ActivityThread;->mDensityCompatMode:Z -Landroid/app/ActivityThread;->mH:Landroid/app/ActivityThread$H; -Landroid/app/ActivityThread;->mInitialApplication:Landroid/app/Application; -Landroid/app/ActivityThread;->mInstrumentation:Landroid/app/Instrumentation; -Landroid/app/ActivityThread;->mLocalProviders:Landroid/util/ArrayMap; -Landroid/app/ActivityThread;->mLocalProvidersByName:Landroid/util/ArrayMap; -Landroid/app/ActivityThread;->mNumVisibleActivities:I -Landroid/app/ActivityThread;->mPackages:Landroid/util/ArrayMap; -Landroid/app/ActivityThread;->mPendingConfiguration:Landroid/content/res/Configuration; -Landroid/app/ActivityThread;->mProviderMap:Landroid/util/ArrayMap; -Landroid/app/ActivityThread;->mResourcePackages:Landroid/util/ArrayMap; -Landroid/app/ActivityThread;->mResourcesManager:Landroid/app/ResourcesManager; -Landroid/app/ActivityThread;->mServices:Landroid/util/ArrayMap; -Landroid/app/ActivityThread;->performNewIntents(Landroid/os/IBinder;Ljava/util/List;Z)V -Landroid/app/ActivityThread;->performStopActivity(Landroid/os/IBinder;ZLjava/lang/String;)V -Landroid/app/ActivityThread;->sCurrentActivityThread:Landroid/app/ActivityThread; -Landroid/app/ActivityThread;->sPackageManager:Landroid/content/pm/IPackageManager; -Landroid/app/ActivityThread;->sendActivityResult(Landroid/os/IBinder;Ljava/lang/String;IILandroid/content/Intent;)V -Landroid/app/ActivityThread;->startActivityNow(Landroid/app/Activity;Ljava/lang/String;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/Activity$NonConfigurationInstances;)Landroid/app/Activity; -Landroid/app/ActivityView;-><init>(Landroid/content/Context;)V -Landroid/app/ActivityView;->release()V -Landroid/app/ActivityView;->startActivity(Landroid/app/PendingIntent;)V -Landroid/app/ActivityView;->startActivity(Landroid/content/Intent;)V -Landroid/app/AlarmManager;->FLAG_ALLOW_WHILE_IDLE_UNRESTRICTED:I -Landroid/app/AlarmManager;->FLAG_IDLE_UNTIL:I -Landroid/app/AlarmManager;->FLAG_STANDALONE:I -Landroid/app/AlarmManager;->FLAG_WAKE_FROM_IDLE:I -Landroid/app/AlarmManager;->WINDOW_EXACT:J -Landroid/app/AlarmManager;->WINDOW_HEURISTIC:J -Landroid/app/AlarmManager;->mService:Landroid/app/IAlarmManager; -Landroid/app/AlertDialog$Builder;->P:Lcom/android/internal/app/AlertController$AlertParams; -Landroid/app/AlertDialog$Builder;->setRecycleOnMeasureEnabled(Z)Landroid/app/AlertDialog$Builder; -Landroid/app/AlertDialog$Builder;->setView(Landroid/view/View;IIII)Landroid/app/AlertDialog$Builder; -Landroid/app/AlertDialog;->mAlert:Lcom/android/internal/app/AlertController; -Landroid/app/AppGlobals;->getInitialApplication()Landroid/app/Application; -Landroid/app/AppGlobals;->getInitialPackage()Ljava/lang/String; -Landroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager; -Landroid/app/AppOpsManager$OpEntry;->getDuration()I -Landroid/app/AppOpsManager$OpEntry;->getOp()I -Landroid/app/AppOpsManager$OpEntry;->getRejectTime()J -Landroid/app/AppOpsManager$OpEntry;->getTime()J -Landroid/app/AppOpsManager$OpEntry;->isRunning()Z -Landroid/app/AppOpsManager$PackageOps;->getOps()Ljava/util/List; -Landroid/app/AppOpsManager$PackageOps;->getPackageName()Ljava/lang/String; -Landroid/app/AppOpsManager$PackageOps;->getUid()I -Landroid/app/AppOpsManager;->OP_AUDIO_NOTIFICATION_VOLUME:I -Landroid/app/AppOpsManager;->OP_COARSE_LOCATION:I -Landroid/app/AppOpsManager;->OP_FINE_LOCATION:I -Landroid/app/AppOpsManager;->OP_GET_USAGE_STATS:I -Landroid/app/AppOpsManager;->OP_POST_NOTIFICATION:I -Landroid/app/AppOpsManager;->OP_PROJECT_MEDIA:I -Landroid/app/AppOpsManager;->OP_READ_CONTACTS:I -Landroid/app/AppOpsManager;->OP_READ_PHONE_STATE:I -Landroid/app/AppOpsManager;->OP_READ_SMS:I -Landroid/app/AppOpsManager;->OP_RUN_IN_BACKGROUND:I -Landroid/app/AppOpsManager;->OP_VIBRATE:I -Landroid/app/AppOpsManager;->OP_WIFI_SCAN:I -Landroid/app/AppOpsManager;->OP_WRITE_CONTACTS:I -Landroid/app/AppOpsManager;->OP_WRITE_SMS:I -Landroid/app/AppOpsManager;->checkOp(IILjava/lang/String;)I -Landroid/app/AppOpsManager;->checkOpNoThrow(IILjava/lang/String;)I -Landroid/app/AppOpsManager;->getOpsForPackage(ILjava/lang/String;[I)Ljava/util/List; -Landroid/app/AppOpsManager;->getPackagesForOps([I)Ljava/util/List; -Landroid/app/AppOpsManager;->getToken(Lcom/android/internal/app/IAppOpsService;)Landroid/os/IBinder; -Landroid/app/AppOpsManager;->mService:Lcom/android/internal/app/IAppOpsService; -Landroid/app/AppOpsManager;->noteOp(I)I -Landroid/app/AppOpsManager;->noteOp(IILjava/lang/String;)I -Landroid/app/AppOpsManager;->permissionToOpCode(Ljava/lang/String;)I -Landroid/app/AppOpsManager;->sOpPerms:[Ljava/lang/String; -Landroid/app/AppOpsManager;->setRestriction(III[Ljava/lang/String;)V -Landroid/app/AppOpsManager;->strOpToOp(Ljava/lang/String;)I -Landroid/app/Application;->attach(Landroid/content/Context;)V -Landroid/app/Application;->collectActivityLifecycleCallbacks()[Ljava/lang/Object; -Landroid/app/Application;->dispatchActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V -Landroid/app/Application;->dispatchActivityDestroyed(Landroid/app/Activity;)V -Landroid/app/Application;->dispatchActivityPaused(Landroid/app/Activity;)V -Landroid/app/Application;->dispatchActivityResumed(Landroid/app/Activity;)V -Landroid/app/Application;->dispatchActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V -Landroid/app/Application;->dispatchActivityStarted(Landroid/app/Activity;)V -Landroid/app/Application;->dispatchActivityStopped(Landroid/app/Activity;)V -Landroid/app/Application;->mComponentCallbacks:Ljava/util/ArrayList; -Landroid/app/Application;->mLoadedApk:Landroid/app/LoadedApk; -Landroid/app/ApplicationLoaders;->getDefault()Landroid/app/ApplicationLoaders; -Landroid/app/ApplicationLoaders;->mLoaders:Landroid/util/ArrayMap; -Landroid/app/ApplicationPackageManager;-><init>(Landroid/app/ContextImpl;Landroid/content/pm/IPackageManager;)V -Landroid/app/ApplicationPackageManager;->configurationChanged()V -Landroid/app/ApplicationPackageManager;->deletePackage(Ljava/lang/String;Landroid/content/pm/IPackageDeleteObserver;I)V -Landroid/app/ApplicationPackageManager;->getPackageCurrentVolume(Landroid/content/pm/ApplicationInfo;)Landroid/os/storage/VolumeInfo; -Landroid/app/ApplicationPackageManager;->getPackageSizeInfoAsUser(Ljava/lang/String;ILandroid/content/pm/IPackageStatsObserver;)V -Landroid/app/ApplicationPackageManager;->mPM:Landroid/content/pm/IPackageManager; -Landroid/app/ApplicationPackageManager;->setInstantAppCookie([B)Z -Landroid/app/ApplicationPackageManager;->shouldShowRequestPermissionRationale(Ljava/lang/String;)Z -Landroid/app/ContentProviderHolder;-><init>(Landroid/content/pm/ProviderInfo;)V -Landroid/app/ContentProviderHolder;->info:Landroid/content/pm/ProviderInfo; -Landroid/app/ContentProviderHolder;->provider:Landroid/content/IContentProvider; -Landroid/app/ContextImpl;->createActivityContext(Landroid/app/ActivityThread;Landroid/app/LoadedApk;Landroid/content/pm/ActivityInfo;Landroid/os/IBinder;ILandroid/content/res/Configuration;)Landroid/app/ContextImpl; -Landroid/app/ContextImpl;->getActivityToken()Landroid/os/IBinder; -Landroid/app/ContextImpl;->getDisplay()Landroid/view/Display; -Landroid/app/ContextImpl;->getPreferencesDir()Ljava/io/File; -Landroid/app/ContextImpl;->getReceiverRestrictedContext()Landroid/content/Context; -Landroid/app/ContextImpl;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences; -Landroid/app/ContextImpl;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; -Landroid/app/ContextImpl;->mBasePackageName:Ljava/lang/String; -Landroid/app/ContextImpl;->mClassLoader:Ljava/lang/ClassLoader; -Landroid/app/ContextImpl;->mContentResolver:Landroid/app/ContextImpl$ApplicationContentResolver; -Landroid/app/ContextImpl;->mMainThread:Landroid/app/ActivityThread; -Landroid/app/ContextImpl;->mOpPackageName:Ljava/lang/String; -Landroid/app/ContextImpl;->mOuterContext:Landroid/content/Context; -Landroid/app/ContextImpl;->mPackageInfo:Landroid/app/LoadedApk; -Landroid/app/ContextImpl;->mPackageManager:Landroid/content/pm/PackageManager; -Landroid/app/ContextImpl;->mResources:Landroid/content/res/Resources; -Landroid/app/ContextImpl;->mServiceCache:[Ljava/lang/Object; -Landroid/app/ContextImpl;->mTheme:Landroid/content/res/Resources$Theme; -Landroid/app/ContextImpl;->mThemeResource:I -Landroid/app/ContextImpl;->sSharedPrefsCache:Landroid/util/ArrayMap; -Landroid/app/ContextImpl;->scheduleFinalCleanup(Ljava/lang/String;Ljava/lang/String;)V -Landroid/app/ContextImpl;->setOuterContext(Landroid/content/Context;)V -Landroid/app/DatePickerDialog;->mDatePicker:Landroid/widget/DatePicker; -Landroid/app/Dialog;->CANCEL:I -Landroid/app/Dialog;->dismissDialog()V -Landroid/app/Dialog;->mCancelMessage:Landroid/os/Message; -Landroid/app/Dialog;->mDismissMessage:Landroid/os/Message; -Landroid/app/Dialog;->mListenersHandler:Landroid/os/Handler; -Landroid/app/Dialog;->mOwnerActivity:Landroid/app/Activity; -Landroid/app/Dialog;->mShowMessage:Landroid/os/Message; -Landroid/app/DialogFragment;->showAllowingStateLoss(Landroid/app/FragmentManager;Ljava/lang/String;)V -Landroid/app/DownloadManager$Request;->mUri:Landroid/net/Uri; -Landroid/app/DownloadManager;->setAccessFilename(Z)V -Landroid/app/Fragment;->mChildFragmentManager:Landroid/app/FragmentManagerImpl; -Landroid/app/Fragment;->mWho:Ljava/lang/String; -Landroid/app/FragmentManagerImpl;->mAdded:Ljava/util/ArrayList; -Landroid/app/FragmentManagerImpl;->mStateSaved:Z -Landroid/app/FragmentManagerImpl;->noteStateNotSaved()V -Landroid/app/IActivityController$Stub;-><init>()V -Landroid/app/IActivityManager$Stub$Proxy;->getConfiguration()Landroid/content/res/Configuration; -Landroid/app/IActivityManager$Stub$Proxy;->getLaunchedFromUid(Landroid/os/IBinder;)I -Landroid/app/IActivityManager$Stub$Proxy;->getProcessLimit()I -Landroid/app/IActivityManager$Stub$Proxy;->getProcessPss([I)[J -Landroid/app/IActivityManager$Stub$Proxy;->isAppForeground(I)Z -Landroid/app/IActivityManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/app/IActivityManager;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I -Landroid/app/IActivityManager;->broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I -Landroid/app/IActivityManager;->cancelRecentsAnimation(Z)V -Landroid/app/IActivityManager;->cancelTaskWindowTransition(I)V -Landroid/app/IActivityManager;->closeSystemDialogs(Ljava/lang/String;)V -Landroid/app/IActivityManager;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z -Landroid/app/IActivityManager;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V -Landroid/app/IActivityManager;->forceStopPackage(Ljava/lang/String;I)V -Landroid/app/IActivityManager;->getConfiguration()Landroid/content/res/Configuration; -Landroid/app/IActivityManager;->getCurrentUser()Landroid/content/pm/UserInfo; -Landroid/app/IActivityManager;->getFilteredTasks(III)Ljava/util/List; -Landroid/app/IActivityManager;->getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender; -Landroid/app/IActivityManager;->getLaunchedFromPackage(Landroid/os/IBinder;)Ljava/lang/String; -Landroid/app/IActivityManager;->getLockTaskModeState()I -Landroid/app/IActivityManager;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo; -Landroid/app/IActivityManager;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String; -Landroid/app/IActivityManager;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice; -Landroid/app/IActivityManager;->getRunningAppProcesses()Ljava/util/List; -Landroid/app/IActivityManager;->getTaskForActivity(Landroid/os/IBinder;Z)I -Landroid/app/IActivityManager;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot; -Landroid/app/IActivityManager;->moveActivityTaskToBack(Landroid/os/IBinder;Z)Z -Landroid/app/IActivityManager;->moveTaskToFront(IILandroid/os/Bundle;)V -Landroid/app/IActivityManager;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V -Landroid/app/IActivityManager;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V -Landroid/app/IActivityManager;->removeTask(I)Z -Landroid/app/IActivityManager;->requestBugReport(I)V -Landroid/app/IActivityManager;->resumeAppSwitches()V -Landroid/app/IActivityManager;->setActivityController(Landroid/app/IActivityController;Z)V -Landroid/app/IActivityManager;->setRequestedOrientation(Landroid/os/IBinder;I)V -Landroid/app/IActivityManager;->setTaskResizeable(II)V -Landroid/app/IActivityManager;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I -Landroid/app/IActivityManager;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I -Landroid/app/IActivityManager;->startActivityFromRecents(ILandroid/os/Bundle;)I -Landroid/app/IActivityManager;->startRecentsActivity(Landroid/content/Intent;Landroid/app/IAssistDataReceiver;Landroid/view/IRecentsAnimationRunner;)V -Landroid/app/IActivityManager;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I -Landroid/app/IActivityManager;->unbindService(Landroid/app/IServiceConnection;)Z -Landroid/app/IActivityManager;->unstableProviderDied(Landroid/os/IBinder;)V -Landroid/app/IAlarmManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/IAlarmManager$Stub;->TRANSACTION_remove:I -Landroid/app/IAlarmManager$Stub;->TRANSACTION_set:I -Landroid/app/IAlarmManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmManager; -Landroid/app/IAlarmManager;->setTime(J)Z -Landroid/app/IAppTask;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo; -Landroid/app/IApplicationThread;->scheduleTrimMemory(I)V -Landroid/app/IAssistDataReceiver$Stub;-><init>()V -Landroid/app/IAssistDataReceiver;->onHandleAssistData(Landroid/os/Bundle;)V -Landroid/app/IAssistDataReceiver;->onHandleAssistScreenshot(Landroid/graphics/Bitmap;)V -Landroid/app/INotificationManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/INotificationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/INotificationManager; -Landroid/app/INotificationManager;->cancelAllNotifications(Ljava/lang/String;I)V -Landroid/app/INotificationManager;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V -Landroid/app/INotificationManager;->cancelToast(Ljava/lang/String;Landroid/app/ITransientNotification;)V -Landroid/app/INotificationManager;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;I)V -Landroid/app/IProcessObserver$Stub;-><init>()V -Landroid/app/ISearchManager$Stub$Proxy;->getGlobalSearchActivity()Landroid/content/ComponentName; -Landroid/app/ISearchManager$Stub$Proxy;->getWebSearchActivity()Landroid/content/ComponentName; -Landroid/app/ISearchManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ISearchManager; -Landroid/app/IServiceConnection$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/IServiceConnection$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/app/IServiceConnection$Stub;-><init>()V -Landroid/app/IServiceConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IServiceConnection; -Landroid/app/IStopUserCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/IStopUserCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/app/IStopUserCallback$Stub;-><init>()V -Landroid/app/IStopUserCallback;->userStopped(I)V -Landroid/app/IUiModeManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/IWallpaperManager;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor; -Landroid/app/Instrumentation;->execStartActivities(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;[Landroid/content/Intent;Landroid/os/Bundle;)V -Landroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/Activity;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; -Landroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/Instrumentation$ActivityResult; -Landroid/app/Instrumentation;->execStartActivity(Landroid/content/Context;Landroid/os/IBinder;Landroid/os/IBinder;Ljava/lang/String;Landroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/Instrumentation$ActivityResult; -Landroid/app/IntentService;->mServiceHandler:Landroid/app/IntentService$ServiceHandler; -Landroid/app/KeyguardManager;->dismissKeyguard(Landroid/app/Activity;Landroid/app/KeyguardManager$KeyguardDismissCallback;Landroid/os/Handler;)V -Landroid/app/KeyguardManager;->isDeviceLocked(I)Z -Landroid/app/LoadedApk$ReceiverDispatcher;->getIIntentReceiver()Landroid/content/IIntentReceiver; -Landroid/app/LoadedApk$ReceiverDispatcher;->getIntentReceiver()Landroid/content/BroadcastReceiver; -Landroid/app/LoadedApk$ReceiverDispatcher;->mContext:Landroid/content/Context; -Landroid/app/LoadedApk$ReceiverDispatcher;->mReceiver:Landroid/content/BroadcastReceiver; -Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;->mDispatcher:Ljava/lang/ref/WeakReference; -Landroid/app/LoadedApk$ServiceDispatcher;-><init>(Landroid/content/ServiceConnection;Landroid/content/Context;Landroid/os/Handler;I)V -Landroid/app/LoadedApk$ServiceDispatcher;->getIServiceConnection()Landroid/app/IServiceConnection; -Landroid/app/LoadedApk$ServiceDispatcher;->mConnection:Landroid/content/ServiceConnection; -Landroid/app/LoadedApk$ServiceDispatcher;->mContext:Landroid/content/Context; -Landroid/app/LoadedApk;->getAssets()Landroid/content/res/AssetManager; -Landroid/app/LoadedApk;->getClassLoader()Ljava/lang/ClassLoader; -Landroid/app/LoadedApk;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; -Landroid/app/LoadedApk;->getDataDirFile()Ljava/io/File; -Landroid/app/LoadedApk;->getResources()Landroid/content/res/Resources; -Landroid/app/LoadedApk;->mActivityThread:Landroid/app/ActivityThread; -Landroid/app/LoadedApk;->mAppDir:Ljava/lang/String; -Landroid/app/LoadedApk;->mApplication:Landroid/app/Application; -Landroid/app/LoadedApk;->mApplicationInfo:Landroid/content/pm/ApplicationInfo; -Landroid/app/LoadedApk;->mBaseClassLoader:Ljava/lang/ClassLoader; -Landroid/app/LoadedApk;->mClassLoader:Ljava/lang/ClassLoader; -Landroid/app/LoadedApk;->mDataDir:Ljava/lang/String; -Landroid/app/LoadedApk;->mDataDirFile:Ljava/io/File; -Landroid/app/LoadedApk;->mDisplayAdjustments:Landroid/view/DisplayAdjustments; -Landroid/app/LoadedApk;->mLibDir:Ljava/lang/String; -Landroid/app/LoadedApk;->mPackageName:Ljava/lang/String; -Landroid/app/LoadedApk;->mReceivers:Landroid/util/ArrayMap; -Landroid/app/LoadedApk;->mResDir:Ljava/lang/String; -Landroid/app/LoadedApk;->mResources:Landroid/content/res/Resources; -Landroid/app/LoadedApk;->mServices:Landroid/util/ArrayMap; -Landroid/app/LoadedApk;->mSplitResDirs:[Ljava/lang/String; -Landroid/app/LoadedApk;->makeApplication(ZLandroid/app/Instrumentation;)Landroid/app/Application; -Landroid/app/LoadedApk;->rewriteRValues(Ljava/lang/ClassLoader;Ljava/lang/String;I)V -Landroid/app/LocalActivityManager;->mActivities:Ljava/util/Map; -Landroid/app/LocalActivityManager;->mActivityArray:Ljava/util/ArrayList; -Landroid/app/LocalActivityManager;->mParent:Landroid/app/Activity; -Landroid/app/LocalActivityManager;->mResumed:Landroid/app/LocalActivityManager$LocalActivityRecord; -Landroid/app/LocalActivityManager;->mSingleMode:Z -Landroid/app/NativeActivity;->hideIme(I)V -Landroid/app/NativeActivity;->setWindowFlags(II)V -Landroid/app/NativeActivity;->setWindowFormat(I)V -Landroid/app/NativeActivity;->showIme(I)V -Landroid/app/Notification$Action;->mIcon:Landroid/graphics/drawable/Icon; -Landroid/app/Notification$Builder;->mActions:Ljava/util/ArrayList; -Landroid/app/Notification$Builder;->makePublicContentView()Landroid/widget/RemoteViews; -Landroid/app/Notification$Builder;->setChannel(Ljava/lang/String;)Landroid/app/Notification$Builder; -Landroid/app/Notification$Builder;->setTimeout(J)Landroid/app/Notification$Builder; -Landroid/app/Notification$TvExtender;->getChannel()Ljava/lang/String; -Landroid/app/Notification;-><init>(Landroid/content/Context;ILjava/lang/CharSequence;JLjava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/content/Intent;)V -Landroid/app/Notification;->getChannel()Ljava/lang/String; -Landroid/app/Notification;->getNotificationStyleClass(Ljava/lang/String;)Ljava/lang/Class; -Landroid/app/Notification;->getTimeout()J -Landroid/app/Notification;->isGroupSummary()Z -Landroid/app/Notification;->mChannelId:Ljava/lang/String; -Landroid/app/Notification;->mGroupKey:Ljava/lang/String; -Landroid/app/Notification;->mLargeIcon:Landroid/graphics/drawable/Icon; -Landroid/app/Notification;->mSmallIcon:Landroid/graphics/drawable/Icon; -Landroid/app/Notification;->setLatestEventInfo(Landroid/content/Context;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V -Landroid/app/Notification;->setSmallIcon(Landroid/graphics/drawable/Icon;)V -Landroid/app/NotificationManager;->cancelAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)V -Landroid/app/NotificationManager;->getService()Landroid/app/INotificationManager; -Landroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V -Landroid/app/NotificationManager;->sService:Landroid/app/INotificationManager; -Landroid/app/PendingIntent;->getActivityAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/PendingIntent; -Landroid/app/PendingIntent;->getIntent()Landroid/content/Intent; -Landroid/app/PendingIntent;->isActivity()Z -Landroid/app/PictureInPictureArgs$Builder; -Landroid/app/PictureInPictureArgs$Builder;-><init>()V -Landroid/app/PictureInPictureArgs$Builder;->build()Landroid/app/PictureInPictureArgs; -Landroid/app/PictureInPictureArgs$Builder;->setActions(Ljava/util/List;)Landroid/app/PictureInPictureArgs$Builder; -Landroid/app/PictureInPictureArgs$Builder;->setAspectRatio(Landroid/util/Rational;)Landroid/app/PictureInPictureArgs$Builder; -Landroid/app/PictureInPictureArgs$Builder;->setSourceRectHint(Landroid/graphics/Rect;)Landroid/app/PictureInPictureArgs$Builder; -Landroid/app/PictureInPictureArgs; -Landroid/app/PictureInPictureArgs;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/app/PictureInPictureArgs;->convert(Landroid/app/PictureInPictureArgs;)Landroid/app/PictureInPictureParams; -Landroid/app/PictureInPictureArgs;->convert(Landroid/app/PictureInPictureParams;)Landroid/app/PictureInPictureArgs; -Landroid/app/PictureInPictureParams;->getAspectRatio()F -Landroid/app/Presentation;->createPresentationContext(Landroid/content/Context;Landroid/view/Display;I)Landroid/content/Context; -Landroid/app/ProgressDialog;->mProgressNumber:Landroid/widget/TextView; -Landroid/app/QueuedWork;->addFinisher(Ljava/lang/Runnable;)V -Landroid/app/QueuedWork;->removeFinisher(Ljava/lang/Runnable;)V -Landroid/app/QueuedWork;->sFinishers:Ljava/util/LinkedList; -Landroid/app/ResourcesManager;->appendLibAssetForMainAssetPath(Ljava/lang/String;Ljava/lang/String;)V -Landroid/app/ResourcesManager;->getInstance()Landroid/app/ResourcesManager; -Landroid/app/ResourcesManager;->mActivityResourceReferences:Ljava/util/WeakHashMap; -Landroid/app/ResourcesManager;->mResConfiguration:Landroid/content/res/Configuration; -Landroid/app/ResourcesManager;->mResourceImpls:Landroid/util/ArrayMap; -Landroid/app/ResourcesManager;->mResourceReferences:Ljava/util/ArrayList; -Landroid/app/ResultInfo;->mData:Landroid/content/Intent; -Landroid/app/ResultInfo;->mResultWho:Ljava/lang/String; -Landroid/app/Service;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Ljava/lang/String;Landroid/os/IBinder;Landroid/app/Application;Ljava/lang/Object;)V -Landroid/app/Service;->mActivityManager:Landroid/app/IActivityManager; -Landroid/app/Service;->mApplication:Landroid/app/Application; -Landroid/app/Service;->mClassName:Ljava/lang/String; -Landroid/app/Service;->mStartCompatibility:Z -Landroid/app/Service;->mThread:Landroid/app/ActivityThread; -Landroid/app/Service;->mToken:Landroid/os/IBinder; -Landroid/app/Service;->setForeground(Z)V -Landroid/app/SharedPreferencesImpl;-><init>(Ljava/io/File;I)V -Landroid/app/SharedPreferencesImpl;->mFile:Ljava/io/File; -Landroid/app/SharedPreferencesImpl;->startReloadIfChangedUnexpectedly()V -Landroid/app/StatusBarManager;->collapsePanels()V -Landroid/app/StatusBarManager;->disable(I)V -Landroid/app/StatusBarManager;->expandNotificationsPanel()V -Landroid/app/StatusBarManager;->expandSettingsPanel()V -Landroid/app/StatusBarManager;->expandSettingsPanel(Ljava/lang/String;)V -Landroid/app/StatusBarManager;->getService()Lcom/android/internal/statusbar/IStatusBarService; -Landroid/app/StatusBarManager;->removeIcon(Ljava/lang/String;)V -Landroid/app/StatusBarManager;->setIcon(Ljava/lang/String;IILjava/lang/String;)V -Landroid/app/TaskStackListener;-><init>()V -Landroid/app/TaskStackListener;->onActivityDismissingDockedStack()V -Landroid/app/TaskStackListener;->onActivityForcedResizable(Ljava/lang/String;II)V -Landroid/app/TaskStackListener;->onActivityLaunchOnSecondaryDisplayFailed()V -Landroid/app/TaskStackListener;->onActivityPinned(Ljava/lang/String;III)V -Landroid/app/TaskStackListener;->onActivityRequestedOrientationChanged(II)V -Landroid/app/TaskStackListener;->onActivityUnpinned()V -Landroid/app/TaskStackListener;->onPinnedActivityRestartAttempt(Z)V -Landroid/app/TaskStackListener;->onPinnedStackAnimationEnded()V -Landroid/app/TaskStackListener;->onPinnedStackAnimationStarted()V -Landroid/app/TaskStackListener;->onTaskMovedToFront(I)V -Landroid/app/TaskStackListener;->onTaskProfileLocked(II)V -Landroid/app/TaskStackListener;->onTaskRemoved(I)V -Landroid/app/TaskStackListener;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V -Landroid/app/TaskStackListener;->onTaskStackChanged()V -Landroid/app/TimePickerDialog;->mTimePicker:Landroid/widget/TimePicker; -Landroid/app/Vr2dDisplayProperties$Builder;-><init>()V -Landroid/app/Vr2dDisplayProperties$Builder;->build()Landroid/app/Vr2dDisplayProperties; -Landroid/app/Vr2dDisplayProperties$Builder;->setEnabled(Z)Landroid/app/Vr2dDisplayProperties$Builder; -Landroid/app/Vr2dDisplayProperties;-><init>(III)V -Landroid/app/VrManager;->getPersistentVrModeEnabled()Z -Landroid/app/VrManager;->mService:Landroid/service/vr/IVrManager; -Landroid/app/VrManager;->registerVrStateCallback(Landroid/app/VrStateCallback;Landroid/os/Handler;)V -Landroid/app/VrManager;->setVr2dDisplayProperties(Landroid/app/Vr2dDisplayProperties;)V -Landroid/app/VrManager;->unregisterVrStateCallback(Landroid/app/VrStateCallback;)V -Landroid/app/VrStateCallback;-><init>()V -Landroid/app/VrStateCallback;->onPersistentVrStateChanged(Z)V -Landroid/app/WallpaperColors;-><init>(Landroid/graphics/Color;Landroid/graphics/Color;Landroid/graphics/Color;I)V -Landroid/app/WallpaperColors;->getColorHints()I -Landroid/app/WallpaperManager;->getBitmap()Landroid/graphics/Bitmap; -Landroid/app/WallpaperManager;->getBitmap(Z)Landroid/graphics/Bitmap; -Landroid/app/WallpaperManager;->getIWallpaperManager()Landroid/app/IWallpaperManager; -Landroid/app/WallpaperManager;->openDefaultWallpaper(Landroid/content/Context;I)Ljava/io/InputStream; -Landroid/app/WallpaperManager;->sGlobals:Landroid/app/WallpaperManager$Globals; -Landroid/app/WallpaperManager;->setBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;ZII)I -Landroid/app/admin/DevicePolicyManager;->createAndInitializeUser(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/Bundle;)Landroid/os/UserHandle; -Landroid/app/admin/DevicePolicyManager;->createUser(Landroid/content/ComponentName;Ljava/lang/String;)Landroid/os/UserHandle; -Landroid/app/admin/DevicePolicyManager;->getDeviceInitializerApp()Ljava/lang/String; -Landroid/app/admin/DevicePolicyManager;->getDeviceInitializerComponent()Landroid/content/ComponentName; -Landroid/app/admin/DevicePolicyManager;->getMandatoryBackupTransport()Landroid/content/ComponentName; -Landroid/app/admin/DevicePolicyManager;->getProfileOwnerAsUser(I)Landroid/content/ComponentName; -Landroid/app/admin/DevicePolicyManager;->getTrustAgentConfiguration(Landroid/content/ComponentName;Landroid/content/ComponentName;I)Ljava/util/List; -Landroid/app/admin/DevicePolicyManager;->packageHasActiveAdmins(Ljava/lang/String;I)Z -Landroid/app/admin/DevicePolicyManager;->setActiveAdmin(Landroid/content/ComponentName;Z)V -Landroid/app/admin/DevicePolicyManager;->setActiveAdmin(Landroid/content/ComponentName;ZI)V -Landroid/app/admin/DevicePolicyManager;->setDefaultSmsApplication(Landroid/content/ComponentName;Ljava/lang/String;)V -Landroid/app/admin/DevicePolicyManager;->throwIfParentInstance(Ljava/lang/String;)V -Landroid/app/admin/IDevicePolicyManager$Stub;->TRANSACTION_packageHasActiveAdmins:I -Landroid/app/admin/IDevicePolicyManager$Stub;->TRANSACTION_removeActiveAdmin:I -Landroid/app/admin/IDevicePolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/admin/IDevicePolicyManager; -Landroid/app/admin/SecurityLog$SecurityEvent;-><init>([B)V -Landroid/app/backup/BackupDataInput$EntityHeader;->dataSize:I -Landroid/app/backup/BackupDataInput$EntityHeader;->key:Ljava/lang/String; -Landroid/app/backup/BackupDataInputStream;->dataSize:I -Landroid/app/backup/BackupDataInputStream;->key:Ljava/lang/String; -Landroid/app/backup/BackupDataOutput;->mBackupWriter:J -Landroid/app/backup/BackupHelperDispatcher$Header;->chunkSize:I -Landroid/app/backup/BackupHelperDispatcher$Header;->keyPrefix:Ljava/lang/String; -Landroid/app/backup/FileBackupHelperBase;->writeNewStateDescription(Landroid/os/ParcelFileDescriptor;)V -Landroid/app/backup/FullBackup;->backupToTar(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/backup/FullBackupDataOutput;)I -Landroid/app/backup/FullBackupDataOutput;-><init>(Landroid/os/ParcelFileDescriptor;)V -Landroid/app/backup/FullBackupDataOutput;->addSize(J)V -Landroid/app/backup/FullBackupDataOutput;->mData:Landroid/app/backup/BackupDataOutput; -Landroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager; -Landroid/app/job/IJobCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/job/IJobCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/app/job/IJobCallback$Stub;-><init>()V -Landroid/app/job/IJobCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobCallback; -Landroid/app/job/IJobCallback;->acknowledgeStartMessage(IZ)V -Landroid/app/job/IJobCallback;->acknowledgeStopMessage(IZ)V -Landroid/app/job/IJobCallback;->jobFinished(IZ)V -Landroid/app/job/IJobScheduler$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/job/IJobScheduler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobScheduler; -Landroid/app/job/IJobService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/job/IJobService$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/app/job/IJobService$Stub;-><init>()V -Landroid/app/job/IJobService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobService; -Landroid/app/job/IJobService;->startJob(Landroid/app/job/JobParameters;)V -Landroid/app/job/IJobService;->stopJob(Landroid/app/job/JobParameters;)V -Landroid/app/job/JobInfo$Builder;->setEstimatedNetworkBytes(J)Landroid/app/job/JobInfo$Builder; -Landroid/app/job/JobInfo$Builder;->setIsPrefetch(Z)Landroid/app/job/JobInfo$Builder; -Landroid/app/job/JobInfo;->flags:I -Landroid/app/job/JobInfo;->getEstimatedNetworkBytes()J -Landroid/app/job/JobInfo;->jobId:I -Landroid/app/job/JobInfo;->service:Landroid/content/ComponentName; -Landroid/app/job/JobParameters;->callback:Landroid/os/IBinder; -Landroid/app/job/JobParameters;->jobId:I -Landroid/app/job/JobWorkItem;-><init>(Landroid/content/Intent;J)V -Landroid/app/job/JobWorkItem;->getEstimatedNetworkBytes()J -Landroid/app/slice/Slice$Builder;-><init>(Landroid/net/Uri;)V -Landroid/app/slice/Slice$Builder;->addTimestamp(JLjava/lang/String;Ljava/util/List;)Landroid/app/slice/Slice$Builder; -Landroid/app/slice/Slice$Builder;->setSpec(Landroid/app/slice/SliceSpec;)Landroid/app/slice/Slice$Builder; -Landroid/app/slice/Slice;->EXTRA_SLIDER_VALUE:Ljava/lang/String; -Landroid/app/slice/Slice;->SUBTYPE_SLIDER:Ljava/lang/String; -Landroid/app/slice/SliceItem;->FORMAT_TIMESTAMP:Ljava/lang/String; -Landroid/app/slice/SliceItem;->getTimestamp()J -Landroid/app/slice/SliceManager;->bindSlice(Landroid/content/Intent;Ljava/util/List;)Landroid/app/slice/Slice; -Landroid/app/slice/SliceManager;->bindSlice(Landroid/net/Uri;Ljava/util/List;)Landroid/app/slice/Slice; -Landroid/app/slice/SliceManager;->pinSlice(Landroid/net/Uri;Ljava/util/List;)V -Landroid/app/slice/SliceProvider;->onBindSlice(Landroid/net/Uri;Ljava/util/List;)Landroid/app/slice/Slice; -Landroid/app/trust/ITrustManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/app/usage/StorageStats;->getCodeBytes()J -Landroid/app/usage/StorageStatsManager;->getFreeBytes(Ljava/lang/String;)J -Landroid/app/usage/StorageStatsManager;->getTotalBytes(Ljava/lang/String;)J -Landroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/lang/String;)Z -Landroid/app/usage/StorageStatsManager;->queryExternalStatsForUser(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/ExternalStorageStats; -Landroid/app/usage/StorageStatsManager;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/StorageStats; -Landroid/app/usage/StorageStatsManager;->queryStatsForUid(Ljava/lang/String;I)Landroid/app/usage/StorageStats; -Landroid/app/usage/StorageStatsManager;->queryStatsForUser(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/StorageStats; -Landroid/app/usage/UsageStats;->mLastEvent:I -Landroid/app/usage/UsageStats;->mLaunchCount:I -Landroid/app/usage/UsageStats;->mTotalTimeInForeground:J -Landroid/app/usage/UsageStatsManager;->mService:Landroid/app/usage/IUsageStatsManager; -Landroid/appwidget/AppWidgetHost;->sService:Lcom/android/internal/appwidget/IAppWidgetService; -Landroid/appwidget/AppWidgetManager;->bindAppWidgetId(ILandroid/content/ComponentName;)V -Landroid/appwidget/AppWidgetManager;->bindAppWidgetId(ILandroid/content/ComponentName;Landroid/os/Bundle;)V -Landroid/appwidget/AppWidgetManager;->bindAppWidgetIdIfAllowed(IILandroid/content/ComponentName;Landroid/os/Bundle;)Z -Landroid/appwidget/AppWidgetManager;->mService:Lcom/android/internal/appwidget/IAppWidgetService; -Landroid/appwidget/AppWidgetProviderInfo;->providerInfo:Landroid/content/pm/ActivityInfo; -Landroid/bluetooth/BluetoothA2dp;->ACTION_ACTIVE_DEVICE_CHANGED:Ljava/lang/String; -Landroid/bluetooth/BluetoothA2dp;->ACTION_CODEC_CONFIG_CHANGED:Ljava/lang/String; -Landroid/bluetooth/BluetoothA2dp;->OPTIONAL_CODECS_NOT_SUPPORTED:I -Landroid/bluetooth/BluetoothA2dp;->OPTIONAL_CODECS_PREF_DISABLED:I -Landroid/bluetooth/BluetoothA2dp;->OPTIONAL_CODECS_PREF_ENABLED:I -Landroid/bluetooth/BluetoothA2dp;->OPTIONAL_CODECS_PREF_UNKNOWN:I -Landroid/bluetooth/BluetoothA2dp;->OPTIONAL_CODECS_SUPPORTED:I -Landroid/bluetooth/BluetoothA2dp;->OPTIONAL_CODECS_SUPPORT_UNKNOWN:I -Landroid/bluetooth/BluetoothA2dp;->connect(Landroid/bluetooth/BluetoothDevice;)Z -Landroid/bluetooth/BluetoothA2dp;->disableOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)V -Landroid/bluetooth/BluetoothA2dp;->enableOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)V -Landroid/bluetooth/BluetoothA2dp;->getActiveDevice()Landroid/bluetooth/BluetoothDevice; -Landroid/bluetooth/BluetoothA2dp;->getCodecStatus(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothCodecStatus; -Landroid/bluetooth/BluetoothA2dp;->getOptionalCodecsEnabled(Landroid/bluetooth/BluetoothDevice;)I -Landroid/bluetooth/BluetoothA2dp;->setActiveDevice(Landroid/bluetooth/BluetoothDevice;)Z -Landroid/bluetooth/BluetoothA2dp;->setCodecConfigPreference(Landroid/bluetooth/BluetoothDevice;Landroid/bluetooth/BluetoothCodecConfig;)V -Landroid/bluetooth/BluetoothA2dp;->setOptionalCodecsEnabled(Landroid/bluetooth/BluetoothDevice;I)V -Landroid/bluetooth/BluetoothA2dp;->supportsOptionalCodecs(Landroid/bluetooth/BluetoothDevice;)I -Landroid/bluetooth/BluetoothAdapter;->disable(Z)Z -Landroid/bluetooth/BluetoothAdapter;->factoryReset()Z -Landroid/bluetooth/BluetoothAdapter;->getDiscoverableTimeout()I -Landroid/bluetooth/BluetoothAdapter;->getLeState()I -Landroid/bluetooth/BluetoothAdapter;->mService:Landroid/bluetooth/IBluetooth; -Landroid/bluetooth/BluetoothAdapter;->setScanMode(I)Z -Landroid/bluetooth/BluetoothAdapter;->setScanMode(II)Z -Landroid/bluetooth/BluetoothCodecConfig; -Landroid/bluetooth/BluetoothCodecConfig;-><init>(IIIIIJJJJ)V -Landroid/bluetooth/BluetoothCodecConfig;->BITS_PER_SAMPLE_16:I -Landroid/bluetooth/BluetoothCodecConfig;->BITS_PER_SAMPLE_24:I -Landroid/bluetooth/BluetoothCodecConfig;->BITS_PER_SAMPLE_32:I -Landroid/bluetooth/BluetoothCodecConfig;->BITS_PER_SAMPLE_NONE:I -Landroid/bluetooth/BluetoothCodecConfig;->CHANNEL_MODE_MONO:I -Landroid/bluetooth/BluetoothCodecConfig;->CHANNEL_MODE_NONE:I -Landroid/bluetooth/BluetoothCodecConfig;->CHANNEL_MODE_STEREO:I -Landroid/bluetooth/BluetoothCodecConfig;->CODEC_PRIORITY_DEFAULT:I -Landroid/bluetooth/BluetoothCodecConfig;->CODEC_PRIORITY_DISABLED:I -Landroid/bluetooth/BluetoothCodecConfig;->CODEC_PRIORITY_HIGHEST:I -Landroid/bluetooth/BluetoothCodecConfig;->SAMPLE_RATE_176400:I -Landroid/bluetooth/BluetoothCodecConfig;->SAMPLE_RATE_192000:I -Landroid/bluetooth/BluetoothCodecConfig;->SAMPLE_RATE_44100:I -Landroid/bluetooth/BluetoothCodecConfig;->SAMPLE_RATE_48000:I -Landroid/bluetooth/BluetoothCodecConfig;->SAMPLE_RATE_88200:I -Landroid/bluetooth/BluetoothCodecConfig;->SAMPLE_RATE_96000:I -Landroid/bluetooth/BluetoothCodecConfig;->SAMPLE_RATE_NONE:I -Landroid/bluetooth/BluetoothCodecConfig;->SOURCE_CODEC_TYPE_AAC:I -Landroid/bluetooth/BluetoothCodecConfig;->SOURCE_CODEC_TYPE_APTX:I -Landroid/bluetooth/BluetoothCodecConfig;->SOURCE_CODEC_TYPE_APTX_HD:I -Landroid/bluetooth/BluetoothCodecConfig;->SOURCE_CODEC_TYPE_INVALID:I -Landroid/bluetooth/BluetoothCodecConfig;->SOURCE_CODEC_TYPE_LDAC:I -Landroid/bluetooth/BluetoothCodecConfig;->SOURCE_CODEC_TYPE_MAX:I -Landroid/bluetooth/BluetoothCodecConfig;->SOURCE_CODEC_TYPE_SBC:I -Landroid/bluetooth/BluetoothCodecConfig;->getBitsPerSample()I -Landroid/bluetooth/BluetoothCodecConfig;->getChannelMode()I -Landroid/bluetooth/BluetoothCodecConfig;->getCodecPriority()I -Landroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific1()J -Landroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific2()J -Landroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific3()J -Landroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific4()J -Landroid/bluetooth/BluetoothCodecConfig;->getCodecType()I -Landroid/bluetooth/BluetoothCodecConfig;->getSampleRate()I -Landroid/bluetooth/BluetoothCodecConfig;->setCodecPriority(I)V -Landroid/bluetooth/BluetoothCodecStatus; -Landroid/bluetooth/BluetoothCodecStatus;->EXTRA_CODEC_STATUS:Ljava/lang/String; -Landroid/bluetooth/BluetoothCodecStatus;->getCodecConfig()Landroid/bluetooth/BluetoothCodecConfig; -Landroid/bluetooth/BluetoothCodecStatus;->getCodecsLocalCapabilities()[Landroid/bluetooth/BluetoothCodecConfig; -Landroid/bluetooth/BluetoothCodecStatus;->getCodecsSelectableCapabilities()[Landroid/bluetooth/BluetoothCodecConfig; -Landroid/bluetooth/BluetoothDevice;->createBond(I)Z -Landroid/bluetooth/BluetoothDevice;->getAlias()Ljava/lang/String; -Landroid/bluetooth/BluetoothDevice;->getAliasName()Ljava/lang/String; -Landroid/bluetooth/BluetoothGatt;->mAuthRetryState:I -Landroid/bluetooth/BluetoothGatt;->mClientIf:I -Landroid/bluetooth/BluetoothGatt;->refresh()Z -Landroid/bluetooth/BluetoothGattCharacteristic;->mInstance:I -Landroid/bluetooth/BluetoothGattCharacteristic;->mService:Landroid/bluetooth/BluetoothGattService; -Landroid/bluetooth/BluetoothGattDescriptor;->mCharacteristic:Landroid/bluetooth/BluetoothGattCharacteristic; -Landroid/bluetooth/BluetoothGattDescriptor;->mInstance:I -Landroid/bluetooth/BluetoothHeadset;->ACTION_ACTIVE_DEVICE_CHANGED:Ljava/lang/String; -Landroid/bluetooth/BluetoothHeadset;->close()V -Landroid/bluetooth/BluetoothHeadset;->connectAudio()Z -Landroid/bluetooth/BluetoothHeadset;->disconnectAudio()Z -Landroid/bluetooth/BluetoothHeadset;->getActiveDevice()Landroid/bluetooth/BluetoothDevice; -Landroid/bluetooth/BluetoothHeadset;->phoneStateChanged(IIILjava/lang/String;I)V -Landroid/bluetooth/BluetoothHeadset;->setActiveDevice(Landroid/bluetooth/BluetoothDevice;)Z -Landroid/bluetooth/BluetoothHeadset;->startScoUsingVirtualVoiceCall()Z -Landroid/bluetooth/BluetoothHeadset;->stopScoUsingVirtualVoiceCall()Z -Landroid/bluetooth/BluetoothHearingAid;->ACTION_ACTIVE_DEVICE_CHANGED:Ljava/lang/String; -Landroid/bluetooth/BluetoothHearingAid;->getActiveDevices()Ljava/util/List; -Landroid/bluetooth/BluetoothHearingAid;->setActiveDevice(Landroid/bluetooth/BluetoothDevice;)Z -Landroid/bluetooth/BluetoothMapClient;->sendMessage(Landroid/bluetooth/BluetoothDevice;[Landroid/net/Uri;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;)Z -Landroid/bluetooth/BluetoothPan;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V -Landroid/bluetooth/BluetoothPan;->close()V -Landroid/bluetooth/BluetoothPan;->connect(Landroid/bluetooth/BluetoothDevice;)Z -Landroid/bluetooth/BluetoothPan;->disconnect(Landroid/bluetooth/BluetoothDevice;)Z -Landroid/bluetooth/BluetoothPan;->doBind()Z -Landroid/bluetooth/BluetoothPan;->isEnabled()Z -Landroid/bluetooth/BluetoothPan;->isTetheringOn()Z -Landroid/bluetooth/BluetoothPan;->isValidDevice(Landroid/bluetooth/BluetoothDevice;)Z -Landroid/bluetooth/BluetoothPan;->log(Ljava/lang/String;)V -Landroid/bluetooth/BluetoothPan;->setBluetoothTethering(Z)V -Landroid/bluetooth/BluetoothProfile;->PAN:I -Landroid/bluetooth/BluetoothSocket;->mPfd:Landroid/os/ParcelFileDescriptor; -Landroid/bluetooth/BluetoothUuid;->RESERVED_UUIDS:[Landroid/os/ParcelUuid; -Landroid/bluetooth/IBluetooth$Stub$Proxy;->getAddress()Ljava/lang/String; -Landroid/bluetooth/IBluetooth$Stub$Proxy;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I -Landroid/bluetooth/IBluetooth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetooth; -Landroid/bluetooth/IBluetooth;->getAddress()Ljava/lang/String; -Landroid/bluetooth/IBluetooth;->sendConnectionStateChange(Landroid/bluetooth/BluetoothDevice;III)V -Landroid/bluetooth/IBluetoothManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/bluetooth/IBluetoothManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothManager; -Landroid/bluetooth/le/ScanRecord;->parseFromBytes([B)Landroid/bluetooth/le/ScanRecord; -Landroid/companion/AssociationRequest;->getDeviceFilters()Ljava/util/List; -Landroid/companion/AssociationRequest;->isSingleDevice()Z -Landroid/companion/BluetoothDeviceFilter;->getAddress()Ljava/lang/String; -Landroid/companion/BluetoothDeviceFilterUtils;->getDeviceDisplayNameInternal(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String; -Landroid/companion/BluetoothDeviceFilterUtils;->getDeviceDisplayNameInternal(Landroid/net/wifi/ScanResult;)Ljava/lang/String; -Landroid/companion/BluetoothDeviceFilterUtils;->getDeviceMacAddress(Landroid/os/Parcelable;)Ljava/lang/String; -Landroid/companion/BluetoothLeDeviceFilter;->getScanFilter()Landroid/bluetooth/le/ScanFilter; -Landroid/companion/DeviceFilter;->getDeviceDisplayName(Landroid/os/Parcelable;)Ljava/lang/String; -Landroid/companion/DeviceFilter;->matches(Landroid/os/Parcelable;)Z -Landroid/companion/ICompanionDeviceDiscoveryService$Stub;-><init>()V -Landroid/companion/ICompanionDeviceDiscoveryServiceCallback;->onDeviceSelected(Ljava/lang/String;ILjava/lang/String;)V -Landroid/companion/ICompanionDeviceDiscoveryServiceCallback;->onDeviceSelectionCancel()V -Landroid/companion/IFindDeviceCallback;->onSuccess(Landroid/app/PendingIntent;)V -Landroid/content/AsyncTaskLoader;->mExecutor:Ljava/util/concurrent/Executor; -Landroid/content/BroadcastReceiver$PendingResult;-><init>(ILjava/lang/String;Landroid/os/Bundle;IZZLandroid/os/IBinder;II)V -Landroid/content/BroadcastReceiver$PendingResult;->mAbortBroadcast:Z -Landroid/content/BroadcastReceiver$PendingResult;->mFinished:Z -Landroid/content/BroadcastReceiver$PendingResult;->mFlags:I -Landroid/content/BroadcastReceiver$PendingResult;->mInitialStickyHint:Z -Landroid/content/BroadcastReceiver$PendingResult;->mOrderedHint:Z -Landroid/content/BroadcastReceiver$PendingResult;->mResultCode:I -Landroid/content/BroadcastReceiver$PendingResult;->mResultData:Ljava/lang/String; -Landroid/content/BroadcastReceiver$PendingResult;->mResultExtras:Landroid/os/Bundle; -Landroid/content/BroadcastReceiver$PendingResult;->mSendingUser:I -Landroid/content/BroadcastReceiver$PendingResult;->mToken:Landroid/os/IBinder; -Landroid/content/BroadcastReceiver$PendingResult;->mType:I -Landroid/content/BroadcastReceiver;->getPendingResult()Landroid/content/BroadcastReceiver$PendingResult; -Landroid/content/BroadcastReceiver;->setPendingResult(Landroid/content/BroadcastReceiver$PendingResult;)V -Landroid/content/ClipData$Item;->mUri:Landroid/net/Uri; -Landroid/content/ClipData;->addItem(Landroid/content/ClipData$Item;Landroid/content/ContentResolver;)V -Landroid/content/ContentProvider;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;[Landroid/content/pm/PathPermission;)V -Landroid/content/ContentProvider;->attachInfoForTesting(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V -Landroid/content/ContentProvider;->coerceToLocalContentProvider(Landroid/content/IContentProvider;)Landroid/content/ContentProvider; -Landroid/content/ContentProvider;->getIContentProvider()Landroid/content/IContentProvider; -Landroid/content/ContentProvider;->mContext:Landroid/content/Context; -Landroid/content/ContentProvider;->mPathPermissions:[Landroid/content/pm/PathPermission; -Landroid/content/ContentProvider;->mReadPermission:Ljava/lang/String; -Landroid/content/ContentProvider;->mWritePermission:Ljava/lang/String; -Landroid/content/ContentProvider;->setAppOps(II)V -Landroid/content/ContentProviderClient;->mContentProvider:Landroid/content/IContentProvider; -Landroid/content/ContentProviderClient;->mPackageName:Ljava/lang/String; -Landroid/content/ContentProviderOperation;->TYPE_DELETE:I -Landroid/content/ContentProviderOperation;->TYPE_INSERT:I -Landroid/content/ContentProviderOperation;->TYPE_UPDATE:I -Landroid/content/ContentProviderOperation;->mSelection:Ljava/lang/String; -Landroid/content/ContentProviderOperation;->mType:I -Landroid/content/ContentProviderOperation;->mUri:Landroid/net/Uri; -Landroid/content/ContentResolver;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; -Landroid/content/ContentResolver;->acquireProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; -Landroid/content/ContentResolver;->acquireProvider(Landroid/net/Uri;)Landroid/content/IContentProvider; -Landroid/content/ContentResolver;->acquireProvider(Ljava/lang/String;)Landroid/content/IContentProvider; -Landroid/content/ContentResolver;->acquireUnstableProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider; -Landroid/content/ContentResolver;->getContentService()Landroid/content/IContentService; -Landroid/content/ContentResolver;->getSyncStatus(Landroid/accounts/Account;Ljava/lang/String;)Landroid/content/SyncStatusInfo; -Landroid/content/ContentResolver;->mContext:Landroid/content/Context; -Landroid/content/ContentResolver;->mPackageName:Ljava/lang/String; -Landroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V -Landroid/content/ContentResolver;->releaseProvider(Landroid/content/IContentProvider;)Z -Landroid/content/ContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z -Landroid/content/ContentResolver;->takePersistableUriPermission(Ljava/lang/String;Landroid/net/Uri;I)V -Landroid/content/ContentResolver;->unstableProviderDied(Landroid/content/IContentProvider;)V -Landroid/content/ContentValues;-><init>(Ljava/util/HashMap;)V -Landroid/content/ContentValues;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList; -Landroid/content/ContentValues;->mValues:Ljava/util/HashMap; -Landroid/content/ContentValues;->putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V -Landroid/content/Context;->getBasePackageName()Ljava/lang/String; -Landroid/content/Context;->getOpPackageName()Ljava/lang/String; -Landroid/content/Context;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences; -Landroid/content/Context;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; -Landroid/content/Context;->getSharedPrefsFile(Ljava/lang/String;)Ljava/io/File; -Landroid/content/Context;->getThemeResId()I -Landroid/content/Context;->registerReceiverAsUser(Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent; -Landroid/content/Context;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;I)V -Landroid/content/Context;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V -Landroid/content/Context;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V -Landroid/content/Context;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V -Landroid/content/Context;->startServiceAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/ComponentName; -Landroid/content/ContextWrapper;->getDisplay()Landroid/view/Display; -Landroid/content/ContextWrapper;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences; -Landroid/content/ContextWrapper;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File; -Landroid/content/ContextWrapper;->getThemeResId()I -Landroid/content/ContextWrapper;->mBase:Landroid/content/Context; -Landroid/content/CursorLoader;->mCancellationSignal:Landroid/os/CancellationSignal; -Landroid/content/CursorLoader;->mObserver:Landroid/content/Loader$ForceLoadContentObserver; -Landroid/content/IClipboard$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/IClipboard$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IClipboard; -Landroid/content/IContentProvider;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle; -Landroid/content/IContentService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/IContentService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IContentService; -Landroid/content/IContentService;->cancelSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)V -Landroid/content/IContentService;->getMasterSyncAutomatically()Z -Landroid/content/IContentService;->setMasterSyncAutomatically(Z)V -Landroid/content/IIntentReceiver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/IIntentReceiver$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/IIntentReceiver$Stub;-><init>()V -Landroid/content/IIntentReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V -Landroid/content/IRestrictionsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IRestrictionsManager; -Landroid/content/ISyncAdapter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/ISyncAdapter$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/ISyncContext$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/ISyncContext$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/ISyncContext$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncContext; -Landroid/content/ISyncStatusObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/ISyncStatusObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/Intent;->ACTION_ALARM_CHANGED:Ljava/lang/String; -Landroid/content/Intent;->ACTION_DEVICE_INITIALIZATION_WIZARD:Ljava/lang/String; -Landroid/content/Intent;->ACTION_MASTER_CLEAR:Ljava/lang/String; -Landroid/content/Intent;->ACTION_SERVICE_STATE:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_CDMA_DEFAULT_ROAMING_INDICATOR:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_CDMA_ROAMING_INDICATOR:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_CSS_INDICATOR:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_DATA_OPERATOR_ALPHA_LONG:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_DATA_OPERATOR_ALPHA_SHORT:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_DATA_OPERATOR_NUMERIC:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_DATA_RADIO_TECH:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_DATA_REG_STATE:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_DATA_ROAMING_TYPE:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_EMERGENCY_ONLY:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_IS_DATA_ROAMING_FROM_REGISTRATION:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_IS_USING_CARRIER_AGGREGATION:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_LTE_EARFCN_RSRP_BOOST:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_MANUAL:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_NETWORK_ID:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_OPERATOR_ALPHA_LONG:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_OPERATOR_ALPHA_SHORT:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_OPERATOR_NUMERIC:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_QUICK_VIEW_ADVANCED:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_SYSTEM_ID:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_VOICE_RADIO_TECH:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_VOICE_REG_STATE:Ljava/lang/String; -Landroid/content/Intent;->EXTRA_VOICE_ROAMING_TYPE:Ljava/lang/String; -Landroid/content/Intent;->getExtra(Ljava/lang/String;)Ljava/lang/Object; -Landroid/content/Intent;->getIBinderExtra(Ljava/lang/String;)Landroid/os/IBinder; -Landroid/content/Intent;->mExtras:Landroid/os/Bundle; -Landroid/content/Intent;->prepareToLeaveProcess(Landroid/content/Context;)V -Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/IBinder;)Landroid/content/Intent; -Landroid/content/Intent;->resolveSystemService(Landroid/content/pm/PackageManager;I)Landroid/content/ComponentName; -Landroid/content/Intent;->setAllowFds(Z)V -Landroid/content/Intent;->toInsecureString()Ljava/lang/String; -Landroid/content/IntentFilter;->mActions:Ljava/util/ArrayList; -Landroid/content/IntentSender;-><init>(Landroid/content/IIntentSender;)V -Landroid/content/IntentSender;->mTarget:Landroid/content/IIntentSender; -Landroid/content/RestrictionsManager;->mService:Landroid/content/IRestrictionsManager; -Landroid/content/SearchRecentSuggestionsProvider;->mSuggestionProjection:[Ljava/lang/String; -Landroid/content/SyncAdapterType;->allowParallelSyncs:Z -Landroid/content/SyncAdapterType;->isAlwaysSyncable:Z -Landroid/content/SyncAdapterType;->settingsActivity:Ljava/lang/String; -Landroid/content/SyncContext;->setStatusText(Ljava/lang/String;)V -Landroid/content/SyncInfo;-><init>(ILandroid/accounts/Account;Ljava/lang/String;J)V -Landroid/content/SyncRequest;->mAccountToSync:Landroid/accounts/Account; -Landroid/content/SyncRequest;->mAuthority:Ljava/lang/String; -Landroid/content/SyncRequest;->mExtras:Landroid/os/Bundle; -Landroid/content/SyncRequest;->mIsPeriodic:Z -Landroid/content/SyncRequest;->mSyncRunTimeSecs:J -Landroid/content/SyncStatusInfo;-><init>(Landroid/os/Parcel;)V -Landroid/content/SyncStatusInfo;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/content/SyncStatusInfo;->authorityId:I -Landroid/content/SyncStatusInfo;->ensurePeriodicSyncTimeSize(I)V -Landroid/content/SyncStatusInfo;->initialFailureTime:J -Landroid/content/SyncStatusInfo;->initialize:Z -Landroid/content/SyncStatusInfo;->lastFailureMesg:Ljava/lang/String; -Landroid/content/SyncStatusInfo;->lastFailureSource:I -Landroid/content/SyncStatusInfo;->lastFailureTime:J -Landroid/content/SyncStatusInfo;->lastSuccessSource:I -Landroid/content/SyncStatusInfo;->lastSuccessTime:J -Landroid/content/SyncStatusInfo;->pending:Z -Landroid/content/SyncStatusInfo;->periodicSyncTimes:Ljava/util/ArrayList; -Landroid/content/UriMatcher;->mChildren:Ljava/util/ArrayList; -Landroid/content/UriMatcher;->mText:Ljava/lang/String; -Landroid/content/pm/ActivityInfo;->isResizeableMode(I)Z -Landroid/content/pm/ActivityInfo;->resizeMode:I -Landroid/content/pm/ActivityInfo;->supportsPictureInPicture()Z -Landroid/content/pm/ApplicationInfo;->enabledSetting:I -Landroid/content/pm/ApplicationInfo;->getBaseResourcePath()Ljava/lang/String; -Landroid/content/pm/ApplicationInfo;->installLocation:I -Landroid/content/pm/ApplicationInfo;->isForwardLocked()Z -Landroid/content/pm/ApplicationInfo;->primaryCpuAbi:Ljava/lang/String; -Landroid/content/pm/ApplicationInfo;->privateFlags:I -Landroid/content/pm/ApplicationInfo;->scanPublicSourceDir:Ljava/lang/String; -Landroid/content/pm/ApplicationInfo;->scanSourceDir:Ljava/lang/String; -Landroid/content/pm/ApplicationInfo;->secondaryCpuAbi:Ljava/lang/String; -Landroid/content/pm/ApplicationInfo;->secondaryNativeLibraryDir:Ljava/lang/String; -Landroid/content/pm/ApplicationInfo;->versionCode:I -Landroid/content/pm/ApplicationInfo;->volumeUuid:Ljava/lang/String; -Landroid/content/pm/ComponentInfo;->encryptionAware:Z -Landroid/content/pm/ComponentInfo;->getComponentName()Landroid/content/ComponentName; -Landroid/content/pm/IPackageDataObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/pm/IPackageDataObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/pm/IPackageDataObserver$Stub;-><init>()V -Landroid/content/pm/IPackageDataObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageDataObserver; -Landroid/content/pm/IPackageDataObserver;->onRemoveCompleted(Ljava/lang/String;Z)V -Landroid/content/pm/IPackageDeleteObserver$Stub;-><init>()V -Landroid/content/pm/IPackageDeleteObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageDeleteObserver; -Landroid/content/pm/IPackageDeleteObserver2$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/pm/IPackageDeleteObserver2$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/pm/IPackageDeleteObserver2;->onPackageDeleted(Ljava/lang/String;ILjava/lang/String;)V -Landroid/content/pm/IPackageDeleteObserver;->packageDeleted(Ljava/lang/String;I)V -Landroid/content/pm/IPackageInstallObserver2$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/pm/IPackageInstallObserver2$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/pm/IPackageInstallObserver2$Stub;-><init>()V -Landroid/content/pm/IPackageInstallObserver2;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V -Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/pm/IPackageInstallerCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallerCallback; -Landroid/content/pm/IPackageInstallerCallback;->onSessionActiveChanged(IZ)V -Landroid/content/pm/IPackageInstallerCallback;->onSessionBadgingChanged(I)V -Landroid/content/pm/IPackageInstallerCallback;->onSessionCreated(I)V -Landroid/content/pm/IPackageInstallerCallback;->onSessionFinished(IZ)V -Landroid/content/pm/IPackageInstallerCallback;->onSessionProgressChanged(IF)V -Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/pm/IPackageInstallerSession$Stub;-><init>()V -Landroid/content/pm/IPackageInstallerSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstallerSession; -Landroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice; -Landroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; -Landroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String; -Landroid/content/pm/IPackageManager$Stub$Proxy;->getSystemSharedLibraryNames()[Ljava/lang/String; -Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager; -Landroid/content/pm/IPackageManager;->addPermission(Landroid/content/pm/PermissionInfo;)Z -Landroid/content/pm/IPackageManager;->addPermissionAsync(Landroid/content/pm/PermissionInfo;)Z -Landroid/content/pm/IPackageManager;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; -Landroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo; -Landroid/content/pm/IPackageManager;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I -Landroid/content/pm/IPackageManager;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName; -Landroid/content/pm/IPackageManager;->getInstallLocation()I -Landroid/content/pm/IPackageManager;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice; -Landroid/content/pm/IPackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String; -Landroid/content/pm/IPackageManager;->getLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo; -Landroid/content/pm/IPackageManager;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; -Landroid/content/pm/IPackageManager;->getProviderInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ProviderInfo; -Landroid/content/pm/IPackageManager;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo; -Landroid/content/pm/IPackageManager;->getServiceInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ServiceInfo; -Landroid/content/pm/IPackageManager;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V -Landroid/content/pm/IPackageManager;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V -Landroid/content/pm/IPackageManager;->setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V -Landroid/content/pm/IPackageManager;->setLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;ILandroid/content/IntentFilter;ILandroid/content/ComponentName;)V -Landroid/content/pm/IPackageMoveObserver$Stub;-><init>()V -Landroid/content/pm/IPackageMoveObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageMoveObserver; -Landroid/content/pm/IPackageStatsObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/pm/IPackageStatsObserver$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/content/pm/IPackageStatsObserver$Stub;-><init>()V -Landroid/content/pm/IPackageStatsObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageStatsObserver; -Landroid/content/pm/IPackageStatsObserver;->onGetStatsCompleted(Landroid/content/pm/PackageStats;Z)V -Landroid/content/pm/IShortcutService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/content/pm/IShortcutService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IShortcutService; -Landroid/content/pm/LauncherActivityInfo;->mActivityInfo:Landroid/content/pm/ActivityInfo; -Landroid/content/pm/LauncherApps;->mPm:Landroid/content/pm/PackageManager; -Landroid/content/pm/LauncherApps;->startShortcut(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;Landroid/os/Bundle;I)V -Landroid/content/pm/PackageInfo;->INSTALL_LOCATION_UNSPECIFIED:I -Landroid/content/pm/PackageInfo;->REQUESTED_PERMISSION_REQUIRED:I -Landroid/content/pm/PackageInstaller$SessionInfo;-><init>()V -Landroid/content/pm/PackageInstaller$SessionInfo;->active:Z -Landroid/content/pm/PackageInstaller$SessionInfo;->appIcon:Landroid/graphics/Bitmap; -Landroid/content/pm/PackageInstaller$SessionInfo;->appLabel:Ljava/lang/CharSequence; -Landroid/content/pm/PackageInstaller$SessionInfo;->appPackageName:Ljava/lang/String; -Landroid/content/pm/PackageInstaller$SessionInfo;->installerPackageName:Ljava/lang/String; -Landroid/content/pm/PackageInstaller$SessionInfo;->mode:I -Landroid/content/pm/PackageInstaller$SessionInfo;->progress:F -Landroid/content/pm/PackageInstaller$SessionInfo;->resolvedBaseCodePath:Ljava/lang/String; -Landroid/content/pm/PackageInstaller$SessionInfo;->sealed:Z -Landroid/content/pm/PackageInstaller$SessionInfo;->sessionId:I -Landroid/content/pm/PackageInstaller$SessionInfo;->sizeBytes:J -Landroid/content/pm/PackageInstaller$SessionParams;->appIcon:Landroid/graphics/Bitmap; -Landroid/content/pm/PackageInstaller$SessionParams;->appLabel:Ljava/lang/String; -Landroid/content/pm/PackageInstaller$SessionParams;->appPackageName:Ljava/lang/String; -Landroid/content/pm/PackageInstaller$SessionParams;->installFlags:I -Landroid/content/pm/PackageInstaller$SessionParams;->mode:I -Landroid/content/pm/PackageInstaller$SessionParams;->sizeBytes:J -Landroid/content/pm/PackageItemInfo;->setForceSafeLabels(Z)V -Landroid/content/pm/PackageManager;->NO_NATIVE_LIBRARIES:I -Landroid/content/pm/PackageManager;->buildRequestPermissionsIntent([Ljava/lang/String;)Landroid/content/Intent; -Landroid/content/pm/PackageManager;->freeStorage(JLandroid/content/IntentSender;)V -Landroid/content/pm/PackageManager;->freeStorage(Ljava/lang/String;JLandroid/content/IntentSender;)V -Landroid/content/pm/PackageManager;->freeStorageAndNotify(JLandroid/content/pm/IPackageDataObserver;)V -Landroid/content/pm/PackageManager;->freeStorageAndNotify(Ljava/lang/String;JLandroid/content/pm/IPackageDataObserver;)V -Landroid/content/pm/PackageManager;->getApplicationInfoAsUser(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo; -Landroid/content/pm/PackageManager;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName; -Landroid/content/pm/PackageManager;->getPackageCandidateVolumes(Landroid/content/pm/ApplicationInfo;)Ljava/util/List; -Landroid/content/pm/PackageManager;->getPackageInfoAsUser(Ljava/lang/String;II)Landroid/content/pm/PackageInfo; -Landroid/content/pm/PackageManager;->getPackageSizeInfo(Ljava/lang/String;Landroid/content/pm/IPackageStatsObserver;)V -Landroid/content/pm/PackageManager;->getResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources; -Landroid/content/pm/PackageManager;->movePackage(Ljava/lang/String;Landroid/os/storage/VolumeInfo;)I -Landroid/content/pm/PackageManager;->queryBroadcastReceivers(Landroid/content/Intent;II)Ljava/util/List; -Landroid/content/pm/PackageManager;->setInstantAppCookie([B)Z -Landroid/content/pm/PackageParser$Activity;->info:Landroid/content/pm/ActivityInfo; -Landroid/content/pm/PackageParser$ActivityIntentInfo;->activity:Landroid/content/pm/PackageParser$Activity; -Landroid/content/pm/PackageParser$Component;->className:Ljava/lang/String; -Landroid/content/pm/PackageParser$Component;->getComponentName()Landroid/content/ComponentName; -Landroid/content/pm/PackageParser$Component;->intents:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Component;->metaData:Landroid/os/Bundle; -Landroid/content/pm/PackageParser$Instrumentation;->info:Landroid/content/pm/InstrumentationInfo; -Landroid/content/pm/PackageParser$IntentInfo;-><init>()V -Landroid/content/pm/PackageParser$IntentInfo;->banner:I -Landroid/content/pm/PackageParser$IntentInfo;->hasDefault:Z -Landroid/content/pm/PackageParser$IntentInfo;->icon:I -Landroid/content/pm/PackageParser$IntentInfo;->labelRes:I -Landroid/content/pm/PackageParser$IntentInfo;->logo:I -Landroid/content/pm/PackageParser$IntentInfo;->nonLocalizedLabel:Ljava/lang/CharSequence; -Landroid/content/pm/PackageParser$Package;->activities:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->applicationInfo:Landroid/content/pm/ApplicationInfo; -Landroid/content/pm/PackageParser$Package;->configPreferences:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->instrumentation:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->mAppMetaData:Landroid/os/Bundle; -Landroid/content/pm/PackageParser$Package;->mKeySetMapping:Landroid/util/ArrayMap; -Landroid/content/pm/PackageParser$Package;->mPreferredOrder:I -Landroid/content/pm/PackageParser$Package;->mSharedUserId:Ljava/lang/String; -Landroid/content/pm/PackageParser$Package;->mSharedUserLabel:I -Landroid/content/pm/PackageParser$Package;->mVersionCode:I -Landroid/content/pm/PackageParser$Package;->mVersionName:Ljava/lang/String; -Landroid/content/pm/PackageParser$Package;->packageName:Ljava/lang/String; -Landroid/content/pm/PackageParser$Package;->permissionGroups:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->permissions:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->providers:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->receivers:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->reqFeatures:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->requestedPermissions:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->services:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->usesLibraries:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Package;->usesOptionalLibraries:Ljava/util/ArrayList; -Landroid/content/pm/PackageParser$Provider;->info:Landroid/content/pm/ProviderInfo; -Landroid/content/pm/PackageParser$ProviderIntentInfo;->provider:Landroid/content/pm/PackageParser$Provider; -Landroid/content/pm/PackageParser$Service;->info:Landroid/content/pm/ServiceInfo; -Landroid/content/pm/PackageParser$ServiceIntentInfo;->service:Landroid/content/pm/PackageParser$Service; -Landroid/content/pm/PackageParser;-><init>()V -Landroid/content/pm/PackageParser;->collectCertificates(Landroid/content/pm/PackageParser$Package;Ljava/io/File;Z)V -Landroid/content/pm/PackageParser;->collectCertificates(Landroid/content/pm/PackageParser$Package;Z)V -Landroid/content/pm/PackageParser;->generateActivityInfo(Landroid/content/pm/PackageParser$Activity;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ActivityInfo; -Landroid/content/pm/PackageParser;->generateApplicationInfo(Landroid/content/pm/PackageParser$Package;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ApplicationInfo; -Landroid/content/pm/PackageParser;->generateInstrumentationInfo(Landroid/content/pm/PackageParser$Instrumentation;I)Landroid/content/pm/InstrumentationInfo; -Landroid/content/pm/PackageParser;->generatePackageInfo(Landroid/content/pm/PackageParser$Package;[IIJJLjava/util/Set;Landroid/content/pm/PackageUserState;)Landroid/content/pm/PackageInfo; -Landroid/content/pm/PackageParser;->generatePackageInfo(Landroid/content/pm/PackageParser$Package;[IIJJLjava/util/Set;Landroid/content/pm/PackageUserState;I)Landroid/content/pm/PackageInfo; -Landroid/content/pm/PackageParser;->generatePermissionGroupInfo(Landroid/content/pm/PackageParser$PermissionGroup;I)Landroid/content/pm/PermissionGroupInfo; -Landroid/content/pm/PackageParser;->generatePermissionInfo(Landroid/content/pm/PackageParser$Permission;I)Landroid/content/pm/PermissionInfo; -Landroid/content/pm/PackageParser;->generateProviderInfo(Landroid/content/pm/PackageParser$Provider;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ProviderInfo; -Landroid/content/pm/PackageParser;->generateServiceInfo(Landroid/content/pm/PackageParser$Service;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ServiceInfo; -Landroid/content/pm/PackageParser;->parseBaseApk(Ljava/lang/String;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;)Landroid/content/pm/PackageParser$Package; -Landroid/content/pm/PackageParser;->parseMonolithicPackage(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package; -Landroid/content/pm/PackageParser;->parsePackage(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package; -Landroid/content/pm/PackageParser;->parsePackage(Ljava/io/File;IZ)Landroid/content/pm/PackageParser$Package; -Landroid/content/pm/PackageUserState;-><init>()V -Landroid/content/pm/ParceledListSlice;-><init>(Ljava/util/List;)V -Landroid/content/pm/ResolveInfo;->instantAppAvailable:Z -Landroid/content/pm/SharedLibraryInfo;->isBuiltin()Z -Landroid/content/pm/SharedLibraryInfo;->isDynamic()Z -Landroid/content/pm/SharedLibraryInfo;->isStatic()Z -Landroid/content/pm/ShortcutManager;->mService:Landroid/content/pm/IShortcutService; -Landroid/content/pm/Signature;->getPublicKey()Ljava/security/PublicKey; -Landroid/content/pm/UserInfo;-><init>(ILjava/lang/String;I)V -Landroid/content/pm/UserInfo;->FLAG_PRIMARY:I -Landroid/content/pm/UserInfo;->id:I -Landroid/content/pm/UserInfo;->isPrimary()Z -Landroid/content/pm/UserInfo;->serialNumber:I -Landroid/content/res/AssetFileDescriptor;->mFd:Landroid/os/ParcelFileDescriptor; -Landroid/content/res/AssetFileDescriptor;->mLength:J -Landroid/content/res/AssetFileDescriptor;->mStartOffset:J -Landroid/content/res/AssetManager;-><init>()V -Landroid/content/res/AssetManager;->addAssetPath(Ljava/lang/String;)I -Landroid/content/res/AssetManager;->addAssetPathAsSharedLibrary(Ljava/lang/String;)I -Landroid/content/res/AssetManager;->applyStyle(JIILandroid/content/res/XmlBlock$Parser;[IJJ)V -Landroid/content/res/AssetManager;->createTheme()J -Landroid/content/res/AssetManager;->getAssignedPackageIdentifiers()Landroid/util/SparseArray; -Landroid/content/res/AssetManager;->getResourceBagText(II)Ljava/lang/CharSequence; -Landroid/content/res/AssetManager;->getResourceEntryName(I)Ljava/lang/String; -Landroid/content/res/AssetManager;->getResourceIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I -Landroid/content/res/AssetManager;->getResourceName(I)Ljava/lang/String; -Landroid/content/res/AssetManager;->getResourcePackageName(I)Ljava/lang/String; -Landroid/content/res/AssetManager;->getResourceTypeName(I)Ljava/lang/String; -Landroid/content/res/AssetManager;->isUpToDate()Z -Landroid/content/res/AssetManager;->mObject:J -Landroid/content/res/AssetManager;->openNonAsset(ILjava/lang/String;)Ljava/io/InputStream; -Landroid/content/res/AssetManager;->openNonAsset(ILjava/lang/String;I)Ljava/io/InputStream; -Landroid/content/res/AssetManager;->openNonAsset(Ljava/lang/String;)Ljava/io/InputStream; -Landroid/content/res/AssetManager;->openNonAsset(Ljava/lang/String;I)Ljava/io/InputStream; -Landroid/content/res/AssetManager;->resolveAttrs(JII[I[I[I[I)Z -Landroid/content/res/AssetManager;->retrieveAttributes(Landroid/content/res/XmlBlock$Parser;[I[I[I)Z -Landroid/content/res/AssetManager;->setConfiguration(IILjava/lang/String;IIIIIIIIIIIIIII)V -Landroid/content/res/ColorStateList$ColorStateListFactory;-><init>(Landroid/content/res/ColorStateList;)V -Landroid/content/res/ColorStateList;->getColors()[I -Landroid/content/res/ColorStateList;->mColors:[I -Landroid/content/res/ColorStateList;->mDefaultColor:I -Landroid/content/res/ColorStateList;->mFactory:Landroid/content/res/ColorStateList$ColorStateListFactory; -Landroid/content/res/ColorStateList;->mStateSpecs:[[I -Landroid/content/res/ColorStateList;->onColorsChanged()V -Landroid/content/res/CompatibilityInfo;-><init>(Landroid/content/pm/ApplicationInfo;IIZ)V -Landroid/content/res/CompatibilityInfo;->DEFAULT_COMPATIBILITY_INFO:Landroid/content/res/CompatibilityInfo; -Landroid/content/res/CompatibilityInfo;->applicationScale:F -Landroid/content/res/DrawableCache;-><init>()V -Landroid/content/res/DrawableCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; -Landroid/content/res/ObbInfo;->salt:[B -Landroid/content/res/Resources;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo; -Landroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser; -Landroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser; -Landroid/content/res/Resources;->mClassLoader:Ljava/lang/ClassLoader; -Landroid/content/res/Resources;->mDrawableInflater:Landroid/graphics/drawable/DrawableInflater; -Landroid/content/res/Resources;->mResourcesImpl:Landroid/content/res/ResourcesImpl; -Landroid/content/res/Resources;->mSystem:Landroid/content/res/Resources; -Landroid/content/res/Resources;->mTmpValue:Landroid/util/TypedValue; -Landroid/content/res/Resources;->mTypedArrayPool:Landroid/util/Pools$SynchronizedPool; -Landroid/content/res/Resources;->selectDefaultTheme(II)I -Landroid/content/res/Resources;->setCompatibilityInfo(Landroid/content/res/CompatibilityInfo;)V -Landroid/content/res/Resources;->updateSystemConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V -Landroid/content/res/ResourcesImpl;->TRACE_FOR_MISS_PRELOAD:Z -Landroid/content/res/ResourcesImpl;->TRACE_FOR_PRELOAD:Z -Landroid/content/res/ResourcesImpl;->getAssets()Landroid/content/res/AssetManager; -Landroid/content/res/ResourcesImpl;->getValue(ILandroid/util/TypedValue;Z)V -Landroid/content/res/ResourcesImpl;->mAccessLock:Ljava/lang/Object; -Landroid/content/res/ResourcesImpl;->mAnimatorCache:Landroid/content/res/ConfigurationBoundResourceCache; -Landroid/content/res/ResourcesImpl;->mAssets:Landroid/content/res/AssetManager; -Landroid/content/res/ResourcesImpl;->mColorDrawableCache:Landroid/content/res/DrawableCache; -Landroid/content/res/ResourcesImpl;->mConfiguration:Landroid/content/res/Configuration; -Landroid/content/res/ResourcesImpl;->mDrawableCache:Landroid/content/res/DrawableCache; -Landroid/content/res/ResourcesImpl;->mPreloading:Z -Landroid/content/res/ResourcesImpl;->mStateListAnimatorCache:Landroid/content/res/ConfigurationBoundResourceCache; -Landroid/content/res/ResourcesImpl;->sPreloadedColorDrawables:Landroid/util/LongSparseArray; -Landroid/content/res/ResourcesImpl;->sPreloadedComplexColors:Landroid/util/LongSparseArray; -Landroid/content/res/ResourcesImpl;->sPreloadedDrawables:[Landroid/util/LongSparseArray; -Landroid/content/res/ResourcesKey;->mSplitResDirs:[Ljava/lang/String; -Landroid/content/res/StringBlock;-><init>(JZ)V -Landroid/content/res/ThemedResourceCache;->onConfigurationChange(I)V -Landroid/content/res/TypedArray;->extractThemeAttrs()[I -Landroid/content/res/TypedArray;->getNonConfigurationString(II)Ljava/lang/String; -Landroid/content/res/TypedArray;->getValueAt(ILandroid/util/TypedValue;)Z -Landroid/content/res/TypedArray;->mAssets:Landroid/content/res/AssetManager; -Landroid/content/res/TypedArray;->mData:[I -Landroid/content/res/TypedArray;->mIndices:[I -Landroid/content/res/TypedArray;->mLength:I -Landroid/content/res/TypedArray;->mMetrics:Landroid/util/DisplayMetrics; -Landroid/content/res/TypedArray;->mRecycled:Z -Landroid/content/res/TypedArray;->mResources:Landroid/content/res/Resources; -Landroid/content/res/TypedArray;->mTheme:Landroid/content/res/Resources$Theme; -Landroid/content/res/TypedArray;->mValue:Landroid/util/TypedValue; -Landroid/content/res/TypedArray;->mXml:Landroid/content/res/XmlBlock$Parser; -Landroid/content/res/XmlBlock$Parser;->mBlock:Landroid/content/res/XmlBlock; -Landroid/content/res/XmlBlock$Parser;->mParseState:J -Landroid/content/res/XmlBlock;-><init>([B)V -Landroid/content/res/XmlBlock;->newParser()Landroid/content/res/XmlResourceParser; -Landroid/database/AbstractCursor;->mCurrentRowID:Ljava/lang/Long; -Landroid/database/AbstractCursor;->mExtras:Landroid/os/Bundle; -Landroid/database/AbstractCursor;->mNotifyUri:Landroid/net/Uri; -Landroid/database/AbstractCursor;->mRowIdColumnIndex:I -Landroid/database/AbstractCursor;->mUpdatedRows:Ljava/util/HashMap; -Landroid/database/AbstractWindowedCursor;->clearOrCreateWindow(Ljava/lang/String;)V -Landroid/database/CursorWindow;->mWindowPtr:J -Landroid/database/CursorWindow;->sCursorWindowSize:I -Landroid/database/CursorWindow;->sWindowToPidMap:Landroid/util/LongSparseArray; -Landroid/database/CursorWrapper;->mCursor:Landroid/database/Cursor; -Landroid/database/sqlite/SQLiteCustomFunction;->dispatchCallback([Ljava/lang/String;)V -Landroid/database/sqlite/SQLiteCustomFunction;->name:Ljava/lang/String; -Landroid/database/sqlite/SQLiteCustomFunction;->numArgs:I -Landroid/database/sqlite/SQLiteDatabase;->CONFLICT_VALUES:[Ljava/lang/String; -Landroid/database/sqlite/SQLiteDatabase;->mConfigurationLocked:Landroid/database/sqlite/SQLiteDatabaseConfiguration; -Landroid/database/sqlite/SQLiteDatabase;->mConnectionPoolLocked:Landroid/database/sqlite/SQLiteConnectionPool; -Landroid/database/sqlite/SQLiteDatabase;->reopenReadWrite()V -Landroid/database/sqlite/SQLiteDatabaseConfiguration;->maxSqlCacheSize:I -Landroid/database/sqlite/SQLiteDebug$PagerStats;->largestMemAlloc:I -Landroid/database/sqlite/SQLiteDebug$PagerStats;->memoryUsed:I -Landroid/database/sqlite/SQLiteDebug$PagerStats;->pageCacheOverflow:I -Landroid/database/sqlite/SQLiteOpenHelper;->mName:Ljava/lang/String; -Landroid/database/sqlite/SQLiteStatement;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V -Landroid/database/sqlite/SqliteWrapper;->insert(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri; -Landroid/database/sqlite/SqliteWrapper;->query(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor; -Landroid/ddm/DdmHandleAppName;->getAppName()Ljava/lang/String; -Landroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;I)V -Landroid/graphics/AvoidXfermode$Mode; -Landroid/graphics/AvoidXfermode$Mode;->AVOID:Landroid/graphics/AvoidXfermode$Mode; -Landroid/graphics/AvoidXfermode$Mode;->TARGET:Landroid/graphics/AvoidXfermode$Mode; -Landroid/graphics/AvoidXfermode$Mode;->valueOf(Ljava/lang/String;)Landroid/graphics/AvoidXfermode$Mode; -Landroid/graphics/AvoidXfermode$Mode;->values()[Landroid/graphics/AvoidXfermode$Mode; -Landroid/graphics/AvoidXfermode; -Landroid/graphics/AvoidXfermode;-><init>(IILandroid/graphics/AvoidXfermode$Mode;)V -Landroid/graphics/BaseCanvas;->mNativeCanvasWrapper:J -Landroid/graphics/Bitmap$Config;->nativeInt:I -Landroid/graphics/Bitmap$Config;->nativeToConfig(I)Landroid/graphics/Bitmap$Config; -Landroid/graphics/Bitmap;-><init>(JIIIZZ[BLandroid/graphics/NinePatch$InsetStruct;)V -Landroid/graphics/Bitmap;->createAshmemBitmap()Landroid/graphics/Bitmap; -Landroid/graphics/Bitmap;->createAshmemBitmap(Landroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap; -Landroid/graphics/Bitmap;->createGraphicBufferHandle()Landroid/graphics/GraphicBuffer; -Landroid/graphics/Bitmap;->createHardwareBitmap(Landroid/graphics/GraphicBuffer;)Landroid/graphics/Bitmap; -Landroid/graphics/Bitmap;->getDefaultDensity()I -Landroid/graphics/Bitmap;->mNativePtr:J -Landroid/graphics/Bitmap;->mNinePatchChunk:[B -Landroid/graphics/Bitmap;->mNinePatchInsets:Landroid/graphics/NinePatch$InsetStruct; -Landroid/graphics/Bitmap;->reinit(IIZ)V -Landroid/graphics/Bitmap;->setDefaultDensity(I)V -Landroid/graphics/BitmapFactory;->nativeDecodeAsset(JLandroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; -Landroid/graphics/BitmapFactory;->nativeDecodeByteArray([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; -Landroid/graphics/BitmapFactory;->nativeDecodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; -Landroid/graphics/BitmapFactory;->nativeDecodeStream(Ljava/io/InputStream;[BLandroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap; -Landroid/graphics/BitmapRegionDecoder;-><init>(J)V -Landroid/graphics/Camera;->native_instance:J -Landroid/graphics/Canvas;-><init>(J)V -Landroid/graphics/Canvas;->CLIP_SAVE_FLAG:I -Landroid/graphics/Canvas;->CLIP_TO_LAYER_SAVE_FLAG:I -Landroid/graphics/Canvas;->FULL_COLOR_LAYER_SAVE_FLAG:I -Landroid/graphics/Canvas;->HAS_ALPHA_LAYER_SAVE_FLAG:I -Landroid/graphics/Canvas;->MATRIX_SAVE_FLAG:I -Landroid/graphics/Canvas;->clipRegion(Landroid/graphics/Region;)Z -Landroid/graphics/Canvas;->clipRegion(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z -Landroid/graphics/Canvas;->release()V -Landroid/graphics/Canvas;->save(I)I -Landroid/graphics/ColorMatrixColorFilter;->setColorMatrix(Landroid/graphics/ColorMatrix;)V -Landroid/graphics/FontFamily;-><init>()V -Landroid/graphics/FontFamily;->abortCreation()V -Landroid/graphics/FontFamily;->addFontFromAssetManager(Landroid/content/res/AssetManager;Ljava/lang/String;IZIII[Landroid/graphics/fonts/FontVariationAxis;)Z -Landroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z -Landroid/graphics/FontFamily;->freeze()Z -Landroid/graphics/GraphicBuffer;-><init>(IIIIJ)V -Landroid/graphics/GraphicBuffer;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/graphics/GraphicBuffer;->createFromExisting(IIIIJ)Landroid/graphics/GraphicBuffer; -Landroid/graphics/GraphicBuffer;->mNativeObject:J -Landroid/graphics/ImageDecoder$IncompleteException; -Landroid/graphics/ImageDecoder$IncompleteException;-><init>()V -Landroid/graphics/ImageDecoder;->ERROR_SOURCE_ERROR:I -Landroid/graphics/ImageDecoder;->ERROR_SOURCE_EXCEPTION:I -Landroid/graphics/ImageDecoder;->ERROR_SOURCE_INCOMPLETE:I -Landroid/graphics/ImageDecoder;->getAsAlphaMask()Z -Landroid/graphics/ImageDecoder;->getConserveMemory()Z -Landroid/graphics/ImageDecoder;->getDecodeAsAlphaMask()Z -Landroid/graphics/ImageDecoder;->getMutable()Z -Landroid/graphics/ImageDecoder;->getRequireUnpremultiplied()Z -Landroid/graphics/ImageDecoder;->postProcessAndRelease(Landroid/graphics/Canvas;)I -Landroid/graphics/ImageDecoder;->setAsAlphaMask(Z)Landroid/graphics/ImageDecoder; -Landroid/graphics/ImageDecoder;->setConserveMemory(Z)V -Landroid/graphics/ImageDecoder;->setDecodeAsAlphaMask(Z)Landroid/graphics/ImageDecoder; -Landroid/graphics/ImageDecoder;->setMutable(Z)Landroid/graphics/ImageDecoder; -Landroid/graphics/ImageDecoder;->setRequireUnpremultiplied(Z)Landroid/graphics/ImageDecoder; -Landroid/graphics/ImageDecoder;->setResize(I)Landroid/graphics/ImageDecoder; -Landroid/graphics/ImageDecoder;->setResize(II)Landroid/graphics/ImageDecoder; -Landroid/graphics/Insets;->left:I -Landroid/graphics/Insets;->right:I -Landroid/graphics/LayerRasterizer; -Landroid/graphics/LayerRasterizer;-><init>()V -Landroid/graphics/LayerRasterizer;->addLayer(Landroid/graphics/Paint;)V -Landroid/graphics/LayerRasterizer;->addLayer(Landroid/graphics/Paint;FF)V -Landroid/graphics/LinearGradient;->mColors:[I -Landroid/graphics/Matrix;->native_instance:J -Landroid/graphics/Movie;-><init>(J)V -Landroid/graphics/Movie;->mNativeMovie:J -Landroid/graphics/NinePatch$InsetStruct;-><init>(IIIIIIIIFIF)V -Landroid/graphics/NinePatch;->mBitmap:Landroid/graphics/Bitmap; -Landroid/graphics/Paint;->getRasterizer()Landroid/graphics/Rasterizer; -Landroid/graphics/Paint;->setRasterizer(Landroid/graphics/Rasterizer;)Landroid/graphics/Rasterizer; -Landroid/graphics/Picture;->mNativePicture:J -Landroid/graphics/PixelXorXfermode; -Landroid/graphics/PixelXorXfermode;-><init>(I)V -Landroid/graphics/PorterDuffColorFilter;->getColor()I -Landroid/graphics/PorterDuffColorFilter;->setColor(I)V -Landroid/graphics/PorterDuffColorFilter;->setMode(Landroid/graphics/PorterDuff$Mode;)V -Landroid/graphics/Rasterizer; -Landroid/graphics/Rasterizer;-><init>()V -Landroid/graphics/Rect;->scale(F)V -Landroid/graphics/Region;-><init>(JI)V -Landroid/graphics/Region;->mNativeRegion:J -Landroid/graphics/SurfaceTexture;->mFrameAvailableListener:J -Landroid/graphics/SurfaceTexture;->mProducer:J -Landroid/graphics/SurfaceTexture;->mSurfaceTexture:J -Landroid/graphics/SurfaceTexture;->nativeDetachFromGLContext()I -Landroid/graphics/SurfaceTexture;->postEventFromNative(Ljava/lang/ref/WeakReference;)V -Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;II)Landroid/graphics/Typeface; -Landroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface; -Landroid/graphics/Typeface;->mStyle:I -Landroid/graphics/Typeface;->sDefaults:[Landroid/graphics/Typeface; -Landroid/graphics/Typeface;->sSystemFontMap:Ljava/util/Map; -Landroid/graphics/Typeface;->setDefault(Landroid/graphics/Typeface;)V -Landroid/graphics/drawable/AnimatedImageDrawable;->LOOP_INFINITE:I -Landroid/graphics/drawable/AnimatedImageDrawable;->getLoopCount(I)I -Landroid/graphics/drawable/AnimatedImageDrawable;->onAnimationEnd()V -Landroid/graphics/drawable/AnimatedImageDrawable;->setLoopCount(I)V -Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->mStateIds:Landroid/util/SparseIntArray; -Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->mTransitions:Landroid/util/LongSparseLongArray; -Landroid/graphics/drawable/AnimatedStateListDrawable;->mState:Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState; -Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->callOnFinished(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;I)V -Landroid/graphics/drawable/AnimationDrawable;->mCurFrame:I -Landroid/graphics/drawable/BitmapDrawable;->getOpticalInsets()Landroid/graphics/Insets; -Landroid/graphics/drawable/BitmapDrawable;->getTint()Landroid/content/res/ColorStateList; -Landroid/graphics/drawable/BitmapDrawable;->getTintMode()Landroid/graphics/PorterDuff$Mode; -Landroid/graphics/drawable/BitmapDrawable;->mTargetDensity:I -Landroid/graphics/drawable/BitmapDrawable;->setBitmap(Landroid/graphics/Bitmap;)V -Landroid/graphics/drawable/ColorDrawable$ColorState;->mUseColor:I -Landroid/graphics/drawable/Drawable;->getOpticalInsets()Landroid/graphics/Insets; -Landroid/graphics/drawable/Drawable;->inflateWithAttributes(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/TypedArray;I)V -Landroid/graphics/drawable/Drawable;->isProjected()Z -Landroid/graphics/drawable/Drawable;->mCallback:Ljava/lang/ref/WeakReference; -Landroid/graphics/drawable/Drawable;->parseTintMode(ILandroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuff$Mode; -Landroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter; -Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;->mConstantPadding:Landroid/graphics/Rect; -Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;->mDrawables:[Landroid/graphics/drawable/Drawable; -Landroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets; -Landroid/graphics/drawable/DrawableContainer;->mDrawableContainerState:Landroid/graphics/drawable/DrawableContainer$DrawableContainerState; -Landroid/graphics/drawable/DrawableInflater;->mClassLoader:Ljava/lang/ClassLoader; -Landroid/graphics/drawable/GradientDrawable$GradientState;->mAngle:I -Landroid/graphics/drawable/GradientDrawable$GradientState;->mGradient:I -Landroid/graphics/drawable/GradientDrawable$GradientState;->mGradientColors:[I -Landroid/graphics/drawable/GradientDrawable$GradientState;->mHeight:I -Landroid/graphics/drawable/GradientDrawable$GradientState;->mInnerRadius:I -Landroid/graphics/drawable/GradientDrawable$GradientState;->mInnerRadiusRatio:F -Landroid/graphics/drawable/GradientDrawable$GradientState;->mOrientation:Landroid/graphics/drawable/GradientDrawable$Orientation; -Landroid/graphics/drawable/GradientDrawable$GradientState;->mPadding:Landroid/graphics/Rect; -Landroid/graphics/drawable/GradientDrawable$GradientState;->mPositions:[F -Landroid/graphics/drawable/GradientDrawable$GradientState;->mRadius:F -Landroid/graphics/drawable/GradientDrawable$GradientState;->mRadiusArray:[F -Landroid/graphics/drawable/GradientDrawable$GradientState;->mShape:I -Landroid/graphics/drawable/GradientDrawable$GradientState;->mSolidColors:Landroid/content/res/ColorStateList; -Landroid/graphics/drawable/GradientDrawable$GradientState;->mStrokeDashGap:F -Landroid/graphics/drawable/GradientDrawable$GradientState;->mStrokeDashWidth:F -Landroid/graphics/drawable/GradientDrawable$GradientState;->mStrokeWidth:I -Landroid/graphics/drawable/GradientDrawable$GradientState;->mThickness:I -Landroid/graphics/drawable/GradientDrawable$GradientState;->mThicknessRatio:F -Landroid/graphics/drawable/GradientDrawable$GradientState;->mWidth:I -Landroid/graphics/drawable/GradientDrawable;->getOpticalInsets()Landroid/graphics/Insets; -Landroid/graphics/drawable/GradientDrawable;->mGradientState:Landroid/graphics/drawable/GradientDrawable$GradientState; -Landroid/graphics/drawable/GradientDrawable;->mPadding:Landroid/graphics/Rect; -Landroid/graphics/drawable/Icon;->getBitmap()Landroid/graphics/Bitmap; -Landroid/graphics/drawable/Icon;->getDataBytes()[B -Landroid/graphics/drawable/Icon;->getDataLength()I -Landroid/graphics/drawable/Icon;->getDataOffset()I -Landroid/graphics/drawable/Icon;->getResources()Landroid/content/res/Resources; -Landroid/graphics/drawable/Icon;->hasTint()Z -Landroid/graphics/drawable/Icon;->mString1:Ljava/lang/String; -Landroid/graphics/drawable/Icon;->mType:I -Landroid/graphics/drawable/InsetDrawable;->mState:Landroid/graphics/drawable/InsetDrawable$InsetState; -Landroid/graphics/drawable/LayerDrawable$ChildDrawable;->mDrawable:Landroid/graphics/drawable/Drawable; -Landroid/graphics/drawable/LayerDrawable$LayerState;->mChildren:[Landroid/graphics/drawable/LayerDrawable$ChildDrawable; -Landroid/graphics/drawable/LayerDrawable;->mLayerState:Landroid/graphics/drawable/LayerDrawable$LayerState; -Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;->mNinePatch:Landroid/graphics/NinePatch; -Landroid/graphics/drawable/NinePatchDrawable;->mNinePatchState:Landroid/graphics/drawable/NinePatchDrawable$NinePatchState; -Landroid/graphics/drawable/RippleDrawable$RippleState;->mColor:Landroid/content/res/ColorStateList; -Landroid/graphics/drawable/RippleDrawable;->mState:Landroid/graphics/drawable/RippleDrawable$RippleState; -Landroid/graphics/drawable/StateListDrawable;->extractStateSet(Landroid/util/AttributeSet;)[I -Landroid/graphics/drawable/StateListDrawable;->getStateCount()I -Landroid/graphics/drawable/StateListDrawable;->getStateDrawable(I)Landroid/graphics/drawable/Drawable; -Landroid/graphics/drawable/StateListDrawable;->getStateDrawableIndex([I)I -Landroid/graphics/drawable/StateListDrawable;->getStateSet(I)[I -Landroid/graphics/drawable/StateListDrawable;->mStateListState:Landroid/graphics/drawable/StateListDrawable$StateListState; -Landroid/graphics/drawable/StateListDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V -Landroid/graphics/drawable/VectorDrawable$VGroup;->setRotation(F)V -Landroid/graphics/drawable/VectorDrawable;->getTargetByName(Ljava/lang/String;)Ljava/lang/Object; -Landroid/graphics/drawable/VectorDrawable;->mTintFilter:Landroid/graphics/PorterDuffColorFilter; -Landroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V -Landroid/graphics/fonts/FontVariationAxis;->mStyleValue:F -Landroid/graphics/fonts/FontVariationAxis;->mTag:I -Landroid/hardware/Camera;->addCallbackBuffer([BI)V -Landroid/hardware/Camera;->mNativeContext:J -Landroid/hardware/Camera;->native_setup(Ljava/lang/Object;IILjava/lang/String;)I -Landroid/hardware/Camera;->openLegacy(II)Landroid/hardware/Camera; -Landroid/hardware/Camera;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V -Landroid/hardware/HardwareBuffer;-><init>(J)V -Landroid/hardware/HardwareBuffer;->destroy()V -Landroid/hardware/HardwareBuffer;->isDestroyed()Z -Landroid/hardware/HardwareBuffer;->mNativeObject:J -Landroid/hardware/ICameraService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraService; -Landroid/hardware/SensorDirectChannel;->isValid()Z -Landroid/hardware/SensorManager;->configureDirectChannel(Landroid/hardware/SensorDirectChannel;Landroid/hardware/Sensor;I)I -Landroid/hardware/SerialPort;->mNativeContext:I -Landroid/hardware/SystemSensorManager$BaseEventQueue;->dispatchAdditionalInfoEvent(III[F[I)V -Landroid/hardware/SystemSensorManager$BaseEventQueue;->dispatchFlushCompleteEvent(I)V -Landroid/hardware/SystemSensorManager$BaseEventQueue;->dispatchSensorEvent(I[FIJ)V -Landroid/hardware/camera2/CameraAccessException;->serialVersionUID:J -Landroid/hardware/camera2/CameraCharacteristics$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V -Landroid/hardware/camera2/CameraCharacteristics$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V -Landroid/hardware/camera2/CameraCharacteristics$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;J)V -Landroid/hardware/camera2/CameraCharacteristics$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; -Landroid/hardware/camera2/CameraCharacteristics;->CONTROL_AVAILABLE_HIGH_SPEED_VIDEO_CONFIGURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->CONTROL_MAX_REGIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->DEPTH_AVAILABLE_DEPTH_MIN_FRAME_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->DEPTH_AVAILABLE_DEPTH_STALL_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->DEPTH_AVAILABLE_DEPTH_STREAM_CONFIGURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->LED_AVAILABLE_LEDS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->LENS_INFO_SHADING_MAP_SIZE:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->LOGICAL_MULTI_CAMERA_PHYSICAL_IDS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->QUIRKS_USE_PARTIAL_RESULT:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_CHARACTERISTICS_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_REQUEST_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_RESULT_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_AVAILABLE_SESSION_KEYS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->REQUEST_MAX_NUM_OUTPUT_STREAMS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_FORMATS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_INPUT_OUTPUT_FORMATS_MAP:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_JPEG_MIN_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_JPEG_SIZES:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_MIN_FRAME_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_PROCESSED_MIN_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_PROCESSED_SIZES:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_STALL_DURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CameraCharacteristics;->SCALER_AVAILABLE_STREAM_CONFIGURATIONS:Landroid/hardware/camera2/CameraCharacteristics$Key; -Landroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V -Landroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V -Landroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;J)V -Landroid/hardware/camera2/CaptureRequest$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; -Landroid/hardware/camera2/CaptureRequest;->JPEG_GPS_COORDINATES:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->JPEG_GPS_PROCESSING_METHOD:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->JPEG_GPS_TIMESTAMP:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->LED_TRANSMIT:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->REQUEST_ID:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->TONEMAP_CURVE_BLUE:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->TONEMAP_CURVE_GREEN:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureRequest;->TONEMAP_CURVE_RED:Landroid/hardware/camera2/CaptureRequest$Key; -Landroid/hardware/camera2/CaptureResult$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V -Landroid/hardware/camera2/CaptureResult$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V -Landroid/hardware/camera2/CaptureResult$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;J)V -Landroid/hardware/camera2/CaptureResult$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key; -Landroid/hardware/camera2/CaptureResult;->JPEG_GPS_COORDINATES:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->JPEG_GPS_PROCESSING_METHOD:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->JPEG_GPS_TIMESTAMP:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->LED_TRANSMIT:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->QUIRKS_PARTIAL_RESULT:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->REQUEST_FRAME_COUNT:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->REQUEST_ID:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_FACE_IDS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_FACE_LANDMARKS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_FACE_RECTANGLES:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_FACE_SCORES:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_LENS_SHADING_MAP:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_OIS_TIMESTAMPS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_OIS_X_SHIFTS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_OIS_Y_SHIFTS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_PREDICTED_COLOR_GAINS:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->STATISTICS_PREDICTED_COLOR_TRANSFORM:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->SYNC_FRAME_NUMBER:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->TONEMAP_CURVE_BLUE:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->TONEMAP_CURVE_GREEN:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/CaptureResult;->TONEMAP_CURVE_RED:Landroid/hardware/camera2/CaptureResult$Key; -Landroid/hardware/camera2/impl/CameraMetadataNative$Key;->getTag()I -Landroid/hardware/camera2/impl/CameraMetadataNative;->mMetadataPtr:J -Landroid/hardware/camera2/utils/TypeReference;->createSpecializedTypeReference(Ljava/lang/reflect/Type;)Landroid/hardware/camera2/utils/TypeReference; -Landroid/hardware/display/DisplayManagerGlobal;->getInstance()Landroid/hardware/display/DisplayManagerGlobal; -Landroid/hardware/display/DisplayManagerGlobal;->getRealDisplay(I)Landroid/view/Display; -Landroid/hardware/display/DisplayManagerGlobal;->mDm:Landroid/hardware/display/IDisplayManager; -Landroid/hardware/display/DisplayManagerGlobal;->sInstance:Landroid/hardware/display/DisplayManagerGlobal; -Landroid/hardware/display/IDisplayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IDisplayManager; -Landroid/hardware/display/WifiDisplayStatus;->mActiveDisplay:Landroid/hardware/display/WifiDisplay; -Landroid/hardware/display/WifiDisplayStatus;->mDisplays:[Landroid/hardware/display/WifiDisplay; -Landroid/hardware/fingerprint/Fingerprint;->getFingerId()I -Landroid/hardware/fingerprint/Fingerprint;->getName()Ljava/lang/CharSequence; -Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/hardware/input/IInputManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/hardware/input/IInputManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/IInputManager; -Landroid/hardware/input/InputManager;->INJECT_INPUT_EVENT_MODE_WAIT_FOR_FINISH:I -Landroid/hardware/input/InputManager;->getInstance()Landroid/hardware/input/InputManager; -Landroid/hardware/input/InputManager;->injectInputEvent(Landroid/view/InputEvent;I)Z -Landroid/hardware/input/InputManager;->mIm:Landroid/hardware/input/IInputManager; -Landroid/hardware/location/GeofenceHardware;-><init>(Landroid/hardware/location/IGeofenceHardware;)V -Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;-><init>()V -Landroid/hardware/location/IActivityRecognitionHardwareClient;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V -Landroid/hardware/location/IContextHubService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubService; -Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;-><init>(II)V -Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;->confidenceLevel:I -Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;->userId:I -Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B)V -Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;-><init>(Ljava/util/UUID;Ljava/util/UUID;[B)V -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->id:I -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->locale:Ljava/lang/String; -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->recognitionModes:I -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->text:Ljava/lang/String; -Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->users:[I -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;)V -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;-><init>(III[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;)V -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->coarseConfidenceLevel:I -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->confidenceLevels:[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel; -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->id:I -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->recognitionModes:I -Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;->keyphrases:[Landroid/hardware/soundtrigger/SoundTrigger$Keyphrase; -Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIIZIZIZ)V -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;-><init>(ZZ[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;[B)V -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->captureRequested:Z -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->data:[B -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->keyphrases:[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra; -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B)V -Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->data:[B -Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->data:[B -Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->uuid:Ljava/util/UUID; -Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;->vendorUuid:Ljava/util/UUID; -Landroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent;-><init>(II[B)V -Landroid/hardware/soundtrigger/SoundTriggerModule;->mId:I -Landroid/hardware/soundtrigger/SoundTriggerModule;->mNativeContext:J -Landroid/hardware/soundtrigger/SoundTriggerModule;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V -Landroid/hardware/usb/IUsbManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/hardware/usb/UsbDeviceConnection;->mNativeContext:J -Landroid/hardware/usb/UsbManager;->getPortStatus(Landroid/hardware/usb/UsbPort;)Landroid/hardware/usb/UsbPortStatus; -Landroid/hardware/usb/UsbManager;->getPorts()[Landroid/hardware/usb/UsbPort; -Landroid/hardware/usb/UsbManager;->setCurrentFunction(Ljava/lang/String;Z)V -Landroid/hardware/usb/UsbManager;->setPortRoles(Landroid/hardware/usb/UsbPort;II)V -Landroid/hardware/usb/UsbPortStatus;->getCurrentDataRole()I -Landroid/hardware/usb/UsbPortStatus;->getCurrentMode()I -Landroid/hardware/usb/UsbPortStatus;->getCurrentPowerRole()I -Landroid/hardware/usb/UsbPortStatus;->getSupportedRoleCombinations()I -Landroid/hardware/usb/UsbPortStatus;->isConnected()Z -Landroid/hardware/usb/UsbPortStatus;->isRoleCombinationSupported(II)Z -Landroid/hardware/usb/UsbRequest;->mBuffer:Ljava/nio/ByteBuffer; -Landroid/hardware/usb/UsbRequest;->mLength:I -Landroid/hardware/usb/UsbRequest;->mNativeContext:J -Landroid/icu/impl/CurrencyData;-><init>()V -Landroid/icu/impl/TimeZoneGenericNames;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/impl/TimeZoneGenericNames;->serialVersionUID:J -Landroid/icu/impl/locale/LocaleSyntaxException;->serialVersionUID:J -Landroid/icu/impl/number/DecimalFormatProperties;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/impl/number/DecimalFormatProperties;->serialVersionUID:J -Landroid/icu/impl/number/DecimalFormatProperties;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/math/BigDecimal;->serialVersionUID:J -Landroid/icu/math/MathContext;->serialVersionUID:J -Landroid/icu/text/ArabicShaping;->isAlefMaksouraChar(C)Z -Landroid/icu/text/ArabicShaping;->isSeenTailFamilyChar(C)I -Landroid/icu/text/ArabicShaping;->isTailChar(C)Z -Landroid/icu/text/ArabicShaping;->isYehHamzaChar(C)Z -Landroid/icu/text/ArabicShapingException;->serialVersionUID:J -Landroid/icu/text/ChineseDateFormat$Field;->serialVersionUID:J -Landroid/icu/text/ChineseDateFormat;->serialVersionUID:J -Landroid/icu/text/ChineseDateFormatSymbols;->serialVersionUID:J -Landroid/icu/text/CompactDecimalFormat;->serialVersionUID:J -Landroid/icu/text/CurrencyPluralInfo;->serialVersionUID:J -Landroid/icu/text/DateFormat$Field;->serialVersionUID:J -Landroid/icu/text/DateFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/DateFormat;->serialVersionUID:J -Landroid/icu/text/DateFormatSymbols;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; -Landroid/icu/text/DateFormatSymbols;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/DateFormatSymbols;->serialVersionUID:J -Landroid/icu/text/DateIntervalFormat;-><init>()V -Landroid/icu/text/DateIntervalFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/DateIntervalFormat;->serialVersionUID:J -Landroid/icu/text/DateIntervalInfo$PatternInfo;->serialVersionUID:J -Landroid/icu/text/DateIntervalInfo;->serialVersionUID:J -Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;-><init>()V -Landroid/icu/text/DecimalFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/DecimalFormat;->serialVersionUID:J -Landroid/icu/text/DecimalFormat;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/DecimalFormatSymbols;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; -Landroid/icu/text/DecimalFormatSymbols;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/DecimalFormatSymbols;->serialVersionUID:J -Landroid/icu/text/DecimalFormat_ICU58_Android;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->serialVersionUID:J -Landroid/icu/text/DecimalFormat_ICU58_Android;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/DurationFormat;->serialVersionUID:J -Landroid/icu/text/MeasureFormat$MeasureProxy;->readResolve()Ljava/lang/Object; -Landroid/icu/text/MeasureFormat$MeasureProxy;->serialVersionUID:J -Landroid/icu/text/MeasureFormat;->serialVersionUID:J -Landroid/icu/text/MeasureFormat;->writeReplace()Ljava/lang/Object; -Landroid/icu/text/MessageFormat$Field;->serialVersionUID:J -Landroid/icu/text/MessageFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/MessageFormat;->serialVersionUID:J -Landroid/icu/text/MessageFormat;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/NumberFormat$Field;->serialVersionUID:J -Landroid/icu/text/NumberFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/NumberFormat;->serialVersionUID:J -Landroid/icu/text/NumberFormat;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/PluralFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/PluralFormat;->serialVersionUID:J -Landroid/icu/text/PluralRules$AndConstraint;->serialVersionUID:J -Landroid/icu/text/PluralRules$BinaryConstraint;->serialVersionUID:J -Landroid/icu/text/PluralRules$FixedDecimal;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/PluralRules$FixedDecimal;->serialVersionUID:J -Landroid/icu/text/PluralRules$FixedDecimal;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/PluralRules$OrConstraint;->serialVersionUID:J -Landroid/icu/text/PluralRules$RangeConstraint;->serialVersionUID:J -Landroid/icu/text/PluralRules$Rule;->serialVersionUID:J -Landroid/icu/text/PluralRules$RuleList;->serialVersionUID:J -Landroid/icu/text/PluralRules;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/PluralRules;->serialVersionUID:J -Landroid/icu/text/PluralRules;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/PluralRules;->writeReplace()Ljava/lang/Object; -Landroid/icu/text/RuleBasedCollator;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; -Landroid/icu/text/RuleBasedNumberFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/RuleBasedNumberFormat;->serialVersionUID:J -Landroid/icu/text/RuleBasedNumberFormat;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/SelectFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/SelectFormat;->serialVersionUID:J -Landroid/icu/text/SimpleDateFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/SimpleDateFormat;->serialVersionUID:J -Landroid/icu/text/SimpleDateFormat;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/SpoofChecker$ScriptSet;-><init>()V -Landroid/icu/text/SpoofChecker$ScriptSet;->and(I)V -Landroid/icu/text/SpoofChecker$ScriptSet;->isFull()Z -Landroid/icu/text/SpoofChecker$ScriptSet;->serialVersionUID:J -Landroid/icu/text/SpoofChecker$ScriptSet;->setAll()V -Landroid/icu/text/StringPrepParseException;->serialVersionUID:J -Landroid/icu/text/TimeUnitFormat;->readResolve()Ljava/lang/Object; -Landroid/icu/text/TimeUnitFormat;->serialVersionUID:J -Landroid/icu/text/TimeUnitFormat;->writeReplace()Ljava/lang/Object; -Landroid/icu/text/TimeZoneFormat;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/text/TimeZoneFormat;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Landroid/icu/text/TimeZoneFormat;->serialVersionUID:J -Landroid/icu/text/TimeZoneFormat;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames$FactoryImpl;-><init>()V -Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->serialVersionUID:J -Landroid/icu/text/TimeZoneNames;->serialVersionUID:J -Landroid/icu/text/Transliterator;->createFromRules(Ljava/lang/String;Ljava/lang/String;I)Landroid/icu/text/Transliterator; -Landroid/icu/text/Transliterator;->getInstance(Ljava/lang/String;)Landroid/icu/text/Transliterator; -Landroid/icu/text/Transliterator;->transliterate(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/UFormat;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; -Landroid/icu/text/UFormat;->serialVersionUID:J -Landroid/icu/util/AnnualTimeZoneRule;->serialVersionUID:J -Landroid/icu/util/BasicTimeZone;->serialVersionUID:J -Landroid/icu/util/BuddhistCalendar;->serialVersionUID:J -Landroid/icu/util/CECalendar;->serialVersionUID:J -Landroid/icu/util/Calendar;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; -Landroid/icu/util/Calendar;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/util/Calendar;->serialVersionUID:J -Landroid/icu/util/Calendar;->writeObject(Ljava/io/ObjectOutputStream;)V -Landroid/icu/util/ChineseCalendar;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/util/ChineseCalendar;->serialVersionUID:J -Landroid/icu/util/CopticCalendar;->serialVersionUID:J -Landroid/icu/util/Currency;->readResolve()Ljava/lang/Object; -Landroid/icu/util/Currency;->serialVersionUID:J -Landroid/icu/util/Currency;->writeReplace()Ljava/lang/Object; -Landroid/icu/util/DangiCalendar;->serialVersionUID:J -Landroid/icu/util/DateInterval;->serialVersionUID:J -Landroid/icu/util/DateTimeRule;->serialVersionUID:J -Landroid/icu/util/EthiopicCalendar;->serialVersionUID:J -Landroid/icu/util/GregorianCalendar;->serialVersionUID:J -Landroid/icu/util/HebrewCalendar;->serialVersionUID:J -Landroid/icu/util/ICUCloneNotSupportedException;->serialVersionUID:J -Landroid/icu/util/ICUException;->serialVersionUID:J -Landroid/icu/util/ICUUncheckedIOException;->serialVersionUID:J -Landroid/icu/util/IllformedLocaleException;->serialVersionUID:J -Landroid/icu/util/IndianCalendar;->serialVersionUID:J -Landroid/icu/util/InitialTimeZoneRule;->serialVersionUID:J -Landroid/icu/util/IslamicCalendar;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/util/IslamicCalendar;->serialVersionUID:J -Landroid/icu/util/JapaneseCalendar;->serialVersionUID:J -Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->readResolve()Ljava/lang/Object; -Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->serialVersionUID:J -Landroid/icu/util/MeasureUnit;->serialVersionUID:J -Landroid/icu/util/MeasureUnit;->writeReplace()Ljava/lang/Object; -Landroid/icu/util/NoUnit;->serialVersionUID:J -Landroid/icu/util/PersianCalendar;->serialVersionUID:J -Landroid/icu/util/RuleBasedTimeZone;->serialVersionUID:J -Landroid/icu/util/STZInfo;->serialVersionUID:J -Landroid/icu/util/SimpleTimeZone;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/icu/util/SimpleTimeZone;->serialVersionUID:J -Landroid/icu/util/TaiwanCalendar;->serialVersionUID:J -Landroid/icu/util/TimeArrayTimeZoneRule;->serialVersionUID:J -Landroid/icu/util/TimeUnit;->readResolve()Ljava/lang/Object; -Landroid/icu/util/TimeUnit;->serialVersionUID:J -Landroid/icu/util/TimeUnit;->writeReplace()Ljava/lang/Object; -Landroid/icu/util/TimeZone$ConstantZone;->serialVersionUID:J -Landroid/icu/util/TimeZone;->serialVersionUID:J -Landroid/icu/util/TimeZoneRule;->serialVersionUID:J -Landroid/icu/util/ULocale;->serialVersionUID:J -Landroid/icu/util/UResourceTypeMismatchException;->serialVersionUID:J -Landroid/icu/util/VTimeZone;->serialVersionUID:J -Landroid/inputmethodservice/InputMethodService$SettingsObserver;->shouldShowImeWithHardKeyboard()Z -Landroid/inputmethodservice/InputMethodService;->mExtractEditText:Landroid/inputmethodservice/ExtractEditText; -Landroid/inputmethodservice/InputMethodService;->mRootView:Landroid/view/View; -Landroid/inputmethodservice/InputMethodService;->mSettingsObserver:Landroid/inputmethodservice/InputMethodService$SettingsObserver; -Landroid/location/Country;->getCountryIso()Ljava/lang/String; -Landroid/location/Country;->getSource()I -Landroid/location/CountryDetector;->detectCountry()Landroid/location/Country; -Landroid/location/GeocoderParams;->getClientPackage()Ljava/lang/String; -Landroid/location/GeocoderParams;->getLocale()Ljava/util/Locale; -Landroid/location/IGeocodeProvider$Stub;-><init>()V -Landroid/location/IGeocodeProvider;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; -Landroid/location/IGeocodeProvider;->getFromLocationName(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String; -Landroid/location/IGeofenceProvider$Stub;-><init>()V -Landroid/location/IGeofenceProvider;->setGeofenceHardware(Landroid/hardware/location/IGeofenceHardware;)V -Landroid/location/ILocationListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/location/ILocationListener$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/location/ILocationListener;->onLocationChanged(Landroid/location/Location;)V -Landroid/location/ILocationManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager; -Landroid/location/ILocationManager;->getNetworkProviderPackage()Ljava/lang/String; -Landroid/location/ILocationManager;->reportLocation(Landroid/location/Location;Z)V -Landroid/location/INetInitiatedListener$Stub;-><init>()V -Landroid/location/INetInitiatedListener;->sendNiResponse(II)Z -Landroid/location/Location;->mElapsedRealtimeNanos:J -Landroid/location/Location;->removeBearingAccuracy()V -Landroid/location/Location;->removeSpeedAccuracy()V -Landroid/location/Location;->removeVerticalAccuracy()V -Landroid/location/Location;->setExtraLocation(Ljava/lang/String;Landroid/location/Location;)V -Landroid/location/LocationManager;->mService:Landroid/location/ILocationManager; -Landroid/location/LocationRequest;->mHideFromAppOps:Z -Landroid/location/LocationRequest;->mInterval:J -Landroid/location/LocationRequest;->mProvider:Ljava/lang/String; -Landroid/location/LocationRequest;->mWorkSource:Landroid/os/WorkSource; -Landroid/media/AudioAttributes$Builder;->addTag(Ljava/lang/String;)Landroid/media/AudioAttributes$Builder; -Landroid/media/AudioAttributes;->mContentType:I -Landroid/media/AudioAttributes;->mFlags:I -Landroid/media/AudioAttributes;->mFormattedTags:Ljava/lang/String; -Landroid/media/AudioAttributes;->mSource:I -Landroid/media/AudioAttributes;->mUsage:I -Landroid/media/AudioAttributes;->toLegacyStreamType(Landroid/media/AudioAttributes;)I -Landroid/media/AudioDevicePort;-><init>(Landroid/media/AudioHandle;Ljava/lang/String;[I[I[I[I[Landroid/media/AudioGain;ILjava/lang/String;)V -Landroid/media/AudioDevicePortConfig;-><init>(Landroid/media/AudioDevicePort;IIILandroid/media/AudioGainConfig;)V -Landroid/media/AudioFormat;-><init>()V -Landroid/media/AudioFormat;-><init>(IIII)V -Landroid/media/AudioFormat;->mChannelMask:I -Landroid/media/AudioFormat;->mEncoding:I -Landroid/media/AudioFormat;->mSampleRate:I -Landroid/media/AudioGain;-><init>(IIIIIIIII)V -Landroid/media/AudioGainConfig;-><init>(ILandroid/media/AudioGain;II[II)V -Landroid/media/AudioGainConfig;->mChannelMask:I -Landroid/media/AudioGainConfig;->mIndex:I -Landroid/media/AudioGainConfig;->mMode:I -Landroid/media/AudioGainConfig;->mRampDurationMs:I -Landroid/media/AudioGainConfig;->mValues:[I -Landroid/media/AudioHandle;-><init>(I)V -Landroid/media/AudioHandle;->mId:I -Landroid/media/AudioManager;-><init>(Landroid/content/Context;)V -Landroid/media/AudioManager;->STREAM_BLUETOOTH_SCO:I -Landroid/media/AudioManager;->STREAM_SYSTEM_ENFORCED:I -Landroid/media/AudioManager;->STREAM_TTS:I -Landroid/media/AudioManager;->forceVolumeControlStream(I)V -Landroid/media/AudioManager;->getOutputLatency(I)I -Landroid/media/AudioManager;->getService()Landroid/media/IAudioService; -Landroid/media/AudioManager;->mAudioFocusIdListenerMap:Ljava/util/concurrent/ConcurrentHashMap; -Landroid/media/AudioManager;->registerAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V -Landroid/media/AudioManager;->setMasterMute(ZI)V -Landroid/media/AudioManager;->setRingerModeInternal(I)V -Landroid/media/AudioManager;->startBluetoothScoVirtualCall()V -Landroid/media/AudioManager;->unregisterAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V -Landroid/media/AudioMixPort;-><init>(Landroid/media/AudioHandle;IILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V -Landroid/media/AudioMixPortConfig;-><init>(Landroid/media/AudioMixPort;IIILandroid/media/AudioGainConfig;)V -Landroid/media/AudioPatch;-><init>(Landroid/media/AudioHandle;[Landroid/media/AudioPortConfig;[Landroid/media/AudioPortConfig;)V -Landroid/media/AudioPatch;->mHandle:Landroid/media/AudioHandle; -Landroid/media/AudioPort;-><init>(Landroid/media/AudioHandle;ILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V -Landroid/media/AudioPort;->mActiveConfig:Landroid/media/AudioPortConfig; -Landroid/media/AudioPort;->mGains:[Landroid/media/AudioGain; -Landroid/media/AudioPort;->mHandle:Landroid/media/AudioHandle; -Landroid/media/AudioPort;->mRole:I -Landroid/media/AudioPortConfig;-><init>(Landroid/media/AudioPort;IIILandroid/media/AudioGainConfig;)V -Landroid/media/AudioPortConfig;->mChannelMask:I -Landroid/media/AudioPortConfig;->mConfigMask:I -Landroid/media/AudioPortConfig;->mFormat:I -Landroid/media/AudioPortConfig;->mGain:Landroid/media/AudioGainConfig; -Landroid/media/AudioPortConfig;->mPort:Landroid/media/AudioPort; -Landroid/media/AudioPortConfig;->mSamplingRate:I -Landroid/media/AudioPortEventHandler;->mJniCallback:J -Landroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V -Landroid/media/AudioRecord;->mNativeCallbackCookie:J -Landroid/media/AudioRecord;->mNativeDeviceCallback:J -Landroid/media/AudioRecord;->mNativeRecorderInJavaObj:J -Landroid/media/AudioRecord;->native_release()V -Landroid/media/AudioRecord;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V -Landroid/media/AudioRecordingConfiguration;->getClientPackageName()Ljava/lang/String; -Landroid/media/AudioRecordingConfiguration;->getClientUid()I -Landroid/media/AudioSystem;->checkAudioFlinger()I -Landroid/media/AudioSystem;->dynamicPolicyCallbackFromNative(ILjava/lang/String;I)V -Landroid/media/AudioSystem;->errorCallbackFromNative(I)V -Landroid/media/AudioSystem;->getForceUse(I)I -Landroid/media/AudioSystem;->getParameters(Ljava/lang/String;)Ljava/lang/String; -Landroid/media/AudioSystem;->getPrimaryOutputFrameCount()I -Landroid/media/AudioSystem;->getPrimaryOutputSamplingRate()I -Landroid/media/AudioSystem;->isSourceActive(I)Z -Landroid/media/AudioSystem;->isStreamActive(II)Z -Landroid/media/AudioSystem;->recordingCallbackFromNative(IIII[I)V -Landroid/media/AudioSystem;->setDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;)I -Landroid/media/AudioSystem;->setErrorCallback(Landroid/media/AudioSystem$ErrorCallback;)V -Landroid/media/AudioSystem;->setForceUse(II)I -Landroid/media/AudioSystem;->setParameters(Ljava/lang/String;)I -Landroid/media/AudioTrack;->deferred_connect(J)V -Landroid/media/AudioTrack;->getLatency()I -Landroid/media/AudioTrack;->mJniData:J -Landroid/media/AudioTrack;->mNativeTrackInJavaObj:J -Landroid/media/AudioTrack;->mStreamType:I -Landroid/media/AudioTrack;->native_release()V -Landroid/media/AudioTrack;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V -Landroid/media/ExifInterface;->getDateTime()J -Landroid/media/IAudioService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/media/IAudioService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioService; -Landroid/media/IAudioService;->getStreamMaxVolume(I)I -Landroid/media/IAudioService;->getStreamVolume(I)I -Landroid/media/IAudioService;->setStreamVolume(IIILjava/lang/String;)V -Landroid/media/IMediaRouterService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaRouterService; -Landroid/media/IMediaScannerService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaScannerService; -Landroid/media/IMediaScannerService;->scanFile(Ljava/lang/String;Ljava/lang/String;)V -Landroid/media/IRemoteDisplayCallback;->onStateChanged(Landroid/media/RemoteDisplayState;)V -Landroid/media/IVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IVolumeController; -Landroid/media/Image;-><init>()V -Landroid/media/JetPlayer;->mNativePlayerInJavaObj:J -Landroid/media/JetPlayer;->postEventFromNative(Ljava/lang/Object;III)V -Landroid/media/MediaCodec$CodecException;-><init>(IILjava/lang/String;)V -Landroid/media/MediaCodec;->getBuffers(Z)[Ljava/nio/ByteBuffer; -Landroid/media/MediaCodec;->releaseOutputBuffer(IZZJ)V -Landroid/media/MediaDrm$Certificate;->getContent()[B -Landroid/media/MediaDrm$Certificate;->getWrappedPrivateKey()[B -Landroid/media/MediaDrm$CertificateRequest;->getData()[B -Landroid/media/MediaDrm$CertificateRequest;->getDefaultUrl()Ljava/lang/String; -Landroid/media/MediaDrm;->getCertificateRequest(ILjava/lang/String;)Landroid/media/MediaDrm$CertificateRequest; -Landroid/media/MediaDrm;->provideCertificateResponse([B)Landroid/media/MediaDrm$Certificate; -Landroid/media/MediaDrm;->signRSA([BLjava/lang/String;[B[B)[B -Landroid/media/MediaFile$MediaFileType;->fileType:I -Landroid/media/MediaFile$MediaFileType;->mimeType:Ljava/lang/String; -Landroid/media/MediaFile;-><init>()V -Landroid/media/MediaFile;->FIRST_AUDIO_FILE_TYPE:I -Landroid/media/MediaFile;->LAST_AUDIO_FILE_TYPE:I -Landroid/media/MediaFile;->getFileType(Ljava/lang/String;)Landroid/media/MediaFile$MediaFileType; -Landroid/media/MediaFile;->getFileTypeForMimeType(Ljava/lang/String;)I -Landroid/media/MediaFile;->getMimeTypeForFile(Ljava/lang/String;)Ljava/lang/String; -Landroid/media/MediaFile;->isAudioFileType(I)Z -Landroid/media/MediaFile;->isImageFileType(I)Z -Landroid/media/MediaFile;->isPlayListFileType(I)Z -Landroid/media/MediaFile;->isVideoFileType(I)Z -Landroid/media/MediaFile;->sFileTypeMap:Ljava/util/HashMap; -Landroid/media/MediaFormat;->getMap()Ljava/util/Map; -Landroid/media/MediaHTTPService;->createHttpServiceBinderIfNecessary(Ljava/lang/String;)Landroid/os/IBinder; -Landroid/media/MediaMetadataRetriever;->getEmbeddedPicture(I)[B -Landroid/media/MediaPlayer;->getMetadata(ZZ)Landroid/media/Metadata; -Landroid/media/MediaPlayer;->invoke(Landroid/os/Parcel;Landroid/os/Parcel;)V -Landroid/media/MediaPlayer;->mEventHandler:Landroid/media/MediaPlayer$EventHandler; -Landroid/media/MediaPlayer;->newRequest()Landroid/os/Parcel; -Landroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;Ljava/util/Map;)V -Landroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;Ljava/util/Map;Ljava/util/List;)V -Landroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;Ljava/util/List;)V -Landroid/media/MediaPlayer;->setRetransmitEndpoint(Ljava/net/InetSocketAddress;)V -Landroid/media/MediaRecorder;->setParameter(Ljava/lang/String;)V -Landroid/media/MediaRouter$RouteInfo;->STATUS_CONNECTING:I -Landroid/media/MediaRouter$RouteInfo;->getStatusCode()I -Landroid/media/MediaRouter;->selectRouteInt(ILandroid/media/MediaRouter$RouteInfo;Z)V -Landroid/media/MediaScanner;->isNoMediaPath(Ljava/lang/String;)Z -Landroid/media/MediaScanner;->mClient:Landroid/media/MediaScanner$MyMediaScannerClient; -Landroid/media/MediaScanner;->scanSingleFile(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri; -Landroid/media/Metadata;->PAUSE_AVAILABLE:I -Landroid/media/Metadata;->SEEK_BACKWARD_AVAILABLE:I -Landroid/media/Metadata;->SEEK_FORWARD_AVAILABLE:I -Landroid/media/Metadata;->getBoolean(I)Z -Landroid/media/Metadata;->has(I)Z -Landroid/media/MicrophoneInfo;-><init>(Ljava/lang/String;ILjava/lang/String;IIILandroid/media/MicrophoneInfo$Coordinate3F;Landroid/media/MicrophoneInfo$Coordinate3F;Ljava/util/List;Ljava/util/List;FFFI)V -Landroid/media/MiniThumbFile;->reset()V -Landroid/media/PlaybackParams;->SET_AUDIO_FALLBACK_MODE:I -Landroid/media/PlaybackParams;->SET_AUDIO_STRETCH_MODE:I -Landroid/media/PlaybackParams;->SET_PITCH:I -Landroid/media/PlaybackParams;->SET_SPEED:I -Landroid/media/PlaybackParams;->mAudioFallbackMode:I -Landroid/media/PlaybackParams;->mAudioStretchMode:I -Landroid/media/PlaybackParams;->mPitch:F -Landroid/media/PlaybackParams;->mSet:I -Landroid/media/PlaybackParams;->mSpeed:F -Landroid/media/RemoteDisplay;->notifyDisplayConnected(Landroid/view/Surface;IIII)V -Landroid/media/RemoteDisplay;->notifyDisplayDisconnected()V -Landroid/media/RemoteDisplay;->notifyDisplayError(I)V -Landroid/media/RemoteDisplayState;-><init>()V -Landroid/media/RemoteDisplayState;->displays:Ljava/util/ArrayList; -Landroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;I)Landroid/media/Ringtone; -Landroid/media/SubtitleController;->mHandler:Landroid/os/Handler; -Landroid/media/SubtitleTrack$RenderingWidget;->draw(Landroid/graphics/Canvas;)V -Landroid/media/SubtitleTrack$RenderingWidget;->onAttachedToWindow()V -Landroid/media/SubtitleTrack$RenderingWidget;->onDetachedFromWindow()V -Landroid/media/SubtitleTrack$RenderingWidget;->setOnChangedListener(Landroid/media/SubtitleTrack$RenderingWidget$OnChangedListener;)V -Landroid/media/SubtitleTrack$RenderingWidget;->setSize(II)V -Landroid/media/ThumbnailUtils;->createImageThumbnail(Ljava/lang/String;I)Landroid/graphics/Bitmap; -Landroid/media/ToneGenerator;->mNativeContext:J -Landroid/media/VolumeShaper$Configuration;-><init>(IIIDI[F[F)V -Landroid/media/VolumeShaper$Configuration;->mDurationMs:D -Landroid/media/VolumeShaper$Configuration;->mId:I -Landroid/media/VolumeShaper$Configuration;->mInterpolatorType:I -Landroid/media/VolumeShaper$Configuration;->mOptionFlags:I -Landroid/media/VolumeShaper$Configuration;->mTimes:[F -Landroid/media/VolumeShaper$Configuration;->mType:I -Landroid/media/VolumeShaper$Configuration;->mVolumes:[F -Landroid/media/VolumeShaper$Operation;-><init>(IIF)V -Landroid/media/VolumeShaper$Operation;->mFlags:I -Landroid/media/VolumeShaper$Operation;->mReplaceId:I -Landroid/media/VolumeShaper$Operation;->mXOffset:F -Landroid/media/VolumeShaper$State;-><init>(FF)V -Landroid/media/VolumeShaper$State;->mVolume:F -Landroid/media/VolumeShaper$State;->mXOffset:F -Landroid/media/audiofx/AudioEffect;-><init>(Ljava/util/UUID;Ljava/util/UUID;II)V -Landroid/media/audiofx/AudioEffect;->command(I[B[B)I -Landroid/media/audiofx/AudioEffect;->getParameter([I[B)I -Landroid/media/audiofx/AudioEffect;->getParameter([I[I)I -Landroid/media/audiofx/AudioEffect;->setParameter([I[S)I -Landroid/media/audiopolicy/AudioMix;->mCallbackFlags:I -Landroid/media/audiopolicy/AudioMix;->mDeviceAddress:Ljava/lang/String; -Landroid/media/audiopolicy/AudioMix;->mDeviceSystemType:I -Landroid/media/audiopolicy/AudioMix;->mFormat:Landroid/media/AudioFormat; -Landroid/media/audiopolicy/AudioMix;->mMixType:I -Landroid/media/audiopolicy/AudioMix;->mRouteFlags:I -Landroid/media/audiopolicy/AudioMix;->mRule:Landroid/media/audiopolicy/AudioMixingRule; -Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;->mAttr:Landroid/media/AudioAttributes; -Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;->mIntProp:I -Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;->mRule:I -Landroid/media/audiopolicy/AudioMixingRule;->mCriteria:Ljava/util/ArrayList; -Landroid/media/session/ISessionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionManager; -Landroid/media/session/MediaSession;->getCallingPackage()Ljava/lang/String; -Landroid/media/session/MediaSession;->mCallback:Landroid/media/session/MediaSession$CallbackMessageHandler; -Landroid/media/session/MediaSessionLegacyHelper;->getHelper(Landroid/content/Context;)Landroid/media/session/MediaSessionLegacyHelper; -Landroid/media/soundtrigger/SoundTriggerDetector$EventPayload;->getCaptureSession()Ljava/lang/Integer; -Landroid/media/soundtrigger/SoundTriggerDetector$EventPayload;->getData()[B -Landroid/media/soundtrigger/SoundTriggerManager;->loadSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;)I -Landroid/media/soundtrigger/SoundTriggerManager;->startRecognition(Ljava/util/UUID;Landroid/app/PendingIntent;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I -Landroid/media/soundtrigger/SoundTriggerManager;->startRecognition(Ljava/util/UUID;Landroid/os/Bundle;Landroid/content/ComponentName;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I -Landroid/media/soundtrigger/SoundTriggerManager;->stopRecognition(Ljava/util/UUID;)I -Landroid/media/soundtrigger/SoundTriggerManager;->unloadSoundModel(Ljava/util/UUID;)I -Landroid/media/tv/ITvRemoteProvider$Stub;-><init>()V -Landroid/media/tv/ITvRemoteServiceInput;->clearInputBridge(Landroid/os/IBinder;)V -Landroid/media/tv/ITvRemoteServiceInput;->closeInputBridge(Landroid/os/IBinder;)V -Landroid/media/tv/ITvRemoteServiceInput;->openInputBridge(Landroid/os/IBinder;Ljava/lang/String;III)V -Landroid/media/tv/ITvRemoteServiceInput;->sendKeyDown(Landroid/os/IBinder;I)V -Landroid/media/tv/ITvRemoteServiceInput;->sendKeyUp(Landroid/os/IBinder;I)V -Landroid/media/tv/ITvRemoteServiceInput;->sendPointerDown(Landroid/os/IBinder;III)V -Landroid/media/tv/ITvRemoteServiceInput;->sendPointerSync(Landroid/os/IBinder;)V -Landroid/media/tv/ITvRemoteServiceInput;->sendPointerUp(Landroid/os/IBinder;I)V -Landroid/media/tv/ITvRemoteServiceInput;->sendTimestamp(Landroid/os/IBinder;J)V -Landroid/media/tv/TvInputManager$Hardware;->dispatchKeyEventToHdmi(Landroid/view/KeyEvent;)Z -Landroid/media/tv/TvInputManager;->acquireTvInputHardware(ILandroid/media/tv/TvInputManager$HardwareCallback;Landroid/media/tv/TvInputInfo;)Landroid/media/tv/TvInputManager$Hardware; -Landroid/media/tv/TvView;->requestUnblockContent(Landroid/media/tv/TvContentRating;)V -Landroid/net/ConnectivityManager$PacketKeepalive;->stop()V -Landroid/net/ConnectivityManager$PacketKeepaliveCallback;-><init>()V -Landroid/net/ConnectivityManager$PacketKeepaliveCallback;->onError(I)V -Landroid/net/ConnectivityManager$PacketKeepaliveCallback;->onStarted()V -Landroid/net/ConnectivityManager$PacketKeepaliveCallback;->onStopped()V -Landroid/net/ConnectivityManager;->ACTION_TETHER_STATE_CHANGED:Ljava/lang/String; -Landroid/net/ConnectivityManager;->EXTRA_ACTIVE_TETHER:Ljava/lang/String; -Landroid/net/ConnectivityManager;->TYPE_MOBILE_CBS:I -Landroid/net/ConnectivityManager;->TYPE_MOBILE_EMERGENCY:I -Landroid/net/ConnectivityManager;->TYPE_MOBILE_FOTA:I -Landroid/net/ConnectivityManager;->TYPE_MOBILE_IA:I -Landroid/net/ConnectivityManager;->TYPE_MOBILE_IMS:I -Landroid/net/ConnectivityManager;->TYPE_NONE:I -Landroid/net/ConnectivityManager;->TYPE_PROXY:I -Landroid/net/ConnectivityManager;->TYPE_WIFI_P2P:I -Landroid/net/ConnectivityManager;->getActiveLinkProperties()Landroid/net/LinkProperties; -Landroid/net/ConnectivityManager;->getActiveNetworkQuotaInfo()Landroid/net/NetworkQuotaInfo; -Landroid/net/ConnectivityManager;->getLinkProperties(I)Landroid/net/LinkProperties; -Landroid/net/ConnectivityManager;->getMobileDataEnabled()Z -Landroid/net/ConnectivityManager;->getTetherableUsbRegexs()[Ljava/lang/String; -Landroid/net/ConnectivityManager;->getTetherableWifiRegexs()[Ljava/lang/String; -Landroid/net/ConnectivityManager;->getTetheredIfaces()[Ljava/lang/String; -Landroid/net/ConnectivityManager;->isNetworkSupported(I)Z -Landroid/net/ConnectivityManager;->isNetworkTypeMobile(I)Z -Landroid/net/ConnectivityManager;->mService:Landroid/net/IConnectivityManager; -Landroid/net/ConnectivityManager;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)V -Landroid/net/ConnectivityManager;->requestRouteToHost(II)Z -Landroid/net/ConnectivityManager;->requestRouteToHostAddress(ILjava/net/InetAddress;)Z -Landroid/net/ConnectivityManager;->setAirplaneMode(Z)V -Landroid/net/ConnectivityManager;->setBackgroundDataSetting(Z)V -Landroid/net/ConnectivityManager;->startNattKeepalive(Landroid/net/Network;ILandroid/net/ConnectivityManager$PacketKeepaliveCallback;Ljava/net/InetAddress;ILjava/net/InetAddress;)Landroid/net/ConnectivityManager$PacketKeepalive; -Landroid/net/ConnectivityManager;->startUsingNetworkFeature(ILjava/lang/String;)I -Landroid/net/ConnectivityManager;->stopUsingNetworkFeature(ILjava/lang/String;)I -Landroid/net/ConnectivityManager;->tether(Ljava/lang/String;)I -Landroid/net/ConnectivityManager;->untether(Ljava/lang/String;)I -Landroid/net/DhcpResults;-><init>()V -Landroid/net/DhcpResults;-><init>(Landroid/net/DhcpResults;)V -Landroid/net/DhcpResults;-><init>(Landroid/net/StaticIpConfiguration;)V -Landroid/net/DhcpResults;->leaseDuration:I -Landroid/net/DhcpResults;->mtu:I -Landroid/net/DhcpResults;->serverAddress:Ljava/net/Inet4Address; -Landroid/net/DhcpResults;->vendorInfo:Ljava/lang/String; -Landroid/net/IConnectivityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveLinkProperties()Landroid/net/LinkProperties; -Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetworkInfo()Landroid/net/NetworkInfo; -Landroid/net/IConnectivityManager$Stub$Proxy;->getAllNetworkInfo()[Landroid/net/NetworkInfo; -Landroid/net/IConnectivityManager$Stub$Proxy;->getAllNetworks()[Landroid/net/Network; -Landroid/net/IConnectivityManager$Stub$Proxy;->getTetherableIfaces()[Ljava/lang/String; -Landroid/net/IConnectivityManager$Stub$Proxy;->getTetherableUsbRegexs()[Ljava/lang/String; -Landroid/net/IConnectivityManager$Stub$Proxy;->getTetheredIfaces()[Ljava/lang/String; -Landroid/net/IConnectivityManager$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/net/IConnectivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IConnectivityManager; -Landroid/net/IConnectivityManager;->getActiveLinkProperties()Landroid/net/LinkProperties; -Landroid/net/IConnectivityManager;->getActiveNetworkInfo()Landroid/net/NetworkInfo; -Landroid/net/IConnectivityManager;->getAllNetworkInfo()[Landroid/net/NetworkInfo; -Landroid/net/IConnectivityManager;->getAllNetworkState()[Landroid/net/NetworkState; -Landroid/net/IConnectivityManager;->getTetheredIfaces()[Ljava/lang/String; -Landroid/net/INetd$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetd; -Landroid/net/INetd;->interfaceAddAddress(Ljava/lang/String;Ljava/lang/String;I)V -Landroid/net/INetworkPolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkPolicyManager; -Landroid/net/INetworkPolicyManager;->getNetworkQuotaInfo(Landroid/net/NetworkState;)Landroid/net/NetworkQuotaInfo; -Landroid/net/INetworkScoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkScoreService; -Landroid/net/INetworkStatsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/net/INetworkStatsService$Stub$Proxy;->getMobileIfaces()[Ljava/lang/String; -Landroid/net/INetworkStatsService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStatsService; -Landroid/net/INetworkStatsService;->openSession()Landroid/net/INetworkStatsSession; -Landroid/net/INetworkStatsSession;->getHistoryForNetwork(Landroid/net/NetworkTemplate;I)Landroid/net/NetworkStatsHistory; -Landroid/net/INetworkStatsSession;->getHistoryForUid(Landroid/net/NetworkTemplate;IIII)Landroid/net/NetworkStatsHistory; -Landroid/net/InterfaceConfiguration;-><init>()V -Landroid/net/InterfaceConfiguration;->setLinkAddress(Landroid/net/LinkAddress;)V -Landroid/net/IpConfiguration;->httpProxy:Landroid/net/ProxyInfo; -Landroid/net/LinkAddress;-><init>(Ljava/lang/String;)V -Landroid/net/LinkAddress;-><init>(Ljava/net/InetAddress;I)V -Landroid/net/LinkAddress;->isIPv6()Z -Landroid/net/LinkAddress;->isSameAddressAs(Landroid/net/LinkAddress;)Z -Landroid/net/LinkProperties$ProvisioningChange;->GAINED_PROVISIONING:Landroid/net/LinkProperties$ProvisioningChange; -Landroid/net/LinkProperties$ProvisioningChange;->LOST_PROVISIONING:Landroid/net/LinkProperties$ProvisioningChange; -Landroid/net/LinkProperties$ProvisioningChange;->STILL_NOT_PROVISIONED:Landroid/net/LinkProperties$ProvisioningChange; -Landroid/net/LinkProperties$ProvisioningChange;->STILL_PROVISIONED:Landroid/net/LinkProperties$ProvisioningChange; -Landroid/net/LinkProperties$ProvisioningChange;->values()[Landroid/net/LinkProperties$ProvisioningChange; -Landroid/net/LinkProperties;-><init>()V -Landroid/net/LinkProperties;-><init>(Landroid/net/LinkProperties;)V -Landroid/net/LinkProperties;->addDnsServer(Ljava/net/InetAddress;)Z -Landroid/net/LinkProperties;->addRoute(Landroid/net/RouteInfo;)Z -Landroid/net/LinkProperties;->addStackedLink(Landroid/net/LinkProperties;)Z -Landroid/net/LinkProperties;->clear()V -Landroid/net/LinkProperties;->compareProvisioning(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)Landroid/net/LinkProperties$ProvisioningChange; -Landroid/net/LinkProperties;->getAllInterfaceNames()Ljava/util/List; -Landroid/net/LinkProperties;->getAllRoutes()Ljava/util/List; -Landroid/net/LinkProperties;->getMtu()I -Landroid/net/LinkProperties;->getStackedLinks()Ljava/util/List; -Landroid/net/LinkProperties;->hasGlobalIPv6Address()Z -Landroid/net/LinkProperties;->hasIPv4Address()Z -Landroid/net/LinkProperties;->hasIPv4DefaultRoute()Z -Landroid/net/LinkProperties;->hasIPv4DnsServer()Z -Landroid/net/LinkProperties;->hasIPv6DefaultRoute()Z -Landroid/net/LinkProperties;->hasIPv6DnsServer()Z -Landroid/net/LinkProperties;->isIPv6Provisioned()Z -Landroid/net/LinkProperties;->isIdenticalAddresses(Landroid/net/LinkProperties;)Z -Landroid/net/LinkProperties;->isIdenticalDnses(Landroid/net/LinkProperties;)Z -Landroid/net/LinkProperties;->isIdenticalRoutes(Landroid/net/LinkProperties;)Z -Landroid/net/LinkProperties;->isIdenticalStackedLinks(Landroid/net/LinkProperties;)Z -Landroid/net/LinkProperties;->isProvisioned()Z -Landroid/net/LinkProperties;->isReachable(Ljava/net/InetAddress;)Z -Landroid/net/LinkProperties;->removeDnsServer(Ljava/net/InetAddress;)Z -Landroid/net/LinkProperties;->removeRoute(Landroid/net/RouteInfo;)Z -Landroid/net/LinkProperties;->setDnsServers(Ljava/util/Collection;)V -Landroid/net/LinkProperties;->setDomains(Ljava/lang/String;)V -Landroid/net/LinkProperties;->setHttpProxy(Landroid/net/ProxyInfo;)V -Landroid/net/LinkProperties;->setInterfaceName(Ljava/lang/String;)V -Landroid/net/LinkProperties;->setLinkAddresses(Ljava/util/Collection;)V -Landroid/net/LinkProperties;->setMtu(I)V -Landroid/net/LinkProperties;->setTcpBufferSizes(Ljava/lang/String;)V -Landroid/net/LocalSocketImpl;->inboundFileDescriptors:[Ljava/io/FileDescriptor; -Landroid/net/LocalSocketImpl;->outboundFileDescriptors:[Ljava/io/FileDescriptor; -Landroid/net/MacAddress;->ALL_ZEROS_ADDRESS:Landroid/net/MacAddress; -Landroid/net/Network;-><init>(I)V -Landroid/net/Network;->netId:I -Landroid/net/NetworkBadging$Badging; -Landroid/net/NetworkBadging; -Landroid/net/NetworkBadging;->BADGING_4K:I -Landroid/net/NetworkBadging;->BADGING_HD:I -Landroid/net/NetworkBadging;->BADGING_NONE:I -Landroid/net/NetworkBadging;->BADGING_SD:I -Landroid/net/NetworkBadging;->getWifiIcon(IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable; -Landroid/net/NetworkCapabilities;->getCapabilities()[I -Landroid/net/NetworkCapabilities;->getNetworkSpecifier()Landroid/net/NetworkSpecifier; -Landroid/net/NetworkCapabilities;->getSignalStrength()I -Landroid/net/NetworkCapabilities;->getTransportTypes()[I -Landroid/net/NetworkCapabilities;->hasSignalStrength()Z -Landroid/net/NetworkCapabilities;->transportNamesOf([I)Ljava/lang/String; -Landroid/net/NetworkPolicyManager;->mService:Landroid/net/INetworkPolicyManager; -Landroid/net/NetworkQuotaInfo;->getEstimatedBytes()J -Landroid/net/NetworkQuotaInfo;->getHardLimitBytes()J -Landroid/net/NetworkQuotaInfo;->getSoftLimitBytes()J -Landroid/net/NetworkRequest$Builder;->setSignalStrength(I)Landroid/net/NetworkRequest$Builder; -Landroid/net/NetworkRequest;->networkCapabilities:Landroid/net/NetworkCapabilities; -Landroid/net/NetworkState;->network:Landroid/net/Network; -Landroid/net/NetworkStats$Entry;-><init>()V -Landroid/net/NetworkStats$Entry;->iface:Ljava/lang/String; -Landroid/net/NetworkStats$Entry;->rxBytes:J -Landroid/net/NetworkStats$Entry;->rxPackets:J -Landroid/net/NetworkStats$Entry;->set:I -Landroid/net/NetworkStats$Entry;->tag:I -Landroid/net/NetworkStats$Entry;->txBytes:J -Landroid/net/NetworkStats$Entry;->txPackets:J -Landroid/net/NetworkStats$Entry;->uid:I -Landroid/net/NetworkStats;-><init>(JI)V -Landroid/net/NetworkStats;->capacity:I -Landroid/net/NetworkStats;->combineValues(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats; -Landroid/net/NetworkStats;->defaultNetwork:[I -Landroid/net/NetworkStats;->iface:[Ljava/lang/String; -Landroid/net/NetworkStats;->metered:[I -Landroid/net/NetworkStats;->operations:[J -Landroid/net/NetworkStats;->roaming:[I -Landroid/net/NetworkStats;->rxBytes:[J -Landroid/net/NetworkStats;->rxPackets:[J -Landroid/net/NetworkStats;->set:[I -Landroid/net/NetworkStats;->size:I -Landroid/net/NetworkStats;->tag:[I -Landroid/net/NetworkStats;->txBytes:[J -Landroid/net/NetworkStats;->txPackets:[J -Landroid/net/NetworkStats;->uid:[I -Landroid/net/NetworkStatsHistory$Entry;->rxBytes:J -Landroid/net/NetworkStatsHistory$Entry;->txBytes:J -Landroid/net/NetworkStatsHistory;->getStart()J -Landroid/net/NetworkStatsHistory;->getValues(JJLandroid/net/NetworkStatsHistory$Entry;)Landroid/net/NetworkStatsHistory$Entry; -Landroid/net/NetworkTemplate;->buildTemplateMobileAll(Ljava/lang/String;)Landroid/net/NetworkTemplate; -Landroid/net/NetworkTemplate;->buildTemplateWifi()Landroid/net/NetworkTemplate; -Landroid/net/NetworkUtils;->attachControlPacketFilter(Ljava/io/FileDescriptor;I)V -Landroid/net/NetworkUtils;->attachDhcpFilter(Ljava/io/FileDescriptor;)V -Landroid/net/NetworkUtils;->attachRaFilter(Ljava/io/FileDescriptor;I)V -Landroid/net/NetworkUtils;->getImplicitNetmask(Ljava/net/Inet4Address;)I -Landroid/net/NetworkUtils;->netmaskToPrefixLength(Ljava/net/Inet4Address;)I -Landroid/net/NetworkUtils;->protectFromVpn(Ljava/io/FileDescriptor;)Z -Landroid/net/Proxy;->getProxy(Landroid/content/Context;Ljava/lang/String;)Ljava/net/Proxy; -Landroid/net/ProxyInfo;-><init>(Ljava/lang/String;ILjava/lang/String;)V -Landroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;)V -Landroid/net/RouteInfo;->hasGateway()Z -Landroid/net/RouteInfo;->selectBestRoute(Ljava/util/Collection;Ljava/net/InetAddress;)Landroid/net/RouteInfo; -Landroid/net/SSLCertificateSocketFactory;-><init>(ILandroid/net/SSLSessionCache;Z)V -Landroid/net/SSLCertificateSocketFactory;->INSECURE_TRUST_MANAGER:[Ljavax/net/ssl/TrustManager; -Landroid/net/SSLCertificateSocketFactory;->TAG:Ljava/lang/String; -Landroid/net/SSLCertificateSocketFactory;->castToOpenSSLSocket(Ljava/net/Socket;)Lcom/android/org/conscrypt/OpenSSLSocketImpl; -Landroid/net/SSLCertificateSocketFactory;->getAlpnSelectedProtocol(Ljava/net/Socket;)[B -Landroid/net/SSLCertificateSocketFactory;->getDelegate()Ljavax/net/ssl/SSLSocketFactory; -Landroid/net/SSLCertificateSocketFactory;->getHttpSocketFactory(ILandroid/net/SSLSessionCache;)Lorg/apache/http/conn/ssl/SSLSocketFactory; -Landroid/net/SSLCertificateSocketFactory;->isSslCheckRelaxed()Z -Landroid/net/SSLCertificateSocketFactory;->mAlpnProtocols:[B -Landroid/net/SSLCertificateSocketFactory;->mChannelIdPrivateKey:Ljava/security/PrivateKey; -Landroid/net/SSLCertificateSocketFactory;->mHandshakeTimeoutMillis:I -Landroid/net/SSLCertificateSocketFactory;->mInsecureFactory:Ljavax/net/ssl/SSLSocketFactory; -Landroid/net/SSLCertificateSocketFactory;->mKeyManagers:[Ljavax/net/ssl/KeyManager; -Landroid/net/SSLCertificateSocketFactory;->mNpnProtocols:[B -Landroid/net/SSLCertificateSocketFactory;->mSecure:Z -Landroid/net/SSLCertificateSocketFactory;->mSecureFactory:Ljavax/net/ssl/SSLSocketFactory; -Landroid/net/SSLCertificateSocketFactory;->mSessionCache:Lcom/android/org/conscrypt/SSLClientSessionCache; -Landroid/net/SSLCertificateSocketFactory;->mTrustManagers:[Ljavax/net/ssl/TrustManager; -Landroid/net/SSLCertificateSocketFactory;->makeSocketFactory([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;)Ljavax/net/ssl/SSLSocketFactory; -Landroid/net/SSLCertificateSocketFactory;->setAlpnProtocols([[B)V -Landroid/net/SSLCertificateSocketFactory;->setChannelIdPrivateKey(Ljava/security/PrivateKey;)V -Landroid/net/SSLCertificateSocketFactory;->setSoWriteTimeout(Ljava/net/Socket;I)V -Landroid/net/SSLCertificateSocketFactory;->verifyHostname(Ljava/net/Socket;Ljava/lang/String;)V -Landroid/net/SSLSessionCache;->mSessionCache:Lcom/android/org/conscrypt/SSLClientSessionCache; -Landroid/net/SntpClient;-><init>()V -Landroid/net/SntpClient;->getNtpTime()J -Landroid/net/SntpClient;->getNtpTimeReference()J -Landroid/net/SntpClient;->getRoundTripTime()J -Landroid/net/SntpClient;->requestTime(Ljava/lang/String;I)Z -Landroid/net/StaticIpConfiguration;-><init>()V -Landroid/net/StaticIpConfiguration;->dnsServers:Ljava/util/ArrayList; -Landroid/net/StaticIpConfiguration;->domains:Ljava/lang/String; -Landroid/net/StaticIpConfiguration;->gateway:Ljava/net/InetAddress; -Landroid/net/StaticIpConfiguration;->getRoutes(Ljava/lang/String;)Ljava/util/List; -Landroid/net/StaticIpConfiguration;->ipAddress:Landroid/net/LinkAddress; -Landroid/net/StringNetworkSpecifier;->specifier:Ljava/lang/String; -Landroid/net/TrafficStats;->getMobileIfaces()[Ljava/lang/String; -Landroid/net/TrafficStats;->getMobileTcpRxPackets()J -Landroid/net/TrafficStats;->getMobileTcpTxPackets()J -Landroid/net/TrafficStats;->getRxBytes(Ljava/lang/String;)J -Landroid/net/TrafficStats;->getStatsService()Landroid/net/INetworkStatsService; -Landroid/net/TrafficStats;->getTxBytes(Ljava/lang/String;)J -Landroid/net/TrafficStats;->setThreadStatsUidSelf()V -Landroid/net/Uri;-><init>()V -Landroid/net/http/SslError;->mCertificate:Landroid/net/http/SslCertificate; -Landroid/net/metrics/ApfProgramEvent;-><init>()V -Landroid/net/metrics/ApfProgramEvent;->actualLifetime:J -Landroid/net/metrics/ApfProgramEvent;->currentRas:I -Landroid/net/metrics/ApfProgramEvent;->filteredRas:I -Landroid/net/metrics/ApfProgramEvent;->flags:I -Landroid/net/metrics/ApfProgramEvent;->flagsFor(ZZ)I -Landroid/net/metrics/ApfProgramEvent;->lifetime:J -Landroid/net/metrics/ApfProgramEvent;->programLength:I -Landroid/net/metrics/ApfStats;-><init>()V -Landroid/net/metrics/ApfStats;->droppedRas:I -Landroid/net/metrics/ApfStats;->durationMs:J -Landroid/net/metrics/ApfStats;->matchingRas:I -Landroid/net/metrics/ApfStats;->maxProgramSize:I -Landroid/net/metrics/ApfStats;->parseErrors:I -Landroid/net/metrics/ApfStats;->programUpdates:I -Landroid/net/metrics/ApfStats;->programUpdatesAll:I -Landroid/net/metrics/ApfStats;->programUpdatesAllowingMulticast:I -Landroid/net/metrics/ApfStats;->receivedRas:I -Landroid/net/metrics/ApfStats;->zeroLifetimeRas:I -Landroid/net/metrics/DhcpClientEvent;-><init>(Ljava/lang/String;I)V -Landroid/net/metrics/DhcpErrorEvent;-><init>(I)V -Landroid/net/metrics/DhcpErrorEvent;->BOOTP_TOO_SHORT:I -Landroid/net/metrics/DhcpErrorEvent;->BUFFER_UNDERFLOW:I -Landroid/net/metrics/DhcpErrorEvent;->DHCP_BAD_MAGIC_COOKIE:I -Landroid/net/metrics/DhcpErrorEvent;->DHCP_INVALID_OPTION_LENGTH:I -Landroid/net/metrics/DhcpErrorEvent;->DHCP_NO_COOKIE:I -Landroid/net/metrics/DhcpErrorEvent;->DHCP_NO_MSG_TYPE:I -Landroid/net/metrics/DhcpErrorEvent;->DHCP_UNKNOWN_MSG_TYPE:I -Landroid/net/metrics/DhcpErrorEvent;->L2_TOO_SHORT:I -Landroid/net/metrics/DhcpErrorEvent;->L2_WRONG_ETH_TYPE:I -Landroid/net/metrics/DhcpErrorEvent;->L3_INVALID_IP:I -Landroid/net/metrics/DhcpErrorEvent;->L3_NOT_IPV4:I -Landroid/net/metrics/DhcpErrorEvent;->L3_TOO_SHORT:I -Landroid/net/metrics/DhcpErrorEvent;->L4_NOT_UDP:I -Landroid/net/metrics/DhcpErrorEvent;->L4_WRONG_PORT:I -Landroid/net/metrics/DhcpErrorEvent;->PARSING_ERROR:I -Landroid/net/metrics/DhcpErrorEvent;->RECEIVE_ERROR:I -Landroid/net/metrics/DhcpErrorEvent;->errorCodeWithOption(II)I -Landroid/net/metrics/IpConnectivityLog;-><init>()V -Landroid/net/metrics/IpConnectivityLog;->log(Landroid/os/Parcelable;)Z -Landroid/net/metrics/IpConnectivityLog;->log(Ljava/lang/String;Landroid/os/Parcelable;)Z -Landroid/net/metrics/IpManagerEvent;-><init>(IJ)V -Landroid/net/metrics/IpReachabilityEvent;-><init>(I)V -Landroid/net/metrics/IpReachabilityEvent;->nudFailureEventType(ZZ)I -Landroid/net/metrics/RaEvent$Builder;-><init>()V -Landroid/net/metrics/RaEvent$Builder;->build()Landroid/net/metrics/RaEvent; -Landroid/net/metrics/RaEvent$Builder;->updateDnsslLifetime(J)Landroid/net/metrics/RaEvent$Builder; -Landroid/net/metrics/RaEvent$Builder;->updatePrefixPreferredLifetime(J)Landroid/net/metrics/RaEvent$Builder; -Landroid/net/metrics/RaEvent$Builder;->updatePrefixValidLifetime(J)Landroid/net/metrics/RaEvent$Builder; -Landroid/net/metrics/RaEvent$Builder;->updateRdnssLifetime(J)Landroid/net/metrics/RaEvent$Builder; -Landroid/net/metrics/RaEvent$Builder;->updateRouteInfoLifetime(J)Landroid/net/metrics/RaEvent$Builder; -Landroid/net/metrics/RaEvent$Builder;->updateRouterLifetime(J)Landroid/net/metrics/RaEvent$Builder; -Landroid/net/sip/SipProfile;->readResolve()Ljava/lang/Object; -Landroid/net/sip/SipProfile;->serialVersionUID:J -Landroid/net/wifi/BatchedScanResult; -Landroid/net/wifi/BatchedScanResult;-><init>()V -Landroid/net/wifi/BatchedScanResult;-><init>(Landroid/net/wifi/BatchedScanResult;)V -Landroid/net/wifi/BatchedScanResult;->scanResults:Ljava/util/List; -Landroid/net/wifi/BatchedScanResult;->truncated:Z -Landroid/net/wifi/IWifiManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/net/wifi/IWifiManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiManager; -Landroid/net/wifi/IWifiScanner$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/net/wifi/IWifiScanner$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Landroid/net/wifi/IWifiScanner$Stub;-><init>()V -Landroid/net/wifi/IWifiScanner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScanner; -Landroid/net/wifi/ScanResult$InformationElement;->EID_BSS_LOAD:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_ERP:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_EXTENDED_CAPS:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_EXTENDED_SUPPORTED_RATES:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_HT_OPERATION:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_INTERWORKING:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_ROAMING_CONSORTIUM:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_RSN:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_SSID:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_SUPPORTED_RATES:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_TIM:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_VHT_OPERATION:I -Landroid/net/wifi/ScanResult$InformationElement;->EID_VSA:I -Landroid/net/wifi/ScanResult$InformationElement;->bytes:[B -Landroid/net/wifi/ScanResult$InformationElement;->id:I -Landroid/net/wifi/ScanResult;->anqpDomainId:I -Landroid/net/wifi/ScanResult;->anqpLines:Ljava/util/List; -Landroid/net/wifi/ScanResult;->distanceCm:I -Landroid/net/wifi/ScanResult;->distanceSdCm:I -Landroid/net/wifi/ScanResult;->flags:J -Landroid/net/wifi/ScanResult;->hessid:J -Landroid/net/wifi/ScanResult;->informationElements:[Landroid/net/wifi/ScanResult$InformationElement; -Landroid/net/wifi/ScanResult;->numUsage:I -Landroid/net/wifi/ScanResult;->seen:J -Landroid/net/wifi/ScanResult;->untrusted:Z -Landroid/net/wifi/ScanResult;->wifiSsid:Landroid/net/wifi/WifiSsid; -Landroid/net/wifi/WifiConfiguration;->apBand:I -Landroid/net/wifi/WifiConfiguration;->apChannel:I -Landroid/net/wifi/WifiConfiguration;->defaultGwMacAddress:Ljava/lang/String; -Landroid/net/wifi/WifiConfiguration;->lastConnectUid:I -Landroid/net/wifi/WifiConfiguration;->mIpConfiguration:Landroid/net/IpConfiguration; -Landroid/net/wifi/WifiConfiguration;->setIpAssignment(Landroid/net/IpConfiguration$IpAssignment;)V -Landroid/net/wifi/WifiConfiguration;->setStaticIpConfiguration(Landroid/net/StaticIpConfiguration;)V -Landroid/net/wifi/WifiConfiguration;->validatedInternetAccess:Z -Landroid/net/wifi/WifiEnterpriseConfig;->getCaCertificateAlias()Ljava/lang/String; -Landroid/net/wifi/WifiEnterpriseConfig;->getClientCertificateAlias()Ljava/lang/String; -Landroid/net/wifi/WifiInfo;->DEFAULT_MAC_ADDRESS:Ljava/lang/String; -Landroid/net/wifi/WifiInfo;->getMeteredHint()Z -Landroid/net/wifi/WifiInfo;->getWifiSsid()Landroid/net/wifi/WifiSsid; -Landroid/net/wifi/WifiInfo;->is5GHz()Z -Landroid/net/wifi/WifiInfo;->mMacAddress:Ljava/lang/String; -Landroid/net/wifi/WifiInfo;->removeDoubleQuotes(Ljava/lang/String;)Ljava/lang/String; -Landroid/net/wifi/WifiInfo;->score:I -Landroid/net/wifi/WifiManager;->cancelLocalOnlyHotspotRequest()V -Landroid/net/wifi/WifiManager;->connect(ILandroid/net/wifi/WifiManager$ActionListener;)V -Landroid/net/wifi/WifiManager;->forget(ILandroid/net/wifi/WifiManager$ActionListener;)V -Landroid/net/wifi/WifiManager;->isDualBandSupported()Z -Landroid/net/wifi/WifiManager;->mService:Landroid/net/wifi/IWifiManager; -Landroid/net/wifi/WifiManager;->save(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiManager$ActionListener;)V -Landroid/net/wifi/WifiSsid;->NONE:Ljava/lang/String; -Landroid/net/wifi/WifiSsid;->getOctets()[B -Landroid/net/wifi/p2p/WifiP2pGroup;->TEMPORARY_NET_ID:I -Landroid/net/wifi/p2p/WifiP2pGroup;->getNetworkId()I -Landroid/net/wifi/p2p/WifiP2pGroupList;->getGroupList()Ljava/util/Collection; -Landroid/net/wifi/p2p/WifiP2pManager$Channel;->mAsyncChannel:Lcom/android/internal/util/AsyncChannel; -Landroid/net/wifi/p2p/WifiP2pManager$Channel;->putListener(Ljava/lang/Object;)I -Landroid/net/wifi/p2p/WifiP2pManager;->CREATE_GROUP:I -Landroid/net/wifi/p2p/WifiP2pManager;->deletePersistentGroup(Landroid/net/wifi/p2p/WifiP2pManager$Channel;ILandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V -Landroid/net/wifi/p2p/WifiP2pManager;->requestPersistentGroupInfo(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Landroid/net/wifi/p2p/WifiP2pManager$PersistentGroupInfoListener;)V -Landroid/net/wifi/p2p/WifiP2pManager;->setDeviceName(Landroid/net/wifi/p2p/WifiP2pManager$Channel;Ljava/lang/String;Landroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V -Landroid/net/wifi/p2p/WifiP2pManager;->setWifiP2pChannels(Landroid/net/wifi/p2p/WifiP2pManager$Channel;IILandroid/net/wifi/p2p/WifiP2pManager$ActionListener;)V -Landroid/nfc/NfcAdapter;->getAdapterState()I -Landroid/nfc/NfcAdapter;->getDefaultAdapter()Landroid/nfc/NfcAdapter; -Landroid/nfc/NfcAdapter;->getNfcAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter; -Landroid/nfc/NfcAdapter;->setNdefPushMessageCallback(Landroid/nfc/NfcAdapter$CreateNdefMessageCallback;Landroid/app/Activity;I)V -Landroid/opengl/GLSurfaceView$EglHelper;->mEglContext:Ljavax/microedition/khronos/egl/EGLContext; -Landroid/opengl/GLSurfaceView$GLThread;->mEglHelper:Landroid/opengl/GLSurfaceView$EglHelper; -Landroid/opengl/GLSurfaceView;->mGLThread:Landroid/opengl/GLSurfaceView$GLThread; -Landroid/opengl/GLSurfaceView;->mRenderer:Landroid/opengl/GLSurfaceView$Renderer; -Landroid/os/AsyncResult;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V -Landroid/os/AsyncResult;->exception:Ljava/lang/Throwable; -Landroid/os/AsyncResult;->forMessage(Landroid/os/Message;Ljava/lang/Object;Ljava/lang/Throwable;)Landroid/os/AsyncResult; -Landroid/os/AsyncResult;->result:Ljava/lang/Object; -Landroid/os/AsyncResult;->userObj:Ljava/lang/Object; -Landroid/os/AsyncTask;->mFuture:Ljava/util/concurrent/FutureTask; -Landroid/os/AsyncTask;->mStatus:Landroid/os/AsyncTask$Status; -Landroid/os/AsyncTask;->mTaskInvoked:Ljava/util/concurrent/atomic/AtomicBoolean; -Landroid/os/AsyncTask;->mWorker:Landroid/os/AsyncTask$WorkerRunnable; -Landroid/os/AsyncTask;->sDefaultExecutor:Ljava/util/concurrent/Executor; -Landroid/os/AsyncTask;->setDefaultExecutor(Ljava/util/concurrent/Executor;)V -Landroid/os/BatteryManager;-><init>()V -Landroid/os/BatteryStats$Counter;->getCountLocked(I)I -Landroid/os/BatteryStats$HistoryItem;-><init>()V -Landroid/os/BatteryStats$HistoryItem;->CMD_UPDATE:B -Landroid/os/BatteryStats$HistoryItem;->batteryLevel:B -Landroid/os/BatteryStats$HistoryItem;->cmd:B -Landroid/os/BatteryStats$HistoryItem;->states2:I -Landroid/os/BatteryStats$HistoryItem;->states:I -Landroid/os/BatteryStats$HistoryItem;->time:J -Landroid/os/BatteryStats$Timer;->getCountLocked(I)I -Landroid/os/BatteryStats$Timer;->getTotalTimeLocked(JI)J -Landroid/os/BatteryStats$Uid$Pkg$Serv;->getLaunches(I)I -Landroid/os/BatteryStats$Uid$Pkg$Serv;->getStartTime(JI)J -Landroid/os/BatteryStats$Uid$Pkg;->getServiceStats()Landroid/util/ArrayMap; -Landroid/os/BatteryStats$Uid$Pkg;->getWakeupAlarmStats()Landroid/util/ArrayMap; -Landroid/os/BatteryStats$Uid$Proc$ExcessivePower;->overTime:J -Landroid/os/BatteryStats$Uid$Proc$ExcessivePower;->type:I -Landroid/os/BatteryStats$Uid$Proc$ExcessivePower;->usedTime:J -Landroid/os/BatteryStats$Uid$Proc;->countExcessivePowers()I -Landroid/os/BatteryStats$Uid$Proc;->getExcessivePower(I)Landroid/os/BatteryStats$Uid$Proc$ExcessivePower; -Landroid/os/BatteryStats$Uid$Proc;->getForegroundTime(I)J -Landroid/os/BatteryStats$Uid$Proc;->getStarts(I)I -Landroid/os/BatteryStats$Uid$Proc;->getSystemTime(I)J -Landroid/os/BatteryStats$Uid$Proc;->getUserTime(I)J -Landroid/os/BatteryStats$Uid$Sensor;->getHandle()I -Landroid/os/BatteryStats$Uid$Sensor;->getSensorTime()Landroid/os/BatteryStats$Timer; -Landroid/os/BatteryStats$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer; -Landroid/os/BatteryStats$Uid;-><init>()V -Landroid/os/BatteryStats$Uid;->getAudioTurnedOnTimer()Landroid/os/BatteryStats$Timer; -Landroid/os/BatteryStats$Uid;->getFullWifiLockTime(JI)J -Landroid/os/BatteryStats$Uid;->getPackageStats()Landroid/util/ArrayMap; -Landroid/os/BatteryStats$Uid;->getProcessStats()Landroid/util/ArrayMap; -Landroid/os/BatteryStats$Uid;->getSensorStats()Landroid/util/SparseArray; -Landroid/os/BatteryStats$Uid;->getUid()I -Landroid/os/BatteryStats$Uid;->getVideoTurnedOnTimer()Landroid/os/BatteryStats$Timer; -Landroid/os/BatteryStats$Uid;->getWifiMulticastTime(JI)J -Landroid/os/BatteryStats$Uid;->getWifiRunningTime(JI)J -Landroid/os/BatteryStats$Uid;->getWifiScanTime(JI)J -Landroid/os/BatteryStats;->NUM_DATA_CONNECTION_TYPES:I -Landroid/os/BatteryStats;->getNextHistoryLocked(Landroid/os/BatteryStats$HistoryItem;)Z -Landroid/os/BatteryStats;->getUidStats()Landroid/util/SparseArray; -Landroid/os/BatteryStats;->startIteratingHistoryLocked()Z -Landroid/os/Binder;->execTransact(IJJI)Z -Landroid/os/Binder;->mObject:J -Landroid/os/Broadcaster;-><init>()V -Landroid/os/Broadcaster;->broadcast(Landroid/os/Message;)V -Landroid/os/Broadcaster;->cancelRequest(ILandroid/os/Handler;I)V -Landroid/os/Broadcaster;->request(ILandroid/os/Handler;I)V -Landroid/os/Build$VERSION;->ACTIVE_CODENAMES:[Ljava/lang/String; -Landroid/os/Build;->IS_DEBUGGABLE:Z -Landroid/os/Build;->IS_EMULATOR:Z -Landroid/os/Build;->PERMISSIONS_REVIEW_REQUIRED:Z -Landroid/os/Build;->getString(Ljava/lang/String;)Ljava/lang/String; -Landroid/os/Bundle;->getIBinder(Ljava/lang/String;)Landroid/os/IBinder; -Landroid/os/Bundle;->putIBinder(Ljava/lang/String;Landroid/os/IBinder;)V -Landroid/os/Debug$MemoryInfo;->NUM_DVK_STATS:I -Landroid/os/Debug$MemoryInfo;->NUM_OTHER_STATS:I -Landroid/os/Debug$MemoryInfo;->dalvikPrivateClean:I -Landroid/os/Debug$MemoryInfo;->dalvikRss:I -Landroid/os/Debug$MemoryInfo;->dalvikSharedClean:I -Landroid/os/Debug$MemoryInfo;->dalvikSwappablePss:I -Landroid/os/Debug$MemoryInfo;->dalvikSwappedOut:I -Landroid/os/Debug$MemoryInfo;->dalvikSwappedOutPss:I -Landroid/os/Debug$MemoryInfo;->getOtherLabel(I)Ljava/lang/String; -Landroid/os/Debug$MemoryInfo;->getOtherPrivate(I)I -Landroid/os/Debug$MemoryInfo;->getOtherPrivateDirty(I)I -Landroid/os/Debug$MemoryInfo;->getOtherPss(I)I -Landroid/os/Debug$MemoryInfo;->getOtherSharedDirty(I)I -Landroid/os/Debug$MemoryInfo;->getTotalUss()I -Landroid/os/Debug$MemoryInfo;->hasSwappedOutPss:Z -Landroid/os/Debug$MemoryInfo;->nativePrivateClean:I -Landroid/os/Debug$MemoryInfo;->nativeRss:I -Landroid/os/Debug$MemoryInfo;->nativeSharedClean:I -Landroid/os/Debug$MemoryInfo;->nativeSwappablePss:I -Landroid/os/Debug$MemoryInfo;->nativeSwappedOut:I -Landroid/os/Debug$MemoryInfo;->nativeSwappedOutPss:I -Landroid/os/Debug$MemoryInfo;->otherPrivateClean:I -Landroid/os/Debug$MemoryInfo;->otherRss:I -Landroid/os/Debug$MemoryInfo;->otherSharedClean:I -Landroid/os/Debug$MemoryInfo;->otherStats:[I -Landroid/os/Debug$MemoryInfo;->otherSwappablePss:I -Landroid/os/Debug$MemoryInfo;->otherSwappedOut:I -Landroid/os/Debug$MemoryInfo;->otherSwappedOutPss:I -Landroid/os/Debug;-><init>()V -Landroid/os/Debug;->countInstancesOfClass(Ljava/lang/Class;)J -Landroid/os/Debug;->dumpReferenceTables()V -Landroid/os/DropBoxManager;->mService:Lcom/android/internal/os/IDropBoxManagerService; -Landroid/os/Environment;->buildExternalStorageAppDataDirs(Ljava/lang/String;)[Ljava/io/File; -Landroid/os/Environment;->getLegacyExternalStorageDirectory()Ljava/io/File; -Landroid/os/Environment;->getStorageDirectory()Ljava/io/File; -Landroid/os/Environment;->getVendorDirectory()Ljava/io/File; -Landroid/os/Environment;->maybeTranslateEmulatedPathToInternal(Ljava/io/File;)Ljava/io/File; -Landroid/os/FileObserver$ObserverThread;->onEvent(IILjava/lang/String;)V -Landroid/os/FileUtils;->checksumCrc32(Ljava/io/File;)J -Landroid/os/FileUtils;->copyFile(Ljava/io/File;Ljava/io/File;)Z -Landroid/os/FileUtils;->copyToFile(Ljava/io/InputStream;Ljava/io/File;)Z -Landroid/os/FileUtils;->deleteOlderFiles(Ljava/io/File;IJ)Z -Landroid/os/FileUtils;->readTextFile(Ljava/io/File;ILjava/lang/String;)Ljava/lang/String; -Landroid/os/FileUtils;->setPermissions(Ljava/io/File;III)I -Landroid/os/FileUtils;->setPermissions(Ljava/io/FileDescriptor;III)I -Landroid/os/FileUtils;->setPermissions(Ljava/lang/String;III)I -Landroid/os/FileUtils;->stringToFile(Ljava/io/File;Ljava/lang/String;)V -Landroid/os/FileUtils;->stringToFile(Ljava/lang/String;Ljava/lang/String;)V -Landroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z -Landroid/os/Handler;-><init>(Landroid/os/Looper;Landroid/os/Handler$Callback;Z)V -Landroid/os/Handler;-><init>(Z)V -Landroid/os/Handler;->getIMessenger()Landroid/os/IMessenger; -Landroid/os/Handler;->getMain()Landroid/os/Handler; -Landroid/os/Handler;->hasCallbacks(Ljava/lang/Runnable;)Z -Landroid/os/Handler;->mCallback:Landroid/os/Handler$Callback; -Landroid/os/Handler;->mMessenger:Landroid/os/IMessenger; -Landroid/os/HwBinder;->reportSyspropChanged()V -Landroid/os/HwParcel;-><init>(Z)V -Landroid/os/HwRemoteBinder;-><init>()V -Landroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/os/INetworkManagementService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/INetworkManagementService; -Landroid/os/INetworkManagementService;->clearInterfaceAddresses(Ljava/lang/String;)V -Landroid/os/INetworkManagementService;->disableIpv6(Ljava/lang/String;)V -Landroid/os/INetworkManagementService;->enableIpv6(Ljava/lang/String;)V -Landroid/os/INetworkManagementService;->isBandwidthControlEnabled()Z -Landroid/os/INetworkManagementService;->registerObserver(Landroid/net/INetworkManagementEventObserver;)V -Landroid/os/INetworkManagementService;->setIPv6AddrGenMode(Ljava/lang/String;I)V -Landroid/os/INetworkManagementService;->setInterfaceConfig(Ljava/lang/String;Landroid/net/InterfaceConfiguration;)V -Landroid/os/INetworkManagementService;->setInterfaceIpv6PrivacyExtensions(Ljava/lang/String;Z)V -Landroid/os/INetworkManagementService;->unregisterObserver(Landroid/net/INetworkManagementEventObserver;)V -Landroid/os/IPermissionController$Stub$Proxy;->checkPermission(Ljava/lang/String;II)Z -Landroid/os/IPermissionController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IPermissionController; -Landroid/os/IPowerManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/os/IPowerManager$Stub$Proxy;->isLightDeviceIdleMode()Z -Landroid/os/IPowerManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IPowerManager; -Landroid/os/IPowerManager;->goToSleep(JII)V -Landroid/os/IPowerManager;->reboot(ZLjava/lang/String;Z)V -Landroid/os/IPowerManager;->releaseWakeLock(Landroid/os/IBinder;I)V -Landroid/os/IPowerManager;->userActivity(JII)V -Landroid/os/IRecoverySystem$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IRecoverySystem; -Landroid/os/IRemoteCallback$Stub;-><init>()V -Landroid/os/IServiceManager;->checkService(Ljava/lang/String;)Landroid/os/IBinder; -Landroid/os/IServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; -Landroid/os/IUserManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUserManager; -Landroid/os/IVibratorService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVibratorService; -Landroid/os/LocaleList;->setDefault(Landroid/os/LocaleList;I)V -Landroid/os/Looper;->mQueue:Landroid/os/MessageQueue; -Landroid/os/Looper;->sThreadLocal:Ljava/lang/ThreadLocal; -Landroid/os/Looper;->setTraceTag(J)V -Landroid/os/MemoryFile;->getFileDescriptor()Ljava/io/FileDescriptor; -Landroid/os/Message;->callback:Ljava/lang/Runnable; -Landroid/os/Message;->flags:I -Landroid/os/Message;->markInUse()V -Landroid/os/Message;->next:Landroid/os/Message; -Landroid/os/Message;->recycleUnchecked()V -Landroid/os/Message;->setCallback(Ljava/lang/Runnable;)Landroid/os/Message; -Landroid/os/Message;->target:Landroid/os/Handler; -Landroid/os/Message;->when:J -Landroid/os/MessageQueue;->dispatchEvents(II)I -Landroid/os/MessageQueue;->mIdleHandlers:Ljava/util/ArrayList; -Landroid/os/MessageQueue;->mMessages:Landroid/os/Message; -Landroid/os/MessageQueue;->mPtr:J -Landroid/os/MessageQueue;->mQuitAllowed:Z -Landroid/os/MessageQueue;->nativePollOnce(JI)V -Landroid/os/MessageQueue;->next()Landroid/os/Message; -Landroid/os/MessageQueue;->postSyncBarrier()I -Landroid/os/MessageQueue;->removeSyncBarrier(I)V -Landroid/os/Parcel$ReadWriteHelper;-><init>()V -Landroid/os/Parcel;->mNativePtr:J -Landroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;Ljava/lang/ClassLoader;)V -Landroid/os/Parcel;->readBlob()[B -Landroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/util/List; -Landroid/os/Parcel;->readStringArray()[Ljava/lang/String; -Landroid/os/Parcel;->writeArrayMap(Landroid/util/ArrayMap;)V -Landroid/os/Parcel;->writeBlob([B)V -Landroid/os/Parcel;->writeParcelableList(Ljava/util/List;I)V -Landroid/os/ParcelFileDescriptor$FileDescriptorDetachedException;->serialVersionUID:J -Landroid/os/ParcelFileDescriptor;-><init>(Ljava/io/FileDescriptor;)V -Landroid/os/ParcelFileDescriptor;->fromData([BLjava/lang/String;)Landroid/os/ParcelFileDescriptor; -Landroid/os/PowerManager;->ACTION_SCREEN_BRIGHTNESS_BOOST_CHANGED:Ljava/lang/String; -Landroid/os/PowerManager;->getDefaultScreenBrightnessSetting()I -Landroid/os/PowerManager;->getMaximumScreenBrightnessSetting()I -Landroid/os/PowerManager;->getMinimumScreenBrightnessSetting()I -Landroid/os/PowerManager;->goToSleep(J)V -Landroid/os/PowerManager;->isLightDeviceIdleMode()Z -Landroid/os/PowerManager;->isScreenBrightnessBoosted()Z -Landroid/os/PowerManager;->mService:Landroid/os/IPowerManager; -Landroid/os/PowerManager;->userActivity(JZ)V -Landroid/os/PowerManager;->validateWakeLockParameters(ILjava/lang/String;)V -Landroid/os/PowerManager;->wakeUp(J)V -Landroid/os/PowerManager;->wakeUp(JLjava/lang/String;)V -Landroid/os/Process;->getFreeMemory()J -Landroid/os/Process;->getParentPid(I)I -Landroid/os/Process;->getPids(Ljava/lang/String;[I)[I -Landroid/os/Process;->getTotalMemory()J -Landroid/os/Process;->getUidForPid(I)I -Landroid/os/Process;->isIsolated(I)Z -Landroid/os/Process;->readProcFile(Ljava/lang/String;[I[Ljava/lang/String;[J[F)Z -Landroid/os/Process;->readProcLines(Ljava/lang/String;[Ljava/lang/String;[J)V -Landroid/os/Process;->setArgV0(Ljava/lang/String;)V -Landroid/os/RecoverySystem;-><init>()V -Landroid/os/Registrant;-><init>(Landroid/os/Handler;ILjava/lang/Object;)V -Landroid/os/Registrant;->clear()V -Landroid/os/Registrant;->notifyRegistrant()V -Landroid/os/Registrant;->notifyRegistrant(Landroid/os/AsyncResult;)V -Landroid/os/RegistrantList;-><init>()V -Landroid/os/RegistrantList;->add(Landroid/os/Registrant;)V -Landroid/os/RegistrantList;->addUnique(Landroid/os/Handler;ILjava/lang/Object;)V -Landroid/os/RegistrantList;->notifyRegistrants()V -Landroid/os/RegistrantList;->notifyRegistrants(Landroid/os/AsyncResult;)V -Landroid/os/RegistrantList;->remove(Landroid/os/Handler;)V -Landroid/os/RegistrantList;->removeCleared()V -Landroid/os/RemoteException;->rethrowFromSystemServer()Ljava/lang/RuntimeException; -Landroid/os/SELinux;->checkSELinuxAccess(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z -Landroid/os/SELinux;->getFileContext(Ljava/lang/String;)Ljava/lang/String; -Landroid/os/SELinux;->getPidContext(I)Ljava/lang/String; -Landroid/os/SELinux;->isSELinuxEnabled()Z -Landroid/os/SELinux;->isSELinuxEnforced()Z -Landroid/os/ServiceManager;-><init>()V -Landroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V -Landroid/os/ServiceManager;->checkService(Ljava/lang/String;)Landroid/os/IBinder; -Landroid/os/ServiceManager;->getIServiceManager()Landroid/os/IServiceManager; -Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder; -Landroid/os/ServiceManager;->listServices()[Ljava/lang/String; -Landroid/os/ServiceManager;->sCache:Ljava/util/HashMap; -Landroid/os/ServiceManager;->sServiceManager:Landroid/os/IServiceManager; -Landroid/os/ServiceManagerNative;->asInterface(Landroid/os/IBinder;)Landroid/os/IServiceManager; -Landroid/os/ServiceSpecificException;->errorCode:I -Landroid/os/SharedMemory;->getFd()I -Landroid/os/StrictMode$Span;->finish()V -Landroid/os/StrictMode$ThreadPolicy$Builder;->penaltyListener(Landroid/os/StrictMode$OnThreadViolationListener;Ljava/util/concurrent/Executor;)Landroid/os/StrictMode$ThreadPolicy$Builder; -Landroid/os/StrictMode$VmPolicy$Builder;->penaltyListener(Landroid/os/StrictMode$OnVmViolationListener;Ljava/util/concurrent/Executor;)Landroid/os/StrictMode$VmPolicy$Builder; -Landroid/os/StrictMode;->conditionallyCheckInstanceCounts()V -Landroid/os/StrictMode;->disableDeathOnFileUriExposure()V -Landroid/os/StrictMode;->enterCriticalSpan(Ljava/lang/String;)Landroid/os/StrictMode$Span; -Landroid/os/StrictMode;->getThreadPolicyMask()I -Landroid/os/StrictMode;->onBinderStrictModePolicyChange(I)V -Landroid/os/StrictMode;->violationsBeingTimed:Ljava/lang/ThreadLocal; -Landroid/os/SystemClock;->elapsedRealtimeClock()Ljava/time/Clock; -Landroid/os/SystemClock;->uptimeClock()Ljava/time/Clock; -Landroid/os/SystemClock;->uptimeMillisClock()Ljava/time/Clock; -Landroid/os/SystemProperties;-><init>()V -Landroid/os/SystemProperties;->PROP_NAME_MAX:I -Landroid/os/SystemProperties;->addChangeCallback(Ljava/lang/Runnable;)V -Landroid/os/SystemProperties;->native_get(Ljava/lang/String;)Ljava/lang/String; -Landroid/os/SystemProperties;->reportSyspropChanged()V -Landroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V -Landroid/os/SystemService;->start(Ljava/lang/String;)V -Landroid/os/SystemService;->stop(Ljava/lang/String;)V -Landroid/os/SystemVibrator;-><init>()V -Landroid/os/TestLooperManager;->getQueue()Landroid/os/MessageQueue; -Landroid/os/Trace;->TRACE_TAG_APP:J -Landroid/os/Trace;->TRACE_TAG_VIEW:J -Landroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V -Landroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V -Landroid/os/Trace;->isTagEnabled(J)Z -Landroid/os/Trace;->setAppTracingAllowed(Z)V -Landroid/os/Trace;->traceBegin(JLjava/lang/String;)V -Landroid/os/Trace;->traceCounter(JLjava/lang/String;I)V -Landroid/os/Trace;->traceEnd(J)V -Landroid/os/UpdateLock;->NOW_IS_CONVENIENT:Ljava/lang/String; -Landroid/os/UpdateLock;->TIMESTAMP:Ljava/lang/String; -Landroid/os/UpdateLock;->UPDATE_LOCK_CHANGED:Ljava/lang/String; -Landroid/os/UpdateLock;->acquire()V -Landroid/os/UpdateLock;->isHeld()Z -Landroid/os/UpdateLock;->release()V -Landroid/os/UserHandle;-><init>(I)V -Landroid/os/UserHandle;->AID_APP_END:I -Landroid/os/UserHandle;->AID_APP_START:I -Landroid/os/UserHandle;->AID_CACHE_GID_START:I -Landroid/os/UserHandle;->AID_ROOT:I -Landroid/os/UserHandle;->AID_SHARED_GID_START:I -Landroid/os/UserHandle;->ALL:Landroid/os/UserHandle; -Landroid/os/UserHandle;->CURRENT:Landroid/os/UserHandle; -Landroid/os/UserHandle;->CURRENT_OR_SELF:Landroid/os/UserHandle; -Landroid/os/UserHandle;->ERR_GID:I -Landroid/os/UserHandle;->MU_ENABLED:Z -Landroid/os/UserHandle;->OWNER:Landroid/os/UserHandle; -Landroid/os/UserHandle;->PER_USER_RANGE:I -Landroid/os/UserHandle;->USER_ALL:I -Landroid/os/UserHandle;->USER_CURRENT:I -Landroid/os/UserHandle;->USER_CURRENT_OR_SELF:I -Landroid/os/UserHandle;->USER_NULL:I -Landroid/os/UserHandle;->USER_OWNER:I -Landroid/os/UserHandle;->USER_SERIAL_SYSTEM:I -Landroid/os/UserHandle;->USER_SYSTEM:I -Landroid/os/UserHandle;->getAppIdFromSharedAppGid(I)I -Landroid/os/UserHandle;->getCallingUserId()I -Landroid/os/UserHandle;->getUid(II)I -Landroid/os/UserHandle;->getUserId(I)I -Landroid/os/UserHandle;->isSameApp(II)Z -Landroid/os/UserManager;->get(Landroid/content/Context;)Landroid/os/UserManager; -Landroid/os/UserManager;->getBadgedDrawableForUser(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;Landroid/graphics/Rect;I)Landroid/graphics/drawable/Drawable; -Landroid/os/UserManager;->getBadgedIconForUser(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;)Landroid/graphics/drawable/Drawable; -Landroid/os/UserManager;->getBadgedLabelForUser(Ljava/lang/CharSequence;Landroid/os/UserHandle;)Ljava/lang/CharSequence; -Landroid/os/UserManager;->getMaxSupportedUsers()I -Landroid/os/UserManager;->getProfiles(I)Ljava/util/List; -Landroid/os/UserManager;->getUserHandle()I -Landroid/os/UserManager;->getUserHandle(I)I -Landroid/os/UserManager;->getUserIcon(I)Landroid/graphics/Bitmap; -Landroid/os/UserManager;->getUserInfo(I)Landroid/content/pm/UserInfo; -Landroid/os/UserManager;->getUserSerialNumber(I)I -Landroid/os/UserManager;->getUserStartRealtime()J -Landroid/os/UserManager;->getUserUnlockRealtime()J -Landroid/os/UserManager;->getUsers()Ljava/util/List; -Landroid/os/UserManager;->hasBaseUserRestriction(Ljava/lang/String;Landroid/os/UserHandle;)Z -Landroid/os/UserManager;->hasUserRestriction(Ljava/lang/String;Landroid/os/UserHandle;)Z -Landroid/os/UserManager;->isAdminUser()Z -Landroid/os/UserManager;->isLinkedUser()Z -Landroid/os/UserManager;->isUserUnlocked(I)Z -Landroid/os/UserManager;->mService:Landroid/os/IUserManager; -Landroid/os/VintfObject;->getHalNamesAndVersions()[Ljava/lang/String; -Landroid/os/VintfObject;->getSepolicyVersion()Ljava/lang/String; -Landroid/os/VintfObject;->getTargetFrameworkCompatibilityMatrixVersion()Ljava/lang/Long; -Landroid/os/VintfObject;->getVndkSnapshots()Ljava/util/Map; -Landroid/os/VintfObject;->report()[Ljava/lang/String; -Landroid/os/VintfRuntimeInfo;->getCpuInfo()Ljava/lang/String; -Landroid/os/VintfRuntimeInfo;->getHardwareId()Ljava/lang/String; -Landroid/os/VintfRuntimeInfo;->getKernelVersion()Ljava/lang/String; -Landroid/os/VintfRuntimeInfo;->getNodeName()Ljava/lang/String; -Landroid/os/VintfRuntimeInfo;->getOsName()Ljava/lang/String; -Landroid/os/VintfRuntimeInfo;->getOsRelease()Ljava/lang/String; -Landroid/os/VintfRuntimeInfo;->getOsVersion()Ljava/lang/String; -Landroid/os/WorkSource;-><init>(I)V -Landroid/os/WorkSource;->add(I)Z -Landroid/os/WorkSource;->add(ILjava/lang/String;)Z -Landroid/os/WorkSource;->addReturningNewbs(Landroid/os/WorkSource;)Landroid/os/WorkSource; -Landroid/os/WorkSource;->get(I)I -Landroid/os/WorkSource;->getName(I)Ljava/lang/String; -Landroid/os/WorkSource;->mNames:[Ljava/lang/String; -Landroid/os/WorkSource;->mNum:I -Landroid/os/WorkSource;->mUids:[I -Landroid/os/WorkSource;->setReturningDiffs(Landroid/os/WorkSource;)[Landroid/os/WorkSource; -Landroid/os/WorkSource;->size()I -Landroid/os/health/HealthKeys$Constants;-><init>(Ljava/lang/Class;)V -Landroid/os/health/HealthStats;-><init>(Landroid/os/Parcel;)V -Landroid/os/health/HealthStatsParceler;-><init>(Landroid/os/Parcel;)V -Landroid/os/health/HealthStatsParceler;-><init>(Landroid/os/health/HealthStatsWriter;)V -Landroid/os/health/HealthStatsParceler;->getHealthStats()Landroid/os/health/HealthStats; -Landroid/os/health/HealthStatsWriter;-><init>(Landroid/os/health/HealthKeys$Constants;)V -Landroid/os/health/HealthStatsWriter;->addMeasurement(IJ)V -Landroid/os/health/HealthStatsWriter;->addMeasurements(ILjava/lang/String;J)V -Landroid/os/health/HealthStatsWriter;->addStats(ILjava/lang/String;Landroid/os/health/HealthStatsWriter;)V -Landroid/os/health/HealthStatsWriter;->addTimer(IIJ)V -Landroid/os/health/HealthStatsWriter;->addTimers(ILjava/lang/String;Landroid/os/health/TimerStat;)V -Landroid/os/health/HealthStatsWriter;->flattenToParcel(Landroid/os/Parcel;)V -Landroid/os/health/SystemHealthManager;->from(Landroid/content/Context;)Landroid/os/health/SystemHealthManager; -Landroid/os/storage/DiskInfo;->getDescription()Ljava/lang/String; -Landroid/os/storage/DiskInfo;->getId()Ljava/lang/String; -Landroid/os/storage/DiskInfo;->isSd()Z -Landroid/os/storage/DiskInfo;->isUsb()Z -Landroid/os/storage/IStorageManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/os/storage/IStorageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/storage/IStorageManager; -Landroid/os/storage/StorageEventListener;-><init>()V -Landroid/os/storage/StorageManager;->findVolumeById(Ljava/lang/String;)Landroid/os/storage/VolumeInfo; -Landroid/os/storage/StorageManager;->findVolumeByUuid(Ljava/lang/String;)Landroid/os/storage/VolumeInfo; -Landroid/os/storage/StorageManager;->from(Landroid/content/Context;)Landroid/os/storage/StorageManager; -Landroid/os/storage/StorageManager;->getBestVolumeDescription(Landroid/os/storage/VolumeInfo;)Ljava/lang/String; -Landroid/os/storage/StorageManager;->getDisks()Ljava/util/List; -Landroid/os/storage/StorageManager;->getPrimaryVolume()Landroid/os/storage/StorageVolume; -Landroid/os/storage/StorageManager;->getStorageBytesUntilLow(Ljava/io/File;)J -Landroid/os/storage/StorageManager;->getStorageFullBytes(Ljava/io/File;)J -Landroid/os/storage/StorageManager;->getStorageLowBytes(Ljava/io/File;)J -Landroid/os/storage/StorageManager;->getVolumeList()[Landroid/os/storage/StorageVolume; -Landroid/os/storage/StorageManager;->getVolumeList(II)[Landroid/os/storage/StorageVolume; -Landroid/os/storage/StorageManager;->getVolumePaths()[Ljava/lang/String; -Landroid/os/storage/StorageManager;->getVolumeState(Ljava/lang/String;)Ljava/lang/String; -Landroid/os/storage/StorageManager;->getVolumes()Ljava/util/List; -Landroid/os/storage/StorageManager;->registerListener(Landroid/os/storage/StorageEventListener;)V -Landroid/os/storage/StorageManager;->unregisterListener(Landroid/os/storage/StorageEventListener;)V -Landroid/os/storage/StorageVolume;->allowMassStorage()Z -Landroid/os/storage/StorageVolume;->getId()Ljava/lang/String; -Landroid/os/storage/StorageVolume;->getMaxFileSize()J -Landroid/os/storage/StorageVolume;->getPath()Ljava/lang/String; -Landroid/os/storage/StorageVolume;->getPathFile()Ljava/io/File; -Landroid/os/storage/StorageVolume;->getUserLabel()Ljava/lang/String; -Landroid/os/storage/StorageVolume;->mPath:Ljava/io/File; -Landroid/os/storage/VolumeInfo;->TYPE_EMULATED:I -Landroid/os/storage/VolumeInfo;->TYPE_PUBLIC:I -Landroid/os/storage/VolumeInfo;->buildStorageVolume(Landroid/content/Context;IZ)Landroid/os/storage/StorageVolume; -Landroid/os/storage/VolumeInfo;->getDisk()Landroid/os/storage/DiskInfo; -Landroid/os/storage/VolumeInfo;->getEnvironmentForState(I)Ljava/lang/String; -Landroid/os/storage/VolumeInfo;->getFsUuid()Ljava/lang/String; -Landroid/os/storage/VolumeInfo;->getId()Ljava/lang/String; -Landroid/os/storage/VolumeInfo;->getPath()Ljava/io/File; -Landroid/os/storage/VolumeInfo;->getState()I -Landroid/os/storage/VolumeInfo;->getType()I -Landroid/os/storage/VolumeInfo;->isPrimary()Z -Landroid/os/storage/VolumeInfo;->isVisible()Z -Landroid/permissionpresenterservice/RuntimePermissionPresenterService;->onRevokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;)V -Landroid/preference/DialogPreference;->mBuilder:Landroid/app/AlertDialog$Builder; -Landroid/preference/DialogPreference;->mDialog:Landroid/app/Dialog; -Landroid/preference/DialogPreference;->mDialogIcon:Landroid/graphics/drawable/Drawable; -Landroid/preference/DialogPreference;->mDialogMessage:Ljava/lang/CharSequence; -Landroid/preference/DialogPreference;->mDialogTitle:Ljava/lang/CharSequence; -Landroid/preference/DialogPreference;->mNegativeButtonText:Ljava/lang/CharSequence; -Landroid/preference/DialogPreference;->mPositiveButtonText:Ljava/lang/CharSequence; -Landroid/preference/DialogPreference;->mWhichButtonClicked:I -Landroid/preference/ListPreference;->mClickedDialogEntryIndex:I -Landroid/preference/Preference;->onKey(Landroid/view/View;ILandroid/view/KeyEvent;)Z -Landroid/preference/Preference;->performClick(Landroid/preference/PreferenceScreen;)V -Landroid/preference/PreferenceActivity;->mPreferenceManager:Landroid/preference/PreferenceManager; -Landroid/preference/PreferenceActivity;->mPrefsContainer:Landroid/view/ViewGroup; -Landroid/preference/PreferenceManager;-><init>(Landroid/app/Activity;I)V -Landroid/preference/PreferenceManager;-><init>(Landroid/content/Context;)V -Landroid/preference/PreferenceManager;->dispatchActivityDestroy()V -Landroid/preference/PreferenceManager;->dispatchActivityResult(IILandroid/content/Intent;)V -Landroid/preference/PreferenceManager;->dispatchActivityStop()V -Landroid/preference/PreferenceManager;->getEditor()Landroid/content/SharedPreferences$Editor; -Landroid/preference/PreferenceManager;->getPreferenceScreen()Landroid/preference/PreferenceScreen; -Landroid/preference/PreferenceManager;->inflateFromIntent(Landroid/content/Intent;Landroid/preference/PreferenceScreen;)Landroid/preference/PreferenceScreen; -Landroid/preference/PreferenceManager;->inflateFromResource(Landroid/content/Context;ILandroid/preference/PreferenceScreen;)Landroid/preference/PreferenceScreen; -Landroid/preference/PreferenceManager;->mActivityDestroyListeners:Ljava/util/List; -Landroid/preference/PreferenceManager;->mOnPreferenceTreeClickListener:Landroid/preference/PreferenceManager$OnPreferenceTreeClickListener; -Landroid/preference/PreferenceManager;->mSharedPreferences:Landroid/content/SharedPreferences; -Landroid/preference/PreferenceManager;->registerOnActivityDestroyListener(Landroid/preference/PreferenceManager$OnActivityDestroyListener;)V -Landroid/preference/PreferenceManager;->registerOnActivityStopListener(Landroid/preference/PreferenceManager$OnActivityStopListener;)V -Landroid/preference/PreferenceManager;->setFragment(Landroid/preference/PreferenceFragment;)V -Landroid/preference/PreferenceManager;->setPreferences(Landroid/preference/PreferenceScreen;)Z -Landroid/preference/PreferenceManager;->shouldCommit()Z -Landroid/preference/PreferenceManager;->unregisterOnActivityDestroyListener(Landroid/preference/PreferenceManager$OnActivityDestroyListener;)V -Landroid/preference/PreferenceManager;->unregisterOnActivityStopListener(Landroid/preference/PreferenceManager$OnActivityStopListener;)V -Landroid/preference/PreferenceScreen;->mRootAdapter:Landroid/widget/ListAdapter; -Landroid/print/PrintDocumentAdapter$LayoutResultCallback;-><init>()V -Landroid/print/PrintDocumentAdapter$WriteResultCallback;-><init>()V -Landroid/print/PrintJobInfo;->getAdvancedOptions()Landroid/os/Bundle; -Landroid/print/PrintJobInfo;->getDocumentInfo()Landroid/print/PrintDocumentInfo; -Landroid/print/PrinterId;->getServiceName()Landroid/content/ComponentName; -Landroid/provider/Browser$BookmarkColumns; -Landroid/provider/Browser$BookmarkColumns;-><init>()V -Landroid/provider/Browser$BookmarkColumns;->BOOKMARK:Ljava/lang/String; -Landroid/provider/Browser$BookmarkColumns;->CREATED:Ljava/lang/String; -Landroid/provider/Browser$BookmarkColumns;->DATE:Ljava/lang/String; -Landroid/provider/Browser$BookmarkColumns;->FAVICON:Ljava/lang/String; -Landroid/provider/Browser$BookmarkColumns;->TITLE:Ljava/lang/String; -Landroid/provider/Browser$BookmarkColumns;->URL:Ljava/lang/String; -Landroid/provider/Browser$BookmarkColumns;->VISITS:Ljava/lang/String; -Landroid/provider/Browser$SearchColumns; -Landroid/provider/Browser$SearchColumns;-><init>()V -Landroid/provider/Browser$SearchColumns;->DATE:Ljava/lang/String; -Landroid/provider/Browser$SearchColumns;->SEARCH:Ljava/lang/String; -Landroid/provider/Browser$SearchColumns;->URL:Ljava/lang/String; -Landroid/provider/Browser;->BOOKMARKS_URI:Landroid/net/Uri; -Landroid/provider/Browser;->HISTORY_PROJECTION:[Ljava/lang/String; -Landroid/provider/Browser;->HISTORY_PROJECTION_BOOKMARK_INDEX:I -Landroid/provider/Browser;->HISTORY_PROJECTION_DATE_INDEX:I -Landroid/provider/Browser;->HISTORY_PROJECTION_FAVICON_INDEX:I -Landroid/provider/Browser;->HISTORY_PROJECTION_ID_INDEX:I -Landroid/provider/Browser;->HISTORY_PROJECTION_TITLE_INDEX:I -Landroid/provider/Browser;->HISTORY_PROJECTION_URL_INDEX:I -Landroid/provider/Browser;->HISTORY_PROJECTION_VISITS_INDEX:I -Landroid/provider/Browser;->SEARCHES_PROJECTION:[Ljava/lang/String; -Landroid/provider/Browser;->SEARCHES_PROJECTION_DATE_INDEX:I -Landroid/provider/Browser;->SEARCHES_PROJECTION_SEARCH_INDEX:I -Landroid/provider/Browser;->SEARCHES_URI:Landroid/net/Uri; -Landroid/provider/Browser;->TRUNCATE_HISTORY_PROJECTION:[Ljava/lang/String; -Landroid/provider/Browser;->TRUNCATE_HISTORY_PROJECTION_ID_INDEX:I -Landroid/provider/Browser;->TRUNCATE_N_OLDEST:I -Landroid/provider/Browser;->addSearchUrl(Landroid/content/ContentResolver;Ljava/lang/String;)V -Landroid/provider/Browser;->canClearHistory(Landroid/content/ContentResolver;)Z -Landroid/provider/Browser;->clearHistory(Landroid/content/ContentResolver;)V -Landroid/provider/Browser;->clearSearches(Landroid/content/ContentResolver;)V -Landroid/provider/Browser;->deleteFromHistory(Landroid/content/ContentResolver;Ljava/lang/String;)V -Landroid/provider/Browser;->deleteHistoryTimeFrame(Landroid/content/ContentResolver;JJ)V -Landroid/provider/Browser;->getAllBookmarks(Landroid/content/ContentResolver;)Landroid/database/Cursor; -Landroid/provider/Browser;->getAllVisitedUrls(Landroid/content/ContentResolver;)Landroid/database/Cursor; -Landroid/provider/Browser;->getVisitedHistory(Landroid/content/ContentResolver;)[Ljava/lang/String; -Landroid/provider/Browser;->requestAllIcons(Landroid/content/ContentResolver;Ljava/lang/String;Landroid/webkit/WebIconDatabase$IconListener;)V -Landroid/provider/Browser;->saveBookmark(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V -Landroid/provider/Browser;->sendString(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V -Landroid/provider/Browser;->truncateHistory(Landroid/content/ContentResolver;)V -Landroid/provider/Browser;->updateVisitedHistory(Landroid/content/ContentResolver;Ljava/lang/String;Z)V -Landroid/provider/CalendarContract$CalendarAlerts;->findNextAlarmTime(Landroid/content/ContentResolver;J)J -Landroid/provider/CalendarContract$CalendarAlerts;->rescheduleMissedAlarms(Landroid/content/ContentResolver;Landroid/content/Context;Landroid/app/AlarmManager;)V -Landroid/provider/CalendarContract$Events;->PROVIDER_WRITABLE_COLUMNS:[Ljava/lang/String; -Landroid/provider/ContactsContract$CommonDataKinds$Phone;->getDisplayLabel(Landroid/content/Context;ILjava/lang/CharSequence;)Ljava/lang/CharSequence; -Landroid/provider/ContactsContract$Contacts$StreamItems; -Landroid/provider/ContactsContract$Contacts$StreamItems;->CONTENT_DIRECTORY:Ljava/lang/String; -Landroid/provider/ContactsContract$RawContacts$StreamItems; -Landroid/provider/ContactsContract$RawContacts$StreamItems;->CONTENT_DIRECTORY:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotos; -Landroid/provider/ContactsContract$StreamItemPhotos;->PHOTO:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotosColumns; -Landroid/provider/ContactsContract$StreamItemPhotosColumns;->PHOTO_FILE_ID:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotosColumns;->PHOTO_URI:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotosColumns;->SORT_INDEX:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotosColumns;->STREAM_ITEM_ID:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotosColumns;->SYNC1:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotosColumns;->SYNC2:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotosColumns;->SYNC3:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemPhotosColumns;->SYNC4:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItems$StreamItemPhotos; -Landroid/provider/ContactsContract$StreamItems$StreamItemPhotos;->CONTENT_DIRECTORY:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItems$StreamItemPhotos;->CONTENT_ITEM_TYPE:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItems$StreamItemPhotos;->CONTENT_TYPE:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItems; -Landroid/provider/ContactsContract$StreamItems;->CONTENT_ITEM_TYPE:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItems;->CONTENT_LIMIT_URI:Landroid/net/Uri; -Landroid/provider/ContactsContract$StreamItems;->CONTENT_PHOTO_URI:Landroid/net/Uri; -Landroid/provider/ContactsContract$StreamItems;->CONTENT_TYPE:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItems;->CONTENT_URI:Landroid/net/Uri; -Landroid/provider/ContactsContract$StreamItems;->MAX_ITEMS:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns; -Landroid/provider/ContactsContract$StreamItemsColumns;->ACCOUNT_NAME:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->ACCOUNT_TYPE:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->COMMENTS:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->CONTACT_ID:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->CONTACT_LOOKUP_KEY:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->DATA_SET:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->RAW_CONTACT_ID:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->RAW_CONTACT_SOURCE_ID:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->RES_ICON:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->RES_LABEL:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->RES_PACKAGE:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->SYNC1:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->SYNC2:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->SYNC3:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->SYNC4:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->TEXT:Ljava/lang/String; -Landroid/provider/ContactsContract$StreamItemsColumns;->TIMESTAMP:Ljava/lang/String; -Landroid/provider/Downloads$Impl$RequestHeaders;->INSERT_KEY_PREFIX:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_ALLOWED_NETWORK_TYPES:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_ALLOW_ROAMING:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_COOKIE_DATA:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_DELETED:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_DESCRIPTION:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_DESTINATION:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_FILE_NAME_HINT:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_IS_PUBLIC_API:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_MEDIA_SCANNED:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_MIME_TYPE:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_NOTIFICATION_CLASS:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_NOTIFICATION_EXTRAS:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_NOTIFICATION_PACKAGE:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_REFERER:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_TITLE:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_URI:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->COLUMN_VISIBILITY:Ljava/lang/String; -Landroid/provider/Downloads$Impl;->CONTENT_URI:Landroid/net/Uri; -Landroid/provider/Downloads$Impl;->DESTINATION_CACHE_PARTITION_PURGEABLE:I -Landroid/provider/Downloads$Impl;->DESTINATION_FILE_URI:I -Landroid/provider/Settings$ContentProviderHolder;->mContentProvider:Landroid/content/IContentProvider; -Landroid/provider/Settings$Global;->CONTACT_METADATA_SYNC:Ljava/lang/String; -Landroid/provider/Settings$Global;->ENABLE_ACCESSIBILITY_GLOBAL_GESTURE_ENABLED:Ljava/lang/String; -Landroid/provider/Settings$Global;->PACKAGE_VERIFIER_ENABLE:Ljava/lang/String; -Landroid/provider/Settings$Global;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; -Landroid/provider/Settings$Global;->sNameValueCache:Landroid/provider/Settings$NameValueCache; -Landroid/provider/Settings$NameValueCache;->mProviderHolder:Landroid/provider/Settings$ContentProviderHolder; -Landroid/provider/Settings$Secure;->ACCESSIBILITY_AUTOCLICK_ENABLED:Ljava/lang/String; -Landroid/provider/Settings$Secure;->ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED:Ljava/lang/String; -Landroid/provider/Settings$Secure;->ACCESSIBILITY_LARGE_POINTER_ICON:Ljava/lang/String; -Landroid/provider/Settings$Secure;->ENABLED_NOTIFICATION_LISTENERS:Ljava/lang/String; -Landroid/provider/Settings$Secure;->INCALL_POWER_BUTTON_BEHAVIOR:Ljava/lang/String; -Landroid/provider/Settings$Secure;->LONG_PRESS_TIMEOUT:Ljava/lang/String; -Landroid/provider/Settings$Secure;->PACKAGE_VERIFIER_USER_CONSENT:Ljava/lang/String; -Landroid/provider/Settings$Secure;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; -Landroid/provider/Settings$Secure;->putIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z -Landroid/provider/Settings$Secure;->sNameValueCache:Landroid/provider/Settings$NameValueCache; -Landroid/provider/Settings$System;->AIRPLANE_MODE_TOGGLEABLE_RADIOS:Ljava/lang/String; -Landroid/provider/Settings$System;->APPEND_FOR_LAST_AUDIBLE:Ljava/lang/String; -Landroid/provider/Settings$System;->HEARING_AID:Ljava/lang/String; -Landroid/provider/Settings$System;->MASTER_MONO:Ljava/lang/String; -Landroid/provider/Settings$System;->SCREEN_AUTO_BRIGHTNESS_ADJ:Ljava/lang/String; -Landroid/provider/Settings$System;->VOLUME_ALARM:Ljava/lang/String; -Landroid/provider/Settings$System;->VOLUME_BLUETOOTH_SCO:Ljava/lang/String; -Landroid/provider/Settings$System;->VOLUME_MUSIC:Ljava/lang/String; -Landroid/provider/Settings$System;->VOLUME_NOTIFICATION:Ljava/lang/String; -Landroid/provider/Settings$System;->VOLUME_RING:Ljava/lang/String; -Landroid/provider/Settings$System;->VOLUME_SETTINGS:[Ljava/lang/String; -Landroid/provider/Settings$System;->VOLUME_SYSTEM:Ljava/lang/String; -Landroid/provider/Settings$System;->VOLUME_VOICE:Ljava/lang/String; -Landroid/provider/Settings$System;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String; -Landroid/provider/Settings$System;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z -Landroid/provider/Settings$System;->sNameValueCache:Landroid/provider/Settings$NameValueCache; -Landroid/provider/Settings;->isCallingPackageAllowedToDrawOverlays(Landroid/content/Context;ILjava/lang/String;Z)Z -Landroid/provider/Settings;->isCallingPackageAllowedToWriteSettings(Landroid/content/Context;ILjava/lang/String;Z)Z -Landroid/provider/Telephony$Mms;->isEmailAddress(Ljava/lang/String;)Z -Landroid/provider/Telephony$Sms$Draft;->addMessage(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;)Landroid/net/Uri; -Landroid/provider/Telephony$Sms$Inbox;->addMessage(ILandroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Z)Landroid/net/Uri; -Landroid/provider/Telephony$Sms$Inbox;->addMessage(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;Z)Landroid/net/Uri; -Landroid/provider/Telephony$Sms$Intents;->SMS_EMERGENCY_CB_RECEIVED_ACTION:Ljava/lang/String; -Landroid/provider/Telephony$Sms$Outbox;->addMessage(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;ZJ)Landroid/net/Uri; -Landroid/provider/Telephony$Sms$Sent;->addMessage(ILandroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;)Landroid/net/Uri; -Landroid/provider/Telephony$Sms$Sent;->addMessage(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;)Landroid/net/Uri; -Landroid/provider/Telephony$Sms;->addMessageToUri(ILandroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;ZZ)Landroid/net/Uri; -Landroid/provider/Telephony$Sms;->addMessageToUri(ILandroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;ZZJ)Landroid/net/Uri; -Landroid/provider/Telephony$Sms;->addMessageToUri(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;ZZ)Landroid/net/Uri; -Landroid/provider/Telephony$Sms;->addMessageToUri(Landroid/content/ContentResolver;Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Long;ZZJ)Landroid/net/Uri; -Landroid/renderscript/RenderScript;->create(Landroid/content/Context;I)Landroid/renderscript/RenderScript; -Landroid/renderscript/RenderScript;->create(Landroid/content/Context;ILandroid/renderscript/RenderScript$ContextType;I)Landroid/renderscript/RenderScript; -Landroid/renderscript/RenderScript;->getMinorID()J -Landroid/renderscript/RenderScriptCacheDir;->mCacheDir:Ljava/io/File; -Landroid/renderscript/RenderScriptCacheDir;->setupDiskCache(Ljava/io/File;)V -Landroid/security/KeyStore;->getInstance()Landroid/security/KeyStore; -Landroid/security/keystore/AndroidKeyStoreProvider;->getKeyStoreOperationHandle(Ljava/lang/Object;)J -Landroid/security/keystore/recovery/KeyChainSnapshot;->getTrustedHardwarePublicKey()[B -Landroid/security/keystore/recovery/RecoveryController;->generateAndStoreKey(Ljava/lang/String;[B)[B -Landroid/security/keystore/recovery/RecoveryController;->generateKey(Ljava/lang/String;[B)Ljava/security/Key; -Landroid/security/keystore/recovery/RecoveryController;->getAliases(Ljava/lang/String;)Ljava/util/List; -Landroid/security/keystore/recovery/RecoveryController;->getRecoveryData()Landroid/security/keystore/recovery/KeyChainSnapshot; -Landroid/security/keystore/recovery/RecoveryController;->getRecoveryStatus(Ljava/lang/String;Ljava/lang/String;)I -Landroid/security/keystore/recovery/RecoveryController;->initRecoveryService(Ljava/lang/String;[B)V -Landroid/security/keystore/recovery/RecoveryController;->setRecoveryStatus(Ljava/lang/String;Ljava/lang/String;I)V -Landroid/security/keystore/recovery/RecoverySession;->recoverKeys([BLjava/util/List;)Ljava/util/Map; -Landroid/security/keystore/recovery/RecoverySession;->start(Ljava/security/cert/CertPath;[B[BLjava/util/List;)[B -Landroid/security/keystore/recovery/RecoverySession;->start([B[B[BLjava/util/List;)[B -Landroid/security/keystore/recovery/WrappedApplicationKey$Builder;->setAccount([B)Landroid/security/keystore/recovery/WrappedApplicationKey$Builder; -Landroid/security/keystore/recovery/WrappedApplicationKey;->getAccount()[B -Landroid/security/net/config/RootTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; -Landroid/service/dreams/DreamService;->canDoze()Z -Landroid/service/dreams/DreamService;->isDozing()Z -Landroid/service/dreams/DreamService;->startDozing()V -Landroid/service/dreams/DreamService;->stopDozing()V -Landroid/service/euicc/EuiccProfileInfo;-><init>(Ljava/lang/String;[Landroid/telephony/UiccAccessRule;Ljava/lang/String;)V -Landroid/service/euicc/GetDefaultDownloadableSubscriptionListResult;->result:I -Landroid/service/euicc/GetDownloadableSubscriptionMetadataResult;->result:I -Landroid/service/media/IMediaBrowserServiceCallbacks$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/media/IMediaBrowserServiceCallbacks; -Landroid/service/media/IMediaBrowserServiceCallbacks;->onConnect(Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V -Landroid/service/media/IMediaBrowserServiceCallbacks;->onConnectFailed()V -Landroid/service/media/IMediaBrowserServiceCallbacks;->onLoadChildren(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V -Landroid/service/media/IMediaBrowserServiceCallbacks;->onLoadChildrenWithOptions(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V -Landroid/service/media/MediaBrowserService$Result;->mFlags:I -Landroid/service/media/MediaBrowserService;->KEY_MEDIA_ITEM:Ljava/lang/String; -Landroid/service/notification/NotificationListenerService$Ranking;->getAdditionalPeople()Ljava/util/List; -Landroid/service/notification/NotificationListenerService$Ranking;->getSnoozeCriteria()Ljava/util/List; -Landroid/service/notification/NotificationListenerService;->TRIM_FULL:I -Landroid/service/notification/NotificationListenerService;->TRIM_LIGHT:I -Landroid/service/notification/NotificationListenerService;->getActiveNotifications(I)[Landroid/service/notification/StatusBarNotification; -Landroid/service/notification/NotificationListenerService;->getActiveNotifications([Ljava/lang/String;I)[Landroid/service/notification/StatusBarNotification; -Landroid/service/notification/NotificationListenerService;->isBound()Z -Landroid/service/notification/NotificationListenerService;->mHandler:Landroid/os/Handler; -Landroid/service/notification/NotificationListenerService;->registerAsSystemService(Landroid/content/Context;Landroid/content/ComponentName;I)V -Landroid/service/notification/NotificationListenerService;->setOnNotificationPostedTrim(I)V -Landroid/service/notification/NotificationListenerService;->snoozeNotification(Ljava/lang/String;Ljava/lang/String;)V -Landroid/service/notification/NotificationListenerService;->unregisterAsSystemService()V -Landroid/service/notification/StatusBarNotification;->getInitialPid()I -Landroid/service/notification/StatusBarNotification;->getUid()I -Landroid/service/persistentdata/IPersistentDataBlockService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/persistentdata/IPersistentDataBlockService; -Landroid/service/voice/AlwaysOnHotwordDetector$EventPayload;->getCaptureSession()Ljava/lang/Integer; -Landroid/service/voice/VoiceInteractionService;->isKeyphraseAndLocaleSupportedForHotword(Ljava/lang/String;Ljava/util/Locale;)Z -Landroid/service/vr/IVrManager;->getVr2dDisplayId()I -Landroid/service/vr/VrListenerService;->onCurrentVrActivityChanged(Landroid/content/ComponentName;ZI)V -Landroid/service/wallpaper/WallpaperService$Engine;->setFixedSizeAllowed(Z)V -Landroid/speech/tts/TextToSpeech;->getCurrentEngine()Ljava/lang/String; -Landroid/speech/tts/UtteranceProgressListener;->onUtteranceRangeStart(Ljava/lang/String;II)V -Landroid/system/Int32Ref;->value:I -Landroid/system/NetlinkSocketAddress;-><init>(II)V -Landroid/system/Os;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V -Landroid/system/Os;->connect(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V -Landroid/system/Os;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I -Landroid/system/Os;->setsockoptIfreq(Ljava/io/FileDescriptor;IILjava/lang/String;)V -Landroid/system/Os;->setsockoptTimeval(Ljava/io/FileDescriptor;IILandroid/system/StructTimeval;)V -Landroid/system/OsConstants;-><init>()V -Landroid/system/OsConstants;->AF_NETLINK:I -Landroid/system/OsConstants;->AF_PACKET:I -Landroid/system/OsConstants;->ARPHRD_ETHER:I -Landroid/system/OsConstants;->ARPHRD_LOOPBACK:I -Landroid/system/OsConstants;->CAP_TO_INDEX(I)I -Landroid/system/OsConstants;->CAP_TO_MASK(I)I -Landroid/system/OsConstants;->ENONET:I -Landroid/system/OsConstants;->ETH_P_ALL:I -Landroid/system/OsConstants;->ETH_P_ARP:I -Landroid/system/OsConstants;->ETH_P_IP:I -Landroid/system/OsConstants;->ETH_P_IPV6:I -Landroid/system/OsConstants;->EUSERS:I -Landroid/system/OsConstants;->ICMP6_ECHO_REPLY:I -Landroid/system/OsConstants;->ICMP6_ECHO_REQUEST:I -Landroid/system/OsConstants;->ICMP_ECHO:I -Landroid/system/OsConstants;->ICMP_ECHOREPLY:I -Landroid/system/OsConstants;->IP_MULTICAST_ALL:I -Landroid/system/OsConstants;->IP_RECVTOS:I -Landroid/system/OsConstants;->MAP_POPULATE:I -Landroid/system/OsConstants;->NETLINK_NETFILTER:I -Landroid/system/OsConstants;->NETLINK_ROUTE:I -Landroid/system/OsConstants;->O_DIRECT:I -Landroid/system/OsConstants;->PR_CAP_AMBIENT:I -Landroid/system/OsConstants;->PR_CAP_AMBIENT_RAISE:I -Landroid/system/OsConstants;->RLIMIT_NOFILE:I -Landroid/system/OsConstants;->RTMGRP_IPV4_IFADDR:I -Landroid/system/OsConstants;->RTMGRP_IPV4_MROUTE:I -Landroid/system/OsConstants;->RTMGRP_IPV4_ROUTE:I -Landroid/system/OsConstants;->RTMGRP_IPV4_RULE:I -Landroid/system/OsConstants;->RTMGRP_IPV6_IFADDR:I -Landroid/system/OsConstants;->RTMGRP_IPV6_IFINFO:I -Landroid/system/OsConstants;->RTMGRP_IPV6_MROUTE:I -Landroid/system/OsConstants;->RTMGRP_IPV6_PREFIX:I -Landroid/system/OsConstants;->RTMGRP_IPV6_ROUTE:I -Landroid/system/OsConstants;->RTMGRP_LINK:I -Landroid/system/OsConstants;->RTMGRP_NEIGH:I -Landroid/system/OsConstants;->RTMGRP_NOTIFY:I -Landroid/system/OsConstants;->RTMGRP_TC:I -Landroid/system/OsConstants;->SO_DOMAIN:I -Landroid/system/OsConstants;->SO_PROTOCOL:I -Landroid/system/OsConstants;->SPLICE_F_MORE:I -Landroid/system/OsConstants;->SPLICE_F_MOVE:I -Landroid/system/OsConstants;->SPLICE_F_NONBLOCK:I -Landroid/system/OsConstants;->TIOCOUTQ:I -Landroid/system/OsConstants;->UDP_ENCAP:I -Landroid/system/OsConstants;->UDP_ENCAP_ESPINUDP:I -Landroid/system/OsConstants;->UDP_ENCAP_ESPINUDP_NON_IKE:I -Landroid/system/OsConstants;->UNIX_PATH_MAX:I -Landroid/system/OsConstants;->XATTR_CREATE:I -Landroid/system/OsConstants;->XATTR_REPLACE:I -Landroid/system/OsConstants;->_LINUX_CAPABILITY_VERSION_3:I -Landroid/system/OsConstants;->initConstants()V -Landroid/system/OsConstants;->placeholder()I -Landroid/system/PacketSocketAddress;-><init>(I[B)V -Landroid/system/PacketSocketAddress;-><init>(SI)V -Landroid/system/StructTimeval;->fromMillis(J)Landroid/system/StructTimeval; -Landroid/telecom/AudioState;->isMuted:Z -Landroid/telecom/ParcelableCall;->CREATOR:Landroid/os/Parcelable$Creator; -Landroid/telecom/ParcelableCall;->getConnectTimeMillis()J -Landroid/telecom/ParcelableCall;->getDisconnectCause()Landroid/telecom/DisconnectCause; -Landroid/telecom/ParcelableCall;->getHandle()Landroid/net/Uri; -Landroid/telecom/ParcelableCall;->getId()Ljava/lang/String; -Landroid/telecom/TelecomManager;->EXTRA_IS_HANDOVER:Ljava/lang/String; -Landroid/telecom/TelecomManager;->from(Landroid/content/Context;)Landroid/telecom/TelecomManager; -Landroid/telecom/TelecomManager;->getUserSelectedOutgoingPhoneAccount()Landroid/telecom/PhoneAccountHandle; -Landroid/telecom/TelecomManager;->setUserSelectedOutgoingPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V -Landroid/telecom/VideoProfile$CameraCapabilities;-><init>(IIZF)V -Landroid/telephony/CellSignalStrengthLte;->mCqi:I -Landroid/telephony/CellSignalStrengthLte;->mRsrp:I -Landroid/telephony/CellSignalStrengthLte;->mRsrq:I -Landroid/telephony/CellSignalStrengthLte;->mRssnr:I -Landroid/telephony/CellSignalStrengthLte;->mSignalStrength:I -Landroid/telephony/CellSignalStrengthLte;->mTimingAdvance:I -Landroid/telephony/CellSignalStrengthWcdma;->mBitErrorRate:I -Landroid/telephony/CellSignalStrengthWcdma;->mSignalStrength:I -Landroid/telephony/NetworkScan;->stop()V -Landroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;I)Ljava/lang/String; -Landroid/telephony/PhoneNumberUtils;->isEmergencyNumber(ILjava/lang/String;)Z -Landroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumber(Landroid/content/Context;ILjava/lang/String;)Z -Landroid/telephony/PhoneNumberUtils;->isPotentialEmergencyNumber(ILjava/lang/String;)Z -Landroid/telephony/PhoneNumberUtils;->isPotentialLocalEmergencyNumber(Landroid/content/Context;ILjava/lang/String;)Z -Landroid/telephony/PhoneStateListener;-><init>(Ljava/lang/Integer;)V -Landroid/telephony/PhoneStateListener;-><init>(Ljava/lang/Integer;Landroid/os/Looper;)V -Landroid/telephony/PhoneStateListener;->mSubId:Ljava/lang/Integer; -Landroid/telephony/PreciseCallState;->getBackgroundCallState()I -Landroid/telephony/PreciseCallState;->getForegroundCallState()I -Landroid/telephony/RadioAccessFamily;-><init>(II)V -Landroid/telephony/RadioAccessFamily;->getRafFromNetworkType(I)I -Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I -Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I -Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I -Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I -Landroid/telephony/ServiceState;->bitmaskHasTech(II)Z -Landroid/telephony/ServiceState;->getDataRegState()I -Landroid/telephony/ServiceState;->getDataRoaming()Z -Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I -Landroid/telephony/ServiceState;->getVoiceNetworkType()I -Landroid/telephony/ServiceState;->getVoiceRegState()I -Landroid/telephony/ServiceState;->isCdma(I)Z -Landroid/telephony/ServiceState;->isEmergencyOnly()Z -Landroid/telephony/ServiceState;->isGsm(I)Z -Landroid/telephony/ServiceState;->mergeServiceStates(Landroid/telephony/ServiceState;Landroid/telephony/ServiceState;)Landroid/telephony/ServiceState; -Landroid/telephony/ServiceState;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/ServiceState; -Landroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String; -Landroid/telephony/SignalStrength;-><init>()V -Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_GOOD:I -Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_GREAT:I -Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_MODERATE:I -Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_NONE_OR_UNKNOWN:I -Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_POOR:I -Landroid/telephony/SignalStrength;->getAsuLevel()I -Landroid/telephony/SignalStrength;->getCdmaLevel()I -Landroid/telephony/SignalStrength;->getDbm()I -Landroid/telephony/SignalStrength;->getGsmDbm()I -Landroid/telephony/SignalStrength;->getLteDbm()I -Landroid/telephony/SignalStrength;->getLteRsrp()I -Landroid/telephony/SignalStrength;->getLteRsrq()I -Landroid/telephony/SignalStrength;->getLteRssnr()I -Landroid/telephony/SignalStrength;->getLteSignalStrength()I -Landroid/telephony/SignalStrength;->mGsmBitErrorRate:I -Landroid/telephony/SignalStrength;->mGsmSignalStrength:I -Landroid/telephony/SignalStrength;->mLteCqi:I -Landroid/telephony/SignalStrength;->mLteRsrp:I -Landroid/telephony/SignalStrength;->mLteRsrq:I -Landroid/telephony/SignalStrength;->mLteRssnr:I -Landroid/telephony/SignalStrength;->mLteSignalStrength:I -Landroid/telephony/SmsManager;->sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;IZI)V -Landroid/telephony/SmsManager;->sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;IZI)V -Landroid/telephony/SmsMessage;->getSubId()I -Landroid/telephony/SmsMessage;->mWrappedSmsMessage:Lcom/android/internal/telephony/SmsMessageBase; -Landroid/telephony/SubscriptionInfo;->setDisplayName(Ljava/lang/CharSequence;)V -Landroid/telephony/SubscriptionInfo;->setIconTint(I)V -Landroid/telephony/SubscriptionManager;->clearDefaultsForInactiveSubIds()V -Landroid/telephony/SubscriptionManager;->getActiveSubscriptionIdList()[I -Landroid/telephony/SubscriptionManager;->getAllSubscriptionInfoCount()I -Landroid/telephony/SubscriptionManager;->getAllSubscriptionInfoList()Ljava/util/List; -Landroid/telephony/SubscriptionManager;->getDefaultDataPhoneId()I -Landroid/telephony/SubscriptionManager;->getDefaultDataSubscriptionInfo()Landroid/telephony/SubscriptionInfo; -Landroid/telephony/SubscriptionManager;->getDefaultSmsPhoneId()I -Landroid/telephony/SubscriptionManager;->getDefaultVoicePhoneId()I -Landroid/telephony/SubscriptionManager;->getDefaultVoiceSubscriptionInfo()Landroid/telephony/SubscriptionInfo; -Landroid/telephony/SubscriptionManager;->getPhoneId(I)I -Landroid/telephony/SubscriptionManager;->getResourcesForSubId(Landroid/content/Context;I)Landroid/content/res/Resources; -Landroid/telephony/SubscriptionManager;->getSlotIndex(I)I -Landroid/telephony/SubscriptionManager;->getSubId(I)[I -Landroid/telephony/SubscriptionManager;->isActiveSubId(I)Z -Landroid/telephony/SubscriptionManager;->isUsableSubIdValue(I)Z -Landroid/telephony/SubscriptionManager;->isValidPhoneId(I)Z -Landroid/telephony/SubscriptionManager;->isValidSlotIndex(I)Z -Landroid/telephony/SubscriptionManager;->isValidSubscriptionId(I)Z -Landroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;I)V -Landroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;II)V -Landroid/telephony/SubscriptionManager;->setDefaultDataSubId(I)V -Landroid/telephony/SubscriptionManager;->setDefaultSmsSubId(I)V -Landroid/telephony/SubscriptionManager;->setDisplayName(Ljava/lang/String;IJ)I -Landroid/telephony/SubscriptionManager;->setIconTint(II)I -Landroid/telephony/TelephonyManager$MultiSimVariants;->DSDA:Landroid/telephony/TelephonyManager$MultiSimVariants; -Landroid/telephony/TelephonyManager$MultiSimVariants;->DSDS:Landroid/telephony/TelephonyManager$MultiSimVariants; -Landroid/telephony/TelephonyManager;-><init>()V -Landroid/telephony/TelephonyManager;-><init>(Landroid/content/Context;)V -Landroid/telephony/TelephonyManager;->from(Landroid/content/Context;)Landroid/telephony/TelephonyManager; -Landroid/telephony/TelephonyManager;->getCallState(I)I -Landroid/telephony/TelephonyManager;->getDataNetworkType(I)I -Landroid/telephony/TelephonyManager;->getDefault()Landroid/telephony/TelephonyManager; -Landroid/telephony/TelephonyManager;->getGroupIdLevel1(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getITelephony()Lcom/android/internal/telephony/ITelephony; -Landroid/telephony/TelephonyManager;->getIntAtIndex(Landroid/content/ContentResolver;Ljava/lang/String;I)I -Landroid/telephony/TelephonyManager;->getIsimDomain()Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getLine1Number(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getMultiSimConfiguration()Landroid/telephony/TelephonyManager$MultiSimVariants; -Landroid/telephony/TelephonyManager;->getNetworkClass(I)I -Landroid/telephony/TelephonyManager;->getNetworkCountryIso(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getNetworkOperator(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getNetworkOperatorForPhone(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getNetworkOperatorName(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getNetworkType(I)I -Landroid/telephony/TelephonyManager;->getNetworkTypeName()Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getNetworkTypeName(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getPhoneType(I)I -Landroid/telephony/TelephonyManager;->getPreferredNetworkType(I)I -Landroid/telephony/TelephonyManager;->getServiceStateForSubscriber(I)Landroid/telephony/ServiceState; -Landroid/telephony/TelephonyManager;->getSimCount()I -Landroid/telephony/TelephonyManager;->getSimOperator(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getSimOperatorName(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getSimOperatorNameForPhone(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getSimOperatorNumeric(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getSimOperatorNumericForPhone(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getSimSerialNumber(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getSubIdForPhoneAccount(Landroid/telecom/PhoneAccount;)I -Landroid/telephony/TelephonyManager;->getSubscriberId(I)Ljava/lang/String; -Landroid/telephony/TelephonyManager;->getSubscriberInfo()Lcom/android/internal/telephony/IPhoneSubInfo; -Landroid/telephony/TelephonyManager;->getVoiceMessageCount()I -Landroid/telephony/TelephonyManager;->getVoiceNetworkType(I)I -Landroid/telephony/TelephonyManager;->hasIccCard(I)Z -Landroid/telephony/TelephonyManager;->isImsRegistered()Z -Landroid/telephony/TelephonyManager;->isMultiSimEnabled()Z -Landroid/telephony/TelephonyManager;->isNetworkRoaming(I)Z -Landroid/telephony/TelephonyManager;->isVideoTelephonyAvailable()Z -Landroid/telephony/TelephonyManager;->isVolteAvailable()Z -Landroid/telephony/TelephonyManager;->isWifiCallingAvailable()Z -Landroid/telephony/TelephonyManager;->mSubscriptionManager:Landroid/telephony/SubscriptionManager; -Landroid/telephony/TelephonyManager;->nvResetConfig(I)Z -Landroid/telephony/TelephonyManager;->putIntAtIndex(Landroid/content/ContentResolver;Ljava/lang/String;II)Z -Landroid/telephony/TelephonyManager;->requestNetworkScan(Landroid/telephony/NetworkScanRequest;Landroid/telephony/TelephonyScanManager$NetworkScanCallback;)Landroid/telephony/NetworkScan; -Landroid/telephony/TelephonyManager;->setPreferredNetworkType(II)Z -Landroid/telephony/euicc/DownloadableSubscription;->encodedActivationCode:Ljava/lang/String; -Landroid/telephony/euicc/DownloadableSubscription;->setAccessRules([Landroid/telephony/UiccAccessRule;)V -Landroid/telephony/euicc/DownloadableSubscription;->setCarrierName(Ljava/lang/String;)V -Landroid/telephony/ims/ImsCallForwardInfo;-><init>()V -Landroid/telephony/ims/ImsCallForwardInfo;->mCondition:I -Landroid/telephony/ims/ImsCallForwardInfo;->mNumber:Ljava/lang/String; -Landroid/telephony/ims/ImsCallForwardInfo;->mServiceClass:I -Landroid/telephony/ims/ImsCallForwardInfo;->mStatus:I -Landroid/telephony/ims/ImsCallForwardInfo;->mTimeSeconds:I -Landroid/telephony/ims/ImsCallForwardInfo;->mToA:I -Landroid/telephony/ims/ImsCallProfile;->mCallExtras:Landroid/os/Bundle; -Landroid/telephony/ims/ImsCallProfile;->mCallType:I -Landroid/telephony/ims/ImsCallProfile;->mMediaProfile:Landroid/telephony/ims/ImsStreamMediaProfile; -Landroid/telephony/ims/ImsCallProfile;->mRestrictCause:I -Landroid/telephony/ims/ImsCallProfile;->presentationToOIR(I)I -Landroid/telephony/ims/ImsExternalCallState;-><init>(ILandroid/net/Uri;ZIIZ)V -Landroid/telephony/ims/ImsReasonInfo;-><init>(II)V -Landroid/telephony/ims/ImsReasonInfo;->mCode:I -Landroid/telephony/ims/ImsReasonInfo;->mExtraCode:I -Landroid/telephony/ims/ImsReasonInfo;->mExtraMessage:Ljava/lang/String; -Landroid/telephony/ims/ImsSsInfo;->mIcbNum:Ljava/lang/String; -Landroid/telephony/ims/ImsSsInfo;->mStatus:I -Landroid/telephony/ims/ImsStreamMediaProfile;-><init>()V -Landroid/telephony/ims/ImsStreamMediaProfile;->mAudioDirection:I -Landroid/telephony/ims/ImsStreamMediaProfile;->mAudioQuality:I -Landroid/telephony/ims/ImsStreamMediaProfile;->mVideoDirection:I -Landroid/telephony/ims/ImsVideoCallProvider;->getInterface()Lcom/android/ims/internal/IImsVideoCallProvider; -Landroid/telephony/ims/compat/ImsService;-><init>()V -Landroid/telephony/ims/compat/ImsService;->mImsServiceController:Landroid/os/IBinder; -Landroid/telephony/ims/compat/feature/ImsFeature;->getFeatureState()I -Landroid/telephony/ims/compat/feature/ImsFeature;->setFeatureState(I)V -Landroid/telephony/ims/compat/feature/MMTelFeature;-><init>()V -Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;-><init>()V -Landroid/telephony/ims/compat/stub/ImsConfigImplBase;-><init>(Landroid/content/Context;)V -Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->getIImsConfig()Lcom/android/ims/internal/IImsConfig; -Landroid/telephony/ims/compat/stub/ImsUtListenerImplBase;-><init>()V -Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;-><init>()V -Landroid/telephony/mbms/IStreamingServiceCallback$Stub;-><init>()V -Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/vendor/IMbmsStreamingService; -Landroid/telephony/mbms/vendor/IMbmsStreamingService;->getPlaybackUri(ILjava/lang/String;)Landroid/net/Uri; -Landroid/telephony/mbms/vendor/IMbmsStreamingService;->initialize(Landroid/telephony/mbms/IMbmsStreamingSessionCallback;I)I -Landroid/telephony/mbms/vendor/IMbmsStreamingService;->requestUpdateStreamingServices(ILjava/util/List;)I -Landroid/telephony/mbms/vendor/IMbmsStreamingService;->startStreaming(ILjava/lang/String;Landroid/telephony/mbms/IStreamingServiceCallback;)I -Landroid/text/AndroidBidi;->bidi(I[C[B)I -Landroid/text/BoringLayout;->isBoring(Ljava/lang/CharSequence;Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;Landroid/text/BoringLayout$Metrics;)Landroid/text/BoringLayout$Metrics; -Landroid/text/DynamicLayout;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FFZIIILandroid/text/TextUtils$TruncateAt;I)V -Landroid/text/DynamicLayout;->sStaticLayout:Landroid/text/StaticLayout; -Landroid/text/Html;->withinStyle(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;II)V -Landroid/text/Layout$Alignment;->ALIGN_LEFT:Landroid/text/Layout$Alignment; -Landroid/text/Layout$Alignment;->ALIGN_RIGHT:Landroid/text/Layout$Alignment; -Landroid/text/Layout;->DIRS_ALL_LEFT_TO_RIGHT:Landroid/text/Layout$Directions; -Landroid/text/Layout;->getPrimaryHorizontal(IZ)F -Landroid/text/SpanSet;->spans:[Ljava/lang/Object; -Landroid/text/SpannableStringBuilder;->mGapLength:I -Landroid/text/SpannableStringBuilder;->mGapStart:I -Landroid/text/SpannableStringBuilder;->mSpanCount:I -Landroid/text/SpannableStringBuilder;->mSpanEnds:[I -Landroid/text/SpannableStringBuilder;->mSpanFlags:[I -Landroid/text/SpannableStringBuilder;->mSpanStarts:[I -Landroid/text/SpannableStringBuilder;->mSpans:[Ljava/lang/Object; -Landroid/text/SpannableStringInternal;-><init>(Ljava/lang/CharSequence;II)V -Landroid/text/SpannableStringInternal;->COLUMNS:I -Landroid/text/SpannableStringInternal;->EMPTY:[Ljava/lang/Object; -Landroid/text/SpannableStringInternal;->END:I -Landroid/text/SpannableStringInternal;->FLAGS:I -Landroid/text/SpannableStringInternal;->START:I -Landroid/text/SpannableStringInternal;->charAt(I)C -Landroid/text/SpannableStringInternal;->checkRange(Ljava/lang/String;II)V -Landroid/text/SpannableStringInternal;->copySpans(Landroid/text/SpannableStringInternal;II)V -Landroid/text/SpannableStringInternal;->copySpans(Landroid/text/Spanned;II)V -Landroid/text/SpannableStringInternal;->getChars(II[CI)V -Landroid/text/SpannableStringInternal;->getSpanEnd(Ljava/lang/Object;)I -Landroid/text/SpannableStringInternal;->getSpanFlags(Ljava/lang/Object;)I -Landroid/text/SpannableStringInternal;->getSpanStart(Ljava/lang/Object;)I -Landroid/text/SpannableStringInternal;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object; -Landroid/text/SpannableStringInternal;->isIndexFollowsNextLine(I)Z -Landroid/text/SpannableStringInternal;->isOutOfCopyRange(IIII)Z -Landroid/text/SpannableStringInternal;->length()I -Landroid/text/SpannableStringInternal;->mSpanCount:I -Landroid/text/SpannableStringInternal;->mSpanData:[I -Landroid/text/SpannableStringInternal;->mSpans:[Ljava/lang/Object; -Landroid/text/SpannableStringInternal;->mText:Ljava/lang/String; -Landroid/text/SpannableStringInternal;->nextSpanTransition(IILjava/lang/Class;)I -Landroid/text/SpannableStringInternal;->region(II)Ljava/lang/String; -Landroid/text/SpannableStringInternal;->removeSpan(Ljava/lang/Object;)V -Landroid/text/SpannableStringInternal;->sendSpanAdded(Ljava/lang/Object;II)V -Landroid/text/SpannableStringInternal;->sendSpanChanged(Ljava/lang/Object;IIII)V -Landroid/text/SpannableStringInternal;->sendSpanRemoved(Ljava/lang/Object;II)V -Landroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;III)V -Landroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;IIIZ)V -Landroid/text/StaticLayout$LineBreaks;->ascents:[F -Landroid/text/StaticLayout$LineBreaks;->breaks:[I -Landroid/text/StaticLayout$LineBreaks;->descents:[F -Landroid/text/StaticLayout$LineBreaks;->flags:[I -Landroid/text/StaticLayout$LineBreaks;->widths:[F -Landroid/text/StaticLayout;-><init>(Ljava/lang/CharSequence;IILandroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FFZLandroid/text/TextUtils$TruncateAt;II)V -Landroid/text/StaticLayout;->getHeight(Z)I -Landroid/text/StaticLayout;->mColumns:I -Landroid/text/StaticLayout;->mLineCount:I -Landroid/text/StaticLayout;->mLines:[I -Landroid/text/StaticLayout;->mMaximumVisibleLineCount:I -Landroid/text/TextLine;->mCharacterStyleSpanSet:Landroid/text/SpanSet; -Landroid/text/TextLine;->mMetricAffectingSpanSpanSet:Landroid/text/SpanSet; -Landroid/text/TextLine;->mReplacementSpanSpanSet:Landroid/text/SpanSet; -Landroid/text/TextLine;->mSpanned:Landroid/text/Spanned; -Landroid/text/TextLine;->mText:Ljava/lang/CharSequence; -Landroid/text/TextLine;->obtain()Landroid/text/TextLine; -Landroid/text/TextLine;->sCached:[Landroid/text/TextLine; -Landroid/text/TextPaint;->setUnderlineText(IF)V -Landroid/text/TextUtils$TruncateAt;->END_SMALL:Landroid/text/TextUtils$TruncateAt; -Landroid/text/TextUtils;->isPrintableAsciiOnly(Ljava/lang/CharSequence;)Z -Landroid/text/format/DateFormat;->AM_PM:C -Landroid/text/format/DateFormat;->CAPITAL_AM_PM:C -Landroid/text/format/DateFormat;->DATE:C -Landroid/text/format/DateFormat;->DAY:C -Landroid/text/format/DateFormat;->HOUR:C -Landroid/text/format/DateFormat;->HOUR_OF_DAY:C -Landroid/text/format/DateFormat;->MINUTE:C -Landroid/text/format/DateFormat;->MONTH:C -Landroid/text/format/DateFormat;->QUOTE:C -Landroid/text/format/DateFormat;->SECONDS:C -Landroid/text/format/DateFormat;->STANDALONE_MONTH:C -Landroid/text/format/DateFormat;->TIME_ZONE:C -Landroid/text/format/DateFormat;->YEAR:C -Landroid/text/method/LinkMovementMethod;->sInstance:Landroid/text/method/LinkMovementMethod; -Landroid/text/style/RasterizerSpan; -Landroid/text/style/RasterizerSpan;-><init>(Landroid/graphics/Rasterizer;)V -Landroid/text/style/RasterizerSpan;->getRasterizer()Landroid/graphics/Rasterizer; -Landroid/transition/ChangeBounds;->BOTTOM_RIGHT_ONLY_PROPERTY:Landroid/util/Property; -Landroid/transition/ChangeBounds;->POSITION_PROPERTY:Landroid/util/Property; -Landroid/transition/Scene;->mEnterAction:Ljava/lang/Runnable; -Landroid/transition/Scene;->mExitAction:Ljava/lang/Runnable; -Landroid/transition/Scene;->setCurrentScene(Landroid/view/View;Landroid/transition/Scene;)V -Landroid/transition/TransitionManager;->sRunningTransitions:Ljava/lang/ThreadLocal; -Landroid/util/ArrayMap;->append(Ljava/lang/Object;Ljava/lang/Object;)V -Landroid/util/ArrayMap;->mBaseCacheSize:I -Landroid/util/ArrayMap;->mTwiceBaseCacheSize:I -Landroid/util/ArraySet;-><init>(Ljava/util/Collection;)V -Landroid/util/DisplayMetrics;->DENSITY_DEVICE:I -Landroid/util/DisplayMetrics;->noncompatHeightPixels:I -Landroid/util/DisplayMetrics;->noncompatWidthPixels:I -Landroid/util/EventLog$Event;-><init>([B)V -Landroid/util/FloatMath;->ceil(F)F -Landroid/util/FloatMath;->cos(F)F -Landroid/util/FloatMath;->exp(F)F -Landroid/util/FloatMath;->floor(F)F -Landroid/util/FloatMath;->hypot(FF)F -Landroid/util/FloatMath;->pow(FF)F -Landroid/util/FloatMath;->sin(F)F -Landroid/util/FloatMath;->sqrt(F)F -Landroid/util/IconDrawableFactory;->getBadgedIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;I)Landroid/graphics/drawable/Drawable; -Landroid/util/IconDrawableFactory;->newInstance(Landroid/content/Context;)Landroid/util/IconDrawableFactory; -Landroid/util/LocalLog$ReadOnlyLocalLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V -Landroid/util/LocalLog;-><init>(I)V -Landroid/util/LocalLog;->log(Ljava/lang/String;)V -Landroid/util/LocalLog;->readOnlyLocalLog()Landroid/util/LocalLog$ReadOnlyLocalLog; -Landroid/util/Log;->wtf(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;ZZ)I -Landroid/util/LongArray;-><init>()V -Landroid/util/LongArray;->add(IJ)V -Landroid/util/LongArray;->get(I)J -Landroid/util/LongArray;->size()I -Landroid/util/LongSparseLongArray;->mKeys:[J -Landroid/util/LongSparseLongArray;->mSize:I -Landroid/util/LongSparseLongArray;->mValues:[J -Landroid/util/MalformedJsonException;->serialVersionUID:J -Landroid/util/MathUtils;->constrain(III)I -Landroid/util/NtpTrustedTime;->forceRefresh()Z -Landroid/util/NtpTrustedTime;->getCachedNtpTime()J -Landroid/util/NtpTrustedTime;->getCachedNtpTimeReference()J -Landroid/util/NtpTrustedTime;->getInstance(Landroid/content/Context;)Landroid/util/NtpTrustedTime; -Landroid/util/NtpTrustedTime;->hasCache()Z -Landroid/util/PathParser;->createPathFromPathData(Ljava/lang/String;)Landroid/graphics/Path; -Landroid/util/Pools$SimplePool;->mPool:[Ljava/lang/Object; -Landroid/util/Pools$SynchronizedPool;-><init>(I)V -Landroid/util/Pools$SynchronizedPool;->acquire()Ljava/lang/Object; -Landroid/util/Pools$SynchronizedPool;->release(Ljava/lang/Object;)Z -Landroid/util/Rational;->mDenominator:I -Landroid/util/Rational;->mNumerator:I -Landroid/util/Rational;->readObject(Ljava/io/ObjectInputStream;)V -Landroid/util/Rational;->serialVersionUID:J -Landroid/util/RecurrenceRule;->buildRecurringMonthly(ILjava/time/ZoneId;)Landroid/util/RecurrenceRule; -Landroid/util/RecurrenceRule;->start:Ljava/time/ZonedDateTime; -Landroid/util/Singleton;-><init>()V -Landroid/util/Singleton;->get()Ljava/lang/Object; -Landroid/util/Singleton;->mInstance:Ljava/lang/Object; -Landroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I -Landroid/util/Slog;->println(ILjava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/Slog;->wtf(Ljava/lang/String;Ljava/lang/String;)I -Landroid/util/SparseIntArray;->mKeys:[I -Landroid/util/SparseIntArray;->mSize:I -Landroid/util/SparseIntArray;->mValues:[I -Landroid/util/apk/SignatureNotFoundException;->serialVersionUID:J -Landroid/view/AppTransitionAnimationSpec;-><init>(ILandroid/graphics/GraphicBuffer;Landroid/graphics/Rect;)V -Landroid/view/BatchedInputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;Landroid/view/Choreographer;)V -Landroid/view/Choreographer$CallbackQueue;->addCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)V -Landroid/view/Choreographer;->USE_VSYNC:Z -Landroid/view/Choreographer;->doFrame(JI)V -Landroid/view/Choreographer;->getFrameTime()J -Landroid/view/Choreographer;->getSfInstance()Landroid/view/Choreographer; -Landroid/view/Choreographer;->mCallbackQueues:[Landroid/view/Choreographer$CallbackQueue; -Landroid/view/Choreographer;->mFrameIntervalNanos:J -Landroid/view/Choreographer;->mLastFrameTimeNanos:J -Landroid/view/Choreographer;->mLock:Ljava/lang/Object; -Landroid/view/Choreographer;->scheduleVsyncLocked()V -Landroid/view/ContextThemeWrapper;->getThemeResId()I -Landroid/view/ContextThemeWrapper;->initializeTheme()V -Landroid/view/ContextThemeWrapper;->mInflater:Landroid/view/LayoutInflater; -Landroid/view/ContextThemeWrapper;->mResources:Landroid/content/res/Resources; -Landroid/view/ContextThemeWrapper;->mTheme:Landroid/content/res/Resources$Theme; -Landroid/view/ContextThemeWrapper;->mThemeResource:I -Landroid/view/Display$HdrCapabilities;-><init>([IFFF)V -Landroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments; -Landroid/view/DisplayAdjustments;->getConfiguration()Landroid/content/res/Configuration; -Landroid/view/DisplayAdjustments;->setCompatibilityInfo(Landroid/content/res/CompatibilityInfo;)V -Landroid/view/DisplayEventReceiver;->dispatchHotplug(JIZ)V -Landroid/view/DisplayEventReceiver;->dispatchVsync(JII)V -Landroid/view/DisplayListCanvas;->callDrawGLFunction2(J)V -Landroid/view/DisplayListCanvas;->drawGLFunctor2(JLjava/lang/Runnable;)V -Landroid/view/DisplayListCanvas;->drawRenderNode(Landroid/view/RenderNode;)V -Landroid/view/FrameMetrics;->mTimingData:[J -Landroid/view/FrameMetricsObserver;->mFrameMetrics:Landroid/view/FrameMetrics; -Landroid/view/FrameMetricsObserver;->mMessageQueue:Landroid/os/MessageQueue; -Landroid/view/FrameMetricsObserver;->notifyDataAvailable(I)V -Landroid/view/GestureDetector;->mMinimumFlingVelocity:I -Landroid/view/GestureDetector;->mTouchSlopSquare:I -Landroid/view/GhostView;->addGhost(Landroid/view/View;Landroid/view/ViewGroup;Landroid/graphics/Matrix;)Landroid/view/GhostView; -Landroid/view/GhostView;->removeGhost(Landroid/view/View;)V -Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;-><init>()V -Landroid/view/IGraphicsStats$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/view/IGraphicsStats$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IGraphicsStats; -Landroid/view/IRecentsAnimationController;->finish(Z)V -Landroid/view/IRecentsAnimationController;->screenshotTask(I)Landroid/app/ActivityManager$TaskSnapshot; -Landroid/view/IRecentsAnimationController;->setAnimationTargetsBehindSystemBars(Z)V -Landroid/view/IRecentsAnimationController;->setInputConsumerEnabled(Z)V -Landroid/view/IRecentsAnimationRunner$Stub;-><init>()V -Landroid/view/IRecentsAnimationRunner;->onAnimationCanceled()V -Landroid/view/IRecentsAnimationRunner;->onAnimationStart(Landroid/view/IRecentsAnimationController;[Landroid/view/RemoteAnimationTarget;)V -Landroid/view/IRecentsAnimationRunner;->onAnimationStart_New(Landroid/view/IRecentsAnimationController;[Landroid/view/RemoteAnimationTarget;Landroid/graphics/Rect;Landroid/graphics/Rect;)V -Landroid/view/IRemoteAnimationFinishedCallback;->onAnimationFinished()V -Landroid/view/IRemoteAnimationRunner$Stub;-><init>()V -Landroid/view/IRemoteAnimationRunner;->onAnimationCancelled()V -Landroid/view/IRemoteAnimationRunner;->onAnimationStart([Landroid/view/RemoteAnimationTarget;Landroid/view/IRemoteAnimationFinishedCallback;)V -Landroid/view/IWindowManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/view/IWindowManager$Stub$Proxy;->getBaseDisplayDensity(I)I -Landroid/view/IWindowManager$Stub$Proxy;->getDockedStackSide()I -Landroid/view/IWindowManager$Stub$Proxy;->getInitialDisplayDensity(I)I -Landroid/view/IWindowManager$Stub$Proxy;->hasNavigationBar()Z -Landroid/view/IWindowManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowManager; -Landroid/view/IWindowManager;->createInputConsumer(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/InputChannel;)V -Landroid/view/IWindowManager;->destroyInputConsumer(Ljava/lang/String;)Z -Landroid/view/IWindowManager;->endProlongedAnimations()V -Landroid/view/IWindowManager;->getAnimationScale(I)F -Landroid/view/IWindowManager;->getStableInsets(ILandroid/graphics/Rect;)V -Landroid/view/IWindowManager;->hasNavigationBar()Z -Landroid/view/IWindowManager;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V -Landroid/view/IWindowManager;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;)V -Landroid/view/IWindowManager;->setAnimationScale(IF)V -Landroid/view/IWindowManager;->setNavBarVirtualKeyHapticFeedbackEnabled(Z)V -Landroid/view/IWindowManager;->setShelfHeight(ZI)V -Landroid/view/IWindowManager;->setStrictModeVisualIndicatorPreference(Ljava/lang/String;)V -Landroid/view/IWindowSession$Stub$Proxy;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/Surface;)I -Landroid/view/InputChannel;-><init>()V -Landroid/view/InputChannel;->mPtr:J -Landroid/view/InputDevice;-><init>(IIILjava/lang/String;IILjava/lang/String;ZIILandroid/view/KeyCharacterMap;ZZZ)V -Landroid/view/InputDevice;->addMotionRange(IIFFFFF)V -Landroid/view/InputDevice;->isExternal()Z -Landroid/view/InputEvent;->getSequenceNumber()I -Landroid/view/InputEventReceiver;->dispatchBatchedInputEventPending()V -Landroid/view/InputEventReceiver;->dispatchInputEvent(ILandroid/view/InputEvent;I)V -Landroid/view/InputEventReceiver;->onInputEvent(Landroid/view/InputEvent;I)V -Landroid/view/InputEventSender;->dispatchInputEventFinished(IZ)V -Landroid/view/InputQueue;->finishInputEvent(JZ)V -Landroid/view/KeyCharacterMap$FallbackAction;->keyCode:I -Landroid/view/KeyCharacterMap$FallbackAction;->metaState:I -Landroid/view/KeyCharacterMap;-><init>(J)V -Landroid/view/KeyEvent;->isConfirmKey(I)Z -Landroid/view/KeyEvent;->mAction:I -Landroid/view/KeyEvent;->mCharacters:Ljava/lang/String; -Landroid/view/KeyEvent;->mDeviceId:I -Landroid/view/KeyEvent;->mDownTime:J -Landroid/view/KeyEvent;->mEventTime:J -Landroid/view/KeyEvent;->mFlags:I -Landroid/view/KeyEvent;->mKeyCode:I -Landroid/view/KeyEvent;->mMetaState:I -Landroid/view/KeyEvent;->mRepeatCount:I -Landroid/view/KeyEvent;->mScanCode:I -Landroid/view/KeyEvent;->mSource:I -Landroid/view/KeyEvent;->obtain(JJIIIIIIIILjava/lang/String;)Landroid/view/KeyEvent; -Landroid/view/KeyEvent;->recycle()V -Landroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View; -Landroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View; -Landroid/view/LayoutInflater;->mConstructorArgs:[Ljava/lang/Object; -Landroid/view/LayoutInflater;->mContext:Landroid/content/Context; -Landroid/view/LayoutInflater;->mFactory2:Landroid/view/LayoutInflater$Factory2; -Landroid/view/LayoutInflater;->mFactory:Landroid/view/LayoutInflater$Factory; -Landroid/view/LayoutInflater;->mFactorySet:Z -Landroid/view/LayoutInflater;->mPrivateFactory:Landroid/view/LayoutInflater$Factory2; -Landroid/view/LayoutInflater;->sConstructorMap:Ljava/util/HashMap; -Landroid/view/LayoutInflater;->setPrivateFactory(Landroid/view/LayoutInflater$Factory2;)V -Landroid/view/MotionEvent$PointerCoords;->mPackedAxisBits:J -Landroid/view/MotionEvent$PointerCoords;->mPackedAxisValues:[F -Landroid/view/MotionEvent;->HISTORY_CURRENT:I -Landroid/view/MotionEvent;->getPointerIdBits()I -Landroid/view/MotionEvent;->mNativePtr:J -Landroid/view/MotionEvent;->nativeGetRawAxisValue(JIII)F -Landroid/view/MotionEvent;->obtain()Landroid/view/MotionEvent; -Landroid/view/MotionEvent;->scale(F)V -Landroid/view/MotionEvent;->split(I)Landroid/view/MotionEvent; -Landroid/view/PointerIcon;->load(Landroid/content/Context;)Landroid/view/PointerIcon; -Landroid/view/PointerIcon;->mBitmap:Landroid/graphics/Bitmap; -Landroid/view/PointerIcon;->mBitmapFrames:[Landroid/graphics/Bitmap; -Landroid/view/PointerIcon;->mDurationPerFrame:I -Landroid/view/PointerIcon;->mHotSpotX:F -Landroid/view/PointerIcon;->mHotSpotY:F -Landroid/view/PointerIcon;->mType:I -Landroid/view/RemoteAnimationAdapter;-><init>(Landroid/view/IRemoteAnimationRunner;JJ)V -Landroid/view/RemoteAnimationDefinition;-><init>()V -Landroid/view/RemoteAnimationDefinition;->addRemoteAnimation(IILandroid/view/RemoteAnimationAdapter;)V -Landroid/view/RemoteAnimationDefinition;->addRemoteAnimation(ILandroid/view/RemoteAnimationAdapter;)V -Landroid/view/RemoteAnimationTarget;->clipRect:Landroid/graphics/Rect; -Landroid/view/RemoteAnimationTarget;->contentInsets:Landroid/graphics/Rect; -Landroid/view/RemoteAnimationTarget;->isNotInRecents:Z -Landroid/view/RemoteAnimationTarget;->isTranslucent:Z -Landroid/view/RemoteAnimationTarget;->leash:Landroid/view/SurfaceControl; -Landroid/view/RemoteAnimationTarget;->mode:I -Landroid/view/RemoteAnimationTarget;->position:Landroid/graphics/Point; -Landroid/view/RemoteAnimationTarget;->prefixOrderIndex:I -Landroid/view/RemoteAnimationTarget;->sourceContainerBounds:Landroid/graphics/Rect; -Landroid/view/RemoteAnimationTarget;->taskId:I -Landroid/view/RemoteAnimationTarget;->windowConfiguration:Landroid/app/WindowConfiguration; -Landroid/view/RenderNode;->create(Ljava/lang/String;Landroid/view/View;)Landroid/view/RenderNode; -Landroid/view/RenderNode;->discardDisplayList()V -Landroid/view/RenderNode;->end(Landroid/view/DisplayListCanvas;)V -Landroid/view/RenderNode;->isValid()Z -Landroid/view/RenderNode;->output()V -Landroid/view/RenderNode;->setClipToBounds(Z)Z -Landroid/view/RenderNode;->setLeftTopRightBottom(IIII)Z -Landroid/view/RenderNode;->start(II)Landroid/view/DisplayListCanvas; -Landroid/view/RenderNodeAnimator;-><init>(IF)V -Landroid/view/RenderNodeAnimator;->callOnFinished(Landroid/view/RenderNodeAnimator;)V -Landroid/view/RenderNodeAnimator;->mapViewPropertyToRenderProperty(I)I -Landroid/view/RenderNodeAnimator;->setTarget(Landroid/view/View;)V -Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener; -Landroid/view/ScaleGestureDetector;->mMinSpan:I -Landroid/view/Surface;-><init>(J)V -Landroid/view/Surface;->getNextFrameNumber()J -Landroid/view/Surface;->mLock:Ljava/lang/Object; -Landroid/view/Surface;->mNativeObject:J -Landroid/view/Surface;->transferFrom(Landroid/view/Surface;)V -Landroid/view/SurfaceControl$PhysicalDisplayInfo;-><init>()V -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->appVsyncOffsetNanos:J -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->density:F -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->height:I -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->presentationDeadlineNanos:J -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->refreshRate:F -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->secure:Z -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->width:I -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->xDpi:F -Landroid/view/SurfaceControl$PhysicalDisplayInfo;->yDpi:F -Landroid/view/SurfaceControl$Transaction;-><init>()V -Landroid/view/SurfaceControl$Transaction;->apply()V -Landroid/view/SurfaceControl$Transaction;->deferTransactionUntil(Landroid/view/SurfaceControl;Landroid/os/IBinder;J)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->deferTransactionUntilSurface(Landroid/view/SurfaceControl;Landroid/view/Surface;J)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->hide(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setAlpha(Landroid/view/SurfaceControl;F)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setColor(Landroid/view/SurfaceControl;[F)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setFinalCrop(Landroid/view/SurfaceControl;Landroid/graphics/Rect;)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setLayer(Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setMatrix(Landroid/view/SurfaceControl;FFFF)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setMatrix(Landroid/view/SurfaceControl;Landroid/graphics/Matrix;[F)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setPosition(Landroid/view/SurfaceControl;FF)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setSize(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->setWindowCrop(Landroid/view/SurfaceControl;Landroid/graphics/Rect;)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceControl$Transaction;->show(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction; -Landroid/view/SurfaceSession;->mNativeClient:J -Landroid/view/SurfaceView;->isFixedSize()Z -Landroid/view/SurfaceView;->mCallbacks:Ljava/util/ArrayList; -Landroid/view/SurfaceView;->mFormat:I -Landroid/view/SurfaceView;->mRequestedFormat:I -Landroid/view/SurfaceView;->mSurfaceHolder:Landroid/view/SurfaceHolder; -Landroid/view/SurfaceView;->setFrame(IIII)Z -Landroid/view/SurfaceView;->surfacePositionLost_uiRtSync(J)V -Landroid/view/SurfaceView;->updateSurfacePosition_renderWorker(JIIII)V -Landroid/view/TextureView;->destroyHardwareLayer()V -Landroid/view/TextureView;->destroyHardwareResources()V -Landroid/view/TextureView;->mLayer:Landroid/view/TextureLayer; -Landroid/view/TextureView;->mNativeWindow:J -Landroid/view/TextureView;->mSurface:Landroid/graphics/SurfaceTexture; -Landroid/view/TextureView;->mUpdateListener:Landroid/graphics/SurfaceTexture$OnFrameAvailableListener; -Landroid/view/ThreadedRenderer;->createHardwareBitmap(Landroid/view/RenderNode;II)Landroid/graphics/Bitmap; -Landroid/view/ThreadedRenderer;->setupDiskCache(Ljava/io/File;)V -Landroid/view/TouchDelegate;->mDelegateTargeted:Z -Landroid/view/VelocityTracker$Estimator;->confidence:F -Landroid/view/VelocityTracker$Estimator;->degree:I -Landroid/view/VelocityTracker$Estimator;->xCoeff:[F -Landroid/view/VelocityTracker$Estimator;->yCoeff:[F -Landroid/view/VelocityTracker;->obtain(Ljava/lang/String;)Landroid/view/VelocityTracker; -Landroid/view/View$AttachInfo;->mContentInsets:Landroid/graphics/Rect; -Landroid/view/View$AttachInfo;->mDrawingTime:J -Landroid/view/View$AttachInfo;->mStableInsets:Landroid/graphics/Rect; -Landroid/view/View$ListenerInfo;-><init>()V -Landroid/view/View$ListenerInfo;->mOnClickListener:Landroid/view/View$OnClickListener; -Landroid/view/View$ListenerInfo;->mOnDragListener:Landroid/view/View$OnDragListener; -Landroid/view/View$ListenerInfo;->mOnFocusChangeListener:Landroid/view/View$OnFocusChangeListener; -Landroid/view/View$ListenerInfo;->mOnLongClickListener:Landroid/view/View$OnLongClickListener; -Landroid/view/View$ListenerInfo;->mOnTouchListener:Landroid/view/View$OnTouchListener; -Landroid/view/View$ScrollabilityCache;->scrollBar:Landroid/widget/ScrollBarDrawable; -Landroid/view/View;->STATUS_BAR_DISABLE_BACK:I -Landroid/view/View;->STATUS_BAR_DISABLE_EXPAND:I -Landroid/view/View;->STATUS_BAR_DISABLE_HOME:I -Landroid/view/View;->STATUS_BAR_DISABLE_RECENT:I -Landroid/view/View;->applyDrawableToTransparentRegion(Landroid/graphics/drawable/Drawable;Landroid/graphics/Region;)V -Landroid/view/View;->clearAccessibilityFocus()V -Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z -Landroid/view/View;->computeOpaqueFlags()V -Landroid/view/View;->createSnapshot(Landroid/view/ViewDebug$CanvasProvider;Z)Landroid/graphics/Bitmap; -Landroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V -Landroid/view/View;->dispatchDetachedFromWindow()V -Landroid/view/View;->fitsSystemWindows()Z -Landroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate; -Landroid/view/View;->getAccessibilityViewId()I -Landroid/view/View;->getBoundsOnScreen(Landroid/graphics/Rect;)V -Landroid/view/View;->getHorizontalScrollFactor()F -Landroid/view/View;->getInverseMatrix()Landroid/graphics/Matrix; -Landroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo; -Landroid/view/View;->getLocationOnScreen()[I -Landroid/view/View;->getRawTextAlignment()I -Landroid/view/View;->getRawTextDirection()I -Landroid/view/View;->getTransitionAlpha()F -Landroid/view/View;->getVerticalScrollFactor()F -Landroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl; -Landroid/view/View;->getWindowDisplayFrame(Landroid/graphics/Rect;)V -Landroid/view/View;->hideTooltip()V -Landroid/view/View;->includeForAccessibility()Z -Landroid/view/View;->initializeFadingEdge(Landroid/content/res/TypedArray;)V -Landroid/view/View;->initializeScrollbars(Landroid/content/res/TypedArray;)V -Landroid/view/View;->internalSetPadding(IIII)V -Landroid/view/View;->invalidateParentIfNeeded()V -Landroid/view/View;->isPaddingResolved()Z -Landroid/view/View;->isRootNamespace()Z -Landroid/view/View;->isVisibleToUser()Z -Landroid/view/View;->isVisibleToUser(Landroid/graphics/Rect;)Z -Landroid/view/View;->mAccessibilityDelegate:Landroid/view/View$AccessibilityDelegate; -Landroid/view/View;->mAttachInfo:Landroid/view/View$AttachInfo; -Landroid/view/View;->mBackground:Landroid/graphics/drawable/Drawable; -Landroid/view/View;->mBottom:I -Landroid/view/View;->mContext:Landroid/content/Context; -Landroid/view/View;->mDrawingCache:Landroid/graphics/Bitmap; -Landroid/view/View;->mLayoutParams:Landroid/view/ViewGroup$LayoutParams; -Landroid/view/View;->mLeft:I -Landroid/view/View;->mListenerInfo:Landroid/view/View$ListenerInfo; -Landroid/view/View;->mMinHeight:I -Landroid/view/View;->mMinWidth:I -Landroid/view/View;->mPaddingBottom:I -Landroid/view/View;->mPaddingLeft:I -Landroid/view/View;->mPaddingRight:I -Landroid/view/View;->mPaddingTop:I -Landroid/view/View;->mParent:Landroid/view/ViewParent; -Landroid/view/View;->mPrivateFlags2:I -Landroid/view/View;->mPrivateFlags3:I -Landroid/view/View;->mPrivateFlags:I -Landroid/view/View;->mRecreateDisplayList:Z -Landroid/view/View;->mResources:Landroid/content/res/Resources; -Landroid/view/View;->mRight:I -Landroid/view/View;->mScrollCache:Landroid/view/View$ScrollabilityCache; -Landroid/view/View;->mScrollX:I -Landroid/view/View;->mScrollY:I -Landroid/view/View;->mStartActivityRequestWho:Ljava/lang/String; -Landroid/view/View;->mTag:Ljava/lang/Object; -Landroid/view/View;->mTop:I -Landroid/view/View;->mUnscaledDrawingCache:Landroid/graphics/Bitmap; -Landroid/view/View;->mViewFlags:I -Landroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V -Landroid/view/View;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V -Landroid/view/View;->performAccessibilityActionInternal(ILandroid/os/Bundle;)Z -Landroid/view/View;->recomputePadding()V -Landroid/view/View;->requestAccessibilityFocus()Z -Landroid/view/View;->resetDisplayList()V -Landroid/view/View;->resetPaddingToInitialValues()V -Landroid/view/View;->resetResolvedDrawables()V -Landroid/view/View;->resetResolvedLayoutDirection()V -Landroid/view/View;->resetResolvedPadding()V -Landroid/view/View;->resetResolvedTextAlignment()V -Landroid/view/View;->resetResolvedTextDirection()V -Landroid/view/View;->resetRtlProperties()V -Landroid/view/View;->setAlphaNoInvalidation(F)Z -Landroid/view/View;->setAnimationMatrix(Landroid/graphics/Matrix;)V -Landroid/view/View;->setAssistBlocked(Z)V -Landroid/view/View;->setFrame(IIII)Z -Landroid/view/View;->setIsRootNamespace(Z)V -Landroid/view/View;->setLeftTopRightBottom(IIII)V -Landroid/view/View;->setTooltip(Ljava/lang/CharSequence;)V -Landroid/view/View;->setTransitionAlpha(F)V -Landroid/view/View;->startActivityForResult(Landroid/content/Intent;I)V -Landroid/view/View;->toGlobalMotionEvent(Landroid/view/MotionEvent;)Z -Landroid/view/View;->toLocalMotionEvent(Landroid/view/MotionEvent;)Z -Landroid/view/View;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V -Landroid/view/View;->transformMatrixToLocal(Landroid/graphics/Matrix;)V -Landroid/view/ViewConfiguration;->getDeviceGlobalActionKeyTimeout()J -Landroid/view/ViewConfiguration;->getDoubleTapMinTime()I -Landroid/view/ViewConfiguration;->getScaledScrollFactor()I -Landroid/view/ViewConfiguration;->mFadingMarqueeEnabled:Z -Landroid/view/ViewConfiguration;->sHasPermanentMenuKey:Z -Landroid/view/ViewConfiguration;->sHasPermanentMenuKeySet:Z -Landroid/view/ViewDebug;->dispatchCommand(Landroid/view/View;Ljava/lang/String;Ljava/lang/String;Ljava/io/OutputStream;)V -Landroid/view/ViewDebug;->dump(Landroid/view/View;ZZLjava/io/OutputStream;)V -Landroid/view/ViewGroup$MarginLayoutParams;->endMargin:I -Landroid/view/ViewGroup$MarginLayoutParams;->startMargin:I -Landroid/view/ViewGroup;->FLAG_SUPPORT_STATIC_TRANSFORMATIONS:I -Landroid/view/ViewGroup;->FLAG_USE_CHILD_DRAWING_ORDER:I -Landroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V -Landroid/view/ViewGroup;->dispatchViewRemoved(Landroid/view/View;)V -Landroid/view/ViewGroup;->mChildren:[Landroid/view/View; -Landroid/view/ViewGroup;->mChildrenCount:I -Landroid/view/ViewGroup;->mFirstTouchTarget:Landroid/view/ViewGroup$TouchTarget; -Landroid/view/ViewGroup;->mGroupFlags:I -Landroid/view/ViewGroup;->mOnHierarchyChangeListener:Landroid/view/ViewGroup$OnHierarchyChangeListener; -Landroid/view/ViewGroup;->mPersistentDrawingCache:I -Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V -Landroid/view/ViewGroup;->offsetChildrenTopAndBottom(I)V -Landroid/view/ViewGroup;->onChildVisibilityChanged(Landroid/view/View;II)V -Landroid/view/ViewGroup;->resetResolvedDrawables()V -Landroid/view/ViewGroup;->resetResolvedLayoutDirection()V -Landroid/view/ViewGroup;->resetResolvedPadding()V -Landroid/view/ViewGroup;->resetResolvedTextAlignment()V -Landroid/view/ViewGroup;->resetResolvedTextDirection()V -Landroid/view/ViewGroup;->suppressLayout(Z)V -Landroid/view/ViewRootImpl;->detachFunctor(J)V -Landroid/view/ViewRootImpl;->dispatchInputEvent(Landroid/view/InputEvent;)V -Landroid/view/ViewRootImpl;->dispatchInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;)V -Landroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;)V -Landroid/view/ViewRootImpl;->getWindowFlags()I -Landroid/view/ViewRootImpl;->invokeFunctor(JZ)V -Landroid/view/ViewRootImpl;->mStopped:Z -Landroid/view/ViewRootImpl;->mSurface:Landroid/view/Surface; -Landroid/view/ViewRootImpl;->mView:Landroid/view/View; -Landroid/view/ViewTreeObserver$InternalInsetsInfo;->TOUCHABLE_INSETS_REGION:I -Landroid/view/ViewTreeObserver$InternalInsetsInfo;->setTouchableInsets(I)V -Landroid/view/ViewTreeObserver$InternalInsetsInfo;->touchableRegion:Landroid/graphics/Region; -Landroid/view/ViewTreeObserver;->addOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V -Landroid/view/ViewTreeObserver;->removeOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V -Landroid/view/Window;->mAppName:Ljava/lang/String; -Landroid/view/Window;->mAppToken:Landroid/os/IBinder; -Landroid/view/Window;->mCallback:Landroid/view/Window$Callback; -Landroid/view/Window;->mContext:Landroid/content/Context; -Landroid/view/Window;->mHardwareAccelerated:Z -Landroid/view/Window;->mWindowStyle:Landroid/content/res/TypedArray; -Landroid/view/Window;->setNeedsMenuKey(I)V -Landroid/view/WindowAnimationFrameStats;->init(J[J)V -Landroid/view/WindowContentFrameStats;->init(J[J[J[J)V -Landroid/view/WindowManager$LayoutParams;->NEEDS_MENU_SET_FALSE:I -Landroid/view/WindowManager$LayoutParams;->NEEDS_MENU_SET_TRUE:I -Landroid/view/WindowManager$LayoutParams;->TYPE_KEYGUARD:I -Landroid/view/WindowManager$LayoutParams;->hideTimeoutMilliseconds:J -Landroid/view/WindowManager$LayoutParams;->needsMenuKey:I -Landroid/view/WindowManager$LayoutParams;->userActivityTimeout:J -Landroid/view/WindowManagerGlobal;->getInstance()Landroid/view/WindowManagerGlobal; -Landroid/view/WindowManagerGlobal;->getRootView(Ljava/lang/String;)Landroid/view/View; -Landroid/view/WindowManagerGlobal;->getViewRootNames()[Ljava/lang/String; -Landroid/view/WindowManagerGlobal;->getWindowManagerService()Landroid/view/IWindowManager; -Landroid/view/WindowManagerGlobal;->initialize()V -Landroid/view/WindowManagerGlobal;->mLock:Ljava/lang/Object; -Landroid/view/WindowManagerGlobal;->mParams:Ljava/util/ArrayList; -Landroid/view/WindowManagerGlobal;->mRoots:Ljava/util/ArrayList; -Landroid/view/WindowManagerGlobal;->mViews:Ljava/util/ArrayList; -Landroid/view/WindowManagerGlobal;->sDefaultWindowManager:Landroid/view/WindowManagerGlobal; -Landroid/view/WindowManagerGlobal;->sWindowManagerService:Landroid/view/IWindowManager; -Landroid/view/WindowManagerGlobal;->sWindowSession:Landroid/view/IWindowSession; -Landroid/view/WindowManagerGlobal;->trimMemory(I)V -Landroid/view/WindowManagerImpl;->mGlobal:Landroid/view/WindowManagerGlobal; -Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache()V -Landroid/view/accessibility/AccessibilityInteractionClient;->getInstance()Landroid/view/accessibility/AccessibilityInteractionClient; -Landroid/view/accessibility/AccessibilityManager;->getInstance(Landroid/content/Context;)Landroid/view/accessibility/AccessibilityManager; -Landroid/view/accessibility/AccessibilityManager;->isHighTextContrastEnabled()Z -Landroid/view/accessibility/AccessibilityManager;->mAccessibilityStateChangeListeners:Landroid/util/ArrayMap; -Landroid/view/accessibility/AccessibilityManager;->mIsEnabled:Z -Landroid/view/accessibility/AccessibilityManager;->mIsHighTextContrastEnabled:Z -Landroid/view/accessibility/AccessibilityManager;->sInstance:Landroid/view/accessibility/AccessibilityManager; -Landroid/view/accessibility/AccessibilityManager;->sInstanceSync:Ljava/lang/Object; -Landroid/view/accessibility/AccessibilityNodeInfo;->isSealed()Z -Landroid/view/accessibility/AccessibilityNodeInfo;->mChildNodeIds:Landroid/util/LongArray; -Landroid/view/accessibility/AccessibilityNodeInfo;->mSealed:Z -Landroid/view/accessibility/AccessibilityNodeInfo;->refresh(Landroid/os/Bundle;Z)Z -Landroid/view/accessibility/AccessibilityNodeInfo;->setSealed(Z)V -Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J -Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/view/accessibility/IAccessibilityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityManager; -Landroid/view/accessibility/IAccessibilityManager;->getEnabledAccessibilityServiceList(II)Ljava/util/List; -Landroid/view/animation/Animation;->detach()V -Landroid/view/animation/Animation;->initializeInvalidateRegion(IIII)V -Landroid/view/animation/Animation;->mListener:Landroid/view/animation/Animation$AnimationListener; -Landroid/view/autofill/IAutoFillManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/view/inputmethod/InputMethodInfo;->mSubtypes:Landroid/view/inputmethod/InputMethodSubtypeArray; -Landroid/view/inputmethod/InputMethodManager;->finishInputLocked()V -Landroid/view/inputmethod/InputMethodManager;->focusIn(Landroid/view/View;)V -Landroid/view/inputmethod/InputMethodManager;->focusOut(Landroid/view/View;)V -Landroid/view/inputmethod/InputMethodManager;->getClient()Lcom/android/internal/view/IInputMethodClient; -Landroid/view/inputmethod/InputMethodManager;->getInputMethodWindowVisibleHeight()I -Landroid/view/inputmethod/InputMethodManager;->getInstance()Landroid/view/inputmethod/InputMethodManager; -Landroid/view/inputmethod/InputMethodManager;->mCurId:Ljava/lang/String; -Landroid/view/inputmethod/InputMethodManager;->mCurRootView:Landroid/view/View; -Landroid/view/inputmethod/InputMethodManager;->mH:Landroid/view/inputmethod/InputMethodManager$H; -Landroid/view/inputmethod/InputMethodManager;->mNextServedView:Landroid/view/View; -Landroid/view/inputmethod/InputMethodManager;->mServedInputConnectionWrapper:Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper; -Landroid/view/inputmethod/InputMethodManager;->mServedView:Landroid/view/View; -Landroid/view/inputmethod/InputMethodManager;->mService:Lcom/android/internal/view/IInputMethodManager; -Landroid/view/inputmethod/InputMethodManager;->notifyUserAction()V -Landroid/view/inputmethod/InputMethodManager;->peekInstance()Landroid/view/inputmethod/InputMethodManager; -Landroid/view/inputmethod/InputMethodManager;->sInstance:Landroid/view/inputmethod/InputMethodManager; -Landroid/view/inputmethod/InputMethodManager;->showSoftInputUnchecked(ILandroid/os/ResultReceiver;)V -Landroid/view/inputmethod/InputMethodManager;->windowDismissed(Landroid/os/IBinder;)V -Landroid/view/inputmethod/InputMethodSubtypeArray;-><init>(Ljava/util/List;)V -Landroid/view/textclassifier/TextClassificationManager;->getTextClassifier(I)Landroid/view/textclassifier/TextClassifier; -Landroid/view/textclassifier/TextClassifier;->classifyText(Ljava/lang/CharSequence;IILandroid/view/textclassifier/TextClassification$Options;)Landroid/view/textclassifier/TextClassification; -Landroid/view/textclassifier/TextClassifier;->generateLinks(Ljava/lang/CharSequence;Landroid/view/textclassifier/TextLinks$Options;)Landroid/view/textclassifier/TextLinks; -Landroid/view/textclassifier/TextClassifier;->suggestSelection(Ljava/lang/CharSequence;IILandroid/view/textclassifier/TextSelection$Options;)Landroid/view/textclassifier/TextSelection; -Landroid/view/textclassifier/TextLinks$Options;-><init>()V -Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(III)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; -Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(IIILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; -Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(II)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; -Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; -Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextSelection;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; -Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionStarted(I)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent; -Landroid/view/textclassifier/logging/SmartSelectionEventTracker;-><init>(Landroid/content/Context;I)V -Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->logEvent(Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;)V -Landroid/view/textservice/TextServicesManager;->isSpellCheckerEnabled()Z -Landroid/webkit/CacheManager$CacheResult;-><init>()V -Landroid/webkit/CacheManager$CacheResult;->getContentDisposition()Ljava/lang/String; -Landroid/webkit/CacheManager$CacheResult;->getContentLength()J -Landroid/webkit/CacheManager$CacheResult;->getETag()Ljava/lang/String; -Landroid/webkit/CacheManager$CacheResult;->getEncoding()Ljava/lang/String; -Landroid/webkit/CacheManager$CacheResult;->getExpires()J -Landroid/webkit/CacheManager$CacheResult;->getExpiresString()Ljava/lang/String; -Landroid/webkit/CacheManager$CacheResult;->getHttpStatusCode()I -Landroid/webkit/CacheManager$CacheResult;->getInputStream()Ljava/io/InputStream; -Landroid/webkit/CacheManager$CacheResult;->getLastModified()Ljava/lang/String; -Landroid/webkit/CacheManager$CacheResult;->getLocalPath()Ljava/lang/String; -Landroid/webkit/CacheManager$CacheResult;->getLocation()Ljava/lang/String; -Landroid/webkit/CacheManager$CacheResult;->getMimeType()Ljava/lang/String; -Landroid/webkit/CacheManager$CacheResult;->getOutputStream()Ljava/io/OutputStream; -Landroid/webkit/CacheManager$CacheResult;->setEncoding(Ljava/lang/String;)V -Landroid/webkit/CacheManager$CacheResult;->setInputStream(Ljava/io/InputStream;)V -Landroid/webkit/CacheManager;->cacheDisabled()Z -Landroid/webkit/CacheManager;->endCacheTransaction()Z -Landroid/webkit/CacheManager;->getCacheFile(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult; -Landroid/webkit/CacheManager;->getCacheFileBaseDir()Ljava/io/File; -Landroid/webkit/CacheManager;->saveCacheFile(Ljava/lang/String;Landroid/webkit/CacheManager$CacheResult;)V -Landroid/webkit/CacheManager;->startCacheTransaction()Z -Landroid/webkit/IWebViewUpdateService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Landroid/webkit/WebResourceResponse;->mImmutable:Z -Landroid/webkit/WebSettings$TextSize;->value:I -Landroid/webkit/WebSettings;->getPluginsPath()Ljava/lang/String; -Landroid/webkit/WebSettings;->getUseDoubleTree()Z -Landroid/webkit/WebSettings;->setPluginsPath(Ljava/lang/String;)V -Landroid/webkit/WebSettings;->setUseDoubleTree(Z)V -Landroid/webkit/WebSyncManager;->mHandler:Landroid/os/Handler; -Landroid/webkit/WebView;->debugDump()V -Landroid/webkit/WebView;->disablePlatformNotifications()V -Landroid/webkit/WebView;->emulateShiftHeld()V -Landroid/webkit/WebView;->enablePlatformNotifications()V -Landroid/webkit/WebView;->getContentWidth()I -Landroid/webkit/WebView;->getPluginList()Landroid/webkit/PluginList; -Landroid/webkit/WebView;->getTouchIconUrl()Ljava/lang/String; -Landroid/webkit/WebView;->getVisibleTitleHeight()I -Landroid/webkit/WebView;->getZoomControls()Landroid/view/View; -Landroid/webkit/WebView;->isPaused()Z -Landroid/webkit/WebView;->mProvider:Landroid/webkit/WebViewProvider; -Landroid/webkit/WebView;->notifyFindDialogDismissed()V -Landroid/webkit/WebView;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V -Landroid/webkit/WebView;->refreshPlugins(Z)V -Landroid/webkit/WebView;->restorePicture(Landroid/os/Bundle;Ljava/io/File;)Z -Landroid/webkit/WebView;->sEnforceThreadChecking:Z -Landroid/webkit/WebView;->savePicture(Landroid/os/Bundle;Ljava/io/File;)Z -Landroid/webkit/WebViewClient;->onUnhandledInputEvent(Landroid/webkit/WebView;Landroid/view/InputEvent;)V -Landroid/webkit/WebViewDelegate;-><init>()V -Landroid/webkit/WebViewFactory;->getProvider()Landroid/webkit/WebViewFactoryProvider; -Landroid/webkit/WebViewFactory;->getUpdateService()Landroid/webkit/IWebViewUpdateService; -Landroid/webkit/WebViewFactory;->getWebViewContextAndSetProvider()Landroid/content/Context; -Landroid/webkit/WebViewFactory;->sPackageInfo:Landroid/content/pm/PackageInfo; -Landroid/webkit/WebViewFactory;->sProviderInstance:Landroid/webkit/WebViewFactoryProvider; -Landroid/widget/AbsListView$FlingRunnable;->endFling()V -Landroid/widget/AbsListView$FlingRunnable;->mScroller:Landroid/widget/OverScroller; -Landroid/widget/AbsListView$FlingRunnable;->start(I)V -Landroid/widget/AbsListView$RecycleBin;->clear()V -Landroid/widget/AbsListView$RecycleBin;->mRecyclerListener:Landroid/widget/AbsListView$RecyclerListener; -Landroid/widget/AbsListView$SavedState;->firstId:J -Landroid/widget/AbsListView$SavedState;->viewTop:I -Landroid/widget/AbsListView;->invokeOnItemScrollListener()V -Landroid/widget/AbsListView;->isVerticalScrollBarHidden()Z -Landroid/widget/AbsListView;->mAdapter:Landroid/widget/ListAdapter; -Landroid/widget/AbsListView;->mDataSetObserver:Landroid/widget/AbsListView$AdapterDataSetObserver; -Landroid/widget/AbsListView;->mEdgeGlowBottom:Landroid/widget/EdgeEffect; -Landroid/widget/AbsListView;->mEdgeGlowTop:Landroid/widget/EdgeEffect; -Landroid/widget/AbsListView;->mFastScroll:Landroid/widget/FastScroller; -Landroid/widget/AbsListView;->mFlingRunnable:Landroid/widget/AbsListView$FlingRunnable; -Landroid/widget/AbsListView;->mIsChildViewEnabled:Z -Landroid/widget/AbsListView;->mLayoutMode:I -Landroid/widget/AbsListView;->mMaximumVelocity:I -Landroid/widget/AbsListView;->mMotionPosition:I -Landroid/widget/AbsListView;->mOnScrollListener:Landroid/widget/AbsListView$OnScrollListener; -Landroid/widget/AbsListView;->mPendingCheckForLongPress:Landroid/widget/AbsListView$CheckForLongPress; -Landroid/widget/AbsListView;->mPendingCheckForTap:Landroid/widget/AbsListView$CheckForTap; -Landroid/widget/AbsListView;->mRecycler:Landroid/widget/AbsListView$RecycleBin; -Landroid/widget/AbsListView;->mSelectionTopPadding:I -Landroid/widget/AbsListView;->mSelectorPosition:I -Landroid/widget/AbsListView;->mSelectorRect:Landroid/graphics/Rect; -Landroid/widget/AbsListView;->mTouchMode:I -Landroid/widget/AbsListView;->mTouchSlop:I -Landroid/widget/AbsListView;->mVelocityTracker:Landroid/view/VelocityTracker; -Landroid/widget/AbsListView;->performLongPress(Landroid/view/View;IJ)Z -Landroid/widget/AbsListView;->performLongPress(Landroid/view/View;IJFF)Z -Landroid/widget/AbsListView;->reportScrollStateChange(I)V -Landroid/widget/AbsListView;->smoothScrollBy(IIZZ)V -Landroid/widget/AbsListView;->trackMotionScroll(II)Z -Landroid/widget/AbsSeekBar;->mIsDragging:Z -Landroid/widget/AbsSeekBar;->mSplitTrack:Z -Landroid/widget/AbsSeekBar;->mThumb:Landroid/graphics/drawable/Drawable; -Landroid/widget/AbsSeekBar;->mTouchProgressOffset:F -Landroid/widget/ActivityChooserModel;->get(Landroid/content/Context;Ljava/lang/String;)Landroid/widget/ActivityChooserModel; -Landroid/widget/ActivityChooserView;->setExpandActivityOverflowButtonDrawable(Landroid/graphics/drawable/Drawable;)V -Landroid/widget/AdapterView;->mDataChanged:Z -Landroid/widget/AdapterView;->mFirstPosition:I -Landroid/widget/AdapterView;->mNextSelectedPosition:I -Landroid/widget/AdapterView;->mNextSelectedRowId:J -Landroid/widget/AdapterView;->mOldSelectedPosition:I -Landroid/widget/AdapterView;->setNextSelectedPositionInt(I)V -Landroid/widget/AdapterView;->setSelectedPositionInt(I)V -Landroid/widget/AutoCompleteTextView;->doAfterTextChanged()V -Landroid/widget/AutoCompleteTextView;->doBeforeTextChanged()V -Landroid/widget/AutoCompleteTextView;->ensureImeVisible(Z)V -Landroid/widget/AutoCompleteTextView;->mPopup:Landroid/widget/ListPopupWindow; -Landroid/widget/AutoCompleteTextView;->setDropDownAlwaysVisible(Z)V -Landroid/widget/AutoCompleteTextView;->setForceIgnoreOutsideTouch(Z)V -Landroid/widget/BaseAdapter;->mDataSetObservable:Landroid/database/DataSetObservable; -Landroid/widget/CompoundButton;->mBroadcasting:Z -Landroid/widget/CompoundButton;->mButtonDrawable:Landroid/graphics/drawable/Drawable; -Landroid/widget/CompoundButton;->mOnCheckedChangeListener:Landroid/widget/CompoundButton$OnCheckedChangeListener; -Landroid/widget/CursorAdapter;->mChangeObserver:Landroid/widget/CursorAdapter$ChangeObserver; -Landroid/widget/CursorAdapter;->mDataSetObserver:Landroid/database/DataSetObserver; -Landroid/widget/CursorAdapter;->mDataValid:Z -Landroid/widget/CursorAdapter;->mRowIDColumn:I -Landroid/widget/DatePicker;->mDelegate:Landroid/widget/DatePicker$DatePickerDelegate; -Landroid/widget/EdgeEffect;->mPaint:Landroid/graphics/Paint; -Landroid/widget/Editor;->invalidateTextDisplayList()V -Landroid/widget/Editor;->mSelectHandleLeft:Landroid/graphics/drawable/Drawable; -Landroid/widget/Editor;->mShowCursor:J -Landroid/widget/Editor;->mShowSoftInputOnFocus:Z -Landroid/widget/ExpandableListView;->mChildDivider:Landroid/graphics/drawable/Drawable; -Landroid/widget/ExpandableListView;->mGroupIndicator:Landroid/graphics/drawable/Drawable; -Landroid/widget/FastScroller;->mContainerRect:Landroid/graphics/Rect; -Landroid/widget/FastScroller;->mHeaderCount:I -Landroid/widget/FastScroller;->mLongList:Z -Landroid/widget/FastScroller;->mMinimumTouchTarget:I -Landroid/widget/FastScroller;->mThumbDrawable:Landroid/graphics/drawable/Drawable; -Landroid/widget/FastScroller;->mThumbImage:Landroid/widget/ImageView; -Landroid/widget/FastScroller;->mTrackDrawable:Landroid/graphics/drawable/Drawable; -Landroid/widget/FastScroller;->mTrackImage:Landroid/widget/ImageView; -Landroid/widget/Gallery$FlingRunnable;->startUsingVelocity(I)V -Landroid/widget/Gallery;->fillToGalleryLeft()V -Landroid/widget/Gallery;->fillToGalleryRight()V -Landroid/widget/Gallery;->mDownTouchPosition:I -Landroid/widget/Gallery;->mDownTouchView:Landroid/view/View; -Landroid/widget/Gallery;->mFlingRunnable:Landroid/widget/Gallery$FlingRunnable; -Landroid/widget/Gallery;->mSpacing:I -Landroid/widget/Gallery;->makeAndAddView(IIIZ)Landroid/view/View; -Landroid/widget/Gallery;->moveDirection(I)Z -Landroid/widget/GridView;->fillDown(II)Landroid/view/View; -Landroid/widget/GridView;->fillUp(II)Landroid/view/View; -Landroid/widget/GridView;->mColumnWidth:I -Landroid/widget/GridView;->mHorizontalSpacing:I -Landroid/widget/GridView;->mNumColumns:I -Landroid/widget/GridView;->mRequestedNumColumns:I -Landroid/widget/GridView;->mVerticalSpacing:I -Landroid/widget/HorizontalScrollView;->mChildToScrollTo:Landroid/view/View; -Landroid/widget/HorizontalScrollView;->mEdgeGlowLeft:Landroid/widget/EdgeEffect; -Landroid/widget/HorizontalScrollView;->mEdgeGlowRight:Landroid/widget/EdgeEffect; -Landroid/widget/HorizontalScrollView;->mScroller:Landroid/widget/OverScroller; -Landroid/widget/ImageView;->animateTransform(Landroid/graphics/Matrix;)V -Landroid/widget/ImageView;->mAdjustViewBounds:Z -Landroid/widget/ImageView;->mAlpha:I -Landroid/widget/ImageView;->mDrawMatrix:Landroid/graphics/Matrix; -Landroid/widget/ImageView;->mMaxHeight:I -Landroid/widget/ImageView;->mMaxWidth:I -Landroid/widget/ImageView;->mRecycleableBitmapDrawable:Landroid/graphics/drawable/BitmapDrawable; -Landroid/widget/ImageView;->mResource:I -Landroid/widget/ImageView;->mUri:Landroid/net/Uri; -Landroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V -Landroid/widget/LinearLayout;->mGravity:I -Landroid/widget/LinearLayout;->mUseLargestChild:Z -Landroid/widget/ListPopupWindow;->mPopup:Landroid/widget/PopupWindow; -Landroid/widget/ListPopupWindow;->setForceIgnoreOutsideTouch(Z)V -Landroid/widget/ListView;->fillDown(II)Landroid/view/View; -Landroid/widget/ListView;->fillSpecific(II)Landroid/view/View; -Landroid/widget/ListView;->fillUp(II)Landroid/view/View; -Landroid/widget/ListView;->findViewTraversal(I)Landroid/view/View; -Landroid/widget/ListView;->findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View; -Landroid/widget/ListView;->lookForSelectablePosition(IZ)I -Landroid/widget/ListView;->mAreAllItemsSelectable:Z -Landroid/widget/ListView;->mFooterViewInfos:Ljava/util/ArrayList; -Landroid/widget/ListView;->mHeaderViewInfos:Ljava/util/ArrayList; -Landroid/widget/ListView;->setSelectionInt(I)V -Landroid/widget/MediaController;->mAnchor:Landroid/view/View; -Landroid/widget/MediaController;->mDecor:Landroid/view/View; -Landroid/widget/MediaController;->mDecorLayoutParams:Landroid/view/WindowManager$LayoutParams; -Landroid/widget/MediaController;->mWindowManager:Landroid/view/WindowManager; -Landroid/widget/NumberPicker;->mInputText:Landroid/widget/EditText; -Landroid/widget/NumberPicker;->mSelectionDivider:Landroid/graphics/drawable/Drawable; -Landroid/widget/NumberPicker;->mSelectorWheelPaint:Landroid/graphics/Paint; -Landroid/widget/OverScroller$SplineOverScroller;->mCurrVelocity:F -Landroid/widget/OverScroller;->isScrollingInDirection(FF)Z -Landroid/widget/OverScroller;->mScrollerY:Landroid/widget/OverScroller$SplineOverScroller; -Landroid/widget/PopupMenu;->mPopup:Lcom/android/internal/view/menu/MenuPopupHelper; -Landroid/widget/PopupWindow;->computeAnimationResource()I -Landroid/widget/PopupWindow;->createPopupLayoutParams(Landroid/os/IBinder;)Landroid/view/WindowManager$LayoutParams; -Landroid/widget/PopupWindow;->invokePopup(Landroid/view/WindowManager$LayoutParams;)V -Landroid/widget/PopupWindow;->mAboveAnchor:Z -Landroid/widget/PopupWindow;->mAnchor:Ljava/lang/ref/WeakReference; -Landroid/widget/PopupWindow;->mAnimationStyle:I -Landroid/widget/PopupWindow;->mBackgroundView:Landroid/view/View; -Landroid/widget/PopupWindow;->mContentView:Landroid/view/View; -Landroid/widget/PopupWindow;->mHeightMode:I -Landroid/widget/PopupWindow;->mIsDropdown:Z -Landroid/widget/PopupWindow;->mIsShowing:Z -Landroid/widget/PopupWindow;->mLastHeight:I -Landroid/widget/PopupWindow;->mLastWidth:I -Landroid/widget/PopupWindow;->mOnScrollChangedListener:Landroid/view/ViewTreeObserver$OnScrollChangedListener; -Landroid/widget/PopupWindow;->mOverlapAnchor:Z -Landroid/widget/PopupWindow;->mTouchInterceptor:Landroid/view/View$OnTouchListener; -Landroid/widget/PopupWindow;->mWidthMode:I -Landroid/widget/PopupWindow;->mWindowLayoutType:I -Landroid/widget/PopupWindow;->preparePopup(Landroid/view/WindowManager$LayoutParams;)V -Landroid/widget/PopupWindow;->setClipToScreenEnabled(Z)V -Landroid/widget/PopupWindow;->setEpicenterBounds(Landroid/graphics/Rect;)V -Landroid/widget/PopupWindow;->setLayoutInScreenEnabled(Z)V -Landroid/widget/PopupWindow;->setLayoutInsetDecor(Z)V -Landroid/widget/PopupWindow;->setTouchModal(Z)V -Landroid/widget/PopupWindow;->showAtLocation(Landroid/os/IBinder;III)V -Landroid/widget/ProgressBar;->mCurrentDrawable:Landroid/graphics/drawable/Drawable; -Landroid/widget/ProgressBar;->mDuration:I -Landroid/widget/ProgressBar;->mIndeterminate:Z -Landroid/widget/ProgressBar;->mMaxHeight:I -Landroid/widget/ProgressBar;->mMinHeight:I -Landroid/widget/ProgressBar;->mOnlyIndeterminate:Z -Landroid/widget/ProgressBar;->setProgressInternal(IZZ)Z -Landroid/widget/RelativeLayout$LayoutParams;->mBottom:I -Landroid/widget/RelativeLayout$LayoutParams;->mLeft:I -Landroid/widget/RelativeLayout$LayoutParams;->mRight:I -Landroid/widget/RelativeLayout$LayoutParams;->mTop:I -Landroid/widget/RelativeLayout;->mGravity:I -Landroid/widget/RemoteViews$Action;->mergeBehavior()I -Landroid/widget/RemoteViews$Action;->viewId:I -Landroid/widget/RemoteViews$BitmapCache;->mBitmaps:Ljava/util/ArrayList; -Landroid/widget/RemoteViews$BitmapReflectionAction;->bitmap:Landroid/graphics/Bitmap; -Landroid/widget/RemoteViews$BitmapReflectionAction;->methodName:Ljava/lang/String; -Landroid/widget/RemoteViews$ReflectionAction;->methodName:Ljava/lang/String; -Landroid/widget/RemoteViews$ReflectionAction;->value:Ljava/lang/Object; -Landroid/widget/RemoteViews$SetOnClickPendingIntent;->pendingIntent:Landroid/app/PendingIntent; -Landroid/widget/RemoteViews$SetPendingIntentTemplate;->pendingIntentTemplate:Landroid/app/PendingIntent; -Landroid/widget/RemoteViews$ViewGroupActionAdd;->mNestedViews:Landroid/widget/RemoteViews; -Landroid/widget/RemoteViews;->estimateMemoryUsage()I -Landroid/widget/RemoteViews;->mActions:Ljava/util/ArrayList; -Landroid/widget/RemoteViews;->mApplication:Landroid/content/pm/ApplicationInfo; -Landroid/widget/RemoteViews;->mBitmapCache:Landroid/widget/RemoteViews$BitmapCache; -Landroid/widget/RemoteViews;->mLayoutId:I -Landroid/widget/RemoteViews;->mPortrait:Landroid/widget/RemoteViews; -Landroid/widget/RemoteViews;->mergeRemoteViews(Landroid/widget/RemoteViews;)V -Landroid/widget/RemoteViewsAdapter;->mCache:Landroid/widget/RemoteViewsAdapter$FixedSizeRemoteViewsCache; -Landroid/widget/RemoteViewsAdapter;->mWorkerThread:Landroid/os/HandlerThread; -Landroid/widget/ScrollBarDrawable;->mVerticalThumb:Landroid/graphics/drawable/Drawable; -Landroid/widget/ScrollBarDrawable;->setHorizontalThumbDrawable(Landroid/graphics/drawable/Drawable;)V -Landroid/widget/ScrollBarDrawable;->setVerticalThumbDrawable(Landroid/graphics/drawable/Drawable;)V -Landroid/widget/ScrollView;->mChildToScrollTo:Landroid/view/View; -Landroid/widget/ScrollView;->mEdgeGlowBottom:Landroid/widget/EdgeEffect; -Landroid/widget/ScrollView;->mEdgeGlowTop:Landroid/widget/EdgeEffect; -Landroid/widget/ScrollView;->mIsBeingDragged:Z -Landroid/widget/ScrollView;->mMinimumVelocity:I -Landroid/widget/ScrollView;->mOverflingDistance:I -Landroid/widget/ScrollView;->mOverscrollDistance:I -Landroid/widget/ScrollView;->mScroller:Landroid/widget/OverScroller; -Landroid/widget/Scroller;->mInterpolator:Landroid/view/animation/Interpolator; -Landroid/widget/SearchView;->mCloseButton:Landroid/widget/ImageView; -Landroid/widget/SearchView;->mSearchButton:Landroid/widget/ImageView; -Landroid/widget/SearchView;->mSearchPlate:Landroid/view/View; -Landroid/widget/SearchView;->mSearchSrcTextView:Landroid/widget/SearchView$SearchAutoComplete; -Landroid/widget/SearchView;->onCloseClicked()V -Landroid/widget/SearchView;->setQuery(Ljava/lang/CharSequence;)V -Landroid/widget/SlidingDrawer;->mTopOffset:I -Landroid/widget/Spinner;->mPopup:Landroid/widget/Spinner$SpinnerPopup; -Landroid/widget/Switch;->mThumbDrawable:Landroid/graphics/drawable/Drawable; -Landroid/widget/Switch;->mTrackDrawable:Landroid/graphics/drawable/Drawable; -Landroid/widget/TabHost$IntentContentStrategy;->getContentView()Landroid/view/View; -Landroid/widget/TabHost$IntentContentStrategy;->tabClosed()V -Landroid/widget/TabHost$TabSpec;->mContentStrategy:Landroid/widget/TabHost$ContentStrategy; -Landroid/widget/TabHost$TabSpec;->mIndicatorStrategy:Landroid/widget/TabHost$IndicatorStrategy; -Landroid/widget/TabHost;->mTabSpecs:Ljava/util/List; -Landroid/widget/TabWidget;->mDrawBottomStrips:Z -Landroid/widget/TabWidget;->mSelectedTab:I -Landroid/widget/TabWidget;->setTabSelectionListener(Landroid/widget/TabWidget$OnTabSelectionChanged;)V -Landroid/widget/TextView;->LINES:I -Landroid/widget/TextView;->assumeLayout()V -Landroid/widget/TextView;->createEditorIfNeeded()V -Landroid/widget/TextView;->getHorizontallyScrolling()Z -Landroid/widget/TextView;->getTextColor(Landroid/content/Context;Landroid/content/res/TypedArray;I)I -Landroid/widget/TextView;->getTextColors(Landroid/content/Context;Landroid/content/res/TypedArray;)Landroid/content/res/ColorStateList; -Landroid/widget/TextView;->isSingleLine()Z -Landroid/widget/TextView;->mCurTextColor:I -Landroid/widget/TextView;->mCursorDrawableRes:I -Landroid/widget/TextView;->mEditor:Landroid/widget/Editor; -Landroid/widget/TextView;->mListeners:Ljava/util/ArrayList; -Landroid/widget/TextView;->mMarquee:Landroid/widget/TextView$Marquee; -Landroid/widget/TextView;->mMaxMode:I -Landroid/widget/TextView;->mMaximum:I -Landroid/widget/TextView;->mSingleLine:Z -Landroid/widget/TextView;->mText:Ljava/lang/CharSequence; -Landroid/widget/TextView;->mTextPaint:Landroid/text/TextPaint; -Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;ZI)V -Landroid/widget/Toast$TN;->mNextView:Landroid/view/View; -Landroid/widget/Toast$TN;->mParams:Landroid/view/WindowManager$LayoutParams; -Landroid/widget/Toast$TN;->mView:Landroid/view/View; -Landroid/widget/Toast;->getService()Landroid/app/INotificationManager; -Landroid/widget/Toast;->getWindowParams()Landroid/view/WindowManager$LayoutParams; -Landroid/widget/Toast;->mDuration:I -Landroid/widget/Toast;->mTN:Landroid/widget/Toast$TN; -Landroid/widget/Toast;->sService:Landroid/app/INotificationManager; -Landroid/widget/VideoView2$OnViewTypeChangedListener;->onViewTypeChanged(Landroid/view/View;I)V -Landroid/widget/VideoView2;->getMediaController()Landroid/media/session/MediaController; -Landroid/widget/VideoView2;->setOnViewTypeChangedListener(Landroid/widget/VideoView2$OnViewTypeChangedListener;)V -Landroid/widget/VideoView2;->setVideoPath(Ljava/lang/String;)V -Landroid/widget/VideoView;->mCurrentBufferPercentage:I -Landroid/widget/VideoView;->mMediaController:Landroid/widget/MediaController; -Landroid/widget/VideoView;->mSHCallback:Landroid/view/SurfaceHolder$Callback; -Landroid/widget/VideoView;->mUri:Landroid/net/Uri; -Landroid/widget/VideoView;->mVideoHeight:I -Landroid/widget/VideoView;->mVideoWidth:I -Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->serialVersionUID:J -Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->serialVersionUID:J -Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection;->serialVersionUID:J -Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->serialVersionUID:J -Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->serialVersionUID:J -Lcom/android/ims/ImsConfigListener;->onSetFeatureResponse(IIII)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionConferenceStateUpdated(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsConferenceState;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionHandover(Lcom/android/ims/internal/IImsCallSession;IILandroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionHandoverFailed(Lcom/android/ims/internal/IImsCallSession;IILandroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionHeld(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionHoldFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionHoldReceived(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionInviteParticipantsRequestDelivered(Lcom/android/ims/internal/IImsCallSession;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionInviteParticipantsRequestFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionMergeComplete(Lcom/android/ims/internal/IImsCallSession;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionMergeFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionMergeStarted(Lcom/android/ims/internal/IImsCallSession;Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionMultipartyStateChanged(Lcom/android/ims/internal/IImsCallSession;Z)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionProgressing(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsStreamMediaProfile;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionResumeFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionResumeReceived(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionResumed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionStartFailed(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionStarted(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionSuppServiceReceived(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsSuppServiceNotification;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionTerminated(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionTtyModeReceived(Lcom/android/ims/internal/IImsCallSession;I)V -Lcom/android/ims/internal/IImsCallSessionListener;->callSessionUpdated(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsCallProfile;)V -Lcom/android/ims/internal/IImsRegistrationListener;->registrationAssociatedUriChanged([Landroid/net/Uri;)V -Lcom/android/ims/internal/IImsRegistrationListener;->registrationChangeFailed(ILandroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsRegistrationListener;->registrationConnectedWithRadioTech(I)V -Lcom/android/ims/internal/IImsRegistrationListener;->registrationDisconnected(Landroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsRegistrationListener;->registrationFeatureCapabilityChanged(I[I[I)V -Lcom/android/ims/internal/IImsRegistrationListener;->registrationProgressingWithRadioTech(I)V -Lcom/android/ims/internal/IImsRegistrationListener;->voiceMessageCountUpdate(I)V -Lcom/android/ims/internal/IImsUtListener;->utConfigurationCallBarringQueried(Lcom/android/ims/internal/IImsUt;I[Landroid/telephony/ims/ImsSsInfo;)V -Lcom/android/ims/internal/IImsUtListener;->utConfigurationCallForwardQueried(Lcom/android/ims/internal/IImsUt;I[Landroid/telephony/ims/ImsCallForwardInfo;)V -Lcom/android/ims/internal/IImsUtListener;->utConfigurationCallWaitingQueried(Lcom/android/ims/internal/IImsUt;I[Landroid/telephony/ims/ImsSsInfo;)V -Lcom/android/ims/internal/IImsUtListener;->utConfigurationQueried(Lcom/android/ims/internal/IImsUt;ILandroid/os/Bundle;)V -Lcom/android/ims/internal/IImsUtListener;->utConfigurationQueryFailed(Lcom/android/ims/internal/IImsUt;ILandroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsUtListener;->utConfigurationUpdateFailed(Lcom/android/ims/internal/IImsUt;ILandroid/telephony/ims/ImsReasonInfo;)V -Lcom/android/ims/internal/IImsUtListener;->utConfigurationUpdated(Lcom/android/ims/internal/IImsUt;I)V -Lcom/android/ims/internal/uce/common/CapInfo;-><init>()V -Lcom/android/ims/internal/uce/common/CapInfo;->getCapTimestamp()J -Lcom/android/ims/internal/uce/common/CapInfo;->isCdViaPresenceSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isFtHttpSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isFtSnFSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isFtSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isFtThumbSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isFullSnFGroupChatSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isGeoPullFtSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isGeoPullSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isGeoPushSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isImSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isIpVideoSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isIpVoiceSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isIsSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isRcsIpVideoCallSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isRcsIpVideoOnlyCallSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isRcsIpVoiceCallSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isSmSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isSpSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isVsDuringCSSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->isVsSupported()Z -Lcom/android/ims/internal/uce/common/CapInfo;->setCapTimestamp(J)V -Lcom/android/ims/internal/uce/common/CapInfo;->setCdViaPresenceSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setExts([Ljava/lang/String;)V -Lcom/android/ims/internal/uce/common/CapInfo;->setFtHttpSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setFtSnFSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setFtSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setFtThumbSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setFullSnFGroupChatSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setGeoPullFtSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setGeoPullSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setGeoPushSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setImSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setIpVideoSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setIpVoiceSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setIsSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setRcsIpVideoCallSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setRcsIpVideoOnlyCallSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setRcsIpVoiceCallSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setSmSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setSpSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setVsDuringCSSupported(Z)V -Lcom/android/ims/internal/uce/common/CapInfo;->setVsSupported(Z)V -Lcom/android/ims/internal/uce/common/StatusCode;-><init>()V -Lcom/android/ims/internal/uce/common/StatusCode;->getStatusCode()I -Lcom/android/ims/internal/uce/common/StatusCode;->setStatusCode(I)V -Lcom/android/ims/internal/uce/common/UceLong;-><init>()V -Lcom/android/ims/internal/uce/common/UceLong;->getClientId()I -Lcom/android/ims/internal/uce/common/UceLong;->getUceLong()J -Lcom/android/ims/internal/uce/common/UceLong;->setClientId(I)V -Lcom/android/ims/internal/uce/common/UceLong;->setUceLong(J)V -Lcom/android/ims/internal/uce/options/IOptionsListener;->cmdStatus(Lcom/android/ims/internal/uce/options/OptionsCmdStatus;)V -Lcom/android/ims/internal/uce/options/IOptionsListener;->getVersionCb(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/options/IOptionsListener;->incomingOptions(Ljava/lang/String;Lcom/android/ims/internal/uce/options/OptionsCapInfo;I)V -Lcom/android/ims/internal/uce/options/IOptionsListener;->serviceAvailable(Lcom/android/ims/internal/uce/common/StatusCode;)V -Lcom/android/ims/internal/uce/options/IOptionsListener;->serviceUnavailable(Lcom/android/ims/internal/uce/common/StatusCode;)V -Lcom/android/ims/internal/uce/options/IOptionsListener;->sipResponseReceived(Ljava/lang/String;Lcom/android/ims/internal/uce/options/OptionsSipResponse;Lcom/android/ims/internal/uce/options/OptionsCapInfo;)V -Lcom/android/ims/internal/uce/options/IOptionsService$Stub;-><init>()V -Lcom/android/ims/internal/uce/options/IOptionsService;->addListener(ILcom/android/ims/internal/uce/options/IOptionsListener;Lcom/android/ims/internal/uce/common/UceLong;)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/options/IOptionsService;->getContactCap(ILjava/lang/String;I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/options/IOptionsService;->getContactListCap(I[Ljava/lang/String;I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/options/IOptionsService;->getMyInfo(II)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/options/IOptionsService;->getVersion(I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/options/IOptionsService;->removeListener(ILcom/android/ims/internal/uce/common/UceLong;)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/options/IOptionsService;->responseIncomingOptions(IIILjava/lang/String;Lcom/android/ims/internal/uce/options/OptionsCapInfo;Z)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/options/IOptionsService;->setMyInfo(ILcom/android/ims/internal/uce/common/CapInfo;I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/options/OptionsCapInfo;-><init>()V -Lcom/android/ims/internal/uce/options/OptionsCapInfo;->getCapInfo()Lcom/android/ims/internal/uce/common/CapInfo; -Lcom/android/ims/internal/uce/options/OptionsCapInfo;->getSdp()Ljava/lang/String; -Lcom/android/ims/internal/uce/options/OptionsCapInfo;->setCapInfo(Lcom/android/ims/internal/uce/common/CapInfo;)V -Lcom/android/ims/internal/uce/options/OptionsCapInfo;->setSdp(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/options/OptionsCmdId;-><init>()V -Lcom/android/ims/internal/uce/options/OptionsCmdId;->setCmdId(I)V -Lcom/android/ims/internal/uce/options/OptionsCmdStatus;-><init>()V -Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->setCapInfo(Lcom/android/ims/internal/uce/common/CapInfo;)V -Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->setCmdId(Lcom/android/ims/internal/uce/options/OptionsCmdId;)V -Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->setStatus(Lcom/android/ims/internal/uce/common/StatusCode;)V -Lcom/android/ims/internal/uce/options/OptionsCmdStatus;->setUserData(I)V -Lcom/android/ims/internal/uce/options/OptionsSipResponse;-><init>()V -Lcom/android/ims/internal/uce/options/OptionsSipResponse;->setCmdId(Lcom/android/ims/internal/uce/options/OptionsCmdId;)V -Lcom/android/ims/internal/uce/options/OptionsSipResponse;->setReasonPhrase(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/options/OptionsSipResponse;->setRequestId(I)V -Lcom/android/ims/internal/uce/options/OptionsSipResponse;->setRetryAfter(I)V -Lcom/android/ims/internal/uce/options/OptionsSipResponse;->setSipResponseCode(I)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->capInfoReceived(Ljava/lang/String;[Lcom/android/ims/internal/uce/presence/PresTupleInfo;)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->cmdStatus(Lcom/android/ims/internal/uce/presence/PresCmdStatus;)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->getVersionCb(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->listCapInfoReceived(Lcom/android/ims/internal/uce/presence/PresRlmiInfo;[Lcom/android/ims/internal/uce/presence/PresResInfo;)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->publishTriggering(Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->serviceAvailable(Lcom/android/ims/internal/uce/common/StatusCode;)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->serviceUnAvailable(Lcom/android/ims/internal/uce/common/StatusCode;)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->sipResponseReceived(Lcom/android/ims/internal/uce/presence/PresSipResponse;)V -Lcom/android/ims/internal/uce/presence/IPresenceListener;->unpublishMessageSent()V -Lcom/android/ims/internal/uce/presence/IPresenceService$Stub;-><init>()V -Lcom/android/ims/internal/uce/presence/IPresenceService;->addListener(ILcom/android/ims/internal/uce/presence/IPresenceListener;Lcom/android/ims/internal/uce/common/UceLong;)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/presence/IPresenceService;->getContactCap(ILjava/lang/String;I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/presence/IPresenceService;->getContactListCap(I[Ljava/lang/String;I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/presence/IPresenceService;->getVersion(I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/presence/IPresenceService;->publishMyCap(ILcom/android/ims/internal/uce/presence/PresCapInfo;I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/presence/IPresenceService;->reenableService(II)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/presence/IPresenceService;->removeListener(ILcom/android/ims/internal/uce/common/UceLong;)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/presence/IPresenceService;->setNewFeatureTag(ILjava/lang/String;Lcom/android/ims/internal/uce/presence/PresServiceInfo;I)Lcom/android/ims/internal/uce/common/StatusCode; -Lcom/android/ims/internal/uce/presence/PresCapInfo;->getCapInfo()Lcom/android/ims/internal/uce/common/CapInfo; -Lcom/android/ims/internal/uce/presence/PresCapInfo;->getContactUri()Ljava/lang/String; -Lcom/android/ims/internal/uce/presence/PresCapInfo;->mContactUri:Ljava/lang/String; -Lcom/android/ims/internal/uce/presence/PresCmdId;-><init>()V -Lcom/android/ims/internal/uce/presence/PresCmdId;->setCmdId(I)V -Lcom/android/ims/internal/uce/presence/PresCmdStatus;-><init>()V -Lcom/android/ims/internal/uce/presence/PresCmdStatus;->setCmdId(Lcom/android/ims/internal/uce/presence/PresCmdId;)V -Lcom/android/ims/internal/uce/presence/PresCmdStatus;->setRequestId(I)V -Lcom/android/ims/internal/uce/presence/PresCmdStatus;->setStatus(Lcom/android/ims/internal/uce/common/StatusCode;)V -Lcom/android/ims/internal/uce/presence/PresCmdStatus;->setUserData(I)V -Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;-><init>()V -Lcom/android/ims/internal/uce/presence/PresPublishTriggerType;->setPublishTrigeerType(I)V -Lcom/android/ims/internal/uce/presence/PresResInfo;-><init>()V -Lcom/android/ims/internal/uce/presence/PresResInfo;->setDisplayName(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresResInfo;->setInstanceInfo(Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;)V -Lcom/android/ims/internal/uce/presence/PresResInfo;->setResUri(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;-><init>()V -Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->setPresentityUri(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->setReason(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->setResId(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->setResInstanceState(I)V -Lcom/android/ims/internal/uce/presence/PresResInstanceInfo;->setTupleInfo([Lcom/android/ims/internal/uce/presence/PresTupleInfo;)V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;-><init>()V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->setFullState(Z)V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->setListName(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->setPresSubscriptionState(Lcom/android/ims/internal/uce/presence/PresSubscriptionState;)V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->setRequestId(I)V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->setSubscriptionExpireTime(I)V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->setSubscriptionTerminatedReason(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->setUri(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresRlmiInfo;->setVersion(I)V -Lcom/android/ims/internal/uce/presence/PresServiceInfo;->getMediaType()I -Lcom/android/ims/internal/uce/presence/PresServiceInfo;->getServiceDesc()Ljava/lang/String; -Lcom/android/ims/internal/uce/presence/PresServiceInfo;->getServiceId()Ljava/lang/String; -Lcom/android/ims/internal/uce/presence/PresServiceInfo;->getServiceVer()Ljava/lang/String; -Lcom/android/ims/internal/uce/presence/PresSipResponse;-><init>()V -Lcom/android/ims/internal/uce/presence/PresSipResponse;->getCmdId()Lcom/android/ims/internal/uce/presence/PresCmdId; -Lcom/android/ims/internal/uce/presence/PresSipResponse;->getReasonPhrase()Ljava/lang/String; -Lcom/android/ims/internal/uce/presence/PresSipResponse;->getRequestId()I -Lcom/android/ims/internal/uce/presence/PresSipResponse;->getRetryAfter()I -Lcom/android/ims/internal/uce/presence/PresSipResponse;->getSipResponseCode()I -Lcom/android/ims/internal/uce/presence/PresSipResponse;->setCmdId(Lcom/android/ims/internal/uce/presence/PresCmdId;)V -Lcom/android/ims/internal/uce/presence/PresSipResponse;->setReasonPhrase(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresSipResponse;->setRequestId(I)V -Lcom/android/ims/internal/uce/presence/PresSipResponse;->setRetryAfter(I)V -Lcom/android/ims/internal/uce/presence/PresSipResponse;->setSipResponseCode(I)V -Lcom/android/ims/internal/uce/presence/PresSubscriptionState;-><init>()V -Lcom/android/ims/internal/uce/presence/PresSubscriptionState;->setPresSubscriptionState(I)V -Lcom/android/ims/internal/uce/presence/PresTupleInfo;-><init>()V -Lcom/android/ims/internal/uce/presence/PresTupleInfo;->setContactUri(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresTupleInfo;->setFeatureTag(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/presence/PresTupleInfo;->setTimestamp(Ljava/lang/String;)V -Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;-><init>()V -Lcom/android/ims/internal/uce/uceservice/IUceListener;->setStatus(I)V -Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;-><init>()V -Lcom/android/ims/internal/uce/uceservice/IUceService;->createOptionsService(Lcom/android/ims/internal/uce/options/IOptionsListener;Lcom/android/ims/internal/uce/common/UceLong;)I -Lcom/android/ims/internal/uce/uceservice/IUceService;->createPresenceService(Lcom/android/ims/internal/uce/presence/IPresenceListener;Lcom/android/ims/internal/uce/common/UceLong;)I -Lcom/android/ims/internal/uce/uceservice/IUceService;->destroyOptionsService(I)V -Lcom/android/ims/internal/uce/uceservice/IUceService;->destroyPresenceService(I)V -Lcom/android/ims/internal/uce/uceservice/IUceService;->getOptionsService()Lcom/android/ims/internal/uce/options/IOptionsService; -Lcom/android/ims/internal/uce/uceservice/IUceService;->getPresenceService()Lcom/android/ims/internal/uce/presence/IPresenceService; -Lcom/android/ims/internal/uce/uceservice/IUceService;->getServiceStatus()Z -Lcom/android/ims/internal/uce/uceservice/IUceService;->isServiceStarted()Z -Lcom/android/ims/internal/uce/uceservice/IUceService;->startService(Lcom/android/ims/internal/uce/uceservice/IUceListener;)Z -Lcom/android/ims/internal/uce/uceservice/IUceService;->stopService()Z -Lcom/android/internal/R$array;->config_mobile_hotspot_provision_app:I -Lcom/android/internal/R$array;->config_tether_wifi_regexs:I -Lcom/android/internal/R$array;->maps_starting_lat_lng:I -Lcom/android/internal/R$array;->maps_starting_zoom:I -Lcom/android/internal/R$attr;->actionBarStyle:I -Lcom/android/internal/R$attr;->mapViewStyle:I -Lcom/android/internal/R$attr;->state_focused:I -Lcom/android/internal/R$attr;->state_pressed:I -Lcom/android/internal/R$attr;->state_selected:I -Lcom/android/internal/R$attr;->switchStyle:I -Lcom/android/internal/R$bool;->config_mms_content_disposition_support:I -Lcom/android/internal/R$bool;->config_showNavigationBar:I -Lcom/android/internal/R$dimen;-><init>()V -Lcom/android/internal/R$dimen;->navigation_bar_height:I -Lcom/android/internal/R$dimen;->navigation_bar_height_landscape:I -Lcom/android/internal/R$dimen;->status_bar_height:I -Lcom/android/internal/R$dimen;->toast_y_offset:I -Lcom/android/internal/R$drawable;->btn_check_off:I -Lcom/android/internal/R$drawable;->compass_arrow:I -Lcom/android/internal/R$drawable;->compass_base:I -Lcom/android/internal/R$drawable;->ic_maps_indicator_current_position_anim:I -Lcom/android/internal/R$drawable;->ic_menu_close_clear_cancel:I -Lcom/android/internal/R$drawable;->loading_tile_android:I -Lcom/android/internal/R$drawable;->maps_google_logo:I -Lcom/android/internal/R$drawable;->no_tile_256:I -Lcom/android/internal/R$drawable;->reticle:I -Lcom/android/internal/R$id;->amPm:I -Lcom/android/internal/R$id;->edittext_container:I -Lcom/android/internal/R$id;->icon:I -Lcom/android/internal/R$id;->message:I -Lcom/android/internal/R$id;->minute:I -Lcom/android/internal/R$id;->shortcut:I -Lcom/android/internal/R$id;->text:I -Lcom/android/internal/R$id;->time:I -Lcom/android/internal/R$id;->timePicker:I -Lcom/android/internal/R$id;->title:I -Lcom/android/internal/R$id;->title_container:I -Lcom/android/internal/R$integer;->config_screenBrightnessDim:I -Lcom/android/internal/R$integer;->config_toastDefaultGravity:I -Lcom/android/internal/R$layout;->screen_title:I -Lcom/android/internal/R$string;->byteShort:I -Lcom/android/internal/R$string;->gigabyteShort:I -Lcom/android/internal/R$string;->kilobyteShort:I -Lcom/android/internal/R$string;->megabyteShort:I -Lcom/android/internal/R$string;->petabyteShort:I -Lcom/android/internal/R$string;->terabyteShort:I -Lcom/android/internal/R$style;->Theme:I -Lcom/android/internal/R$styleable;->AbsListView:[I -Lcom/android/internal/R$styleable;->AbsListView_cacheColorHint:I -Lcom/android/internal/R$styleable;->AbsListView_choiceMode:I -Lcom/android/internal/R$styleable;->AbsListView_drawSelectorOnTop:I -Lcom/android/internal/R$styleable;->AbsListView_fastScrollAlwaysVisible:I -Lcom/android/internal/R$styleable;->AbsListView_fastScrollEnabled:I -Lcom/android/internal/R$styleable;->AbsListView_listSelector:I -Lcom/android/internal/R$styleable;->AbsListView_scrollingCache:I -Lcom/android/internal/R$styleable;->AbsListView_smoothScrollbar:I -Lcom/android/internal/R$styleable;->AbsListView_stackFromBottom:I -Lcom/android/internal/R$styleable;->AbsListView_textFilterEnabled:I -Lcom/android/internal/R$styleable;->AbsListView_transcriptMode:I -Lcom/android/internal/R$styleable;->AccountAuthenticator:[I -Lcom/android/internal/R$styleable;->AccountAuthenticator_accountPreferences:I -Lcom/android/internal/R$styleable;->AccountAuthenticator_accountType:I -Lcom/android/internal/R$styleable;->AccountAuthenticator_customTokens:I -Lcom/android/internal/R$styleable;->AccountAuthenticator_icon:I -Lcom/android/internal/R$styleable;->AccountAuthenticator_label:I -Lcom/android/internal/R$styleable;->AccountAuthenticator_smallIcon:I -Lcom/android/internal/R$styleable;->AndroidManifest:[I -Lcom/android/internal/R$styleable;->AndroidManifestActivity:[I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_allowTaskReparenting:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_configChanges:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_description:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_enabled:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_excludeFromRecents:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_exported:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_hardwareAccelerated:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_icon:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_immersive:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_label:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_launchMode:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_logo:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_name:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_noHistory:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_permission:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_process:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_screenOrientation:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_taskAffinity:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_theme:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_uiOptions:I -Lcom/android/internal/R$styleable;->AndroidManifestActivity_windowSoftInputMode:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication:[I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_enabled:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_hardwareAccelerated:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_label:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_largeHeap:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_name:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_permission:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_process:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_supportsRtl:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_theme:I -Lcom/android/internal/R$styleable;->AndroidManifestApplication_uiOptions:I -Lcom/android/internal/R$styleable;->AndroidManifestData:[I -Lcom/android/internal/R$styleable;->AndroidManifestIntentFilter:[I -Lcom/android/internal/R$styleable;->AndroidManifestIntentFilter_priority:I -Lcom/android/internal/R$styleable;->AndroidManifestMetaData:[I -Lcom/android/internal/R$styleable;->AndroidManifestMetaData_name:I -Lcom/android/internal/R$styleable;->AndroidManifestMetaData_resource:I -Lcom/android/internal/R$styleable;->AndroidManifestMetaData_value:I -Lcom/android/internal/R$styleable;->AndroidManifestService:[I -Lcom/android/internal/R$styleable;->AndroidManifestService_enabled:I -Lcom/android/internal/R$styleable;->AndroidManifestService_exported:I -Lcom/android/internal/R$styleable;->AndroidManifestService_name:I -Lcom/android/internal/R$styleable;->AndroidManifestService_permission:I -Lcom/android/internal/R$styleable;->AndroidManifestService_process:I -Lcom/android/internal/R$styleable;->AndroidManifestUsesPermission:[I -Lcom/android/internal/R$styleable;->AndroidManifestUsesPermission_name:I -Lcom/android/internal/R$styleable;->AndroidManifestUsesSdk:[I -Lcom/android/internal/R$styleable;->AndroidManifestUsesSdk_minSdkVersion:I -Lcom/android/internal/R$styleable;->AndroidManifestUsesSdk_targetSdkVersion:I -Lcom/android/internal/R$styleable;->AndroidManifest_installLocation:I -Lcom/android/internal/R$styleable;->AndroidManifest_sharedUserId:I -Lcom/android/internal/R$styleable;->AndroidManifest_versionCode:I -Lcom/android/internal/R$styleable;->AndroidManifest_versionName:I -Lcom/android/internal/R$styleable;->CheckBoxPreference:[I -Lcom/android/internal/R$styleable;->CheckBoxPreference_disableDependentsState:I -Lcom/android/internal/R$styleable;->CheckBoxPreference_summaryOff:I -Lcom/android/internal/R$styleable;->CheckBoxPreference_summaryOn:I -Lcom/android/internal/R$styleable;->CompoundButton:[I -Lcom/android/internal/R$styleable;->CompoundButton_button:I -Lcom/android/internal/R$styleable;->CompoundButton_checked:I -Lcom/android/internal/R$styleable;->DialogPreference:[I -Lcom/android/internal/R$styleable;->DialogPreference_dialogTitle:I -Lcom/android/internal/R$styleable;->EdgeEffect:[I -Lcom/android/internal/R$styleable;->EdgeEffect_colorEdgeEffect:I -Lcom/android/internal/R$styleable;->GridView:[I -Lcom/android/internal/R$styleable;->IconMenuView:[I -Lcom/android/internal/R$styleable;->ImageView:[I -Lcom/android/internal/R$styleable;->ImageView_scaleType:I -Lcom/android/internal/R$styleable;->ImageView_src:I -Lcom/android/internal/R$styleable;->ListPreference:[I -Lcom/android/internal/R$styleable;->ListPreference_entries:I -Lcom/android/internal/R$styleable;->ListView:[I -Lcom/android/internal/R$styleable;->ListView_divider:I -Lcom/android/internal/R$styleable;->ListView_dividerHeight:I -Lcom/android/internal/R$styleable;->ListView_entries:I -Lcom/android/internal/R$styleable;->ListView_footerDividersEnabled:I -Lcom/android/internal/R$styleable;->ListView_headerDividersEnabled:I -Lcom/android/internal/R$styleable;->ListView_overScrollFooter:I -Lcom/android/internal/R$styleable;->ListView_overScrollHeader:I -Lcom/android/internal/R$styleable;->NumberPicker:[I -Lcom/android/internal/R$styleable;->PopupWindow:[I -Lcom/android/internal/R$styleable;->Preference:[I -Lcom/android/internal/R$styleable;->PreferenceGroup:[I -Lcom/android/internal/R$styleable;->PreferenceGroup_orderingFromXml:I -Lcom/android/internal/R$styleable;->Preference_defaultValue:I -Lcom/android/internal/R$styleable;->Preference_dependency:I -Lcom/android/internal/R$styleable;->Preference_enabled:I -Lcom/android/internal/R$styleable;->Preference_fragment:I -Lcom/android/internal/R$styleable;->Preference_icon:I -Lcom/android/internal/R$styleable;->Preference_key:I -Lcom/android/internal/R$styleable;->Preference_layout:I -Lcom/android/internal/R$styleable;->Preference_order:I -Lcom/android/internal/R$styleable;->Preference_persistent:I -Lcom/android/internal/R$styleable;->Preference_selectable:I -Lcom/android/internal/R$styleable;->Preference_shouldDisableView:I -Lcom/android/internal/R$styleable;->Preference_summary:I -Lcom/android/internal/R$styleable;->Preference_title:I -Lcom/android/internal/R$styleable;->Preference_widgetLayout:I -Lcom/android/internal/R$styleable;->ScrollView:[I -Lcom/android/internal/R$styleable;->ScrollView_fillViewport:I -Lcom/android/internal/R$styleable;->SyncAdapter:[I -Lcom/android/internal/R$styleable;->SyncAdapter_accountType:I -Lcom/android/internal/R$styleable;->SyncAdapter_allowParallelSyncs:I -Lcom/android/internal/R$styleable;->SyncAdapter_contentAuthority:I -Lcom/android/internal/R$styleable;->SyncAdapter_isAlwaysSyncable:I -Lcom/android/internal/R$styleable;->SyncAdapter_settingsActivity:I -Lcom/android/internal/R$styleable;->SyncAdapter_supportsUploading:I -Lcom/android/internal/R$styleable;->SyncAdapter_userVisible:I -Lcom/android/internal/R$styleable;->TabWidget:[I -Lcom/android/internal/R$styleable;->TextAppearance:[I -Lcom/android/internal/R$styleable;->TextView:[I -Lcom/android/internal/R$styleable;->TextViewAppearance:[I -Lcom/android/internal/R$styleable;->TextView_drawableBottom:I -Lcom/android/internal/R$styleable;->TextView_drawableLeft:I -Lcom/android/internal/R$styleable;->TextView_drawableRight:I -Lcom/android/internal/R$styleable;->TextView_drawableTop:I -Lcom/android/internal/R$styleable;->TextView_maxLines:I -Lcom/android/internal/R$styleable;->TextView_textColor:I -Lcom/android/internal/R$styleable;->TextView_textColorHint:I -Lcom/android/internal/R$styleable;->TwoLineListItem:[I -Lcom/android/internal/R$styleable;->View:[I -Lcom/android/internal/R$styleable;->ViewGroup_Layout:[I -Lcom/android/internal/R$styleable;->ViewGroup_Layout_layout_height:I -Lcom/android/internal/R$styleable;->ViewGroup_Layout_layout_width:I -Lcom/android/internal/R$styleable;->ViewStub:[I -Lcom/android/internal/R$styleable;->ViewStub_inflatedId:I -Lcom/android/internal/R$styleable;->ViewStub_layout:I -Lcom/android/internal/R$styleable;->View_background:I -Lcom/android/internal/R$styleable;->View_id:I -Lcom/android/internal/R$styleable;->Window:[I -Lcom/android/internal/R$styleable;->Window_windowActionBarFullscreenDecorLayout:I -Lcom/android/internal/R$styleable;->Window_windowIsFloating:I -Lcom/android/internal/R$styleable;->Window_windowIsTranslucent:I -Lcom/android/internal/R$styleable;->Window_windowShowWallpaper:I -Lcom/android/internal/R$xml;->power_profile:I -Lcom/android/internal/app/AlertController$AlertParams;->mIconId:I -Lcom/android/internal/app/AlertController$AlertParams;->mMessage:Ljava/lang/CharSequence; -Lcom/android/internal/app/AlertController$AlertParams;->mNegativeButtonListener:Landroid/content/DialogInterface$OnClickListener; -Lcom/android/internal/app/AlertController$AlertParams;->mNegativeButtonText:Ljava/lang/CharSequence; -Lcom/android/internal/app/AlertController$AlertParams;->mPositiveButtonListener:Landroid/content/DialogInterface$OnClickListener; -Lcom/android/internal/app/AlertController$AlertParams;->mPositiveButtonText:Ljava/lang/CharSequence; -Lcom/android/internal/app/AlertController$AlertParams;->mTitle:Ljava/lang/CharSequence; -Lcom/android/internal/app/AlertController$AlertParams;->mView:Landroid/view/View; -Lcom/android/internal/app/AlertController$RecycleListView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V -Lcom/android/internal/app/AlertController;->getButton(I)Landroid/widget/Button; -Lcom/android/internal/app/AlertController;->mCustomTitleView:Landroid/view/View; -Lcom/android/internal/app/AlertController;->mForceInverseBackground:Z -Lcom/android/internal/app/AlertController;->mTitle:Ljava/lang/CharSequence; -Lcom/android/internal/app/AlertController;->mView:Landroid/view/View; -Lcom/android/internal/app/IAppOpsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkOperation(IILjava/lang/String;)I -Lcom/android/internal/app/IAppOpsService$Stub$Proxy;->setMode(IILjava/lang/String;I)V -Lcom/android/internal/app/IAppOpsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsService; -Lcom/android/internal/app/IAppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V -Lcom/android/internal/app/IBatteryStats$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/app/IBatteryStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats; -Lcom/android/internal/app/IBatteryStats;->getStatistics()[B -Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->showSessionFromSession(Landroid/os/IBinder;Landroid/os/Bundle;I)Z -Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractionManagerService; -Lcom/android/internal/app/IVoiceInteractionManagerService;->getKeyphraseSoundModel(ILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel; -Lcom/android/internal/appwidget/IAppWidgetService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/appwidget/IAppWidgetService; -Lcom/android/internal/content/PackageMonitor;-><init>()V -Lcom/android/internal/content/PackageMonitor;->register(Landroid/content/Context;Landroid/os/Looper;Landroid/os/UserHandle;Z)V -Lcom/android/internal/content/PackageMonitor;->unregister()V -Lcom/android/internal/content/ReferrerIntent;-><init>(Landroid/content/Intent;Ljava/lang/String;)V -Lcom/android/internal/content/ReferrerIntent;->mReferrer:Ljava/lang/String; -Lcom/android/internal/location/ILocationProvider$Stub;-><init>()V -Lcom/android/internal/location/ILocationProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProvider; -Lcom/android/internal/location/ILocationProvider;->disable()V -Lcom/android/internal/location/ILocationProvider;->enable()V -Lcom/android/internal/location/ILocationProvider;->getProperties()Lcom/android/internal/location/ProviderProperties; -Lcom/android/internal/location/ILocationProvider;->getStatus(Landroid/os/Bundle;)I -Lcom/android/internal/location/ILocationProvider;->getStatusUpdateTime()J -Lcom/android/internal/location/ILocationProvider;->sendExtraCommand(Ljava/lang/String;Landroid/os/Bundle;)Z -Lcom/android/internal/location/ILocationProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V -Lcom/android/internal/location/ProviderRequest;-><init>()V -Lcom/android/internal/location/ProviderRequest;->interval:J -Lcom/android/internal/location/ProviderRequest;->locationRequests:Ljava/util/List; -Lcom/android/internal/location/ProviderRequest;->reportLocation:Z -Lcom/android/internal/os/BatterySipper;-><init>(Lcom/android/internal/os/BatterySipper$DrainType;Landroid/os/BatteryStats$Uid;D)V -Lcom/android/internal/os/BatterySipper;->add(Lcom/android/internal/os/BatterySipper;)V -Lcom/android/internal/os/BatterySipper;->drainType:Lcom/android/internal/os/BatterySipper$DrainType; -Lcom/android/internal/os/BatterySipper;->getUid()I -Lcom/android/internal/os/BatterySipper;->mPackages:[Ljava/lang/String; -Lcom/android/internal/os/BatterySipper;->packageWithHighestDrain:Ljava/lang/String; -Lcom/android/internal/os/BatterySipper;->totalPowerMah:D -Lcom/android/internal/os/BatterySipper;->uidObj:Landroid/os/BatteryStats$Uid; -Lcom/android/internal/os/BatteryStatsHelper;-><init>(Landroid/content/Context;ZZ)V -Lcom/android/internal/os/BatteryStatsHelper;->getMaxPower()D -Lcom/android/internal/os/BatteryStatsHelper;->getStats()Landroid/os/BatteryStats; -Lcom/android/internal/os/BatteryStatsHelper;->getTotalPower()D -Lcom/android/internal/os/BatteryStatsHelper;->load()V -Lcom/android/internal/os/BatteryStatsHelper;->mBatteryInfo:Lcom/android/internal/app/IBatteryStats; -Lcom/android/internal/os/BatteryStatsHelper;->mPowerProfile:Lcom/android/internal/os/PowerProfile; -Lcom/android/internal/os/BatteryStatsHelper;->mUsageList:Ljava/util/List; -Lcom/android/internal/os/BatteryStatsHelper;->refreshStats(II)V -Lcom/android/internal/os/BatteryStatsImpl$Timer;->getCountLocked(I)I -Lcom/android/internal/os/BatteryStatsImpl$Timer;->getTotalTimeLocked(JI)J -Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getForegroundTime(I)J -Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getStarts(I)I -Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getSystemTime(I)J -Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getUserTime(I)J -Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getHandle()I -Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorTime()Lcom/android/internal/os/BatteryStatsImpl$Timer; -Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Lcom/android/internal/os/BatteryStatsImpl$Timer; -Lcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStats()Landroid/util/ArrayMap; -Lcom/android/internal/os/BatteryStatsImpl$Uid;->getSensorStats()Landroid/util/SparseArray; -Lcom/android/internal/os/BatteryStatsImpl$Uid;->getUid()I -Lcom/android/internal/os/BatteryStatsImpl$Uid;->getWakelockStats()Landroid/util/ArrayMap; -Lcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiRunningTime(JI)J -Lcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanTime(JI)J -Lcom/android/internal/os/BatteryStatsImpl;->CREATOR:Landroid/os/Parcelable$Creator; -Lcom/android/internal/os/BatteryStatsImpl;->computeBatteryRealtime(JI)J -Lcom/android/internal/os/BatteryStatsImpl;->computeBatteryUptime(JI)J -Lcom/android/internal/os/BatteryStatsImpl;->getBatteryRealtime(J)J -Lcom/android/internal/os/BatteryStatsImpl;->getDischargeAmount(I)I -Lcom/android/internal/os/BatteryStatsImpl;->getDischargeCurrentLevel()I -Lcom/android/internal/os/BatteryStatsImpl;->getDischargeStartLevel()I -Lcom/android/internal/os/BatteryStatsImpl;->getGlobalWifiRunningTime(JI)J -Lcom/android/internal/os/BatteryStatsImpl;->getPhoneOnTime(JI)J -Lcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalScanningTime(JI)J -Lcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalStrengthTime(IJI)J -Lcom/android/internal/os/BatteryStatsImpl;->getScreenBrightnessTime(IJI)J -Lcom/android/internal/os/BatteryStatsImpl;->getScreenOnTime(JI)J -Lcom/android/internal/os/BatteryStatsImpl;->getUidStats()Landroid/util/SparseArray; -Lcom/android/internal/os/BatteryStatsImpl;->getUidStatsLocked(I)Lcom/android/internal/os/BatteryStatsImpl$Uid; -Lcom/android/internal/os/BatteryStatsImpl;->getWifiOnTime(JI)J -Lcom/android/internal/os/FuseAppLoop;->onCommand(IJJJI[B)V -Lcom/android/internal/os/FuseAppLoop;->onOpen(JJ)[B -Lcom/android/internal/os/IDropBoxManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IDropBoxManagerService; -Lcom/android/internal/os/PowerProfile;-><init>(Landroid/content/Context;)V -Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D -Lcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;I)D -Lcom/android/internal/os/PowerProfile;->getBatteryCapacity()D -Lcom/android/internal/os/SomeArgs;->arg1:Ljava/lang/Object; -Lcom/android/internal/os/SomeArgs;->arg2:Ljava/lang/Object; -Lcom/android/internal/os/SomeArgs;->arg3:Ljava/lang/Object; -Lcom/android/internal/os/SomeArgs;->obtain()Lcom/android/internal/os/SomeArgs; -Lcom/android/internal/os/SomeArgs;->recycle()V -Lcom/android/internal/telephony/GsmAlphabet;->gsm7BitPackedToString([BII)Ljava/lang/String; -Lcom/android/internal/telephony/GsmAlphabet;->stringToGsm7BitPacked(Ljava/lang/String;)[B -Lcom/android/internal/telephony/IMms$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IMms; -Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/telephony/IPhoneSubInfo$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IPhoneSubInfo; -Lcom/android/internal/telephony/ISms$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ISms; -Lcom/android/internal/telephony/ISub$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/telephony/ITelephony$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->endCall()Z -Lcom/android/internal/telephony/ITelephony$Stub$Proxy;->mRemote:Landroid/os/IBinder; -Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_call:I -Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_endCall:I -Lcom/android/internal/telephony/ITelephony$Stub;->TRANSACTION_getDeviceId:I -Lcom/android/internal/telephony/ITelephony$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephony; -Lcom/android/internal/telephony/ITelephony;->answerRingingCall()V -Lcom/android/internal/telephony/ITelephony;->call(Ljava/lang/String;Ljava/lang/String;)V -Lcom/android/internal/telephony/ITelephony;->dial(Ljava/lang/String;)V -Lcom/android/internal/telephony/ITelephony;->disableDataConnectivity()Z -Lcom/android/internal/telephony/ITelephony;->enableDataConnectivity()Z -Lcom/android/internal/telephony/ITelephony;->endCall()Z -Lcom/android/internal/telephony/ITelephony;->endCallForSubscriber(I)Z -Lcom/android/internal/telephony/ITelephony;->getCallState()I -Lcom/android/internal/telephony/ITelephony;->getDataEnabled(I)Z -Lcom/android/internal/telephony/ITelephony;->getDataState()I -Lcom/android/internal/telephony/ITelephony;->isIdle(Ljava/lang/String;)Z -Lcom/android/internal/telephony/ITelephony;->setRadio(Z)Z -Lcom/android/internal/telephony/ITelephony;->silenceRinger()V -Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/telephony/ITelephonyRegistry$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephonyRegistry; -Lcom/android/internal/telephony/ITelephonyRegistry;->notifyCallState(ILjava/lang/String;)V -Lcom/android/internal/telephony/OperatorInfo$State;->CURRENT:Lcom/android/internal/telephony/OperatorInfo$State; -Lcom/android/internal/telephony/OperatorInfo$State;->FORBIDDEN:Lcom/android/internal/telephony/OperatorInfo$State; -Lcom/android/internal/telephony/OperatorInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Lcom/android/internal/telephony/OperatorInfo;->CREATOR:Landroid/os/Parcelable$Creator; -Lcom/android/internal/telephony/OperatorInfo;->getOperatorAlphaLong()Ljava/lang/String; -Lcom/android/internal/telephony/OperatorInfo;->getOperatorAlphaShort()Ljava/lang/String; -Lcom/android/internal/telephony/OperatorInfo;->getOperatorNumeric()Ljava/lang/String; -Lcom/android/internal/telephony/OperatorInfo;->getState()Lcom/android/internal/telephony/OperatorInfo$State; -Lcom/android/internal/telephony/SmsHeader$ConcatRef;->msgCount:I -Lcom/android/internal/telephony/SmsHeader$ConcatRef;->refNumber:I -Lcom/android/internal/telephony/SmsHeader$ConcatRef;->seqNumber:I -Lcom/android/internal/telephony/SmsHeader;->concatRef:Lcom/android/internal/telephony/SmsHeader$ConcatRef; -Lcom/android/internal/telephony/SmsMessageBase;->mUserDataHeader:Lcom/android/internal/telephony/SmsHeader; -Lcom/android/internal/telephony/SmsRawData;-><init>([B)V -Lcom/android/internal/telephony/SmsRawData;->CREATOR:Landroid/os/Parcelable$Creator; -Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/util/AsyncChannel;-><init>()V -Lcom/android/internal/util/AsyncChannel;->connect(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Messenger;)V -Lcom/android/internal/util/AsyncChannel;->sendMessage(III)V -Lcom/android/internal/util/AsyncChannel;->sendMessage(Landroid/os/Message;)V -Lcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/OutputStream;)V -Lcom/android/internal/util/IndentingPrintWriter;-><init>(Ljava/io/Writer;Ljava/lang/String;)V -Lcom/android/internal/util/IndentingPrintWriter;->decreaseIndent()Lcom/android/internal/util/IndentingPrintWriter; -Lcom/android/internal/util/IndentingPrintWriter;->increaseIndent()Lcom/android/internal/util/IndentingPrintWriter; -Lcom/android/internal/util/XmlUtils;->beginDocument(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V -Lcom/android/internal/util/XmlUtils;->nextElement(Lorg/xmlpull/v1/XmlPullParser;)V -Lcom/android/internal/util/XmlUtils;->readMapXml(Ljava/io/InputStream;)Ljava/util/HashMap; -Lcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V -Lcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/io/OutputStream;)V -Lcom/android/internal/view/IInputConnectionWrapper;->mInputConnection:Landroid/view/inputmethod/InputConnection; -Lcom/android/internal/view/IInputConnectionWrapper;->mLock:Ljava/lang/Object; -Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V -Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getEnabledInputMethodList()Ljava/util/List; -Lcom/android/internal/view/IInputMethodManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodManager; -Lcom/android/internal/view/InputBindResult;->CREATOR:Landroid/os/Parcelable$Creator; -Lcom/android/internal/view/menu/MenuBuilder;-><init>(Landroid/content/Context;)V -Lcom/android/internal/view/menu/MenuBuilder;->mContext:Landroid/content/Context; -Lcom/android/internal/view/menu/MenuBuilder;->setCurrentMenuInfo(Landroid/view/ContextMenu$ContextMenuInfo;)V -Lcom/android/internal/view/menu/MenuBuilder;->setOptionalIconsVisible(Z)V -Lcom/android/internal/view/menu/MenuItemImpl;->mIconResId:I -Lcom/android/internal/view/menu/MenuItemImpl;->setMenuInfo(Landroid/view/ContextMenu$ContextMenuInfo;)V -Lcom/android/internal/view/menu/MenuPopupHelper;->mForceShowIcon:Z -Lcom/android/internal/view/menu/MenuPopupHelper;->setForceShowIcon(Z)V -Lcom/android/internal/view/menu/MenuView$ItemView;->getItemData()Lcom/android/internal/view/menu/MenuItemImpl; -Lcom/android/okhttp/ConnectionPool;->keepAliveDurationNs:J -Lcom/android/okhttp/ConnectionPool;->maxIdleConnections:I -Lcom/android/okhttp/ConnectionPool;->systemDefault:Lcom/android/okhttp/ConnectionPool; -Lcom/android/okhttp/HttpUrl;->encodedPath()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->query()Ljava/lang/String; -Lcom/android/okhttp/OkHttpClient;->DEFAULT_PROTOCOLS:Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->connectionPool:Lcom/android/okhttp/ConnectionPool; -Lcom/android/okhttp/OkHttpClient;->dns:Lcom/android/okhttp/Dns; -Lcom/android/okhttp/OkHttpClient;->setProtocols(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setRetryOnConnectionFailure(Z)V -Lcom/android/okhttp/Request;->headers:Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Request;->method:Ljava/lang/String; -Lcom/android/okhttp/Request;->url:Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/Response;->code:I -Lcom/android/okhttp/Response;->headers:Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Response;->message:Ljava/lang/String; -Lcom/android/okhttp/Response;->networkResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response;->protocol:Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/internal/http/HttpEngine;->httpStream:Lcom/android/okhttp/internal/http/HttpStream; -Lcom/android/okhttp/internal/http/HttpEngine;->networkRequest(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/HttpEngine;->networkRequest:Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/HttpEngine;->priorResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/HttpEngine;->userResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/okio/ByteString;->readObject(Ljava/io/ObjectInputStream;)V -Lcom/android/okhttp/okio/ByteString;->serialVersionUID:J -Lcom/android/okhttp/okio/ByteString;->writeObject(Ljava/io/ObjectOutputStream;)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getAlpnSelectedProtocol()[B -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getApplicationProtocol()Ljava/lang/String; -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getApplicationProtocols()[Ljava/lang/String; -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getChannelId()[B -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getHandshakeApplicationProtocol()Ljava/lang/String; -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getHostname()Ljava/lang/String; -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getHostnameOrIP()Ljava/lang/String; -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getNpnSelectedProtocol()[B -Lcom/android/org/conscrypt/AbstractConscryptSocket;->getSoWriteTimeout()I -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setAlpnProtocols([B)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setAlpnProtocols([Ljava/lang/String;)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setApplicationProtocols([Ljava/lang/String;)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setChannelIdEnabled(Z)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setChannelIdPrivateKey(Ljava/security/PrivateKey;)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setHandshakeTimeout(I)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setHostname(Ljava/lang/String;)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setNpnProtocols([B)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setSoWriteTimeout(I)V -Lcom/android/org/conscrypt/AbstractConscryptSocket;->setUseSessionTickets(Z)V -Lcom/android/org/conscrypt/ConscryptSocketBase;->getHostname()Ljava/lang/String; -Lcom/android/org/conscrypt/ConscryptSocketBase;->getHostnameOrIP()Ljava/lang/String; -Lcom/android/org/conscrypt/ConscryptSocketBase;->getSoWriteTimeout()I -Lcom/android/org/conscrypt/ConscryptSocketBase;->setHandshakeTimeout(I)V -Lcom/android/org/conscrypt/ConscryptSocketBase;->setHostname(Ljava/lang/String;)V -Lcom/android/org/conscrypt/ConscryptSocketBase;->setSoWriteTimeout(I)V -Lcom/android/org/conscrypt/ConscryptSocketBase;->socket:Ljava/net/Socket; -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getAlpnSelectedProtocol()[B -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getChannelId()[B -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getHostname()Ljava/lang/String; -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getHostnameOrIP()Ljava/lang/String; -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getNpnSelectedProtocol()[B -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->getSoWriteTimeout()I -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setAlpnProtocols([B)V -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setAlpnProtocols([Ljava/lang/String;)V -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setChannelIdEnabled(Z)V -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setChannelIdPrivateKey(Ljava/security/PrivateKey;)V -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setHandshakeTimeout(I)V -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setHostname(Ljava/lang/String;)V -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setNpnProtocols([B)V -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setSoWriteTimeout(I)V -Lcom/android/org/conscrypt/OpenSSLSocketImpl;->setUseSessionTickets(Z)V -Lcom/android/org/conscrypt/OpenSSLX509Certificate;->mContext:J -Lcom/android/org/conscrypt/OpenSSLX509Certificate;->serialVersionUID:J -Lcom/android/org/conscrypt/OpenSSLX509CertificateFactory$ParsingException;->serialVersionUID:J -Lcom/android/org/conscrypt/TrustManagerImpl;-><init>(Ljava/security/KeyStore;)V -Ldalvik/system/BaseDexClassLoader;->addDexPath(Ljava/lang/String;)V -Ldalvik/system/BaseDexClassLoader;->getLdLibraryPath()Ljava/lang/String; -Ldalvik/system/BaseDexClassLoader;->pathList:Ldalvik/system/DexPathList; -Ldalvik/system/BlockGuard$Policy;->onNetwork()V -Ldalvik/system/BlockGuard$Policy;->onReadFromDisk()V -Ldalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy; -Ldalvik/system/CloseGuard;->close()V -Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; -Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V -Ldalvik/system/CloseGuard;->warnIfOpen()V -Ldalvik/system/DexFile$DFEnum;->mNameList:[Ljava/lang/String; -Ldalvik/system/DexFile;->getClassNameList(Ljava/lang/Object;)[Ljava/lang/String; -Ldalvik/system/DexFile;->isBackedByOatFile()Z -Ldalvik/system/DexFile;->loadClassBinaryName(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class; -Ldalvik/system/DexFile;->mCookie:Ljava/lang/Object; -Ldalvik/system/DexFile;->mFileName:Ljava/lang/String; -Ldalvik/system/DexFile;->mInternalCookie:Ljava/lang/Object; -Ldalvik/system/DexFile;->openDexFile(Ljava/lang/String;Ljava/lang/String;ILjava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)Ljava/lang/Object; -Ldalvik/system/DexPathList$Element;-><init>(Ldalvik/system/DexFile;Ljava/io/File;)V -Ldalvik/system/DexPathList$Element;-><init>(Ljava/io/File;ZLjava/io/File;Ldalvik/system/DexFile;)V -Ldalvik/system/DexPathList$Element;->dexFile:Ldalvik/system/DexFile; -Ldalvik/system/DexPathList$NativeLibraryElement;-><init>(Ljava/io/File;)V -Ldalvik/system/DexPathList$NativeLibraryElement;->path:Ljava/io/File; -Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V -Ldalvik/system/DexPathList;->addDexPath(Ljava/lang/String;Ljava/io/File;)V -Ldalvik/system/DexPathList;->definingContext:Ljava/lang/ClassLoader; -Ldalvik/system/DexPathList;->dexElements:[Ldalvik/system/DexPathList$Element; -Ldalvik/system/DexPathList;->loadDexFile(Ljava/io/File;Ljava/io/File;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)Ldalvik/system/DexFile; -Ldalvik/system/DexPathList;->makeDexElements(Ljava/util/List;Ljava/io/File;Ljava/util/List;Ljava/lang/ClassLoader;)[Ldalvik/system/DexPathList$Element; -Ldalvik/system/DexPathList;->makeInMemoryDexElements([Ljava/nio/ByteBuffer;Ljava/util/List;)[Ldalvik/system/DexPathList$Element; -Ldalvik/system/DexPathList;->makePathElements(Ljava/util/List;)[Ldalvik/system/DexPathList$NativeLibraryElement; -Ldalvik/system/DexPathList;->makePathElements(Ljava/util/List;Ljava/io/File;Ljava/util/List;)[Ldalvik/system/DexPathList$Element; -Ldalvik/system/DexPathList;->nativeLibraryDirectories:Ljava/util/List; -Ldalvik/system/DexPathList;->nativeLibraryPathElements:[Ldalvik/system/DexPathList$NativeLibraryElement; -Ldalvik/system/DexPathList;->splitPaths(Ljava/lang/String;Z)Ljava/util/List; -Ldalvik/system/DexPathList;->systemNativeLibraryDirectories:Ljava/util/List; -Ldalvik/system/VMDebug;->dumpReferenceTables()V -Ldalvik/system/VMDebug;->isDebuggerConnected()Z -Ldalvik/system/VMRuntime;->addressOf(Ljava/lang/Object;)J -Ldalvik/system/VMRuntime;->clearGrowthLimit()V -Ldalvik/system/VMRuntime;->gcSoftReferences()V -Ldalvik/system/VMRuntime;->getCurrentInstructionSet()Ljava/lang/String; -Ldalvik/system/VMRuntime;->getExternalBytesAllocated()J -Ldalvik/system/VMRuntime;->getInstructionSet(Ljava/lang/String;)Ljava/lang/String; -Ldalvik/system/VMRuntime;->getRuntime()Ldalvik/system/VMRuntime; -Ldalvik/system/VMRuntime;->is64Bit()Z -Ldalvik/system/VMRuntime;->is64BitAbi(Ljava/lang/String;)Z -Ldalvik/system/VMRuntime;->newNonMovableArray(Ljava/lang/Class;I)Ljava/lang/Object; -Ldalvik/system/VMRuntime;->registerNativeAllocation(I)V -Ldalvik/system/VMRuntime;->registerNativeFree(I)V -Ldalvik/system/VMRuntime;->runFinalization(J)V -Ldalvik/system/VMRuntime;->setMinimumHeapSize(J)J -Ldalvik/system/VMRuntime;->setTargetHeapUtilization(F)F -Ldalvik/system/VMRuntime;->setTargetSdkVersion(I)V -Ldalvik/system/VMRuntime;->trackExternalAllocation(J)Z -Ldalvik/system/VMRuntime;->trackExternalFree(J)V -Ldalvik/system/VMRuntime;->vmInstructionSet()Ljava/lang/String; -Ldalvik/system/VMRuntime;->vmLibrary()Ljava/lang/String; -Ldalvik/system/VMStack;->getCallingClassLoader()Ljava/lang/ClassLoader; -Ldalvik/system/VMStack;->getStackClass2()Ljava/lang/Class; -Ljava/awt/font/NumericShaper;->serialVersionUID:J -Ljava/awt/font/NumericShaper;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/awt/font/TextAttribute;->serialVersionUID:J -Ljava/beans/IndexedPropertyChangeEvent;->serialVersionUID:J -Ljava/beans/PropertyChangeEvent;->serialVersionUID:J -Ljava/beans/PropertyChangeSupport;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/beans/PropertyChangeSupport;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/beans/PropertyChangeSupport;->serialVersionUID:J -Ljava/beans/PropertyChangeSupport;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/io/CharConversionException;->serialVersionUID:J -Ljava/io/EOFException;->serialVersionUID:J -Ljava/io/File;->filePath:Ljava/nio/file/Path; -Ljava/io/File;->fs:Ljava/io/FileSystem; -Ljava/io/File;->path:Ljava/lang/String; -Ljava/io/File;->prefixLength:I -Ljava/io/File;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/io/File;->serialVersionUID:J -Ljava/io/File;->status:Ljava/io/File$PathStatus; -Ljava/io/File;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/io/FileDescriptor;->descriptor:I -Ljava/io/FileDescriptor;->getInt$()I -Ljava/io/FileDescriptor;->isSocket$()Z -Ljava/io/FileDescriptor;->setInt$(I)V -Ljava/io/FileInputStream;->fd:Ljava/io/FileDescriptor; -Ljava/io/FileNotFoundException;->serialVersionUID:J -Ljava/io/FileOutputStream;->fd:Ljava/io/FileDescriptor; -Ljava/io/IOError;->serialVersionUID:J -Ljava/io/IOException;->serialVersionUID:J -Ljava/io/InterruptedIOException;->serialVersionUID:J -Ljava/io/InvalidClassException;->serialVersionUID:J -Ljava/io/InvalidObjectException;->serialVersionUID:J -Ljava/io/NotActiveException;->serialVersionUID:J -Ljava/io/NotSerializableException;->serialVersionUID:J -Ljava/io/ObjectStreamClass;->getConstructorId(Ljava/lang/Class;)J -Ljava/io/ObjectStreamClass;->newInstance()Ljava/lang/Object; -Ljava/io/ObjectStreamClass;->newInstance(Ljava/lang/Class;J)Ljava/lang/Object; -Ljava/io/ObjectStreamClass;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass;->serialVersionUID:J -Ljava/io/ObjectStreamException;->serialVersionUID:J -Ljava/io/OptionalDataException;->serialVersionUID:J -Ljava/io/StreamCorruptedException;->serialVersionUID:J -Ljava/io/SyncFailedException;->serialVersionUID:J -Ljava/io/UTFDataFormatException;->serialVersionUID:J -Ljava/io/UncheckedIOException;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/io/UncheckedIOException;->serialVersionUID:J -Ljava/io/UnsupportedEncodingException;->serialVersionUID:J -Ljava/io/WriteAbortedException;->serialVersionUID:J -Ljava/lang/AbstractMethodError;->serialVersionUID:J -Ljava/lang/AbstractStringBuilder;->value:[C -Ljava/lang/ArithmeticException;->serialVersionUID:J -Ljava/lang/ArrayIndexOutOfBoundsException;->serialVersionUID:J -Ljava/lang/ArrayStoreException;->serialVersionUID:J -Ljava/lang/AssertionError;->serialVersionUID:J -Ljava/lang/Boolean;->serialVersionUID:J -Ljava/lang/Boolean;->value:Z -Ljava/lang/BootstrapMethodError;->serialVersionUID:J -Ljava/lang/Byte;->serialVersionUID:J -Ljava/lang/Byte;->value:B -Ljava/lang/Character;->serialVersionUID:J -Ljava/lang/Character;->value:C -Ljava/lang/Class;->accessFlags:I -Ljava/lang/Class;->dexCache:Ljava/lang/Object; -Ljava/lang/Class;->dexClassDefIndex:I -Ljava/lang/Class;->ifTable:[Ljava/lang/Object; -Ljava/lang/Class;->serialVersionUID:J -Ljava/lang/ClassCastException;->serialVersionUID:J -Ljava/lang/ClassCircularityError;->serialVersionUID:J -Ljava/lang/ClassFormatError;->serialVersionUID:J -Ljava/lang/ClassLoader;->parent:Ljava/lang/ClassLoader; -Ljava/lang/ClassNotFoundException;->serialVersionUID:J -Ljava/lang/CloneNotSupportedException;->serialVersionUID:J -Ljava/lang/Daemons$Daemon;->isRunning()Z -Ljava/lang/Daemons$Daemon;->start()V -Ljava/lang/Daemons$Daemon;->stop()V -Ljava/lang/Daemons$Daemon;->thread:Ljava/lang/Thread; -Ljava/lang/Daemons$FinalizerDaemon;->INSTANCE:Ljava/lang/Daemons$FinalizerDaemon; -Ljava/lang/Daemons$FinalizerDaemon;->finalizingObject:Ljava/lang/Object; -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->INSTANCE:Ljava/lang/Daemons$FinalizerWatchdogDaemon; -Ljava/lang/Daemons$ReferenceQueueDaemon;->INSTANCE:Ljava/lang/Daemons$ReferenceQueueDaemon; -Ljava/lang/Daemons;->MAX_FINALIZE_NANOS:J -Ljava/lang/Daemons;->requestHeapTrim()V -Ljava/lang/Daemons;->start()V -Ljava/lang/Daemons;->stop()V -Ljava/lang/Double;->serialVersionUID:J -Ljava/lang/Double;->value:D -Ljava/lang/Enum;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/lang/Enum;->readObjectNoData()V -Ljava/lang/EnumConstantNotPresentException;->serialVersionUID:J -Ljava/lang/Error;->serialVersionUID:J -Ljava/lang/Exception;->serialVersionUID:J -Ljava/lang/ExceptionInInitializerError;->serialVersionUID:J -Ljava/lang/Float;->serialVersionUID:J -Ljava/lang/Float;->value:F -Ljava/lang/IllegalAccessError;->serialVersionUID:J -Ljava/lang/IllegalAccessException;->serialVersionUID:J -Ljava/lang/IllegalArgumentException;->serialVersionUID:J -Ljava/lang/IllegalMonitorStateException;->serialVersionUID:J -Ljava/lang/IllegalStateException;->serialVersionUID:J -Ljava/lang/IllegalThreadStateException;->serialVersionUID:J -Ljava/lang/IncompatibleClassChangeError;->serialVersionUID:J -Ljava/lang/IndexOutOfBoundsException;->serialVersionUID:J -Ljava/lang/InstantiationError;->serialVersionUID:J -Ljava/lang/InstantiationException;->serialVersionUID:J -Ljava/lang/Integer;->serialVersionUID:J -Ljava/lang/Integer;->value:I -Ljava/lang/InternalError;->serialVersionUID:J -Ljava/lang/InterruptedException;->serialVersionUID:J -Ljava/lang/LinkageError;->serialVersionUID:J -Ljava/lang/Long;->serialVersionUID:J -Ljava/lang/Long;->value:J -Ljava/lang/NegativeArraySizeException;->serialVersionUID:J -Ljava/lang/NoClassDefFoundError;->serialVersionUID:J -Ljava/lang/NoSuchFieldError;->serialVersionUID:J -Ljava/lang/NoSuchFieldException;->serialVersionUID:J -Ljava/lang/NoSuchMethodError;->serialVersionUID:J -Ljava/lang/NoSuchMethodException;->serialVersionUID:J -Ljava/lang/NullPointerException;->serialVersionUID:J -Ljava/lang/Number;->serialVersionUID:J -Ljava/lang/NumberFormatException;->serialVersionUID:J -Ljava/lang/OutOfMemoryError;->serialVersionUID:J -Ljava/lang/ReflectiveOperationException;->serialVersionUID:J -Ljava/lang/Runtime;->load(Ljava/lang/String;Ljava/lang/ClassLoader;)V -Ljava/lang/Runtime;->loadLibrary(Ljava/lang/String;Ljava/lang/ClassLoader;)V -Ljava/lang/Runtime;->mLibPaths:[Ljava/lang/String; -Ljava/lang/Runtime;->nativeLoad(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/String; -Ljava/lang/RuntimeException;->serialVersionUID:J -Ljava/lang/RuntimePermission;->serialVersionUID:J -Ljava/lang/SecurityException;->serialVersionUID:J -Ljava/lang/Short;->serialVersionUID:J -Ljava/lang/Short;->value:S -Ljava/lang/StackOverflowError;->serialVersionUID:J -Ljava/lang/StackTraceElement;->serialVersionUID:J -Ljava/lang/String$CaseInsensitiveComparator;->readResolve()Ljava/lang/Object; -Ljava/lang/String$CaseInsensitiveComparator;->serialVersionUID:J -Ljava/lang/String;-><init>(II[C)V -Ljava/lang/String;->getCharsNoCheck(II[CI)V -Ljava/lang/String;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/lang/String;->serialVersionUID:J -Ljava/lang/StringBuffer;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/lang/StringBuffer;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/lang/StringBuffer;->serialVersionUID:J -Ljava/lang/StringBuffer;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/lang/StringBuilder;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/lang/StringBuilder;->serialVersionUID:J -Ljava/lang/StringBuilder;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/lang/StringIndexOutOfBoundsException;->serialVersionUID:J -Ljava/lang/System;-><init>()V -Ljava/lang/System;->arraycopy([BI[BII)V -Ljava/lang/System;->arraycopy([CI[CII)V -Ljava/lang/System;->arraycopy([II[III)V -Ljava/lang/Thread;-><init>(Ljava/lang/ThreadGroup;Ljava/lang/String;IZ)V -Ljava/lang/Thread;->contextClassLoader:Ljava/lang/ClassLoader; -Ljava/lang/Thread;->daemon:Z -Ljava/lang/Thread;->dispatchUncaughtException(Ljava/lang/Throwable;)V -Ljava/lang/Thread;->group:Ljava/lang/ThreadGroup; -Ljava/lang/Thread;->inheritableThreadLocals:Ljava/lang/ThreadLocal$ThreadLocalMap; -Ljava/lang/Thread;->lock:Ljava/lang/Object; -Ljava/lang/Thread;->name:Ljava/lang/String; -Ljava/lang/Thread;->nativePeer:J -Ljava/lang/Thread;->parkBlocker:Ljava/lang/Object; -Ljava/lang/Thread;->priority:I -Ljava/lang/Thread;->threadLocals:Ljava/lang/ThreadLocal$ThreadLocalMap; -Ljava/lang/ThreadDeath;->serialVersionUID:J -Ljava/lang/ThreadGroup;->add(Ljava/lang/Thread;)V -Ljava/lang/ThreadGroup;->groups:[Ljava/lang/ThreadGroup; -Ljava/lang/ThreadGroup;->mainThreadGroup:Ljava/lang/ThreadGroup; -Ljava/lang/ThreadGroup;->name:Ljava/lang/String; -Ljava/lang/ThreadGroup;->ngroups:I -Ljava/lang/ThreadGroup;->parent:Ljava/lang/ThreadGroup; -Ljava/lang/ThreadGroup;->systemThreadGroup:Ljava/lang/ThreadGroup; -Ljava/lang/ThreadGroup;->threadTerminated(Ljava/lang/Thread;)V -Ljava/lang/Throwable;->backtrace:Ljava/lang/Object; -Ljava/lang/Throwable;->cause:Ljava/lang/Throwable; -Ljava/lang/Throwable;->detailMessage:Ljava/lang/String; -Ljava/lang/Throwable;->nativeFillInStackTrace()Ljava/lang/Object; -Ljava/lang/Throwable;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/lang/Throwable;->serialVersionUID:J -Ljava/lang/Throwable;->stackTrace:[Ljava/lang/StackTraceElement; -Ljava/lang/Throwable;->suppressedExceptions:Ljava/util/List; -Ljava/lang/Throwable;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/lang/TypeNotPresentException;->serialVersionUID:J -Ljava/lang/UnknownError;->serialVersionUID:J -Ljava/lang/UnsatisfiedLinkError;->serialVersionUID:J -Ljava/lang/UnsupportedClassVersionError;->serialVersionUID:J -Ljava/lang/UnsupportedOperationException;->serialVersionUID:J -Ljava/lang/VerifyError;->serialVersionUID:J -Ljava/lang/VirtualMachineError;->serialVersionUID:J -Ljava/lang/Void;-><init>()V -Ljava/lang/annotation/AnnotationFormatError;->serialVersionUID:J -Ljava/lang/annotation/AnnotationTypeMismatchException;->serialVersionUID:J -Ljava/lang/annotation/IncompleteAnnotationException;->serialVersionUID:J -Ljava/lang/invoke/LambdaConversionException;->serialVersionUID:J -Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;I)V -Ljava/lang/invoke/MethodType;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/lang/invoke/MethodType;->readResolve()Ljava/lang/Object; -Ljava/lang/invoke/MethodType;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/lang/invoke/MethodType;->serialVersionUID:J -Ljava/lang/invoke/MethodType;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/lang/invoke/WrongMethodTypeException;->serialVersionUID:J -Ljava/lang/ref/FinalizerReference;->add(Ljava/lang/Object;)V -Ljava/lang/ref/FinalizerReference;->head:Ljava/lang/ref/FinalizerReference; -Ljava/lang/ref/FinalizerReference;->next:Ljava/lang/ref/FinalizerReference; -Ljava/lang/ref/FinalizerReference;->queue:Ljava/lang/ref/ReferenceQueue; -Ljava/lang/ref/FinalizerReference;->remove(Ljava/lang/ref/FinalizerReference;)V -Ljava/lang/ref/Reference;->getReferent()Ljava/lang/Object; -Ljava/lang/ref/Reference;->referent:Ljava/lang/Object; -Ljava/lang/ref/ReferenceQueue;->add(Ljava/lang/ref/Reference;)V -Ljava/lang/reflect/Executable;->artMethod:J -Ljava/lang/reflect/Field;->accessFlags:I -Ljava/lang/reflect/GenericSignatureFormatError;->serialVersionUID:J -Ljava/lang/reflect/InvocationTargetException;->serialVersionUID:J -Ljava/lang/reflect/MalformedParameterizedTypeException;->serialVersionUID:J -Ljava/lang/reflect/MalformedParametersException;->serialVersionUID:J -Ljava/lang/reflect/Parameter;-><init>(Ljava/lang/String;ILjava/lang/reflect/Executable;I)V -Ljava/lang/reflect/Proxy;->invoke(Ljava/lang/reflect/Proxy;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/reflect/Proxy;->serialVersionUID:J -Ljava/lang/reflect/UndeclaredThrowableException;->serialVersionUID:J -Ljava/math/BigDecimal;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/math/BigDecimal;->serialVersionUID:J -Ljava/math/BigDecimal;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/math/BigInteger;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/math/BigInteger;->serialVersionUID:J -Ljava/math/BigInteger;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/math/MathContext;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/math/MathContext;->serialVersionUID:J -Ljava/net/Authenticator;->theAuthenticator:Ljava/net/Authenticator; -Ljava/net/BindException;->serialVersionUID:J -Ljava/net/ConnectException;->serialVersionUID:J -Ljava/net/DatagramSocket;->impl:Ljava/net/DatagramSocketImpl; -Ljava/net/HttpCookie;->assignors:Ljava/util/Map; -Ljava/net/HttpCookie;->comment:Ljava/lang/String; -Ljava/net/HttpCookie;->commentURL:Ljava/lang/String; -Ljava/net/HttpCookie;->domain:Ljava/lang/String; -Ljava/net/HttpCookie;->header:Ljava/lang/String; -Ljava/net/HttpCookie;->httpOnly:Z -Ljava/net/HttpCookie;->maxAge:J -Ljava/net/HttpCookie;->name:Ljava/lang/String; -Ljava/net/HttpCookie;->path:Ljava/lang/String; -Ljava/net/HttpCookie;->portlist:Ljava/lang/String; -Ljava/net/HttpCookie;->secure:Z -Ljava/net/HttpCookie;->toDiscard:Z -Ljava/net/HttpCookie;->tspecials:Ljava/lang/String; -Ljava/net/HttpCookie;->value:Ljava/lang/String; -Ljava/net/HttpCookie;->version:I -Ljava/net/HttpCookie;->whenCreated:J -Ljava/net/HttpRetryException;->serialVersionUID:J -Ljava/net/Inet4Address;-><init>()V -Ljava/net/Inet4Address;->ALL:Ljava/net/InetAddress; -Ljava/net/Inet4Address;->ANY:Ljava/net/InetAddress; -Ljava/net/Inet4Address;->serialVersionUID:J -Ljava/net/Inet4Address;->writeReplace()Ljava/lang/Object; -Ljava/net/Inet6Address$Inet6AddressHolder;->ipaddress:[B -Ljava/net/Inet6Address$Inet6AddressHolder;->scope_id:I -Ljava/net/Inet6Address$Inet6AddressHolder;->scope_id_set:Z -Ljava/net/Inet6Address$Inet6AddressHolder;->scope_ifname:Ljava/net/NetworkInterface; -Ljava/net/Inet6Address;-><init>()V -Ljava/net/Inet6Address;->ANY:Ljava/net/InetAddress; -Ljava/net/Inet6Address;->holder6:Ljava/net/Inet6Address$Inet6AddressHolder; -Ljava/net/Inet6Address;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/net/Inet6Address;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/net/Inet6Address;->serialVersionUID:J -Ljava/net/Inet6Address;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/net/InetAddress$InetAddressHolder;->address:I -Ljava/net/InetAddress$InetAddressHolder;->family:I -Ljava/net/InetAddress$InetAddressHolder;->hostName:Ljava/lang/String; -Ljava/net/InetAddress$InetAddressHolder;->originalHostName:Ljava/lang/String; -Ljava/net/InetAddress;->clearDnsCache()V -Ljava/net/InetAddress;->holder()Ljava/net/InetAddress$InetAddressHolder; -Ljava/net/InetAddress;->holder:Ljava/net/InetAddress$InetAddressHolder; -Ljava/net/InetAddress;->isNumeric(Ljava/lang/String;)Z -Ljava/net/InetAddress;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress; -Ljava/net/InetAddress;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/net/InetAddress;->readResolve()Ljava/lang/Object; -Ljava/net/InetAddress;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/net/InetAddress;->serialVersionUID:J -Ljava/net/InetAddress;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/net/InetSocketAddress;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/net/InetSocketAddress;->readObjectNoData()V -Ljava/net/InetSocketAddress;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/net/InetSocketAddress;->serialVersionUID:J -Ljava/net/InetSocketAddress;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/net/MalformedURLException;->serialVersionUID:J -Ljava/net/NoRouteToHostException;->serialVersionUID:J -Ljava/net/PortUnreachableException;->serialVersionUID:J -Ljava/net/ProtocolException;->serialVersionUID:J -Ljava/net/Socket;->getFileDescriptor$()Ljava/io/FileDescriptor; -Ljava/net/Socket;->impl:Ljava/net/SocketImpl; -Ljava/net/SocketAddress;->serialVersionUID:J -Ljava/net/SocketException;->serialVersionUID:J -Ljava/net/SocketImpl;->serverSocket:Ljava/net/ServerSocket; -Ljava/net/SocketImpl;->socket:Ljava/net/Socket; -Ljava/net/SocketTimeoutException;->serialVersionUID:J -Ljava/net/URI;->fragment:Ljava/lang/String; -Ljava/net/URI;->host:Ljava/lang/String; -Ljava/net/URI;->port:I -Ljava/net/URI;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/net/URI;->serialVersionUID:J -Ljava/net/URI;->string:Ljava/lang/String; -Ljava/net/URI;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/net/URISyntaxException;->serialVersionUID:J -Ljava/net/URL;->handler:Ljava/net/URLStreamHandler; -Ljava/net/URL;->handlers:Ljava/util/Hashtable; -Ljava/net/URL;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/net/URL;->readResolve()Ljava/lang/Object; -Ljava/net/URL;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/net/URL;->serialVersionUID:J -Ljava/net/URL;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/net/UnknownHostException;->serialVersionUID:J -Ljava/net/UnknownServiceException;->serialVersionUID:J -Ljava/nio/Buffer;->_elementSizeShift:I -Ljava/nio/Buffer;->address:J -Ljava/nio/Buffer;->capacity:I -Ljava/nio/Buffer;->limit:I -Ljava/nio/Buffer;->position:I -Ljava/nio/BufferOverflowException;->serialVersionUID:J -Ljava/nio/BufferUnderflowException;->serialVersionUID:J -Ljava/nio/ByteBuffer;->hb:[B -Ljava/nio/ByteBuffer;->isReadOnly:Z -Ljava/nio/ByteBuffer;->offset:I -Ljava/nio/DirectByteBuffer;-><init>(JI)V -Ljava/nio/InvalidMarkException;->serialVersionUID:J -Ljava/nio/NIOAccess;->getBaseArray(Ljava/nio/Buffer;)Ljava/lang/Object; -Ljava/nio/NIOAccess;->getBaseArrayOffset(Ljava/nio/Buffer;)I -Ljava/nio/NIOAccess;->getBasePointer(Ljava/nio/Buffer;)J -Ljava/nio/ReadOnlyBufferException;->serialVersionUID:J -Ljava/nio/channels/AcceptPendingException;->serialVersionUID:J -Ljava/nio/channels/AlreadyBoundException;->serialVersionUID:J -Ljava/nio/channels/AlreadyConnectedException;->serialVersionUID:J -Ljava/nio/channels/AsynchronousCloseException;->serialVersionUID:J -Ljava/nio/channels/CancelledKeyException;->serialVersionUID:J -Ljava/nio/channels/ClosedByInterruptException;->serialVersionUID:J -Ljava/nio/channels/ClosedChannelException;->serialVersionUID:J -Ljava/nio/channels/ClosedSelectorException;->serialVersionUID:J -Ljava/nio/channels/ConnectionPendingException;->serialVersionUID:J -Ljava/nio/channels/FileLockInterruptionException;->serialVersionUID:J -Ljava/nio/channels/IllegalBlockingModeException;->serialVersionUID:J -Ljava/nio/channels/IllegalChannelGroupException;->serialVersionUID:J -Ljava/nio/channels/IllegalSelectorException;->serialVersionUID:J -Ljava/nio/channels/InterruptedByTimeoutException;->serialVersionUID:J -Ljava/nio/channels/NoConnectionPendingException;->serialVersionUID:J -Ljava/nio/channels/NonReadableChannelException;->serialVersionUID:J -Ljava/nio/channels/NonWritableChannelException;->serialVersionUID:J -Ljava/nio/channels/NotYetBoundException;->serialVersionUID:J -Ljava/nio/channels/NotYetConnectedException;->serialVersionUID:J -Ljava/nio/channels/OverlappingFileLockException;->serialVersionUID:J -Ljava/nio/channels/ReadPendingException;->serialVersionUID:J -Ljava/nio/channels/ShutdownChannelGroupException;->serialVersionUID:J -Ljava/nio/channels/UnresolvedAddressException;->serialVersionUID:J -Ljava/nio/channels/UnsupportedAddressTypeException;->serialVersionUID:J -Ljava/nio/channels/WritePendingException;->serialVersionUID:J -Ljava/nio/charset/CharacterCodingException;->serialVersionUID:J -Ljava/nio/charset/CharsetEncoder;->canEncode(Ljava/nio/CharBuffer;)Z -Ljava/nio/charset/CoderMalfunctionError;->serialVersionUID:J -Ljava/nio/charset/IllegalCharsetNameException;->serialVersionUID:J -Ljava/nio/charset/MalformedInputException;->serialVersionUID:J -Ljava/nio/charset/UnmappableCharacterException;->serialVersionUID:J -Ljava/nio/charset/UnsupportedCharsetException;->serialVersionUID:J -Ljava/nio/file/AccessDeniedException;->serialVersionUID:J -Ljava/nio/file/AtomicMoveNotSupportedException;->serialVersionUID:J -Ljava/nio/file/ClosedDirectoryStreamException;->serialVersionUID:J -Ljava/nio/file/ClosedFileSystemException;->serialVersionUID:J -Ljava/nio/file/ClosedWatchServiceException;->serialVersionUID:J -Ljava/nio/file/DirectoryIteratorException;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/nio/file/DirectoryIteratorException;->serialVersionUID:J -Ljava/nio/file/DirectoryNotEmptyException;->serialVersionUID:J -Ljava/nio/file/FileAlreadyExistsException;->serialVersionUID:J -Ljava/nio/file/FileSystemAlreadyExistsException;->serialVersionUID:J -Ljava/nio/file/FileSystemException;->serialVersionUID:J -Ljava/nio/file/FileSystemLoopException;->serialVersionUID:J -Ljava/nio/file/FileSystemNotFoundException;->serialVersionUID:J -Ljava/nio/file/InvalidPathException;->serialVersionUID:J -Ljava/nio/file/LinkPermission;->serialVersionUID:J -Ljava/nio/file/NoSuchFileException;->serialVersionUID:J -Ljava/nio/file/NotDirectoryException;->serialVersionUID:J -Ljava/nio/file/NotLinkException;->serialVersionUID:J -Ljava/nio/file/ProviderMismatchException;->serialVersionUID:J -Ljava/nio/file/ProviderNotFoundException;->serialVersionUID:J -Ljava/nio/file/ReadOnlyFileSystemException;->serialVersionUID:J -Ljava/nio/file/attribute/UserPrincipalNotFoundException;->serialVersionUID:J -Ljava/security/AccessControlException;->serialVersionUID:J -Ljava/security/CodeSigner;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/security/CodeSigner;->serialVersionUID:J -Ljava/security/DigestException;->serialVersionUID:J -Ljava/security/GeneralSecurityException;->serialVersionUID:J -Ljava/security/GuardedObject;->serialVersionUID:J -Ljava/security/GuardedObject;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/security/Identity;->serialVersionUID:J -Ljava/security/IdentityScope;->serialVersionUID:J -Ljava/security/InvalidAlgorithmParameterException;->serialVersionUID:J -Ljava/security/InvalidKeyException;->serialVersionUID:J -Ljava/security/InvalidParameterException;->serialVersionUID:J -Ljava/security/KeyException;->serialVersionUID:J -Ljava/security/KeyManagementException;->serialVersionUID:J -Ljava/security/KeyPair;->serialVersionUID:J -Ljava/security/KeyRep;->serialVersionUID:J -Ljava/security/KeyStoreException;->serialVersionUID:J -Ljava/security/NoSuchAlgorithmException;->serialVersionUID:J -Ljava/security/NoSuchProviderException;->serialVersionUID:J -Ljava/security/PrivilegedActionException;->serialVersionUID:J -Ljava/security/Provider;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/security/Provider;->serialVersionUID:J -Ljava/security/ProviderException;->serialVersionUID:J -Ljava/security/SecureRandom;->serialVersionUID:J -Ljava/security/SecureRandomSpi;->serialVersionUID:J -Ljava/security/SignatureException;->serialVersionUID:J -Ljava/security/SignedObject;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/security/SignedObject;->serialVersionUID:J -Ljava/security/Signer;->serialVersionUID:J -Ljava/security/Timestamp;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/security/Timestamp;->serialVersionUID:J -Ljava/security/UnrecoverableEntryException;->serialVersionUID:J -Ljava/security/UnrecoverableKeyException;->serialVersionUID:J -Ljava/security/acl/AclNotFoundException;->serialVersionUID:J -Ljava/security/acl/LastOwnerException;->serialVersionUID:J -Ljava/security/acl/NotOwnerException;->serialVersionUID:J -Ljava/security/cert/CRLException;->serialVersionUID:J -Ljava/security/cert/CertPath$CertPathRep;->serialVersionUID:J -Ljava/security/cert/CertPath;->serialVersionUID:J -Ljava/security/cert/CertPathBuilderException;->serialVersionUID:J -Ljava/security/cert/CertPathValidatorException;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/security/cert/CertPathValidatorException;->serialVersionUID:J -Ljava/security/cert/CertStoreException;->serialVersionUID:J -Ljava/security/cert/Certificate$CertificateRep;->serialVersionUID:J -Ljava/security/cert/Certificate;->serialVersionUID:J -Ljava/security/cert/CertificateEncodingException;->serialVersionUID:J -Ljava/security/cert/CertificateException;->serialVersionUID:J -Ljava/security/cert/CertificateExpiredException;->serialVersionUID:J -Ljava/security/cert/CertificateNotYetValidException;->serialVersionUID:J -Ljava/security/cert/CertificateParsingException;->serialVersionUID:J -Ljava/security/cert/CertificateRevokedException;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/security/cert/CertificateRevokedException;->serialVersionUID:J -Ljava/security/cert/CertificateRevokedException;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/security/cert/X509Certificate;->serialVersionUID:J -Ljava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String; -Ljava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V -Ljava/security/spec/InvalidKeySpecException;->serialVersionUID:J -Ljava/security/spec/InvalidParameterSpecException;->serialVersionUID:J -Ljava/sql/BatchUpdateException;->serialVersionUID:J -Ljava/sql/DataTruncation;->serialVersionUID:J -Ljava/sql/Date;->serialVersionUID:J -Ljava/sql/SQLClientInfoException;->serialVersionUID:J -Ljava/sql/SQLDataException;->serialVersionUID:J -Ljava/sql/SQLException;->serialVersionUID:J -Ljava/sql/SQLFeatureNotSupportedException;->serialVersionUID:J -Ljava/sql/SQLIntegrityConstraintViolationException;->serialVersionUID:J -Ljava/sql/SQLInvalidAuthorizationSpecException;->serialVersionUID:J -Ljava/sql/SQLNonTransientConnectionException;->serialVersionUID:J -Ljava/sql/SQLNonTransientException;->serialVersionUID:J -Ljava/sql/SQLRecoverableException;->serialVersionUID:J -Ljava/sql/SQLSyntaxErrorException;->serialVersionUID:J -Ljava/sql/SQLTimeoutException;->serialVersionUID:J -Ljava/sql/SQLTransactionRollbackException;->serialVersionUID:J -Ljava/sql/SQLTransientConnectionException;->serialVersionUID:J -Ljava/sql/SQLTransientException;->serialVersionUID:J -Ljava/sql/SQLWarning;->serialVersionUID:J -Ljava/sql/Time;->serialVersionUID:J -Ljava/sql/Timestamp;->serialVersionUID:J -Ljava/text/AttributedCharacterIterator$Attribute;->serialVersionUID:J -Ljava/text/ChoiceFormat;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/text/ChoiceFormat;->serialVersionUID:J -Ljava/text/DateFormat$Field;->serialVersionUID:J -Ljava/text/DateFormat;->is24Hour:Ljava/lang/Boolean; -Ljava/text/DateFormat;->serialVersionUID:J -Ljava/text/DateFormatSymbols;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/text/DateFormatSymbols;->serialVersionUID:J -Ljava/text/DateFormatSymbols;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/text/DecimalFormat;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/text/DecimalFormat;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/text/DecimalFormat;->serialVersionUID:J -Ljava/text/DecimalFormat;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/text/DecimalFormatSymbols;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/text/DecimalFormatSymbols;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/text/DecimalFormatSymbols;->serialVersionUID:J -Ljava/text/DecimalFormatSymbols;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/text/Format$Field;->serialVersionUID:J -Ljava/text/Format;->serialVersionUID:J -Ljava/text/MessageFormat$Field;->serialVersionUID:J -Ljava/text/MessageFormat;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/text/MessageFormat;->serialVersionUID:J -Ljava/text/NumberFormat$Field;->serialVersionUID:J -Ljava/text/NumberFormat;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/text/NumberFormat;->serialVersionUID:J -Ljava/text/NumberFormat;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/text/ParseException;->serialVersionUID:J -Ljava/text/SimpleDateFormat;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/text/SimpleDateFormat;->serialVersionUID:J -Ljava/time/Clock$FixedClock;->serialVersionUID:J -Ljava/time/Clock$OffsetClock;->serialVersionUID:J -Ljava/time/Clock$SystemClock;->serialVersionUID:J -Ljava/time/Clock$TickClock;->serialVersionUID:J -Ljava/time/DateTimeException;->serialVersionUID:J -Ljava/time/Duration;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/Duration;->serialVersionUID:J -Ljava/time/Duration;->toSeconds()Ljava/math/BigDecimal; -Ljava/time/Duration;->writeReplace()Ljava/lang/Object; -Ljava/time/Instant;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/Instant;->serialVersionUID:J -Ljava/time/Instant;->writeReplace()Ljava/lang/Object; -Ljava/time/LocalDate;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/LocalDate;->serialVersionUID:J -Ljava/time/LocalDate;->writeReplace()Ljava/lang/Object; -Ljava/time/LocalDateTime;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/LocalDateTime;->serialVersionUID:J -Ljava/time/LocalDateTime;->writeReplace()Ljava/lang/Object; -Ljava/time/LocalTime;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/LocalTime;->serialVersionUID:J -Ljava/time/LocalTime;->writeReplace()Ljava/lang/Object; -Ljava/time/MonthDay;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/MonthDay;->serialVersionUID:J -Ljava/time/MonthDay;->writeReplace()Ljava/lang/Object; -Ljava/time/OffsetDateTime;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;)V -Ljava/time/OffsetDateTime;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/OffsetDateTime;->serialVersionUID:J -Ljava/time/OffsetDateTime;->writeReplace()Ljava/lang/Object; -Ljava/time/OffsetTime;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/OffsetTime;->serialVersionUID:J -Ljava/time/OffsetTime;->writeReplace()Ljava/lang/Object; -Ljava/time/Period;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/Period;->serialVersionUID:J -Ljava/time/Period;->writeReplace()Ljava/lang/Object; -Ljava/time/Year;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/Year;->serialVersionUID:J -Ljava/time/Year;->writeReplace()Ljava/lang/Object; -Ljava/time/YearMonth;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/YearMonth;->serialVersionUID:J -Ljava/time/YearMonth;->writeReplace()Ljava/lang/Object; -Ljava/time/ZoneId;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/ZoneId;->serialVersionUID:J -Ljava/time/ZoneId;->writeReplace()Ljava/lang/Object; -Ljava/time/ZoneOffset;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/ZoneOffset;->serialVersionUID:J -Ljava/time/ZoneOffset;->writeReplace()Ljava/lang/Object; -Ljava/time/ZonedDateTime;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/ZonedDateTime;->serialVersionUID:J -Ljava/time/ZonedDateTime;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/AbstractChronology;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/AbstractChronology;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/ChronoLocalDateImpl;->serialVersionUID:J -Ljava/time/chrono/HijrahChronology;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/HijrahChronology;->serialVersionUID:J -Ljava/time/chrono/HijrahChronology;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/HijrahDate;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/HijrahDate;->serialVersionUID:J -Ljava/time/chrono/HijrahDate;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/IsoChronology;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/IsoChronology;->serialVersionUID:J -Ljava/time/chrono/IsoChronology;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/JapaneseChronology;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/JapaneseChronology;->serialVersionUID:J -Ljava/time/chrono/JapaneseChronology;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/JapaneseDate;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/JapaneseDate;->serialVersionUID:J -Ljava/time/chrono/JapaneseDate;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/JapaneseEra;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/JapaneseEra;->serialVersionUID:J -Ljava/time/chrono/JapaneseEra;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/MinguoChronology;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/MinguoChronology;->serialVersionUID:J -Ljava/time/chrono/MinguoChronology;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/MinguoDate;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/MinguoDate;->serialVersionUID:J -Ljava/time/chrono/MinguoDate;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/ThaiBuddhistChronology;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/ThaiBuddhistChronology;->serialVersionUID:J -Ljava/time/chrono/ThaiBuddhistChronology;->writeReplace()Ljava/lang/Object; -Ljava/time/chrono/ThaiBuddhistDate;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/chrono/ThaiBuddhistDate;->serialVersionUID:J -Ljava/time/chrono/ThaiBuddhistDate;->writeReplace()Ljava/lang/Object; -Ljava/time/format/DateTimeParseException;->serialVersionUID:J -Ljava/time/temporal/JulianFields$Field;->serialVersionUID:J -Ljava/time/temporal/UnsupportedTemporalTypeException;->serialVersionUID:J -Ljava/time/temporal/ValueRange;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/temporal/ValueRange;->serialVersionUID:J -Ljava/time/temporal/WeekFields;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/temporal/WeekFields;->readResolve()Ljava/lang/Object; -Ljava/time/temporal/WeekFields;->serialVersionUID:J -Ljava/time/zone/ZoneOffsetTransition;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/zone/ZoneOffsetTransition;->serialVersionUID:J -Ljava/time/zone/ZoneOffsetTransition;->writeReplace()Ljava/lang/Object; -Ljava/time/zone/ZoneOffsetTransitionRule;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/zone/ZoneOffsetTransitionRule;->serialVersionUID:J -Ljava/time/zone/ZoneOffsetTransitionRule;->writeReplace()Ljava/lang/Object; -Ljava/time/zone/ZoneRules;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/time/zone/ZoneRules;->serialVersionUID:J -Ljava/time/zone/ZoneRules;->writeReplace()Ljava/lang/Object; -Ljava/time/zone/ZoneRulesException;->serialVersionUID:J -Ljava/util/AbstractMap$SimpleEntry;->serialVersionUID:J -Ljava/util/AbstractMap$SimpleImmutableEntry;->serialVersionUID:J -Ljava/util/ArrayDeque;->elements:[Ljava/lang/Object; -Ljava/util/ArrayDeque;->head:I -Ljava/util/ArrayDeque;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/ArrayDeque;->serialVersionUID:J -Ljava/util/ArrayDeque;->tail:I -Ljava/util/ArrayDeque;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/ArrayList$SubList;->parent:Ljava/util/AbstractList; -Ljava/util/ArrayList$SubList;->parentOffset:I -Ljava/util/ArrayList$SubList;->size:I -Ljava/util/ArrayList;->elementData:[Ljava/lang/Object; -Ljava/util/ArrayList;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/ArrayList;->serialVersionUID:J -Ljava/util/ArrayList;->size:I -Ljava/util/ArrayList;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Arrays$ArrayList;->a:[Ljava/lang/Object; -Ljava/util/Arrays$ArrayList;->serialVersionUID:J -Ljava/util/BitSet;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/BitSet;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/util/BitSet;->serialVersionUID:J -Ljava/util/BitSet;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Calendar;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/Calendar;->serialVersionUID:J -Ljava/util/Calendar;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Calendar;->zone:Ljava/util/TimeZone; -Ljava/util/Collections$AsLIFOQueue;->serialVersionUID:J -Ljava/util/Collections$CheckedCollection;->serialVersionUID:J -Ljava/util/Collections$CheckedList;->serialVersionUID:J -Ljava/util/Collections$CheckedMap;->serialVersionUID:J -Ljava/util/Collections$CheckedNavigableMap;->serialVersionUID:J -Ljava/util/Collections$CheckedNavigableSet;->serialVersionUID:J -Ljava/util/Collections$CheckedQueue;->serialVersionUID:J -Ljava/util/Collections$CheckedRandomAccessList;->serialVersionUID:J -Ljava/util/Collections$CheckedSet;->serialVersionUID:J -Ljava/util/Collections$CheckedSortedMap;->serialVersionUID:J -Ljava/util/Collections$CheckedSortedSet;->serialVersionUID:J -Ljava/util/Collections$CopiesList;->serialVersionUID:J -Ljava/util/Collections$EmptyList;-><init>()V -Ljava/util/Collections$EmptyList;->readResolve()Ljava/lang/Object; -Ljava/util/Collections$EmptyList;->serialVersionUID:J -Ljava/util/Collections$EmptyMap;->readResolve()Ljava/lang/Object; -Ljava/util/Collections$EmptyMap;->serialVersionUID:J -Ljava/util/Collections$EmptySet;->readResolve()Ljava/lang/Object; -Ljava/util/Collections$EmptySet;->serialVersionUID:J -Ljava/util/Collections$ReverseComparator2;->serialVersionUID:J -Ljava/util/Collections$ReverseComparator;->readResolve()Ljava/lang/Object; -Ljava/util/Collections$ReverseComparator;->serialVersionUID:J -Ljava/util/Collections$SetFromMap;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/Collections$SetFromMap;->serialVersionUID:J -Ljava/util/Collections$SingletonList;->serialVersionUID:J -Ljava/util/Collections$SingletonMap;->serialVersionUID:J -Ljava/util/Collections$SingletonSet;->serialVersionUID:J -Ljava/util/Collections$SynchronizedCollection;->c:Ljava/util/Collection; -Ljava/util/Collections$SynchronizedCollection;->serialVersionUID:J -Ljava/util/Collections$SynchronizedCollection;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Collections$SynchronizedList;->readResolve()Ljava/lang/Object; -Ljava/util/Collections$SynchronizedList;->serialVersionUID:J -Ljava/util/Collections$SynchronizedMap;->m:Ljava/util/Map; -Ljava/util/Collections$SynchronizedMap;->serialVersionUID:J -Ljava/util/Collections$SynchronizedMap;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Collections$SynchronizedNavigableMap;->serialVersionUID:J -Ljava/util/Collections$SynchronizedNavigableSet;->serialVersionUID:J -Ljava/util/Collections$SynchronizedRandomAccessList;->serialVersionUID:J -Ljava/util/Collections$SynchronizedRandomAccessList;->writeReplace()Ljava/lang/Object; -Ljava/util/Collections$SynchronizedSet;->serialVersionUID:J -Ljava/util/Collections$SynchronizedSortedMap;->serialVersionUID:J -Ljava/util/Collections$SynchronizedSortedSet;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableCollection;->c:Ljava/util/Collection; -Ljava/util/Collections$UnmodifiableCollection;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableList;->readResolve()Ljava/lang/Object; -Ljava/util/Collections$UnmodifiableList;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableMap;->m:Ljava/util/Map; -Ljava/util/Collections$UnmodifiableMap;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;->readResolve()Ljava/lang/Object; -Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableNavigableMap;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet;->readResolve()Ljava/lang/Object; -Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableNavigableSet;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableRandomAccessList;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableRandomAccessList;->writeReplace()Ljava/lang/Object; -Ljava/util/Collections$UnmodifiableSet;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableSortedMap;->serialVersionUID:J -Ljava/util/Collections$UnmodifiableSortedSet;->serialVersionUID:J -Ljava/util/ConcurrentModificationException;->serialVersionUID:J -Ljava/util/Currency;->readResolve()Ljava/lang/Object; -Ljava/util/Currency;->serialVersionUID:J -Ljava/util/Date;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/Date;->serialVersionUID:J -Ljava/util/Date;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/DuplicateFormatFlagsException;->serialVersionUID:J -Ljava/util/EmptyStackException;->serialVersionUID:J -Ljava/util/EnumMap;->keyType:Ljava/lang/Class; -Ljava/util/EnumMap;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/EnumMap;->serialVersionUID:J -Ljava/util/EnumMap;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/EnumSet$SerializationProxy;->readResolve()Ljava/lang/Object; -Ljava/util/EnumSet$SerializationProxy;->serialVersionUID:J -Ljava/util/EnumSet;->elementType:Ljava/lang/Class; -Ljava/util/EnumSet;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/EnumSet;->writeReplace()Ljava/lang/Object; -Ljava/util/EventObject;->serialVersionUID:J -Ljava/util/FormatFlagsConversionMismatchException;->serialVersionUID:J -Ljava/util/FormatterClosedException;->serialVersionUID:J -Ljava/util/GregorianCalendar;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/GregorianCalendar;->serialVersionUID:J -Ljava/util/HashMap$HashIterator;->hasNext()Z -Ljava/util/HashMap;->modCount:I -Ljava/util/HashMap;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/HashMap;->serialVersionUID:J -Ljava/util/HashMap;->table:[Ljava/util/HashMap$Node; -Ljava/util/HashMap;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/HashSet;->map:Ljava/util/HashMap; -Ljava/util/HashSet;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/HashSet;->serialVersionUID:J -Ljava/util/HashSet;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Hashtable;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/Hashtable;->serialVersionUID:J -Ljava/util/Hashtable;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/IdentityHashMap;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/IdentityHashMap;->serialVersionUID:J -Ljava/util/IdentityHashMap;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/IllegalFormatCodePointException;->serialVersionUID:J -Ljava/util/IllegalFormatConversionException;->serialVersionUID:J -Ljava/util/IllegalFormatException;->serialVersionUID:J -Ljava/util/IllegalFormatFlagsException;->serialVersionUID:J -Ljava/util/IllegalFormatPrecisionException;->serialVersionUID:J -Ljava/util/IllegalFormatWidthException;->serialVersionUID:J -Ljava/util/IllformedLocaleException;->serialVersionUID:J -Ljava/util/InputMismatchException;->serialVersionUID:J -Ljava/util/InvalidPropertiesFormatException;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/InvalidPropertiesFormatException;->serialVersionUID:J -Ljava/util/InvalidPropertiesFormatException;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/LinkedHashMap$LinkedHashIterator;->hasNext()Z -Ljava/util/LinkedHashMap;->eldest()Ljava/util/Map$Entry; -Ljava/util/LinkedHashMap;->serialVersionUID:J -Ljava/util/LinkedHashSet;->serialVersionUID:J -Ljava/util/LinkedList;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/LinkedList;->serialVersionUID:J -Ljava/util/LinkedList;->size:I -Ljava/util/LinkedList;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Locale;->createConstant(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale; -Ljava/util/Locale;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/Locale;->readResolve()Ljava/lang/Object; -Ljava/util/Locale;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/util/Locale;->serialVersionUID:J -Ljava/util/Locale;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/MissingFormatArgumentException;->serialVersionUID:J -Ljava/util/MissingFormatWidthException;->serialVersionUID:J -Ljava/util/MissingResourceException;->serialVersionUID:J -Ljava/util/NoSuchElementException;->serialVersionUID:J -Ljava/util/PriorityQueue;->modCount:I -Ljava/util/PriorityQueue;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/PriorityQueue;->serialVersionUID:J -Ljava/util/PriorityQueue;->size:I -Ljava/util/PriorityQueue;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Properties;->serialVersionUID:J -Ljava/util/Random;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/Random;->seedUniquifier()J -Ljava/util/Random;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/util/Random;->serialVersionUID:J -Ljava/util/Random;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/ServiceConfigurationError;->serialVersionUID:J -Ljava/util/SimpleTimeZone;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/SimpleTimeZone;->serialVersionUID:J -Ljava/util/SimpleTimeZone;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/Stack;->serialVersionUID:J -Ljava/util/TimeZone;->serialVersionUID:J -Ljava/util/TooManyListenersException;->serialVersionUID:J -Ljava/util/TreeMap$AscendingSubMap;->serialVersionUID:J -Ljava/util/TreeMap$DescendingSubMap;->serialVersionUID:J -Ljava/util/TreeMap$NavigableSubMap;->serialVersionUID:J -Ljava/util/TreeMap$SubMap;->readResolve()Ljava/lang/Object; -Ljava/util/TreeMap$SubMap;->serialVersionUID:J -Ljava/util/TreeMap;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/TreeMap;->serialVersionUID:J -Ljava/util/TreeMap;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/TreeSet;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/TreeSet;->serialVersionUID:J -Ljava/util/TreeSet;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/UUID;->leastSigBits:J -Ljava/util/UUID;->mostSigBits:J -Ljava/util/UUID;->serialVersionUID:J -Ljava/util/UnknownFormatConversionException;->serialVersionUID:J -Ljava/util/UnknownFormatFlagsException;->serialVersionUID:J -Ljava/util/Vector;->elementData(I)Ljava/lang/Object; -Ljava/util/Vector;->serialVersionUID:J -Ljava/util/Vector;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/ArrayBlockingQueue;->serialVersionUID:J -Ljava/util/concurrent/BrokenBarrierException;->serialVersionUID:J -Ljava/util/concurrent/CancellationException;->serialVersionUID:J -Ljava/util/concurrent/CompletionException;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasMoreElements()Z -Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentHashMap$KeySetView;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentHashMap$Segment;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentHashMap;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/ConcurrentHashMap;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/util/concurrent/ConcurrentHashMap;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentHashMap;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentLinkedDeque;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/ConcurrentLinkedQueue;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/ConcurrentLinkedQueue;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentLinkedQueue;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentSkipListMap;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/ConcurrentSkipListMap;->serialVersionUID:J -Ljava/util/concurrent/ConcurrentSkipListMap;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/ConcurrentSkipListSet;->serialVersionUID:J -Ljava/util/concurrent/CopyOnWriteArrayList;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/CopyOnWriteArrayList;->serialVersionUID:J -Ljava/util/concurrent/CopyOnWriteArrayList;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/CopyOnWriteArraySet;->al:Ljava/util/concurrent/CopyOnWriteArrayList; -Ljava/util/concurrent/CopyOnWriteArraySet;->serialVersionUID:J -Ljava/util/concurrent/CountDownLatch$Sync;->serialVersionUID:J -Ljava/util/concurrent/CountedCompleter;->serialVersionUID:J -Ljava/util/concurrent/ExecutionException;->serialVersionUID:J -Ljava/util/concurrent/Executors$RunnableAdapter;->task:Ljava/lang/Runnable; -Ljava/util/concurrent/ForkJoinPool$AuxState;->serialVersionUID:J -Ljava/util/concurrent/ForkJoinPool$EmptyTask;->serialVersionUID:J -Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->serialVersionUID:J -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->serialVersionUID:J -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->serialVersionUID:J -Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->serialVersionUID:J -Ljava/util/concurrent/ForkJoinTask;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/ForkJoinTask;->serialVersionUID:J -Ljava/util/concurrent/ForkJoinTask;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/FutureTask;->EXCEPTIONAL:I -Ljava/util/concurrent/FutureTask;->callable:Ljava/util/concurrent/Callable; -Ljava/util/concurrent/FutureTask;->outcome:Ljava/lang/Object; -Ljava/util/concurrent/FutureTask;->state:I -Ljava/util/concurrent/LinkedBlockingDeque;->first:Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque;->lock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/LinkedBlockingDeque;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/LinkedBlockingDeque;->serialVersionUID:J -Ljava/util/concurrent/LinkedBlockingDeque;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/LinkedBlockingQueue;->capacity:I -Ljava/util/concurrent/LinkedBlockingQueue;->head:Ljava/util/concurrent/LinkedBlockingQueue$Node; -Ljava/util/concurrent/LinkedBlockingQueue;->putLock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/LinkedBlockingQueue;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/LinkedBlockingQueue;->serialVersionUID:J -Ljava/util/concurrent/LinkedBlockingQueue;->takeLock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/LinkedBlockingQueue;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/LinkedTransferQueue$Node;->serialVersionUID:J -Ljava/util/concurrent/LinkedTransferQueue;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/LinkedTransferQueue;->serialVersionUID:J -Ljava/util/concurrent/LinkedTransferQueue;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/PriorityBlockingQueue;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/PriorityBlockingQueue;->serialVersionUID:J -Ljava/util/concurrent/PriorityBlockingQueue;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/RecursiveAction;->serialVersionUID:J -Ljava/util/concurrent/RecursiveTask;->serialVersionUID:J -Ljava/util/concurrent/RejectedExecutionException;->serialVersionUID:J -Ljava/util/concurrent/Semaphore$FairSync;->serialVersionUID:J -Ljava/util/concurrent/Semaphore$NonfairSync;->serialVersionUID:J -Ljava/util/concurrent/Semaphore$Sync;->serialVersionUID:J -Ljava/util/concurrent/Semaphore;->serialVersionUID:J -Ljava/util/concurrent/SynchronousQueue$FifoWaitQueue;->serialVersionUID:J -Ljava/util/concurrent/SynchronousQueue$LifoWaitQueue;->serialVersionUID:J -Ljava/util/concurrent/SynchronousQueue;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/SynchronousQueue;->serialVersionUID:J -Ljava/util/concurrent/SynchronousQueue;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/ThreadLocalRandom;->readResolve()Ljava/lang/Object; -Ljava/util/concurrent/ThreadLocalRandom;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljava/util/concurrent/ThreadLocalRandom;->serialVersionUID:J -Ljava/util/concurrent/ThreadLocalRandom;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->serialVersionUID:J -Ljava/util/concurrent/ThreadPoolExecutor;->allowCoreThreadTimeOut:Z -Ljava/util/concurrent/TimeoutException;->serialVersionUID:J -Ljava/util/concurrent/atomic/AtomicBoolean;->serialVersionUID:J -Ljava/util/concurrent/atomic/AtomicInteger;->serialVersionUID:J -Ljava/util/concurrent/atomic/AtomicInteger;->value:I -Ljava/util/concurrent/atomic/AtomicIntegerArray;->serialVersionUID:J -Ljava/util/concurrent/atomic/AtomicLong;->serialVersionUID:J -Ljava/util/concurrent/atomic/AtomicLongArray;->serialVersionUID:J -Ljava/util/concurrent/atomic/AtomicReference;->serialVersionUID:J -Ljava/util/concurrent/atomic/AtomicReferenceArray;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/atomic/AtomicReferenceArray;->serialVersionUID:J -Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->readResolve()Ljava/lang/Object; -Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->serialVersionUID:J -Ljava/util/concurrent/atomic/DoubleAccumulator;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/atomic/DoubleAccumulator;->serialVersionUID:J -Ljava/util/concurrent/atomic/DoubleAccumulator;->writeReplace()Ljava/lang/Object; -Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;->readResolve()Ljava/lang/Object; -Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;->serialVersionUID:J -Ljava/util/concurrent/atomic/DoubleAdder;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/atomic/DoubleAdder;->serialVersionUID:J -Ljava/util/concurrent/atomic/DoubleAdder;->writeReplace()Ljava/lang/Object; -Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->readResolve()Ljava/lang/Object; -Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->serialVersionUID:J -Ljava/util/concurrent/atomic/LongAccumulator;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/atomic/LongAccumulator;->serialVersionUID:J -Ljava/util/concurrent/atomic/LongAccumulator;->writeReplace()Ljava/lang/Object; -Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;->readResolve()Ljava/lang/Object; -Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;->serialVersionUID:J -Ljava/util/concurrent/atomic/LongAdder;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/atomic/LongAdder;->serialVersionUID:J -Ljava/util/concurrent/atomic/LongAdder;->writeReplace()Ljava/lang/Object; -Ljava/util/concurrent/locks/AbstractOwnableSynchronizer;->serialVersionUID:J -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->serialVersionUID:J -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->serialVersionUID:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->serialVersionUID:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantLock$FairSync;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantLock$Sync;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/locks/ReentrantLock$Sync;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantLock;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->serialVersionUID:J -Ljava/util/concurrent/locks/ReentrantReadWriteLock;->serialVersionUID:J -Ljava/util/concurrent/locks/StampedLock;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/concurrent/locks/StampedLock;->serialVersionUID:J -Ljava/util/jar/JarException;->serialVersionUID:J -Ljava/util/jar/JarFile;->manifest:Ljava/util/jar/Manifest; -Ljava/util/jar/JarVerifier$VerifierCodeSource;->serialVersionUID:J -Ljava/util/logging/Level;->readResolve()Ljava/lang/Object; -Ljava/util/logging/Level;->serialVersionUID:J -Ljava/util/logging/LogRecord;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/logging/LogRecord;->serialVersionUID:J -Ljava/util/logging/LogRecord;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/prefs/AbstractPreferences$NodeAddedEvent;->serialVersionUID:J -Ljava/util/prefs/AbstractPreferences$NodeRemovedEvent;->serialVersionUID:J -Ljava/util/prefs/BackingStoreException;->serialVersionUID:J -Ljava/util/prefs/InvalidPreferencesFormatException;->serialVersionUID:J -Ljava/util/prefs/NodeChangeEvent;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/prefs/NodeChangeEvent;->serialVersionUID:J -Ljava/util/prefs/NodeChangeEvent;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/prefs/PreferenceChangeEvent;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/prefs/PreferenceChangeEvent;->serialVersionUID:J -Ljava/util/prefs/PreferenceChangeEvent;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljava/util/regex/Matcher;->appendPos:I -Ljava/util/regex/Pattern;->readObject(Ljava/io/ObjectInputStream;)V -Ljava/util/regex/Pattern;->serialVersionUID:J -Ljava/util/regex/PatternSyntaxException;->serialVersionUID:J -Ljava/util/zip/DataFormatException;->serialVersionUID:J -Ljava/util/zip/Deflater;->buf:[B -Ljava/util/zip/Deflater;->finish:Z -Ljava/util/zip/Deflater;->finished:Z -Ljava/util/zip/Deflater;->len:I -Ljava/util/zip/Deflater;->level:I -Ljava/util/zip/Deflater;->off:I -Ljava/util/zip/Deflater;->setParams:Z -Ljava/util/zip/Deflater;->strategy:I -Ljava/util/zip/Inflater;->buf:[B -Ljava/util/zip/Inflater;->finished:Z -Ljava/util/zip/Inflater;->len:I -Ljava/util/zip/Inflater;->needDict:Z -Ljava/util/zip/Inflater;->off:I -Ljava/util/zip/ZipEntry;-><init>(Ljava/lang/String;Ljava/lang/String;JJJII[BJ)V -Ljava/util/zip/ZipError;->serialVersionUID:J -Ljava/util/zip/ZipException;->serialVersionUID:J -Ljava/util/zip/ZipFile;->jzfile:J -Ljavax/crypto/AEADBadTagException;->serialVersionUID:J -Ljavax/crypto/BadPaddingException;->serialVersionUID:J -Ljavax/crypto/ExemptionMechanismException;->serialVersionUID:J -Ljavax/crypto/IllegalBlockSizeException;->serialVersionUID:J -Ljavax/crypto/NoSuchPaddingException;->serialVersionUID:J -Ljavax/crypto/SealedObject;->readObject(Ljava/io/ObjectInputStream;)V -Ljavax/crypto/SealedObject;->serialVersionUID:J -Ljavax/crypto/ShortBufferException;->serialVersionUID:J -Ljavax/crypto/spec/SecretKeySpec;->serialVersionUID:J -Ljavax/net/ssl/HandshakeCompletedEvent;->serialVersionUID:J -Ljavax/net/ssl/SSLException;->serialVersionUID:J -Ljavax/net/ssl/SSLHandshakeException;->serialVersionUID:J -Ljavax/net/ssl/SSLKeyException;->serialVersionUID:J -Ljavax/net/ssl/SSLPeerUnverifiedException;->serialVersionUID:J -Ljavax/net/ssl/SSLProtocolException;->serialVersionUID:J -Ljavax/net/ssl/SSLServerSocketFactory;->defaultServerSocketFactory:Ljavax/net/ssl/SSLServerSocketFactory; -Ljavax/net/ssl/SSLSessionBindingEvent;->serialVersionUID:J -Ljavax/net/ssl/SSLSocketFactory;->defaultSocketFactory:Ljavax/net/ssl/SSLSocketFactory; -Ljavax/security/auth/DestroyFailedException;->serialVersionUID:J -Ljavax/security/auth/Subject$SecureSet;->readObject(Ljava/io/ObjectInputStream;)V -Ljavax/security/auth/Subject$SecureSet;->serialPersistentFields:[Ljava/io/ObjectStreamField; -Ljavax/security/auth/Subject$SecureSet;->serialVersionUID:J -Ljavax/security/auth/Subject$SecureSet;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljavax/security/auth/Subject;->readObject(Ljava/io/ObjectInputStream;)V -Ljavax/security/auth/Subject;->serialVersionUID:J -Ljavax/security/auth/Subject;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljavax/security/auth/callback/PasswordCallback;->serialVersionUID:J -Ljavax/security/auth/callback/UnsupportedCallbackException;->serialVersionUID:J -Ljavax/security/auth/login/LoginException;->serialVersionUID:J -Ljavax/security/auth/x500/X500Principal;->readObject(Ljava/io/ObjectInputStream;)V -Ljavax/security/auth/x500/X500Principal;->serialVersionUID:J -Ljavax/security/auth/x500/X500Principal;->writeObject(Ljava/io/ObjectOutputStream;)V -Ljavax/security/cert/CertificateEncodingException;->serialVersionUID:J -Ljavax/security/cert/CertificateException;->serialVersionUID:J -Ljavax/security/cert/CertificateExpiredException;->serialVersionUID:J -Ljavax/security/cert/CertificateNotYetValidException;->serialVersionUID:J -Ljavax/security/cert/CertificateParsingException;->serialVersionUID:J -Ljavax/sql/ConnectionEvent;->serialVersionUID:J -Ljavax/sql/RowSetEvent;->serialVersionUID:J -Ljavax/xml/datatype/DatatypeConfigurationException;->readObject(Ljava/io/ObjectInputStream;)V -Ljavax/xml/datatype/DatatypeConfigurationException;->serialVersionUID:J -Ljavax/xml/namespace/QName;->readObject(Ljava/io/ObjectInputStream;)V -Ljavax/xml/namespace/QName;->serialVersionUID:J -Ljavax/xml/transform/TransformerException;->serialVersionUID:J -Ljavax/xml/xpath/XPathException;->serialVersionUID:J -Ljavax/xml/xpath/XPathExpressionException;->serialVersionUID:J -Ljavax/xml/xpath/XPathFactoryConfigurationException;->serialVersionUID:J -Ljavax/xml/xpath/XPathFunctionException;->serialVersionUID:J -Llibcore/util/BasicLruCache;->map:Ljava/util/LinkedHashMap; -Llibcore/util/ZoneInfo;->mTransitions:[J -Llibcore/util/ZoneInfo;->readObject(Ljava/io/ObjectInputStream;)V -Llibcore/util/ZoneInfo;->serialVersionUID:J -Lorg/apache/http/conn/ConnectTimeoutException;->serialVersionUID:J -Lorg/apache/http/conn/ssl/SSLSocketFactory;-><init>()V -Lorg/apache/http/conn/ssl/SSLSocketFactory;-><init>(Ljavax/net/ssl/SSLSocketFactory;)V -Lorg/ccil/cowan/tagsoup/AttributesImpl;->data:[Ljava/lang/String; -Lorg/ccil/cowan/tagsoup/AttributesImpl;->length:I -Lorg/json/JSONArray;->values:Ljava/util/List; -Lorg/json/JSONObject;->append(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject; -Lorg/json/JSONObject;->keySet()Ljava/util/Set; -Lorg/json/JSONObject;->writeTo(Lorg/json/JSONStringer;)V -Lorg/w3c/dom/traversal/NodeIterator;->nextNode()Lorg/w3c/dom/Node; -Lsun/misc/Unsafe;->theUnsafe:Lsun/misc/Unsafe; -Lsun/security/pkcs/ParsingException;->serialVersionUID:J -Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;->serialVersionUID:J -Lsun/security/util/ObjectIdentifier;->readObject(Ljava/io/ObjectInputStream;)V -Lsun/security/util/ObjectIdentifier;->serialVersionUID:J -Lsun/security/util/ObjectIdentifier;->writeObject(Ljava/io/ObjectOutputStream;)V -Lsun/security/x509/AlgorithmId;->serialVersionUID:J -Lsun/util/locale/LocaleSyntaxException;->serialVersionUID:J diff --git a/config/preloaded-classes b/config/preloaded-classes index 63c583f9264c..50e97c53fe83 100644 --- a/config/preloaded-classes +++ b/config/preloaded-classes @@ -1436,12 +1436,6 @@ android.hardware.usb.UsbDevice$1 android.hardware.usb.UsbDeviceConnection android.hardware.usb.UsbManager android.hardware.usb.UsbRequest -android.hidl.base.V1_0.DebugInfo -android.hidl.base.V1_0.IBase -android.hidl.manager.V1_0.IServiceManager -android.hidl.manager.V1_0.IServiceManager$Proxy -android.hidl.manager.V1_0.IServiceNotification -android.hidl.manager.V1_0.IServiceNotification$Stub android.icu.impl.BMPSet android.icu.impl.CacheBase android.icu.impl.CacheValue diff --git a/core/java/android/app/AlarmManager.java b/core/java/android/app/AlarmManager.java index 92fbd5927244..676baceffb87 100644 --- a/core/java/android/app/AlarmManager.java +++ b/core/java/android/app/AlarmManager.java @@ -29,7 +29,6 @@ import android.os.Handler; import android.os.Parcel; import android.os.Parcelable; import android.os.RemoteException; -import android.os.UserHandle; import android.os.WorkSource; import android.text.TextUtils; import android.util.ArrayMap; @@ -1150,7 +1149,9 @@ public class AlarmManager { public void writeToProto(ProtoOutputStream proto, long fieldId) { final long token = proto.start(fieldId); proto.write(AlarmClockInfoProto.TRIGGER_TIME_MS, mTriggerTime); - mShowIntent.writeToProto(proto, AlarmClockInfoProto.SHOW_INTENT); + if (mShowIntent != null) { + mShowIntent.writeToProto(proto, AlarmClockInfoProto.SHOW_INTENT); + } proto.end(token); } } diff --git a/core/java/android/appwidget/AppWidgetProviderInfo.java b/core/java/android/appwidget/AppWidgetProviderInfo.java index 53315cce82dd..d148afb32b02 100644 --- a/core/java/android/appwidget/AppWidgetProviderInfo.java +++ b/core/java/android/appwidget/AppWidgetProviderInfo.java @@ -400,7 +400,7 @@ public class AppWidgetProviderInfo implements Parcelable { that.initialLayout = this.initialLayout; that.initialKeyguardLayout = this.initialKeyguardLayout; that.configure = this.configure == null ? null : this.configure.clone(); - that.label = this.label == null ? null : this.label.substring(0); + that.label = this.label; that.icon = this.icon; that.previewImage = this.previewImage; that.autoAdvanceViewId = this.autoAdvanceViewId; diff --git a/core/java/android/content/pm/AndroidHidlUpdater.java b/core/java/android/content/pm/AndroidHidlUpdater.java new file mode 100644 index 000000000000..69cc94ffef55 --- /dev/null +++ b/core/java/android/content/pm/AndroidHidlUpdater.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2018 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 static android.content.pm.SharedLibraryNames.ANDROID_HIDL_BASE; +import static android.content.pm.SharedLibraryNames.ANDROID_HIDL_MANAGER; + +import android.content.pm.PackageParser.Package; +import android.os.Build; + +import com.android.internal.annotations.VisibleForTesting; + +/** + * Updates a package to ensure that if it targets <= P that the android.hidl.base-V1.0-java + * and android.hidl.manager-V1.0-java libraries are included by default. + * + * @hide + */ +@VisibleForTesting +public class AndroidHidlUpdater extends PackageSharedLibraryUpdater { + + @Override + public void updatePackage(Package pkg) { + // This was the default <= P and is maintained for backwards compatibility. + if (pkg.applicationInfo.targetSdkVersion <= Build.VERSION_CODES.P) { + prefixRequiredLibrary(pkg, ANDROID_HIDL_BASE); + prefixRequiredLibrary(pkg, ANDROID_HIDL_MANAGER); + } + } +} diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index d2611563d0aa..7cdae22061f1 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -621,6 +621,13 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { */ public static final int PRIVATE_FLAG_SIGNED_WITH_PLATFORM_KEY = 1 << 20; + /** + * Indicates whether this package requires access to non-SDK APIs. + * Only system apps and tests are allowed to use this property. + * @hide + */ + public static final int PRIVATE_FLAG_USES_NON_SDK_API = 1 << 22; + /** @hide */ @IntDef(flag = true, prefix = { "PRIVATE_FLAG_" }, value = { PRIVATE_FLAG_ACTIVITIES_RESIZE_MODE_RESIZEABLE, @@ -1276,6 +1283,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { pw.println(prefix + "category=" + category); } pw.println(prefix + "HiddenApiEnforcementPolicy=" + getHiddenApiEnforcementPolicy()); + pw.println(prefix + "usesNonSdkApi=" + usesNonSdkApi()); } super.dumpBack(pw, prefix); } @@ -1697,9 +1705,21 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { return SystemConfig.getInstance().getHiddenApiWhitelistedApps().contains(packageName); } + /** + * @hide + */ + public boolean usesNonSdkApi() { + return (privateFlags & PRIVATE_FLAG_USES_NON_SDK_API) != 0; + } + private boolean isAllowedToUseHiddenApis() { - return isSignedWithPlatformKey() - || (isPackageWhitelistedForHiddenApis() && (isSystemApp() || isUpdatedSystemApp())); + if (isSignedWithPlatformKey()) { + return true; + } else if (isSystemApp() || isUpdatedSystemApp()) { + return usesNonSdkApi() || isPackageWhitelistedForHiddenApis(); + } else { + return false; + } } /** diff --git a/core/java/android/content/pm/PackageBackwardCompatibility.java b/core/java/android/content/pm/PackageBackwardCompatibility.java index a16f81b11ae6..03eefedd2b30 100644 --- a/core/java/android/content/pm/PackageBackwardCompatibility.java +++ b/core/java/android/content/pm/PackageBackwardCompatibility.java @@ -53,6 +53,8 @@ public class PackageBackwardCompatibility extends PackageSharedLibraryUpdater { "android.content.pm.OrgApacheHttpLegacyUpdater", RemoveUnnecessaryOrgApacheHttpLegacyLibrary::new); + packageUpdaters.add(new AndroidHidlUpdater()); + // Add this before adding AndroidTestBaseUpdater so that android.test.base comes before // android.test.mock. packageUpdaters.add(new AndroidTestRunnerSplitUpdater()); diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 89a72c96ec64..7eefe552149b 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -3580,6 +3580,11 @@ public class PackageParser { ai.appComponentFactory = buildClassName(ai.packageName, factory, outError); } + if (sa.getBoolean( + com.android.internal.R.styleable.AndroidManifestApplication_usesNonSdkApi, false)) { + ai.privateFlags |= ApplicationInfo.PRIVATE_FLAG_USES_NON_SDK_API; + } + if (outError[0] == null) { CharSequence pname; if (owner.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.FROYO) { diff --git a/core/java/android/content/pm/SharedLibraryNames.java b/core/java/android/content/pm/SharedLibraryNames.java index 83e86636424a..387d29e81dfc 100644 --- a/core/java/android/content/pm/SharedLibraryNames.java +++ b/core/java/android/content/pm/SharedLibraryNames.java @@ -22,6 +22,10 @@ package android.content.pm; */ public class SharedLibraryNames { + static final String ANDROID_HIDL_BASE = "android.hidl.base-V1.0-java"; + + static final String ANDROID_HIDL_MANAGER = "android.hidl.manager-V1.0-java"; + static final String ANDROID_TEST_BASE = "android.test.base"; static final String ANDROID_TEST_MOCK = "android.test.mock"; diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index f7aea978f5d1..57ec17842ff1 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -1096,7 +1096,9 @@ public final class Configuration implements Parcelable, Comparable<Configuration protoOutputStream.write(FONT_SCALE, fontScale); protoOutputStream.write(MCC, mcc); protoOutputStream.write(MNC, mnc); - mLocaleList.writeToProto(protoOutputStream, LOCALES); + if (mLocaleList != null) { + mLocaleList.writeToProto(protoOutputStream, LOCALES); + } protoOutputStream.write(SCREEN_LAYOUT, screenLayout); protoOutputStream.write(COLOR_MODE, colorMode); protoOutputStream.write(TOUCHSCREEN, touchscreen); @@ -1111,7 +1113,9 @@ public final class Configuration implements Parcelable, Comparable<Configuration protoOutputStream.write(SCREEN_HEIGHT_DP, screenHeightDp); protoOutputStream.write(SMALLEST_SCREEN_WIDTH_DP, smallestScreenWidthDp); protoOutputStream.write(DENSITY_DPI, densityDpi); - windowConfiguration.writeToProto(protoOutputStream, WINDOW_CONFIGURATION); + if (windowConfiguration != null) { + windowConfiguration.writeToProto(protoOutputStream, WINDOW_CONFIGURATION); + } protoOutputStream.end(token); } diff --git a/core/java/android/hardware/Camera.java b/core/java/android/hardware/Camera.java index d8cdf60ad850..8e96f56e8cd3 100644 --- a/core/java/android/hardware/Camera.java +++ b/core/java/android/hardware/Camera.java @@ -575,9 +575,7 @@ public class Camera { /** * An empty Camera for testing purpose. */ - Camera() { - initAppOps(); - } + Camera() {} private void initAppOps() { IBinder b = ServiceManager.getService(Context.APP_OPS_SERVICE); diff --git a/core/java/android/hardware/OWNERS b/core/java/android/hardware/OWNERS index b8fea556e4c5..29a339a7d286 100644 --- a/core/java/android/hardware/OWNERS +++ b/core/java/android/hardware/OWNERS @@ -1,7 +1,2 @@ # Camera -per-file *Camera* = cychen@google.com -per-file *Camera* = epeev@google.com -per-file *Camera* = etalvala@google.com -per-file *Camera* = shuzhenwang@google.com -per-file *Camera* = yinchiayeh@google.com -per-file *Camera* = zhijunhe@google.com +per-file *Camera* = cychen@google.com,epeev@google.com,etalvala@google.com,shuzhenwang@google.com,yinchiayeh@google.com,zhijunhe@google.com diff --git a/core/java/android/hardware/camera2/CameraCharacteristics.java b/core/java/android/hardware/camera2/CameraCharacteristics.java index c3a57070c440..35584ae21869 100644 --- a/core/java/android/hardware/camera2/CameraCharacteristics.java +++ b/core/java/android/hardware/camera2/CameraCharacteristics.java @@ -1255,7 +1255,9 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>If this device is the largest or only camera device with a given facing, then this * position will be <code>(0, 0, 0)</code>; a camera device with a lens optical center located 3 cm * from the main sensor along the +X axis (to the right from the user's perspective) will - * report <code>(0.03, 0, 0)</code>.</p> + * report <code>(0.03, 0, 0)</code>. Note that this means that, for many computer vision + * applications, the position needs to be negated to convert it to a translation from the + * camera to the origin.</p> * <p>To transform a pixel coordinates between two cameras facing the same direction, first * the source camera {@link CameraCharacteristics#LENS_DISTORTION android.lens.distortion} must be corrected for. Then the source * camera {@link CameraCharacteristics#LENS_INTRINSIC_CALIBRATION android.lens.intrinsicCalibration} needs to be applied, followed by the @@ -1267,7 +1269,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <p>To compare this against a real image from the destination camera, the destination camera * image then needs to be corrected for radial distortion before comparison or sampling.</p> * <p>When {@link CameraCharacteristics#LENS_POSE_REFERENCE android.lens.poseReference} is GYROSCOPE, then this position is relative to - * the center of the primary gyroscope on the device.</p> + * the center of the primary gyroscope on the device. The axis definitions are the same as + * with PRIMARY_CAMERA.</p> * <p><b>Units</b>: Meters</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @@ -1299,13 +1302,15 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * </code></pre> * <p>which can then be combined with the camera pose rotation * <code>R</code> and translation <code>t</code> ({@link CameraCharacteristics#LENS_POSE_ROTATION android.lens.poseRotation} and - * {@link CameraCharacteristics#LENS_POSE_TRANSLATION android.lens.poseTranslation}, respective) to calculate the + * {@link CameraCharacteristics#LENS_POSE_TRANSLATION android.lens.poseTranslation}, respectively) to calculate the * complete transform from world coordinates to pixel * coordinates:</p> - * <pre><code>P = [ K 0 * [ R t - * 0 1 ] 0 1 ] + * <pre><code>P = [ K 0 * [ R -Rt + * 0 1 ] 0 1 ] * </code></pre> - * <p>and with <code>p_w</code> being a point in the world coordinate system + * <p>(Note the negation of poseTranslation when mapping from camera + * to world coordinates, and multiplication by the rotation).</p> + * <p>With <code>p_w</code> being a point in the world coordinate system * and <code>p_s</code> being a point in the camera active pixel array * coordinate system, and with the mapping including the * homogeneous division by z:</p> @@ -1327,6 +1332,13 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * activeArraySize rectangle), to determine the final pixel * coordinate of the world point for processed (non-RAW) * output buffers.</p> + * <p>For camera devices, the center of pixel <code>(x,y)</code> is located at + * coordinate <code>(x + 0.5, y + 0.5)</code>. So on a device with a + * precorrection active array of size <code>(10,10)</code>, the valid pixel + * indices go from <code>(0,0)-(9,9)</code>, and an perfectly-built camera would + * have an optical center at the exact center of the pixel grid, at + * coordinates <code>(5.0, 5.0)</code>, which is the top-left corner of pixel + * <code>(5,5)</code>.</p> * <p><b>Units</b>: * Pixels in the * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} @@ -2371,13 +2383,25 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * {@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}, is defined relative to the active array rectangle given in * this field, with <code>(0, 0)</code> being the top-left of this rectangle.</p> * <p>The active array may be smaller than the full pixel array, since the full array may - * include black calibration pixels or other inactive regions, and geometric correction - * resulting in scaling or cropping may have been applied.</p> + * include black calibration pixels or other inactive regions.</p> + * <p>For devices that do not support {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the active + * array must be the same as {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.</p> + * <p>For devices that support {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the active array must + * be enclosed by {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}. The difference between + * pre-correction active array and active array accounts for scaling or cropping caused + * by lens geometric distortion correction.</p> + * <p>In general, application should always refer to active array size for controls like + * metering regions or crop region. Two exceptions are when the application is dealing with + * RAW image buffers (RAW_SENSOR, RAW10, RAW12 etc), or when application explicitly set + * {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} to OFF. In these cases, application should refer + * to {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.</p> * <p><b>Units</b>: Pixel coordinates on the image sensor</p> * <p>This key is available on all devices.</p> * + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CaptureRequest#SCALER_CROP_REGION * @see CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.graphics.Rect> SENSOR_INFO_ACTIVE_ARRAY_SIZE = @@ -2622,9 +2646,9 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * <ol> * <li>{@link CameraCharacteristics#LENS_DISTORTION android.lens.distortion}.</li> * </ol> - * <p>If all of the geometric distortion fields are no-ops, this rectangle will be the same - * as the post-distortion-corrected rectangle given in - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.</p> + * <p>If the camera device doesn't support geometric distortion correction, or all of the + * geometric distortion fields are no-ops, this rectangle will be the same as the + * post-distortion-corrected rectangle given in {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.</p> * <p>This rectangle is defined relative to the full pixel array; (0,0) is the top-left of * the full pixel array, and the size of the full pixel array is given by * {@link CameraCharacteristics#SENSOR_INFO_PIXEL_ARRAY_SIZE android.sensor.info.pixelArraySize}.</p> @@ -3130,12 +3154,26 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * the following code snippet can be used:</p> * <pre><code>// Returns true if the device supports the required hardware level, or better. * boolean isHardwareLevelSupported(CameraCharacteristics c, int requiredLevel) { + * final int[] sortedHwLevels = { + * CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY, + * CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL, + * CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED, + * CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_FULL, + * CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_3 + * }; * int deviceLevel = c.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL); - * if (deviceLevel == CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY) { - * return requiredLevel == deviceLevel; + * if (requiredLevel == deviceLevel) { + * return true; + * } + * + * for (int sortedlevel : sortedHwLevels) { + * if (sortedlevel == requiredLevel) { + * return true; + * } else if (sortedlevel == deviceLevel) { + * return false; + * } * } - * // deviceLevel is not LEGACY, can use numerical sort - * return requiredLevel <= deviceLevel; + * return false; // Should never reach here * } * </code></pre> * <p>At a high level, the levels are:</p> @@ -3149,6 +3187,8 @@ public final class CameraCharacteristics extends CameraMetadata<CameraCharacteri * post-processing settings, and image capture at a high rate.</li> * <li><code>LEVEL_3</code> devices additionally support YUV reprocessing and RAW image capture, along * with additional output stream configurations.</li> + * <li><code>EXTERNAL</code> devices are similar to <code>LIMITED</code> devices with exceptions like some sensor or + * lens information not reorted or less stable framerates.</li> * </ul> * <p>See the individual level enums for full descriptions of the supported capabilities. The * {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES android.request.availableCapabilities} entry describes the device's capabilities at a diff --git a/core/java/android/hardware/camera2/CameraDevice.java b/core/java/android/hardware/camera2/CameraDevice.java index f47d4640c09c..ce88697fa8db 100644 --- a/core/java/android/hardware/camera2/CameraDevice.java +++ b/core/java/android/hardware/camera2/CameraDevice.java @@ -44,19 +44,27 @@ import java.lang.annotation.RetentionPolicy; * {@link android.Manifest.permission#CAMERA Camera} permission in its manifest * in order to access camera devices.</p> * - * <p>A given camera device may provide support at one of two levels: limited or - * full. If a device only supports the limited level, then Camera2 exposes a - * feature set that is roughly equivalent to the older + * <p>A given camera device may provide support at one of several levels defined + * in {@link CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL}. + * If a device supports {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY LEGACY} level, + * the camera device is running in backward compatibility mode and has minimum camera2 API support. + * If a device supports the {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED LIMITED} + * level, then Camera2 exposes a feature set that is roughly equivalent to the older * {@link android.hardware.Camera Camera} API, although with a cleaner and more - * efficient interface. Devices that implement the full level of support + * efficient interface. + * If a device supports the {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL EXTERNAL} + * level, then the device is a removable camera that provides similar but slightly less features + * as the {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED LIMITED} level. + * Devices that implement the {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_FULL FULL} or + * {@link CameraMetadata#INFO_SUPPORTED_HARDWARE_LEVEL_3 LEVEL3} level of support * provide substantially improved capabilities over the older camera - * API. Applications that target the limited level devices will run unchanged on - * the full-level devices; if your application requires a full-level device for + * API. If your application requires a full-level device for * proper operation, declare the "android.hardware.camera.level.full" feature in your * manifest.</p> * * @see CameraManager#openCamera * @see android.Manifest.permission#CAMERA + * @see CameraCharacteristics#INFO_SUPPORTED_HARDWARE_LEVEL */ public abstract class CameraDevice implements AutoCloseable { diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java index 1275a852ee2b..caa99d5cb2a8 100644 --- a/core/java/android/hardware/camera2/CameraMetadata.java +++ b/core/java/android/hardware/camera2/CameraMetadata.java @@ -819,11 +819,11 @@ public abstract class CameraMetadata<TKey> { * camera in the list of supported camera devices.</p> * <p>This capability requires the camera device to support the following:</p> * <ul> - * <li>This camera device must list the following static metadata entries in {@link android.hardware.camera2.CameraCharacteristics }:<ul> - * <li>android.logicalMultiCamera.physicalIds</li> - * <li>{@link CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE android.logicalMultiCamera.sensorSyncType}</li> - * </ul> - * </li> + * <li>The IDs of underlying physical cameras are returned via + * {@link android.hardware.camera2.CameraCharacteristics#getPhysicalCameraIds }.</li> + * <li>This camera device must list static metadata + * {@link CameraCharacteristics#LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE android.logicalMultiCamera.sensorSyncType} in + * {@link android.hardware.camera2.CameraCharacteristics }.</li> * <li>The underlying physical cameras' static metadata must list the following entries, * so that the application can correlate pixels from the physical streams:<ul> * <li>{@link CameraCharacteristics#LENS_POSE_REFERENCE android.lens.poseReference}</li> diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java index ec51ba56c571..4a20468276d3 100644 --- a/core/java/android/hardware/camera2/CaptureRequest.java +++ b/core/java/android/hardware/camera2/CaptureRequest.java @@ -1277,11 +1277,26 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * Otherwise will always be present.</p> * <p>The maximum number of regions supported by the device is determined by the value * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AE android.control.maxRegionsAe}.</p> - * <p>The coordinate system is based on the active pixel array, - * with (0,0) being the top-left pixel in the active pixel array, and + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0,0) being + * the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the - * bottom-right pixel in the active pixel array.</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.height - 1) being the bottom-right + * pixel in the pre-correction active pixel array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> * <p>The weight must be within <code>[0, 1000]</code>, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in @@ -1297,15 +1312,20 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> - * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on + * distortion correction capability and mode</p> * <p><b>Range of valid values:</b><br> * Coordinates must be between <code>[(0,0), (width, height))</code> of - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} + * depending on distortion correction capability and mode</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AE + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CaptureRequest#SCALER_CROP_REGION * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AE_REGIONS = @@ -1451,11 +1471,26 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * Otherwise will always be present.</p> * <p>The maximum number of focus areas supported by the device is determined by the value * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AF android.control.maxRegionsAf}.</p> - * <p>The coordinate system is based on the active pixel array, - * with (0,0) being the top-left pixel in the active pixel array, and + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0,0) being + * the top-left pixel in the active pixel array, and + * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.height - 1) being the bottom-right + * pixel in the pre-correction active pixel array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the active array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the - * bottom-right pixel in the active pixel array.</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> * <p>The weight must be within <code>[0, 1000]</code>, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in @@ -1472,15 +1507,20 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> - * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on + * distortion correction capability and mode</p> * <p><b>Range of valid values:</b><br> * Coordinates must be between <code>[(0,0), (width, height))</code> of - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} + * depending on distortion correction capability and mode</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AF + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CaptureRequest#SCALER_CROP_REGION * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AF_REGIONS = @@ -1620,11 +1660,26 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * Otherwise will always be present.</p> * <p>The maximum number of regions supported by the device is determined by the value * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AWB android.control.maxRegionsAwb}.</p> - * <p>The coordinate system is based on the active pixel array, - * with (0,0) being the top-left pixel in the active pixel array, and + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0,0) being + * the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the - * bottom-right pixel in the active pixel array.</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.height - 1) being the bottom-right + * pixel in the pre-correction active pixel array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in @@ -1640,15 +1695,20 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> - * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on + * distortion correction capability and mode</p> * <p><b>Range of valid values:</b><br> * Coordinates must be between <code>[(0,0), (width, height))</code> of - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} + * depending on distortion correction capability and mode</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AWB + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CaptureRequest#SCALER_CROP_REGION * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AWB_REGIONS = @@ -2441,9 +2501,17 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> /** * <p>The desired region of the sensor to read out for this capture.</p> * <p>This control can be used to implement digital zoom.</p> - * <p>The crop region coordinate system is based off - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with <code>(0, 0)</code> being the - * top-left corner of the sensor active array.</p> + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with <code>(0, 0)</code> being + * the top-left pixel of the active array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the active array.</p> * <p>Output streams use this rectangle to produce their output, * cropping to a smaller region if necessary to maintain the * stream's aspect ratio, then scaling the sensor input to @@ -2462,20 +2530,30 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * outputs will crop horizontally (pillarbox), and 16:9 * streams will match exactly. These additional crops will * be centered within the crop region.</p> - * <p>The width and height of the crop region cannot - * be set to be smaller than + * <p>If the coordinate system is {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, the width and height + * of the crop region cannot be set to be smaller than * <code>floor( activeArraySize.width / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} )</code> and * <code>floor( activeArraySize.height / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} )</code>, respectively.</p> + * <p>If the coordinate system is {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, the width + * and height of the crop region cannot be set to be smaller than + * <code>floor( preCorrectionActiveArraySize.width / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} )</code> + * and + * <code>floor( preCorrectionActiveArraySize.height / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} )</code>, + * respectively.</p> * <p>The camera device may adjust the crop region to account * for rounding and other hardware requirements; the final * crop region used will be included in the output capture * result.</p> * <p><b>Units</b>: Pixel coordinates relative to - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on distortion correction + * capability and mode</p> * <p>This key is available on all devices.</p> * + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.graphics.Rect> SCALER_CROP_REGION = @@ -2793,8 +2871,14 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> new Key<Integer>("android.statistics.lensShadingMapMode", int.class); /** - * <p>A control for selecting whether OIS position information is included in output - * result metadata.</p> + * <p>A control for selecting whether optical stabilization (OIS) position + * information is included in output result metadata.</p> + * <p>Since optical image stabilization generally involves motion much faster than the duration + * of individualq image exposure, multiple OIS samples can be included for a single capture + * result. For example, if the OIS reporting operates at 200 Hz, a typical camera operating + * at 30fps may have 6-7 OIS samples per capture result. This information can be combined + * with the rolling shutter skew to account for lens motion during image exposure in + * post-processing algorithms.</p> * <p><b>Possible values:</b> * <ul> * <li>{@link #STATISTICS_OIS_DATA_MODE_OFF OFF}</li> @@ -3194,15 +3278,28 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * any correction at all would slow down capture rate. Every output stream will have a * similar amount of enhancement applied.</p> * <p>The correction only applies to processed outputs such as YUV, JPEG, or DEPTH16; it is not - * applied to any RAW output. Metadata coordinates such as face rectangles or metering - * regions are also not affected by correction.</p> - * <p>Applications enabling distortion correction need to pay extra attention when converting - * image coordinates between corrected output buffers and the sensor array. For example, if - * the app supports tap-to-focus and enables correction, it then has to apply the distortion - * model described in {@link CameraCharacteristics#LENS_DISTORTION android.lens.distortion} to the image buffer tap coordinates to properly - * calculate the tap position on the sensor active array to be used with - * {@link CaptureRequest#CONTROL_AF_REGIONS android.control.afRegions}. The same applies in reverse to detected face rectangles if - * they need to be drawn on top of the corrected output buffers.</p> + * applied to any RAW output.</p> + * <p>This control will be on by default on devices that support this control. Applications + * disabling distortion correction need to pay extra attention with the coordinate system of + * metering regions, crop region, and face rectangles. When distortion correction is OFF, + * metadata coordinates follow the coordinate system of + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}. When distortion is not OFF, metadata + * coordinates follow the coordinate system of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}. The + * camera device will map these metadata fields to match the corrected image produced by the + * camera device, for both capture requests and results. However, this mapping is not very + * precise, since rectangles do not generally map to rectangles when corrected. Only linear + * scaling between the active array and precorrection active array coordinates is + * performed. Applications that require precise correction of metadata need to undo that + * linear scaling, and apply a more complete correction that takes into the account the app's + * own requirements.</p> + * <p>The full list of metadata that is affected in this way by distortion correction is:</p> + * <ul> + * <li>{@link CaptureRequest#CONTROL_AF_REGIONS android.control.afRegions}</li> + * <li>{@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions}</li> + * <li>{@link CaptureRequest#CONTROL_AWB_REGIONS android.control.awbRegions}</li> + * <li>{@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}</li> + * <li>{@link CaptureResult#STATISTICS_FACES android.statistics.faces}</li> + * </ul> * <p><b>Possible values:</b> * <ul> * <li>{@link #DISTORTION_CORRECTION_MODE_OFF OFF}</li> @@ -3213,9 +3310,15 @@ public final class CaptureRequest extends CameraMetadata<CaptureRequest.Key<?>> * {@link CameraCharacteristics#DISTORTION_CORRECTION_AVAILABLE_MODES android.distortionCorrection.availableModes}</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * + * @see CaptureRequest#CONTROL_AE_REGIONS * @see CaptureRequest#CONTROL_AF_REGIONS + * @see CaptureRequest#CONTROL_AWB_REGIONS * @see CameraCharacteristics#DISTORTION_CORRECTION_AVAILABLE_MODES * @see CameraCharacteristics#LENS_DISTORTION + * @see CaptureRequest#SCALER_CROP_REGION + * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE + * @see CaptureResult#STATISTICS_FACES * @see #DISTORTION_CORRECTION_MODE_OFF * @see #DISTORTION_CORRECTION_MODE_FAST * @see #DISTORTION_CORRECTION_MODE_HIGH_QUALITY diff --git a/core/java/android/hardware/camera2/CaptureResult.java b/core/java/android/hardware/camera2/CaptureResult.java index a49064f8fb71..1e894e8a29c2 100644 --- a/core/java/android/hardware/camera2/CaptureResult.java +++ b/core/java/android/hardware/camera2/CaptureResult.java @@ -736,11 +736,26 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * Otherwise will always be present.</p> * <p>The maximum number of regions supported by the device is determined by the value * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AE android.control.maxRegionsAe}.</p> - * <p>The coordinate system is based on the active pixel array, - * with (0,0) being the top-left pixel in the active pixel array, and + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0,0) being + * the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the - * bottom-right pixel in the active pixel array.</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.height - 1) being the bottom-right + * pixel in the pre-correction active pixel array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> * <p>The weight must be within <code>[0, 1000]</code>, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in @@ -756,15 +771,20 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> - * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on + * distortion correction capability and mode</p> * <p><b>Range of valid values:</b><br> * Coordinates must be between <code>[(0,0), (width, height))</code> of - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} + * depending on distortion correction capability and mode</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AE + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CaptureRequest#SCALER_CROP_REGION * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AE_REGIONS = @@ -1158,11 +1178,26 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * Otherwise will always be present.</p> * <p>The maximum number of focus areas supported by the device is determined by the value * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AF android.control.maxRegionsAf}.</p> - * <p>The coordinate system is based on the active pixel array, - * with (0,0) being the top-left pixel in the active pixel array, and + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0,0) being + * the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the - * bottom-right pixel in the active pixel array.</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.height - 1) being the bottom-right + * pixel in the pre-correction active pixel array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> * <p>The weight must be within <code>[0, 1000]</code>, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in @@ -1179,15 +1214,20 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> - * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on + * distortion correction capability and mode</p> * <p><b>Range of valid values:</b><br> * Coordinates must be between <code>[(0,0), (width, height))</code> of - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} + * depending on distortion correction capability and mode</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AF + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CaptureRequest#SCALER_CROP_REGION * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AF_REGIONS = @@ -1736,11 +1776,26 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * Otherwise will always be present.</p> * <p>The maximum number of regions supported by the device is determined by the value * of {@link CameraCharacteristics#CONTROL_MAX_REGIONS_AWB android.control.maxRegionsAwb}.</p> - * <p>The coordinate system is based on the active pixel array, - * with (0,0) being the top-left pixel in the active pixel array, and + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with (0,0) being + * the top-left pixel in the active pixel array, and * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the - * bottom-right pixel in the active pixel array.</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}.height - 1) being the bottom-right + * pixel in the pre-correction active pixel array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the active array, and + * ({@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.width - 1, + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}.height - 1) being the bottom-right pixel in the + * active pixel array.</p> * <p>The weight must range from 0 to 1000, and represents a weight * for every pixel in the area. This means that a large metering area * with the same weight as a smaller area will have more effect in @@ -1756,15 +1811,20 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * region and output only the intersection rectangle as the metering region in the result * metadata. If the region is entirely outside the crop region, it will be ignored and * not reported in the result metadata.</p> - * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * <p><b>Units</b>: Pixel coordinates within {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on + * distortion correction capability and mode</p> * <p><b>Range of valid values:</b><br> * Coordinates must be between <code>[(0,0), (width, height))</code> of - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} + * depending on distortion correction capability and mode</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * * @see CameraCharacteristics#CONTROL_MAX_REGIONS_AWB + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CaptureRequest#SCALER_CROP_REGION * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.hardware.camera2.params.MeteringRectangle[]> CONTROL_AWB_REGIONS = @@ -2798,7 +2858,9 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>If this device is the largest or only camera device with a given facing, then this * position will be <code>(0, 0, 0)</code>; a camera device with a lens optical center located 3 cm * from the main sensor along the +X axis (to the right from the user's perspective) will - * report <code>(0.03, 0, 0)</code>.</p> + * report <code>(0.03, 0, 0)</code>. Note that this means that, for many computer vision + * applications, the position needs to be negated to convert it to a translation from the + * camera to the origin.</p> * <p>To transform a pixel coordinates between two cameras facing the same direction, first * the source camera {@link CameraCharacteristics#LENS_DISTORTION android.lens.distortion} must be corrected for. Then the source * camera {@link CameraCharacteristics#LENS_INTRINSIC_CALIBRATION android.lens.intrinsicCalibration} needs to be applied, followed by the @@ -2810,7 +2872,8 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * <p>To compare this against a real image from the destination camera, the destination camera * image then needs to be corrected for radial distortion before comparison or sampling.</p> * <p>When {@link CameraCharacteristics#LENS_POSE_REFERENCE android.lens.poseReference} is GYROSCOPE, then this position is relative to - * the center of the primary gyroscope on the device.</p> + * the center of the primary gyroscope on the device. The axis definitions are the same as + * with PRIMARY_CAMERA.</p> * <p><b>Units</b>: Meters</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @@ -2842,13 +2905,15 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * </code></pre> * <p>which can then be combined with the camera pose rotation * <code>R</code> and translation <code>t</code> ({@link CameraCharacteristics#LENS_POSE_ROTATION android.lens.poseRotation} and - * {@link CameraCharacteristics#LENS_POSE_TRANSLATION android.lens.poseTranslation}, respective) to calculate the + * {@link CameraCharacteristics#LENS_POSE_TRANSLATION android.lens.poseTranslation}, respectively) to calculate the * complete transform from world coordinates to pixel * coordinates:</p> - * <pre><code>P = [ K 0 * [ R t - * 0 1 ] 0 1 ] + * <pre><code>P = [ K 0 * [ R -Rt + * 0 1 ] 0 1 ] * </code></pre> - * <p>and with <code>p_w</code> being a point in the world coordinate system + * <p>(Note the negation of poseTranslation when mapping from camera + * to world coordinates, and multiplication by the rotation).</p> + * <p>With <code>p_w</code> being a point in the world coordinate system * and <code>p_s</code> being a point in the camera active pixel array * coordinate system, and with the mapping including the * homogeneous division by z:</p> @@ -2870,6 +2935,13 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * activeArraySize rectangle), to determine the final pixel * coordinate of the world point for processed (non-RAW) * output buffers.</p> + * <p>For camera devices, the center of pixel <code>(x,y)</code> is located at + * coordinate <code>(x + 0.5, y + 0.5)</code>. So on a device with a + * precorrection active array of size <code>(10,10)</code>, the valid pixel + * indices go from <code>(0,0)-(9,9)</code>, and an perfectly-built camera would + * have an optical center at the exact center of the pixel grid, at + * coordinates <code>(5.0, 5.0)</code>, which is the top-left corner of pixel + * <code>(5,5)</code>.</p> * <p><b>Units</b>: * Pixels in the * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} @@ -3105,9 +3177,17 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>The desired region of the sensor to read out for this capture.</p> * <p>This control can be used to implement digital zoom.</p> - * <p>The crop region coordinate system is based off - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with <code>(0, 0)</code> being the - * top-left corner of the sensor active array.</p> + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with <code>(0, 0)</code> being + * the top-left pixel of the active array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the active array.</p> * <p>Output streams use this rectangle to produce their output, * cropping to a smaller region if necessary to maintain the * stream's aspect ratio, then scaling the sensor input to @@ -3126,20 +3206,30 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * outputs will crop horizontally (pillarbox), and 16:9 * streams will match exactly. These additional crops will * be centered within the crop region.</p> - * <p>The width and height of the crop region cannot - * be set to be smaller than + * <p>If the coordinate system is {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, the width and height + * of the crop region cannot be set to be smaller than * <code>floor( activeArraySize.width / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} )</code> and * <code>floor( activeArraySize.height / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} )</code>, respectively.</p> + * <p>If the coordinate system is {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, the width + * and height of the crop region cannot be set to be smaller than + * <code>floor( preCorrectionActiveArraySize.width / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} )</code> + * and + * <code>floor( preCorrectionActiveArraySize.height / {@link CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM android.scaler.availableMaxDigitalZoom} )</code>, + * respectively.</p> * <p>The camera device may adjust the crop region to account * for rounding and other hardware requirements; the final * crop region used will be included in the output capture * result.</p> * <p><b>Units</b>: Pixel coordinates relative to - * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}</p> + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize} or + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize} depending on distortion correction + * capability and mode</p> * <p>This key is available on all devices.</p> * + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CameraCharacteristics#SCALER_AVAILABLE_MAX_DIGITAL_ZOOM * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE */ @PublicKey public static final Key<android.graphics.Rect> SCALER_CROP_REGION = @@ -3630,12 +3720,23 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>List of landmarks for detected * faces.</p> - * <p>The coordinate system is that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with <code>(0, 0)</code> being + * the top-left pixel of the active array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with * <code>(0, 0)</code> being the top-left pixel of the active array.</p> * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} == FULL * This key is available on all devices.</p> * + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE * @hide */ @@ -3645,12 +3746,23 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>List of the bounding rectangles for detected * faces.</p> - * <p>The coordinate system is that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with + * <p>For devices not supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system always follows that of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with <code>(0, 0)</code> being + * the top-left pixel of the active array.</p> + * <p>For devices supporting {@link CaptureRequest#DISTORTION_CORRECTION_MODE android.distortionCorrection.mode} control, the coordinate + * system depends on the mode being set. + * When the distortion correction mode is OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}, with + * <code>(0, 0)</code> being the top-left pixel of the pre-correction active array. + * When the distortion correction mode is not OFF, the coordinate system follows + * {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}, with * <code>(0, 0)</code> being the top-left pixel of the active array.</p> * <p>Only available if {@link CaptureRequest#STATISTICS_FACE_DETECT_MODE android.statistics.faceDetectMode} != OFF * This key is available on all devices.</p> * + * @see CaptureRequest#DISTORTION_CORRECTION_MODE * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE * @see CaptureRequest#STATISTICS_FACE_DETECT_MODE * @hide */ @@ -3983,8 +4095,14 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { new Key<Integer>("android.statistics.lensShadingMapMode", int.class); /** - * <p>A control for selecting whether OIS position information is included in output - * result metadata.</p> + * <p>A control for selecting whether optical stabilization (OIS) position + * information is included in output result metadata.</p> + * <p>Since optical image stabilization generally involves motion much faster than the duration + * of individualq image exposure, multiple OIS samples can be included for a single capture + * result. For example, if the OIS reporting operates at 200 Hz, a typical camera operating + * at 30fps may have 6-7 OIS samples per capture result. This information can be combined + * with the rolling shutter skew to account for lens motion during image exposure in + * post-processing algorithms.</p> * <p><b>Possible values:</b> * <ul> * <li>{@link #STATISTICS_OIS_DATA_MODE_OFF OFF}</li> @@ -4018,11 +4136,15 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>An array of shifts of OIS samples, in x direction.</p> * <p>The array contains the amount of shifts in x direction, in pixels, based on OIS samples. - * A positive value is a shift from left to right in active array coordinate system. For - * example, if the optical center is (1000, 500) in active array coordinates, a shift of - * (3, 0) puts the new optical center at (1003, 500).</p> + * A positive value is a shift from left to right in the pre-correction active array + * coordinate system. For example, if the optical center is (1000, 500) in pre-correction + * active array coordinates, a shift of (3, 0) puts the new optical center at (1003, 500).</p> * <p>The number of shifts must match the number of timestamps in * android.statistics.oisTimestamps.</p> + * <p>The OIS samples are not affected by whether lens distortion correction is enabled (on + * supporting devices). They are always reported in pre-correction active array coordinates, + * since the scaling of OIS shifts would depend on the specific spot on the sensor the shift + * is needed.</p> * <p><b>Units</b>: Pixels in active array.</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide @@ -4033,11 +4155,15 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { /** * <p>An array of shifts of OIS samples, in y direction.</p> * <p>The array contains the amount of shifts in y direction, in pixels, based on OIS samples. - * A positive value is a shift from top to bottom in active array coordinate system. For - * example, if the optical center is (1000, 500) in active array coordinates, a shift of - * (0, 5) puts the new optical center at (1000, 505).</p> + * A positive value is a shift from top to bottom in pre-correction active array coordinate + * system. For example, if the optical center is (1000, 500) in active array coordinates, a + * shift of (0, 5) puts the new optical center at (1000, 505).</p> * <p>The number of shifts must match the number of timestamps in * android.statistics.oisTimestamps.</p> + * <p>The OIS samples are not affected by whether lens distortion correction is enabled (on + * supporting devices). They are always reported in pre-correction active array coordinates, + * since the scaling of OIS shifts would depend on the specific spot on the sensor the shift + * is needed.</p> * <p><b>Units</b>: Pixels in active array.</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * @hide @@ -4046,15 +4172,21 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { new Key<float[]>("android.statistics.oisYShifts", float[].class); /** - * <p>An array of OIS samples.</p> + * <p>An array of optical stabilization (OIS) position samples.</p> * <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction, * in pixels, of the OIS sample.</p> - * <p>A positive value for a shift in x direction is a shift from left to right in active array - * coordinate system. For example, if the optical center is (1000, 500) in active array - * coordinates, a shift of (3, 0) puts the new optical center at (1003, 500).</p> - * <p>A positive value for a shift in y direction is a shift from top to bottom in active array - * coordinate system. For example, if the optical center is (1000, 500) in active array - * coordinates, a shift of (0, 5) puts the new optical center at (1000, 505).</p> + * <p>A positive value for a shift in x direction is a shift from left to right in the + * pre-correction active array coordinate system. For example, if the optical center is + * (1000, 500) in pre-correction active array coordinates, a shift of (3, 0) puts the new + * optical center at (1003, 500).</p> + * <p>A positive value for a shift in y direction is a shift from top to bottom in + * pre-correction active array coordinate system. For example, if the optical center is + * (1000, 500) in active array coordinates, a shift of (0, 5) puts the new optical center at + * (1000, 505).</p> + * <p>The OIS samples are not affected by whether lens distortion correction is enabled (on + * supporting devices). They are always reported in pre-correction active array coordinates, + * since the scaling of OIS shifts would depend on the specific spot on the sensor the shift + * is needed.</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> */ @PublicKey @@ -4484,15 +4616,28 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * any correction at all would slow down capture rate. Every output stream will have a * similar amount of enhancement applied.</p> * <p>The correction only applies to processed outputs such as YUV, JPEG, or DEPTH16; it is not - * applied to any RAW output. Metadata coordinates such as face rectangles or metering - * regions are also not affected by correction.</p> - * <p>Applications enabling distortion correction need to pay extra attention when converting - * image coordinates between corrected output buffers and the sensor array. For example, if - * the app supports tap-to-focus and enables correction, it then has to apply the distortion - * model described in {@link CameraCharacteristics#LENS_DISTORTION android.lens.distortion} to the image buffer tap coordinates to properly - * calculate the tap position on the sensor active array to be used with - * {@link CaptureRequest#CONTROL_AF_REGIONS android.control.afRegions}. The same applies in reverse to detected face rectangles if - * they need to be drawn on top of the corrected output buffers.</p> + * applied to any RAW output.</p> + * <p>This control will be on by default on devices that support this control. Applications + * disabling distortion correction need to pay extra attention with the coordinate system of + * metering regions, crop region, and face rectangles. When distortion correction is OFF, + * metadata coordinates follow the coordinate system of + * {@link CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE android.sensor.info.preCorrectionActiveArraySize}. When distortion is not OFF, metadata + * coordinates follow the coordinate system of {@link CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE android.sensor.info.activeArraySize}. The + * camera device will map these metadata fields to match the corrected image produced by the + * camera device, for both capture requests and results. However, this mapping is not very + * precise, since rectangles do not generally map to rectangles when corrected. Only linear + * scaling between the active array and precorrection active array coordinates is + * performed. Applications that require precise correction of metadata need to undo that + * linear scaling, and apply a more complete correction that takes into the account the app's + * own requirements.</p> + * <p>The full list of metadata that is affected in this way by distortion correction is:</p> + * <ul> + * <li>{@link CaptureRequest#CONTROL_AF_REGIONS android.control.afRegions}</li> + * <li>{@link CaptureRequest#CONTROL_AE_REGIONS android.control.aeRegions}</li> + * <li>{@link CaptureRequest#CONTROL_AWB_REGIONS android.control.awbRegions}</li> + * <li>{@link CaptureRequest#SCALER_CROP_REGION android.scaler.cropRegion}</li> + * <li>{@link CaptureResult#STATISTICS_FACES android.statistics.faces}</li> + * </ul> * <p><b>Possible values:</b> * <ul> * <li>{@link #DISTORTION_CORRECTION_MODE_OFF OFF}</li> @@ -4503,9 +4648,15 @@ public class CaptureResult extends CameraMetadata<CaptureResult.Key<?>> { * {@link CameraCharacteristics#DISTORTION_CORRECTION_AVAILABLE_MODES android.distortionCorrection.availableModes}</p> * <p><b>Optional</b> - This value may be {@code null} on some devices.</p> * + * @see CaptureRequest#CONTROL_AE_REGIONS * @see CaptureRequest#CONTROL_AF_REGIONS + * @see CaptureRequest#CONTROL_AWB_REGIONS * @see CameraCharacteristics#DISTORTION_CORRECTION_AVAILABLE_MODES * @see CameraCharacteristics#LENS_DISTORTION + * @see CaptureRequest#SCALER_CROP_REGION + * @see CameraCharacteristics#SENSOR_INFO_ACTIVE_ARRAY_SIZE + * @see CameraCharacteristics#SENSOR_INFO_PRE_CORRECTION_ACTIVE_ARRAY_SIZE + * @see CaptureResult#STATISTICS_FACES * @see #DISTORTION_CORRECTION_MODE_OFF * @see #DISTORTION_CORRECTION_MODE_FAST * @see #DISTORTION_CORRECTION_MODE_HIGH_QUALITY diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index acaaf07984f0..d165889e8325 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -62,7 +62,6 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.Window; import android.view.WindowManager; -import android.view.WindowManager.BadTokenException; import android.view.animation.AnimationUtils; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.CursorAnchorInfo; @@ -354,7 +353,6 @@ public class InputMethodService extends AbstractInputMethodService { SoftInputWindow mWindow; boolean mInitialized; boolean mWindowCreated; - boolean mWindowAdded; boolean mWindowVisible; boolean mWindowWasVisible; boolean mInShowWindow; @@ -572,16 +570,7 @@ public class InputMethodService extends AbstractInputMethodService { if (DEBUG) Log.v(TAG, "showSoftInput()"); boolean wasVis = isInputViewShown(); if (dispatchOnShowInputRequested(flags, false)) { - try { - showWindow(true); - } catch (BadTokenException e) { - // We have ignored BadTokenException here since Jelly Bean MR-2 (API Level 18). - // We could ignore BadTokenException in InputMethodService#showWindow() instead, - // but it may break assumptions for those who override #showWindow() that we can - // detect errors in #showWindow() by checking BadTokenException. - // TODO: Investigate its feasibility. Update JavaDoc of #showWindow() of - // whether it's OK to override #showWindow() or not. - } + showWindow(true); } clearInsetOfPreviousIme(); // If user uses hard keyboard, IME button should always be shown. @@ -999,13 +988,7 @@ public class InputMethodService extends AbstractInputMethodService { mRootView.getViewTreeObserver().removeOnComputeInternalInsetsListener( mInsetsComputer); doFinishInput(); - if (mWindowAdded) { - // Disable exit animation for the current IME window - // to avoid the race condition between the exit and enter animations - // when the current IME is being switched to another one. - mWindow.getWindow().setWindowAnimations(0); - mWindow.dismiss(); - } + mWindow.dismissForDestroyIfNecessary(); if (mSettingsObserver != null) { mSettingsObserver.unregister(); mSettingsObserver = null; @@ -1792,7 +1775,6 @@ public class InputMethodService extends AbstractInputMethodService { public void showWindow(boolean showInput) { if (DEBUG) Log.v(TAG, "Showing window: showInput=" + showInput + " mShowInputRequested=" + mShowInputRequested - + " mWindowAdded=" + mWindowAdded + " mWindowCreated=" + mWindowCreated + " mWindowVisible=" + mWindowVisible + " mInputStarted=" + mInputStarted @@ -1802,27 +1784,12 @@ public class InputMethodService extends AbstractInputMethodService { Log.w(TAG, "Re-entrance in to showWindow"); return; } - - try { - mWindowWasVisible = mWindowVisible; - mInShowWindow = true; - showWindowInner(showInput); - } catch (BadTokenException e) { - // BadTokenException is a normal consequence in certain situations, e.g., swapping IMEs - // while there is a DO_SHOW_SOFT_INPUT message in the IIMethodWrapper queue. - if (DEBUG) Log.v(TAG, "BadTokenException: IME is done."); - mWindowVisible = false; - mWindowAdded = false; - // Rethrow the exception to preserve the existing behavior. Some IMEs may have directly - // called this method and relied on this exception for some clean-up tasks. - // TODO: Give developers a clear guideline of whether it's OK to call this method or - // InputMethodService#requestShowSelf(int) should always be used instead. - throw e; - } finally { - // TODO: Is it OK to set true when we get BadTokenException? - mWindowWasVisible = true; - mInShowWindow = false; - } + + mWindowWasVisible = mWindowVisible; + mInShowWindow = true; + showWindowInner(showInput); + mWindowWasVisible = true; + mInShowWindow = false; } void showWindowInner(boolean showInput) { @@ -1839,9 +1806,8 @@ public class InputMethodService extends AbstractInputMethodService { initialize(); updateFullscreenMode(); updateInputViewShown(); - - if (!mWindowAdded || !mWindowCreated) { - mWindowAdded = true; + + if (!mWindowCreated) { mWindowCreated = true; initialize(); if (DEBUG) Log.v(TAG, "CALL: onCreateCandidatesView"); @@ -2867,8 +2833,7 @@ public class InputMethodService extends AbstractInputMethodService { @Override protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) { final Printer p = new PrintWriterPrinter(fout); p.println("Input method service state for " + this + ":"); - p.println(" mWindowCreated=" + mWindowCreated - + " mWindowAdded=" + mWindowAdded); + p.println(" mWindowCreated=" + mWindowCreated); p.println(" mWindowVisible=" + mWindowVisible + " mWindowWasVisible=" + mWindowWasVisible + " mInShowWindow=" + mInShowWindow); diff --git a/core/java/android/inputmethodservice/SoftInputWindow.java b/core/java/android/inputmethodservice/SoftInputWindow.java index 795117e493b6..b4b88871d251 100644 --- a/core/java/android/inputmethodservice/SoftInputWindow.java +++ b/core/java/android/inputmethodservice/SoftInputWindow.java @@ -16,15 +16,22 @@ package android.inputmethodservice; +import static java.lang.annotation.RetentionPolicy.SOURCE; + +import android.annotation.IntDef; import android.app.Dialog; import android.content.Context; import android.graphics.Rect; +import android.os.Debug; import android.os.IBinder; +import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.WindowManager; +import java.lang.annotation.Retention; + /** * A SoftInputWindow is a Dialog that is intended to be used for a top-level input * method window. It will be displayed along the edge of the screen, moving @@ -33,6 +40,9 @@ import android.view.WindowManager; * @hide */ public class SoftInputWindow extends Dialog { + private static final boolean DEBUG = false; + private static final String TAG = "SoftInputWindow"; + final String mName; final Callback mCallback; final KeyEvent.Callback mKeyEventCallback; @@ -42,16 +52,65 @@ public class SoftInputWindow extends Dialog { final boolean mTakesFocus; private final Rect mBounds = new Rect(); + @Retention(SOURCE) + @IntDef(value = {SoftInputWindowState.TOKEN_PENDING, SoftInputWindowState.TOKEN_SET, + SoftInputWindowState.SHOWN_AT_LEAST_ONCE, SoftInputWindowState.REJECTED_AT_LEAST_ONCE}) + private @interface SoftInputWindowState { + /** + * The window token is not set yet. + */ + int TOKEN_PENDING = 0; + /** + * The window token was set, but the window is not shown yet. + */ + int TOKEN_SET = 1; + /** + * The window was shown at least once. + */ + int SHOWN_AT_LEAST_ONCE = 2; + /** + * {@link android.view.WindowManager.BadTokenException} was sent when calling + * {@link Dialog#show()} at least once. + */ + int REJECTED_AT_LEAST_ONCE = 3; + /** + * The window is considered destroyed. Any incoming request should be ignored. + */ + int DESTROYED = 4; + } + + @SoftInputWindowState + private int mWindowState = SoftInputWindowState.TOKEN_PENDING; + public interface Callback { public void onBackPressed(); } public void setToken(IBinder token) { - WindowManager.LayoutParams lp = getWindow().getAttributes(); - lp.token = token; - getWindow().setAttributes(lp); + switch (mWindowState) { + case SoftInputWindowState.TOKEN_PENDING: + // Normal scenario. Nothing to worry about. + WindowManager.LayoutParams lp = getWindow().getAttributes(); + lp.token = token; + getWindow().setAttributes(lp); + updateWindowState(SoftInputWindowState.TOKEN_SET); + return; + case SoftInputWindowState.TOKEN_SET: + case SoftInputWindowState.SHOWN_AT_LEAST_ONCE: + case SoftInputWindowState.REJECTED_AT_LEAST_ONCE: + throw new IllegalStateException("setToken can be called only once"); + case SoftInputWindowState.DESTROYED: + // Just ignore. Since there are multiple event queues from the token is issued + // in the system server to the timing when it arrives here, it can be delivered + // after the is already destroyed. No one should be blamed because of such an + // unfortunate but possible scenario. + Log.i(TAG, "Ignoring setToken() because window is already destroyed."); + return; + default: + throw new IllegalStateException("Unexpected state=" + mWindowState); + } } - + /** * Create a SoftInputWindow that uses a custom style. * @@ -190,4 +249,109 @@ public class SoftInputWindow extends Dialog { getWindow().setFlags(windowSetFlags, windowModFlags); } + + @Override + public final void show() { + switch (mWindowState) { + case SoftInputWindowState.TOKEN_PENDING: + throw new IllegalStateException("Window token is not set yet."); + case SoftInputWindowState.TOKEN_SET: + case SoftInputWindowState.SHOWN_AT_LEAST_ONCE: + // Normal scenario. Nothing to worry about. + try { + super.show(); + updateWindowState(SoftInputWindowState.SHOWN_AT_LEAST_ONCE); + } catch (WindowManager.BadTokenException 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 + // window token attached to our window. In such a scenario, receiving + // BadTokenException here is an expected behavior. We just ignore it and update + // the state so that we do not touch this window later. + Log.i(TAG, "Probably the IME window token is already invalidated." + + " show() does nothing."); + updateWindowState(SoftInputWindowState.REJECTED_AT_LEAST_ONCE); + } + return; + case SoftInputWindowState.REJECTED_AT_LEAST_ONCE: + // Just ignore. In general we cannot completely avoid this kind of race condition. + Log.i(TAG, "Not trying to call show() because it was already rejected once."); + return; + case SoftInputWindowState.DESTROYED: + // Just ignore. In general we cannot completely avoid this kind of race condition. + Log.i(TAG, "Ignoring show() because the window is already destroyed."); + return; + default: + throw new IllegalStateException("Unexpected state=" + mWindowState); + } + } + + final void dismissForDestroyIfNecessary() { + switch (mWindowState) { + case SoftInputWindowState.TOKEN_PENDING: + case SoftInputWindowState.TOKEN_SET: + // nothing to do because the window has never been shown. + updateWindowState(SoftInputWindowState.DESTROYED); + return; + case SoftInputWindowState.SHOWN_AT_LEAST_ONCE: + // Disable exit animation for the current IME window + // to avoid the race condition between the exit and enter animations + // when the current IME is being switched to another one. + try { + getWindow().setWindowAnimations(0); + dismiss(); + } catch (WindowManager.BadTokenException 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 + // window token attached to our window. In such a scenario, receiving + // BadTokenException here is an expected behavior. We just ignore it and update + // the state so that we do not touch this window later. + Log.i(TAG, "Probably the IME window token is already invalidated. " + + "No need to dismiss it."); + } + // Either way, consider that the window is destroyed. + updateWindowState(SoftInputWindowState.DESTROYED); + return; + case SoftInputWindowState.REJECTED_AT_LEAST_ONCE: + // Just ignore. In general we cannot completely avoid this kind of race condition. + Log.i(TAG, + "Not trying to dismiss the window because it is most likely unnecessary."); + // Anyway, consider that the window is destroyed. + updateWindowState(SoftInputWindowState.DESTROYED); + return; + case SoftInputWindowState.DESTROYED: + throw new IllegalStateException( + "dismissForDestroyIfNecessary can be called only once"); + default: + throw new IllegalStateException("Unexpected state=" + mWindowState); + } + } + + private void updateWindowState(@SoftInputWindowState int newState) { + if (DEBUG) { + if (mWindowState != newState) { + Log.d(TAG, "WindowState: " + stateToString(mWindowState) + " -> " + + stateToString(newState) + " @ " + Debug.getCaller()); + } + } + mWindowState = newState; + } + + private static String stateToString(@SoftInputWindowState int state) { + switch (state) { + case SoftInputWindowState.TOKEN_PENDING: + return "TOKEN_PENDING"; + case SoftInputWindowState.TOKEN_SET: + return "TOKEN_SET"; + case SoftInputWindowState.SHOWN_AT_LEAST_ONCE: + return "SHOWN_AT_LEAST_ONCE"; + case SoftInputWindowState.REJECTED_AT_LEAST_ONCE: + return "REJECTED_AT_LEAST_ONCE"; + case SoftInputWindowState.DESTROYED: + return "DESTROYED"; + default: + throw new IllegalStateException("Unknown state=" + state); + } + } } diff --git a/core/java/android/net/Uri.java b/core/java/android/net/Uri.java index 9bcc6001615f..40465ceafcb8 100644 --- a/core/java/android/net/Uri.java +++ b/core/java/android/net/Uri.java @@ -197,7 +197,7 @@ public abstract class Uri implements Parcelable, Comparable<Uri> { * * <p>Example: "//www.google.com/search?q=android" * - * @return the decoded scheme-specific-part + * @return the encoded scheme-specific-part */ public abstract String getEncodedSchemeSpecificPart(); diff --git a/core/java/android/os/Looper.java b/core/java/android/os/Looper.java index f17e0f026fda..684a8ee43c87 100644 --- a/core/java/android/os/Looper.java +++ b/core/java/android/os/Looper.java @@ -386,7 +386,9 @@ public final class Looper { final long looperToken = proto.start(fieldId); proto.write(LooperProto.THREAD_NAME, mThread.getName()); proto.write(LooperProto.THREAD_ID, mThread.getId()); - mQueue.writeToProto(proto, LooperProto.QUEUE); + if (mQueue != null) { + mQueue.writeToProto(proto, LooperProto.QUEUE); + } proto.end(looperToken); } diff --git a/core/java/android/util/DisplayMetrics.java b/core/java/android/util/DisplayMetrics.java index b092fcf4fc50..f2747cf426fa 100644..100755 --- a/core/java/android/util/DisplayMetrics.java +++ b/core/java/android/util/DisplayMetrics.java @@ -142,6 +142,14 @@ public class DisplayMetrics { public static final int DENSITY_560 = 560; /** + * Intermediate density for screens that sit somewhere between + * {@link #DENSITY_XXHIGH} (480 dpi) and {@link #DENSITY_XXXHIGH} (640 dpi). + * This is not a density that applications should target, instead relying + * on the system to scale their {@link #DENSITY_XXXHIGH} assets for them. + */ + public static final int DENSITY_600 = 600; + + /** * Standard quantized DPI for extra-extra-extra-high-density screens. Applications * should not generally worry about this density; relying on XHIGH graphics * being scaled up to it should be sufficient for almost all cases. A typical diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java index 53b224c36cb2..b93afdf3a090 100644 --- a/core/java/android/view/inputmethod/InputMethodManager.java +++ b/core/java/android/view/inputmethod/InputMethodManager.java @@ -30,6 +30,7 @@ import android.content.pm.PackageManager; import android.graphics.Rect; import android.inputmethodservice.InputMethodService; import android.net.Uri; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -2249,7 +2250,7 @@ public final class InputMethodManager { * Notify that a user took some action with this input method. * @hide */ - @UnsupportedAppUsage + @UnsupportedAppUsage(trackingBug = 114740982, maxTargetSdk = Build.VERSION_CODES.P) public void notifyUserAction() { synchronized (mH) { if (mLastSentUserActionNotificationSequenceNumber == diff --git a/core/java/com/android/internal/util/OWNERS b/core/java/com/android/internal/util/OWNERS index 21d750c59a4e..e65d11404a4e 100644 --- a/core/java/com/android/internal/util/OWNERS +++ b/core/java/com/android/internal/util/OWNERS @@ -1,24 +1,4 @@ -per-file AsyncChannel*=lorenzo@google.com -per-file AsyncChannel*=satk@google.com -per-file AsyncChannel*=silberst@google.com -per-file BitUtils*=ek@google.com -per-file BitUtils*=lorenzo@google.com -per-file BitUtils*=satk@google.com -per-file MessageUtils*=ek@google.com -per-file MessageUtils*=lorenzo@google.com -per-file MessageUtils*=satk@google.com -per-file Protocol*=ek@google.com -per-file Protocol*=lorenzo@google.com -per-file Protocol*=quiche@google.com -per-file Protocol*=satk@google.com -per-file Protocol*=silberst@google.com -per-file RingBuffer*=ek@google.com -per-file RingBuffer*=lorenzo@google.com -per-file RingBuffer*=satk@google.com -per-file State*=ek@google.com -per-file State*=lorenzo@google.com -per-file State*=quiche@google.com -per-file State*=silberst@google.com -per-file TokenBucket*=ek@google.com -per-file TokenBucket*=lorenzo@google.com -per-file TokenBucket*=satk@google.com +per-file AsyncChannel* = lorenzo@google.com, satk@google.com, etancohen@google.com +per-file BitUtils*, MessageUtils*, Protocol*, RingBuffer*, TokenBucket* = jchalard@google.com, lorenzo@google.com, satk@google.com +per-file Protocol* = etancohen@google.com, lorenzo@google.com +per-file State* = jchalard@google.com, lorenzo@google.com, satk@google.com diff --git a/core/jni/Android.bp b/core/jni/Android.bp index 494a95741090..08c9678cac79 100644 --- a/core/jni/Android.bp +++ b/core/jni/Android.bp @@ -227,7 +227,6 @@ cc_library_shared { static_libs: [ "libgif", "libseccomp_policy", - "libselinux", "libgrallocusage", "libscrypt_static", ], diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index c4fa190b228d..9e0cff3c4728 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1385,6 +1385,8 @@ instantiates items without it.--> <attr name="appComponentFactory" format="string" /> + <attr name="usesNonSdkApi" format="boolean" /> + <!-- The <code>manifest</code> tag is the root of an <code>AndroidManifest.xml</code> file, describing the contents of an Android package (.apk) file. One @@ -1558,6 +1560,9 @@ <attr name="appComponentFactory" /> + <!-- Declares that this application should be invoked without non-SDK API enforcement --> + <attr name="usesNonSdkApi" /> + </declare-styleable> <!-- The <code>permission</code> tag declares a security permission that can be used to control access from other packages to specific components or diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index 997575fc4743..48ba0676c753 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -2905,6 +2905,11 @@ <public-group type="attr" first-id="0x01010587"> </public-group> + <public-group type="attr" first-id="0x0101058d"> + <!-- @hide For use by platform and tools only. Developers should not specify this value. --> + <public name="usesNonSdkApi" /> + </public-group> + <public-group type="style" first-id="0x010302e2"> </public-group> diff --git a/core/tests/coretests/src/android/content/pm/AndroidHidlUpdaterTest.java b/core/tests/coretests/src/android/content/pm/AndroidHidlUpdaterTest.java new file mode 100644 index 000000000000..7218b3a286a2 --- /dev/null +++ b/core/tests/coretests/src/android/content/pm/AndroidHidlUpdaterTest.java @@ -0,0 +1,98 @@ +/* + * Copyright (C) 2018 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 static android.content.pm.PackageBuilder.builder; +import static android.content.pm.SharedLibraryNames.ANDROID_HIDL_BASE; +import static android.content.pm.SharedLibraryNames.ANDROID_HIDL_MANAGER; + +import android.os.Build; +import android.support.test.filters.SmallTest; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * Test for {@link AndroidHidlUpdater} + */ +@SmallTest +@RunWith(JUnit4.class) +public class AndroidHidlUpdaterTest extends PackageSharedLibraryUpdaterTest { + + private static final String OTHER_LIBRARY = "other.library"; + + @Test + public void targeted_at_O() { + PackageBuilder before = builder() + .targetSdkVersion(Build.VERSION_CODES.O); + + // Should add both HIDL libraries + PackageBuilder after = builder() + .targetSdkVersion(Build.VERSION_CODES.O) + .requiredLibraries(ANDROID_HIDL_MANAGER, ANDROID_HIDL_BASE); + + checkBackwardsCompatibility(before, after); + } + + @Test + public void targeted_at_O_not_empty_usesLibraries() { + PackageBuilder before = builder() + .targetSdkVersion(Build.VERSION_CODES.O) + .requiredLibraries(OTHER_LIBRARY); + + // The hidl jars should be added at the start of the list because it + // is not on the bootclasspath and the package targets pre-P. + PackageBuilder after = builder() + .targetSdkVersion(Build.VERSION_CODES.O) + .requiredLibraries(ANDROID_HIDL_MANAGER, ANDROID_HIDL_BASE, OTHER_LIBRARY); + + checkBackwardsCompatibility(before, after); + } + + @Test + public void targeted_at_O_in_usesLibraries() { + PackageBuilder before = builder() + .targetSdkVersion(Build.VERSION_CODES.O) + .requiredLibraries(ANDROID_HIDL_MANAGER, ANDROID_HIDL_BASE); + + // No change is required because although the HIDL libraries has been removed from + // the bootclasspath the package explicitly requests it. + checkBackwardsCompatibility(before, before); + } + + @Test + public void in_usesLibraries() { + PackageBuilder before = builder().requiredLibraries(ANDROID_HIDL_BASE); + + // No change is required because the package explicitly requests the HIDL libraries + // and is targeted at the current version so does not need backwards compatibility. + checkBackwardsCompatibility(before, before); + } + + @Test + public void in_usesOptionalLibraries() { + PackageBuilder before = builder().optionalLibraries(ANDROID_HIDL_BASE); + + // No change is required because the package explicitly requests the HIDL libraries + // and is targeted at the current version so does not need backwards compatibility. + checkBackwardsCompatibility(before, before); + } + + private void checkBackwardsCompatibility(PackageBuilder before, PackageBuilder after) { + checkBackwardsCompatibility(before, after, AndroidHidlUpdater::new); + } +} diff --git a/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java b/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java index 15dbbc8de150..c98e6460c189 100644 --- a/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java +++ b/core/tests/coretests/src/android/text/method/ForwardDeleteTest.java @@ -20,6 +20,7 @@ import android.platform.test.annotations.Presubmit; import android.support.test.InstrumentationRegistry; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; +import android.test.suitebuilder.annotation.Suppress; import android.text.InputType; import android.util.KeyUtils; import android.view.KeyEvent; @@ -238,6 +239,7 @@ public class ForwardDeleteTest { } @Test + @Suppress public void testEmojiModifier() { EditorState state = new EditorState(); @@ -267,6 +269,7 @@ public class ForwardDeleteTest { } @Test + @Suppress public void testMixedEdgeCases() { EditorState state = new EditorState(); diff --git a/data/etc/platform.xml b/data/etc/platform.xml index b3f05dc9fc98..c4017d15268f 100644 --- a/data/etc/platform.xml +++ b/data/etc/platform.xml @@ -182,11 +182,17 @@ code to link against. --> <library name="android.test.base" - file="/system/framework/android.test.base.jar" /> + file="/system/framework/android.test.base.impl.jar" /> <library name="android.test.mock" - file="/system/framework/android.test.mock.jar" /> + file="/system/framework/android.test.mock.impl.jar" /> <library name="android.test.runner" - file="/system/framework/android.test.runner.jar" /> + file="/system/framework/android.test.runner.impl.jar" /> + + <!-- In BOOT_JARS historically, and now added to legacy applications. --> + <library name="android.hidl.base-V1.0-java" + file="/system/framework/android.hidl.base-V1.0-java.jar" /> + <library name="android.hidl.manager-V1.0-java" + file="/system/framework/android.hidl.manager-V1.0-java.jar" /> <!-- These are the standard packages that are white-listed to always have internet access while in power save mode, even if they aren't in the foreground. --> diff --git a/data/keyboards/Generic.kcm b/data/keyboards/Generic.kcm index d0565ca7e876..1ab4c6385ac1 100644 --- a/data/keyboards/Generic.kcm +++ b/data/keyboards/Generic.kcm @@ -540,7 +540,7 @@ key BUTTON_SELECT { } key BUTTON_MODE { - base: fallback MENU + base: fallback HOME } key BUTTON_1 { diff --git a/data/keyboards/Vendor_045e_Product_02e0.kl b/data/keyboards/Vendor_045e_Product_02e0.kl index 1012fb1eb28d..1dd8e157c5a7 100644 --- a/data/keyboards/Vendor_045e_Product_02e0.kl +++ b/data/keyboards/Vendor_045e_Product_02e0.kl @@ -56,4 +56,4 @@ key 0x136 BUTTON_SELECT key 0x137 BUTTON_START # Xbox key -key 0x8b HOME
\ No newline at end of file +key 0x8b BUTTON_MODE
\ No newline at end of file diff --git a/data/keyboards/Vendor_054c_Product_0268.kl b/data/keyboards/Vendor_054c_Product_0268.kl index 7c601373c2d0..522db3c9235e 100644 --- a/data/keyboards/Vendor_054c_Product_0268.kl +++ b/data/keyboards/Vendor_054c_Product_0268.kl @@ -35,7 +35,7 @@ key 0x121 BUTTON_THUMBL key 0x122 BUTTON_THUMBR # PS key -key 0x2d0 HOME +key 0x2d0 BUTTON_MODE # Left Analog Stick axis 0x00 X diff --git a/libs/androidfw/include/androidfw/ByteBucketArray.h b/libs/androidfw/include/androidfw/ByteBucketArray.h index d84a207697e9..949c9445b3e8 100644 --- a/libs/androidfw/include/androidfw/ByteBucketArray.h +++ b/libs/androidfw/include/androidfw/ByteBucketArray.h @@ -60,7 +60,7 @@ class ByteBucketArray { } T& editItemAt(size_t index) { - CHECK(index < size()) << "ByteBucketArray.getOrCreate(index=" << index + CHECK(index < size()) << "ByteBucketArray.editItemAt(index=" << index << ") with size=" << size(); uint8_t bucket_index = static_cast<uint8_t>(index) >> 4; diff --git a/libs/hwui/pipeline/skia/LayerDrawable.cpp b/libs/hwui/pipeline/skia/LayerDrawable.cpp index 4f16ddb9881b..6e7511da07ff 100644 --- a/libs/hwui/pipeline/skia/LayerDrawable.cpp +++ b/libs/hwui/pipeline/skia/LayerDrawable.cpp @@ -82,7 +82,14 @@ bool LayerDrawable::DrawLayer(GrContext* context, SkCanvas* canvas, Layer* layer textureMatrix = textureMatrixInv; } - SkMatrix matrix = SkMatrix::Concat(layerTransform, textureMatrix); + SkMatrix matrix; + if (dstRect) { + // Destination rectangle is set only when we are trying to read back the content + // of the layer. In this case we don't want to apply layer transform. + matrix = textureMatrix; + } else { + matrix = SkMatrix::Concat(layerTransform, textureMatrix); + } SkPaint paint; paint.setAlpha(layer->getAlpha()); diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp b/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp index 107890e57a19..0760f1610891 100644 --- a/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp +++ b/libs/hwui/pipeline/skia/SkiaOpenGLReadback.cpp @@ -26,6 +26,7 @@ #include "DeviceInfo.h" #include "Matrix.h" #include "Properties.h" +#include "utils/MathUtils.h" using namespace android::uirenderer::renderthread; @@ -116,9 +117,9 @@ CopyResult SkiaOpenGLReadback::copyImageInto(EGLImageKHR eglImage, const Matrix4 paint.setBlendMode(SkBlendMode::kSrc); // Apply a filter, which is matching OpenGL pipeline readback behaviour. Filter usage // is codified by tests using golden images like DecodeAccuracyTest. - if (skiaSrcRect.width() != bitmap->width() || - skiaSrcRect.height() != bitmap->height()) { - // TODO: apply filter always, but check if tests will be fine + bool disableFilter = MathUtils::areEqual(skiaSrcRect.width(), skiaDestRect.width()) + && MathUtils::areEqual(skiaSrcRect.height(), skiaDestRect.height()); + if (!disableFilter) { paint.setFilterQuality(kLow_SkFilterQuality); } scaledSurface->getCanvas()->concat(textureMatrix); diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java index e8bc62298c47..5ad73653a615 100644 --- a/media/java/android/media/AudioAttributes.java +++ b/media/java/android/media/AudioAttributes.java @@ -715,6 +715,7 @@ public final class AudioAttributes implements Parcelable { break; case AudioSystem.STREAM_TTS: mContentType = CONTENT_TYPE_SONIFICATION; + mFlags |= FLAG_BEACON; break; case AudioSystem.STREAM_ACCESSIBILITY: mContentType = CONTENT_TYPE_SPEECH; @@ -1035,10 +1036,14 @@ public final class AudioAttributes implements Parcelable { return fromGetVolumeControlStream ? AudioSystem.STREAM_SYSTEM : AudioSystem.STREAM_SYSTEM_ENFORCED; } - if ((aa.getFlags() & FLAG_SCO) == FLAG_SCO) { + if ((aa.getAllFlags() & FLAG_SCO) == FLAG_SCO) { return fromGetVolumeControlStream ? AudioSystem.STREAM_VOICE_CALL : AudioSystem.STREAM_BLUETOOTH_SCO; } + if ((aa.getAllFlags() & FLAG_BEACON) == FLAG_BEACON) { + return fromGetVolumeControlStream ? + AudioSystem.STREAM_MUSIC : AudioSystem.STREAM_TTS; + } // usage to stream type mapping switch (aa.getUsage()) { diff --git a/packages/CaptivePortalLogin/Android.mk b/packages/CaptivePortalLogin/Android.mk index 8a96b1693dc1..7dc23ff8e8b8 100644 --- a/packages/CaptivePortalLogin/Android.mk +++ b/packages/CaptivePortalLogin/Android.mk @@ -2,7 +2,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE_TAGS := optional -LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 services.net +LOCAL_STATIC_JAVA_LIBRARIES := android-support-v4 LOCAL_SRC_FILES := $(call all-java-files-under, src) diff --git a/packages/CarrierDefaultApp/Android.mk b/packages/CarrierDefaultApp/Android.mk index 5068b3beb7a1..df88afdcf041 100644 --- a/packages/CarrierDefaultApp/Android.mk +++ b/packages/CarrierDefaultApp/Android.mk @@ -9,8 +9,6 @@ LOCAL_PACKAGE_NAME := CarrierDefaultApp LOCAL_PRIVATE_PLATFORM_APIS := true LOCAL_CERTIFICATE := platform -LOCAL_STATIC_JAVA_LIBRARIES := services.net - include $(BUILD_PACKAGE) # This finds and builds the test apk as well, so a single make does both. diff --git a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java index b1933373a8e6..4f67350b5adc 100644 --- a/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java +++ b/packages/CarrierDefaultApp/src/com/android/carrierdefaultapp/CaptivePortalLoginActivity.java @@ -32,7 +32,6 @@ import android.net.NetworkRequest; import android.net.Proxy; import android.net.TrafficStats; import android.net.Uri; -import android.net.dns.ResolvUtil; import android.net.http.SslError; import android.os.Bundle; import android.telephony.CarrierConfigManager; @@ -159,9 +158,9 @@ public class CaptivePortalLoginActivity extends Activity { private void setNetwork(Network network) { if (network != null) { + network = network.getPrivateDnsBypassingCopy(); mCm.bindProcessToNetwork(network); - mCm.setProcessDefaultNetworkForHostResolution( - ResolvUtil.getNetworkWithUseLocalNameserversFlag(network)); + mCm.setProcessDefaultNetworkForHostResolution(network); } mNetwork = network; } @@ -242,7 +241,6 @@ public class CaptivePortalLoginActivity extends Activity { private void testForCaptivePortal() { mTestingThread = new Thread(new Runnable() { public void run() { - final Network network = ResolvUtil.makeNetworkWithPrivateDnsBypass(mNetwork); // Give time for captive portal to open. try { Thread.sleep(1000); @@ -253,7 +251,7 @@ public class CaptivePortalLoginActivity extends Activity { int httpResponseCode = 500; int oldTag = TrafficStats.getAndSetThreadStatsTag(TrafficStats.TAG_SYSTEM_PROBE); try { - urlConnection = (HttpURLConnection) network.openConnection( + urlConnection = (HttpURLConnection) mNetwork.openConnection( new URL(mCm.getCaptivePortalServerUrl())); urlConnection.setInstanceFollowRedirects(false); urlConnection.setConnectTimeout(SOCKET_TIMEOUT_MS); diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp new file mode 100644 index 000000000000..4791517d9273 --- /dev/null +++ b/packages/SettingsLib/Android.bp @@ -0,0 +1,25 @@ +android_library { + + name: "SettingsLib", + + libs: [ + "androidx.annotation_annotation", + "androidx.legacy_legacy-support-v4", + "androidx.recyclerview_recyclerview", + "androidx.preference_preference", + "androidx.appcompat_appcompat", + "androidx.lifecycle_lifecycle-runtime", + ], + + // ANDROIDMK TRANSLATION ERROR: unsupported assignment to LOCAL_SHARED_JAVA_LIBRARIES + // LOCAL_SHARED_JAVA_LIBRARIES := androidx.lifecycle_lifecycle-common + + resource_dirs: ["res"], + + srcs: ["src/**/*.java"], + + min_sdk_version: "21", + +} + +// For the test package. diff --git a/packages/SettingsLib/Android.mk b/packages/SettingsLib/Android.mk deleted file mode 100644 index 96012c1f2a34..000000000000 --- a/packages/SettingsLib/Android.mk +++ /dev/null @@ -1,34 +0,0 @@ -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_AAPT2_ONLY := true - -LOCAL_MODULE := SettingsLib - -LOCAL_JAVA_LIBRARIES := \ - androidx.annotation_annotation - -LOCAL_SHARED_ANDROID_LIBRARIES := \ - androidx.legacy_legacy-support-v4 \ - androidx.recyclerview_recyclerview \ - androidx.preference_preference \ - androidx.appcompat_appcompat \ - androidx.lifecycle_lifecycle-runtime - -LOCAL_SHARED_JAVA_LIBRARIES := \ - androidx.lifecycle_lifecycle-common - -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res - -LOCAL_JAR_EXCLUDE_FILES := none - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_MIN_SDK_VERSION := 21 - -include $(BUILD_STATIC_JAVA_LIBRARY) - -# For the test package. -include $(call all-makefiles-under, $(LOCAL_PATH)) diff --git a/packages/SettingsLib/src/com/android/settingslib/CustomDialogPreference.java b/packages/SettingsLib/src/com/android/settingslib/CustomDialogPreference.java index cf1c2c348367..3bade25b712a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/CustomDialogPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/CustomDialogPreference.java @@ -20,11 +20,12 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; -import androidx.preference.PreferenceDialogFragment; -import androidx.preference.DialogPreference; import android.util.AttributeSet; import android.view.View; +import androidx.preference.DialogPreference; +import androidx.preference.PreferenceDialogFragment; + public class CustomDialogPreference extends DialogPreference { private CustomPreferenceDialogFragment mFragment; diff --git a/packages/SettingsLib/src/com/android/settingslib/CustomEditTextPreference.java b/packages/SettingsLib/src/com/android/settingslib/CustomEditTextPreference.java index 04c39540cf27..dfaff6108c89 100644 --- a/packages/SettingsLib/src/com/android/settingslib/CustomEditTextPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/CustomEditTextPreference.java @@ -23,13 +23,14 @@ import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; -import androidx.annotation.CallSuper; -import androidx.preference.EditTextPreferenceDialogFragment; -import androidx.preference.EditTextPreference; import android.util.AttributeSet; import android.view.View; import android.widget.EditText; +import androidx.annotation.CallSuper; +import androidx.preference.EditTextPreference; +import androidx.preference.EditTextPreferenceDialogFragment; + public class CustomEditTextPreference extends EditTextPreference { private CustomPreferenceDialogFragment mFragment; diff --git a/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java b/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java index c98bc39fe574..bc5a2c05e379 100644 --- a/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/DeviceInfoUtils.java @@ -16,6 +16,8 @@ package com.android.settingslib; +import static android.content.Context.TELEPHONY_SERVICE; + import android.content.Context; import android.content.Intent; import android.content.pm.ApplicationInfo; @@ -30,6 +32,7 @@ import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.format.DateFormat; import android.util.Log; + import androidx.annotation.VisibleForTesting; import java.io.BufferedReader; @@ -43,8 +46,6 @@ import java.util.Locale; import java.util.regex.Matcher; import java.util.regex.Pattern; -import static android.content.Context.TELEPHONY_SERVICE; - public class DeviceInfoUtils { private static final String TAG = "DeviceInfoUtils"; diff --git a/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java b/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java index 8055caaad536..4cbeb8a48f8f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/HelpUtils.java @@ -24,16 +24,15 @@ import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.content.res.Resources; -import android.content.res.Resources.Theme; import android.content.res.TypedArray; import android.net.Uri; import android.provider.Settings.Global; import android.text.TextUtils; import android.util.Log; -import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.MenuItem.OnMenuItemClickListener; + import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java index 7f518c1d71d3..bd54edd80697 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedLockUtils.java @@ -35,7 +35,6 @@ import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.provider.Settings; -import androidx.annotation.VisibleForTesting; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.style.ForegroundColorSpan; @@ -43,6 +42,8 @@ import android.text.style.ImageSpan; import android.view.MenuItem; import android.widget.TextView; +import androidx.annotation.VisibleForTesting; + import com.android.internal.widget.LockPatternUtils; import java.util.List; diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreference.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreference.java index 79e011c6e7ed..ad7e995412aa 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreference.java @@ -16,15 +16,16 @@ package com.android.settingslib; +import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + import android.content.Context; import android.os.UserHandle; -import androidx.core.content.res.TypedArrayUtils; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceViewHolder; import android.util.AttributeSet; import android.view.View; -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; +import androidx.core.content.res.TypedArrayUtils; +import androidx.preference.PreferenceManager; +import androidx.preference.PreferenceViewHolder; /** * Preference class that supports being disabled by a user restriction diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java index a930bb8373ba..4b84920e7884 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedPreferenceHelper.java @@ -16,19 +16,18 @@ package com.android.settingslib; +import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + import android.content.Context; import android.content.res.TypedArray; -import android.graphics.drawable.Drawable; import android.os.UserHandle; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; import android.text.TextUtils; import android.util.AttributeSet; import android.util.TypedValue; -import android.view.View; import android.widget.TextView; -import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; /** * Helper class for managing settings preferences that can be disabled diff --git a/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java b/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java index fe6d9fe77b73..0ed507c46372 100644 --- a/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/RestrictedSwitchPreference.java @@ -21,15 +21,16 @@ import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; import android.content.Context; import android.content.res.TypedArray; import android.os.UserHandle; -import androidx.preference.SwitchPreference; -import androidx.core.content.res.TypedArrayUtils; -import androidx.preference.PreferenceManager; -import androidx.preference.PreferenceViewHolder; import android.util.AttributeSet; import android.util.TypedValue; import android.view.View; import android.widget.TextView; +import androidx.core.content.res.TypedArrayUtils; +import androidx.preference.PreferenceManager; +import androidx.preference.PreferenceViewHolder; +import androidx.preference.SwitchPreference; + /** * Version of SwitchPreference that can be disabled by a device admin * using a user restriction. diff --git a/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java b/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java index 535b2929563a..dc02f266b39a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java +++ b/packages/SettingsLib/src/com/android/settingslib/TetherUtil.java @@ -17,9 +17,10 @@ package com.android.settingslib; import android.content.Context; import android.os.SystemProperties; -import androidx.annotation.VisibleForTesting; import android.telephony.CarrierConfigManager; +import androidx.annotation.VisibleForTesting; + public class TetherUtil { @VisibleForTesting diff --git a/packages/SettingsLib/src/com/android/settingslib/TwoTargetPreference.java b/packages/SettingsLib/src/com/android/settingslib/TwoTargetPreference.java index 3a26f4649b64..02895a479352 100644 --- a/packages/SettingsLib/src/com/android/settingslib/TwoTargetPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/TwoTargetPreference.java @@ -18,13 +18,14 @@ package com.android.settingslib; import android.annotation.IntDef; import android.content.Context; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; import android.util.AttributeSet; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; diff --git a/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java index df76125a99f2..efac6bc3572d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/animation/AppearAnimationUtils.java @@ -19,15 +19,12 @@ package com.android.settingslib.animation; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; -import android.animation.ValueAnimator; import android.content.Context; import android.view.RenderNodeAnimator; import android.view.View; -import android.view.ViewPropertyAnimator; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; -import com.android.internal.widget.LockPatternView; import com.android.settingslib.R; /** diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java index a3c1fc6ff265..452f1fc8c624 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java @@ -22,9 +22,6 @@ import android.app.AppGlobals; import android.app.Application; import android.app.usage.StorageStats; import android.app.usage.StorageStatsManager; -import androidx.lifecycle.Lifecycle; -import androidx.lifecycle.LifecycleObserver; -import androidx.lifecycle.OnLifecycleEvent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -49,12 +46,16 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.os.UserManager; -import androidx.annotation.VisibleForTesting; import android.text.format.Formatter; import android.util.IconDrawableFactory; import android.util.Log; import android.util.SparseArray; +import androidx.annotation.VisibleForTesting; +import androidx.lifecycle.Lifecycle; +import androidx.lifecycle.LifecycleObserver; +import androidx.lifecycle.OnLifecycleEvent; + import com.android.internal.R; import com.android.internal.util.ArrayUtils; diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java b/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java index b15f35ddc240..b457406dda03 100644 --- a/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java +++ b/packages/SettingsLib/src/com/android/settingslib/applications/StorageStatsSource.java @@ -21,6 +21,7 @@ import android.app.usage.StorageStatsManager; import android.content.Context; import android.content.pm.PackageManager; import android.os.UserHandle; + import androidx.annotation.VisibleForTesting; import java.io.IOException; diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java index ac5f5373d8ec..0e0f63cb084c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java @@ -33,7 +33,6 @@ import java.util.List; final class A2dpSinkProfile implements LocalBluetoothProfile { private static final String TAG = "A2dpSinkProfile"; - private static boolean V = true; private BluetoothA2dpSink mService; private boolean mIsProfileReady; @@ -57,7 +56,7 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { implements BluetoothProfile.ServiceListener { public void onServiceConnected(int profile, BluetoothProfile proxy) { - if (V) Log.d(TAG,"Bluetooth service connected"); + Log.d(TAG, "Bluetooth service connected, profile:" + profile); mService = (BluetoothA2dpSink) proxy; // We just bound to the service, so refresh the UI for any connected A2DP devices. List<BluetoothDevice> deviceList = mService.getConnectedDevices(); @@ -76,7 +75,7 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { } public void onServiceDisconnected(int profile) { - if (V) Log.d(TAG,"Bluetooth service disconnected"); + Log.d(TAG, "Bluetooth service disconnected, profile:" + profile); mIsProfileReady=false; } } @@ -109,7 +108,9 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { } public List<BluetoothDevice> getConnectedDevices() { - if (mService == null) return new ArrayList<BluetoothDevice>(0); + if (mService == null) { + return new ArrayList<BluetoothDevice>(0); + } return mService.getDevicesMatchingConnectionStates( new int[] {BluetoothProfile.STATE_CONNECTED, BluetoothProfile.STATE_CONNECTING, @@ -117,24 +118,18 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { } public boolean connect(BluetoothDevice device) { - if (mService == null) return false; - List<BluetoothDevice> srcs = getConnectedDevices(); - if (srcs != null) { - for (BluetoothDevice src : srcs) { - if (src.equals(device)) { - // Connect to same device, Ignore it - Log.d(TAG,"Ignoring Connect"); - return true; - } - } + if (mService == null) { + return false; } return mService.connect(device); } public boolean disconnect(BluetoothDevice device) { - if (mService == null) return false; + if (mService == null) { + return false; + } // Downgrade priority as user is disconnecting the headset. - if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON){ + if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON) { mService.setPriority(device, BluetoothProfile.PRIORITY_ON); } return mService.disconnect(device); @@ -148,17 +143,23 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { } public boolean isPreferred(BluetoothDevice device) { - if (mService == null) return false; + if (mService == null) { + return false; + } return mService.getPriority(device) > BluetoothProfile.PRIORITY_OFF; } public int getPreferred(BluetoothDevice device) { - if (mService == null) return BluetoothProfile.PRIORITY_OFF; + if (mService == null) { + return BluetoothProfile.PRIORITY_OFF; + } return mService.getPriority(device); } public void setPreferred(BluetoothDevice device, boolean preferred) { - if (mService == null) return; + if (mService == null) { + return; + } if (preferred) { if (mService.getPriority(device) < BluetoothProfile.PRIORITY_ON) { mService.setPriority(device, BluetoothProfile.PRIORITY_ON); @@ -169,7 +170,9 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { } boolean isA2dpPlaying() { - if (mService == null) return false; + if (mService == null) { + return false; + } List<BluetoothDevice> srcs = mService.getConnectedDevices(); if (!srcs.isEmpty()) { if (mService.isA2dpPlaying(srcs.get(0))) { @@ -211,11 +214,11 @@ final class A2dpSinkProfile implements LocalBluetoothProfile { } protected void finalize() { - if (V) Log.d(TAG, "finalize()"); + Log.d(TAG, "finalize()"); if (mService != null) { try { BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.A2DP_SINK, - mService); + mService); mService = null; }catch (Throwable t) { Log.w(TAG, "Error cleaning up A2DP proxy", t); diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java index 04a7afa61c50..e96c44db695b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java @@ -16,6 +16,7 @@ package com.android.settingslib.bluetooth; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothHearingAid; @@ -28,7 +29,7 @@ import android.os.ParcelUuid; import android.os.SystemClock; import android.text.TextUtils; import android.util.Log; -import android.bluetooth.BluetoothAdapter; + import androidx.annotation.VisibleForTesting; import com.android.settingslib.R; diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java index e9d96ae0310f..b360faabcbb0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManager.java @@ -31,8 +31,8 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Set; import java.util.Objects; +import java.util.Set; /** * CachedBluetoothDeviceManager manages the set of remote Bluetooth devices. diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java index 4c21e61eb47b..1d2fda94deaa 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java @@ -16,23 +16,17 @@ package com.android.settingslib.bluetooth; -import android.bluetooth.BluetoothHearingAid; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothClass; -import android.bluetooth.BluetoothCodecConfig; -import android.bluetooth.BluetoothCodecStatus; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothHearingAid; import android.bluetooth.BluetoothProfile; -import android.bluetooth.BluetoothUuid; import android.content.Context; -import android.os.ParcelUuid; import android.util.Log; -import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.R; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; public class HearingAidProfile implements LocalBluetoothProfile { diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java index d0819098deb1..0857b019ee64 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java @@ -16,10 +16,10 @@ package com.android.settingslib.bluetooth; -import android.bluetooth.BluetoothHeadsetClient; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothHeadsetClient; import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothUuid; import android.content.Context; @@ -36,7 +36,6 @@ import java.util.List; */ final class HfpClientProfile implements LocalBluetoothProfile { private static final String TAG = "HfpClientProfile"; - private static boolean V = false; private BluetoothHeadsetClient mService; private boolean mIsProfileReady; @@ -61,7 +60,7 @@ final class HfpClientProfile implements LocalBluetoothProfile { @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { - if (V) Log.d(TAG,"Bluetooth service connected"); + Log.d(TAG, "Bluetooth service connected, profile:" + profile); mService = (BluetoothHeadsetClient) proxy; // We just bound to the service, so refresh the UI for any connected HFP devices. List<BluetoothDevice> deviceList = mService.getConnectedDevices(); @@ -82,7 +81,7 @@ final class HfpClientProfile implements LocalBluetoothProfile { @Override public void onServiceDisconnected(int profile) { - if (V) Log.d(TAG,"Bluetooth service disconnected"); + Log.d(TAG, "Bluetooth service disconnected, profile:" + profile); mIsProfileReady=false; } } @@ -118,7 +117,9 @@ final class HfpClientProfile implements LocalBluetoothProfile { } public List<BluetoothDevice> getConnectedDevices() { - if (mService == null) return new ArrayList<BluetoothDevice>(0); + if (mService == null) { + return new ArrayList<BluetoothDevice>(0); + } return mService.getDevicesMatchingConnectionStates( new int[] {BluetoothProfile.STATE_CONNECTED, BluetoothProfile.STATE_CONNECTING, @@ -127,23 +128,17 @@ final class HfpClientProfile implements LocalBluetoothProfile { @Override public boolean connect(BluetoothDevice device) { - if (mService == null) return false; - List<BluetoothDevice> srcs = getConnectedDevices(); - if (srcs != null) { - for (BluetoothDevice src : srcs) { - if (src.equals(device)) { - // Connect to same device, Ignore it - Log.d(TAG,"Ignoring Connect"); - return true; - } - } + if (mService == null) { + return false; } return mService.connect(device); } @Override public boolean disconnect(BluetoothDevice device) { - if (mService == null) return false; + if (mService == null) { + return false; + } // Downgrade priority as user is disconnecting the headset. if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON){ mService.setPriority(device, BluetoothProfile.PRIORITY_ON); @@ -161,19 +156,25 @@ final class HfpClientProfile implements LocalBluetoothProfile { @Override public boolean isPreferred(BluetoothDevice device) { - if (mService == null) return false; + if (mService == null) { + return false; + } return mService.getPriority(device) > BluetoothProfile.PRIORITY_OFF; } @Override public int getPreferred(BluetoothDevice device) { - if (mService == null) return BluetoothProfile.PRIORITY_OFF; + if (mService == null) { + return BluetoothProfile.PRIORITY_OFF; + } return mService.getPriority(device); } @Override public void setPreferred(BluetoothDevice device, boolean preferred) { - if (mService == null) return; + if (mService == null) { + return; + } if (preferred) { if (mService.getPriority(device) < BluetoothProfile.PRIORITY_ON) { mService.setPriority(device, BluetoothProfile.PRIORITY_ON); @@ -219,7 +220,7 @@ final class HfpClientProfile implements LocalBluetoothProfile { } protected void finalize() { - if (V) Log.d(TAG, "finalize()"); + Log.d(TAG, "finalize()"); if (mService != null) { try { BluetoothAdapter.getDefaultAdapter().closeProfileProxy( diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java index 45ec4a1e554d..ca1eea522cd0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java @@ -26,7 +26,6 @@ import android.util.Log; import com.android.settingslib.R; -import java.util.Collection; import java.util.List; /** diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java index 85c65cc4f398..08fbbedac19c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java @@ -34,9 +34,12 @@ import android.bluetooth.BluetoothUuid; import android.content.Context; import android.content.Intent; import android.os.ParcelUuid; -import androidx.annotation.VisibleForTesting; import android.util.Log; + +import androidx.annotation.VisibleForTesting; + import com.android.internal.R; + import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java index aa7a7af582a7..511c4ce678e2 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java @@ -32,11 +32,10 @@ import java.util.ArrayList; import java.util.List; /** - * MapProfile handles Bluetooth MAP profile. + * MapProfile handles the Bluetooth MAP MSE role */ public class MapProfile implements LocalBluetoothProfile { private static final String TAG = "MapProfile"; - private static boolean V = true; private BluetoothMap mService; private boolean mIsProfileReady; @@ -60,7 +59,7 @@ public class MapProfile implements LocalBluetoothProfile { implements BluetoothProfile.ServiceListener { public void onServiceConnected(int profile, BluetoothProfile proxy) { - if (V) Log.d(TAG,"Bluetooth service connected"); + Log.d(TAG, "Bluetooth service connected"); mService = (BluetoothMap) proxy; // We just bound to the service, so refresh the UI for any connected MAP devices. List<BluetoothDevice> deviceList = mService.getConnectedDevices(); @@ -82,14 +81,14 @@ public class MapProfile implements LocalBluetoothProfile { } public void onServiceDisconnected(int profile) { - if (V) Log.d(TAG,"Bluetooth service disconnected"); + Log.d(TAG, "Bluetooth service disconnected"); mProfileManager.callServiceDisconnectedListeners(); mIsProfileReady=false; } } public boolean isProfileReady() { - if(V) Log.d(TAG,"isProfileReady(): "+ mIsProfileReady); + Log.d(TAG, "isProfileReady(): " + mIsProfileReady); return mIsProfileReady; } @@ -117,45 +116,45 @@ public class MapProfile implements LocalBluetoothProfile { } public boolean connect(BluetoothDevice device) { - if(V)Log.d(TAG,"connect() - should not get called"); + Log.d(TAG, "connect() - should not get called"); return false; // MAP never connects out } public boolean disconnect(BluetoothDevice device) { - if (mService == null) return false; - List<BluetoothDevice> deviceList = mService.getConnectedDevices(); - if (!deviceList.isEmpty() && deviceList.get(0).equals(device)) { - if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON) { - mService.setPriority(device, BluetoothProfile.PRIORITY_ON); - } - return mService.disconnect(device); - } else { + if (mService == null) { return false; } + if (mService.getPriority(device) > BluetoothProfile.PRIORITY_ON) { + mService.setPriority(device, BluetoothProfile.PRIORITY_ON); + } + return mService.disconnect(device); } public int getConnectionStatus(BluetoothDevice device) { - if (mService == null) return BluetoothProfile.STATE_DISCONNECTED; - List<BluetoothDevice> deviceList = mService.getConnectedDevices(); - if(V) Log.d(TAG,"getConnectionStatus: status is: "+ mService.getConnectionState(device)); - - return !deviceList.isEmpty() && deviceList.get(0).equals(device) - ? mService.getConnectionState(device) - : BluetoothProfile.STATE_DISCONNECTED; + if (mService == null) { + return BluetoothProfile.STATE_DISCONNECTED; + } + return mService.getConnectionState(device); } public boolean isPreferred(BluetoothDevice device) { - if (mService == null) return false; + if (mService == null) { + return false; + } return mService.getPriority(device) > BluetoothProfile.PRIORITY_OFF; } public int getPreferred(BluetoothDevice device) { - if (mService == null) return BluetoothProfile.PRIORITY_OFF; + if (mService == null) { + return BluetoothProfile.PRIORITY_OFF; + } return mService.getPriority(device); } public void setPreferred(BluetoothDevice device, boolean preferred) { - if (mService == null) return; + if (mService == null) { + return; + } if (preferred) { if (mService.getPriority(device) < BluetoothProfile.PRIORITY_ON) { mService.setPriority(device, BluetoothProfile.PRIORITY_ON); @@ -166,7 +165,9 @@ public class MapProfile implements LocalBluetoothProfile { } public List<BluetoothDevice> getConnectedDevices() { - if (mService == null) return new ArrayList<BluetoothDevice>(0); + if (mService == null) { + return new ArrayList<BluetoothDevice>(0); + } return mService.getDevicesMatchingConnectionStates( new int[] {BluetoothProfile.STATE_CONNECTED, BluetoothProfile.STATE_CONNECTING, @@ -204,7 +205,7 @@ public class MapProfile implements LocalBluetoothProfile { } protected void finalize() { - if (V) Log.d(TAG, "finalize()"); + Log.d(TAG, "finalize()"); if (mService != null) { try { BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.MAP, diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/OppProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/OppProfile.java index e5c0b147f97b..dfd16224ef8f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/OppProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/OppProfile.java @@ -16,12 +16,12 @@ package com.android.settingslib.bluetooth; -import com.android.settingslib.R; - import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; +import com.android.settingslib.R; + /** * OppProfile handles Bluetooth OPP. */ diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java index b735c23e966f..bdbfc9df59dd 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java @@ -16,10 +16,10 @@ package com.android.settingslib.bluetooth; -import android.bluetooth.BluetoothPbapClient; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothPbapClient; import android.bluetooth.BluetoothProfile; import android.bluetooth.BluetoothUuid; import android.content.Context; diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java index 93e6be6559f6..2c455d5f4c32 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java @@ -19,8 +19,8 @@ package com.android.settingslib.bluetooth; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothClass; import android.bluetooth.BluetoothDevice; -import android.bluetooth.BluetoothSap; import android.bluetooth.BluetoothProfile; +import android.bluetooth.BluetoothSap; import android.bluetooth.BluetoothUuid; import android.content.Context; import android.os.ParcelUuid; diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/Utils.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/Utils.java index 26f3ab69ba37..bcb417c5e912 100644 --- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/Utils.java +++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/Utils.java @@ -5,9 +5,10 @@ import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.graphics.drawable.Drawable; -import androidx.annotation.DrawableRes; import android.util.Pair; +import androidx.annotation.DrawableRes; + import com.android.settingslib.R; import com.android.settingslib.graph.BluetoothDeviceLayerDrawable; diff --git a/packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java index f4d647d61005..9572fb3c629d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/AbstractPreferenceController.java @@ -1,6 +1,7 @@ package com.android.settingslib.core; import android.content.Context; + import androidx.preference.Preference; import androidx.preference.PreferenceGroup; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java index 72273046ef29..78963f3e1bfa 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/EventLogWriter.java @@ -18,7 +18,6 @@ package com.android.settingslib.core.instrumentation; import android.content.Context; import android.metrics.LogMaker; -import android.util.Log; import android.util.Pair; import com.android.internal.logging.MetricsLogger; diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java index a79f125d4c99..a28e45ce08f7 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java @@ -20,11 +20,12 @@ import android.content.Context; import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.os.AsyncTask; -import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.util.Pair; +import androidx.annotation.VisibleForTesting; + import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import java.util.Map; diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java index cb1ca59d2f43..06d7c4d9cbc3 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixin.java @@ -16,17 +16,18 @@ package com.android.settingslib.core.instrumentation; +import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; + import android.app.Activity; +import android.content.Intent; +import android.os.SystemClock; + import androidx.lifecycle.Lifecycle.Event; import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.OnLifecycleEvent; -import android.content.Intent; -import android.os.SystemClock; import com.android.internal.logging.nano.MetricsProto; -import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; - /** * Logs visibility change of a fragment. */ diff --git a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/Lifecycle.java b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/Lifecycle.java index 7ec757a56217..56de280a0049 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/Lifecycle.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/Lifecycle.java @@ -18,19 +18,20 @@ package com.android.settingslib.core.lifecycle; import static androidx.lifecycle.Lifecycle.Event.ON_ANY; import android.annotation.UiThread; -import androidx.lifecycle.LifecycleOwner; -import androidx.lifecycle.LifecycleRegistry; -import androidx.lifecycle.OnLifecycleEvent; import android.content.Context; import android.os.Bundle; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.preference.PreferenceScreen; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.lifecycle.LifecycleOwner; +import androidx.lifecycle.LifecycleRegistry; +import androidx.lifecycle.OnLifecycleEvent; +import androidx.preference.PreferenceScreen; + import com.android.settingslib.core.lifecycle.events.OnAttach; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu; diff --git a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableActivity.java b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableActivity.java index f9aa062b64da..a3b4a08eafa8 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableActivity.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableActivity.java @@ -24,12 +24,13 @@ import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.annotation.Nullable; import android.app.Activity; -import androidx.lifecycle.LifecycleOwner; import android.os.Bundle; import android.os.PersistableBundle; import android.view.Menu; import android.view.MenuItem; +import androidx.lifecycle.LifecycleOwner; + /** * {@link Activity} that has hooks to observe activity lifecycle events. */ diff --git a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableDialogFragment.java b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableDialogFragment.java index 972e062bb396..03727d6ba6de 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableDialogFragment.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableDialogFragment.java @@ -23,13 +23,14 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.app.DialogFragment; -import androidx.lifecycle.LifecycleOwner; import android.content.Context; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import androidx.lifecycle.LifecycleOwner; + /** * {@link DialogFragment} that has hooks to observe fragment lifecycle events. */ diff --git a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableFragment.java b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableFragment.java index 55597cc1247a..db3f8e860903 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableFragment.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservableFragment.java @@ -25,13 +25,14 @@ import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.annotation.CallSuper; import android.app.Fragment; -import androidx.lifecycle.LifecycleOwner; import android.content.Context; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import androidx.lifecycle.LifecycleOwner; + public class ObservableFragment extends Fragment implements LifecycleOwner { private final Lifecycle mLifecycle = new Lifecycle(this); diff --git a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservablePreferenceFragment.java b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservablePreferenceFragment.java index 904681c4aa3c..3f3a02b1c16e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservablePreferenceFragment.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/ObservablePreferenceFragment.java @@ -24,15 +24,16 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.annotation.CallSuper; -import androidx.lifecycle.LifecycleOwner; import android.content.Context; import android.os.Bundle; -import androidx.preference.PreferenceFragment; -import androidx.preference.PreferenceScreen; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import androidx.lifecycle.LifecycleOwner; +import androidx.preference.PreferenceFragment; +import androidx.preference.PreferenceScreen; + /** * {@link PreferenceFragment} that has hooks to observe fragment lifecycle events. */ diff --git a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/events/OnCreate.java b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/events/OnCreate.java index ada1537250b6..4f6d00157b72 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/events/OnCreate.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/events/OnCreate.java @@ -16,9 +16,10 @@ package com.android.settingslib.core.lifecycle.events; +import android.os.Bundle; + import androidx.lifecycle.Lifecycle; import androidx.lifecycle.OnLifecycleEvent; -import android.os.Bundle; /** * @deprecated use {@link OnLifecycleEvent(Lifecycle.Event) } diff --git a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/events/OnPrepareOptionsMenu.java b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/events/OnPrepareOptionsMenu.java index b9f13713c59f..92ae9fdd50a9 100644 --- a/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/events/OnPrepareOptionsMenu.java +++ b/packages/SettingsLib/src/com/android/settingslib/core/lifecycle/events/OnPrepareOptionsMenu.java @@ -17,7 +17,6 @@ package com.android.settingslib.core.lifecycle.events; import android.view.Menu; -import android.view.MenuInflater; public interface OnPrepareOptionsMenu { void onPrepareOptionsMenu(Menu menu); diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java index 955f64a357dc..7e165d09ec64 100644 --- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java +++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java @@ -20,9 +20,6 @@ import android.content.Context; import android.content.res.XmlResourceParser; import android.icu.text.TimeZoneFormat; import android.icu.text.TimeZoneNames; -import androidx.annotation.VisibleForTesting; -import androidx.core.text.BidiFormatter; -import androidx.core.text.TextDirectionHeuristicsCompat; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.TextUtils; @@ -31,6 +28,10 @@ import android.text.style.TtsSpan; import android.util.Log; import android.view.View; +import androidx.annotation.VisibleForTesting; +import androidx.core.text.BidiFormatter; +import androidx.core.text.TextDirectionHeuristicsCompat; + import com.android.settingslib.R; import libcore.util.TimeZoneFinder; diff --git a/packages/SettingsLib/src/com/android/settingslib/development/AbstractEnableAdbPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/development/AbstractEnableAdbPreferenceController.java index a2ae9031d7b3..6076dd30f0bd 100644 --- a/packages/SettingsLib/src/com/android/settingslib/development/AbstractEnableAdbPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/development/AbstractEnableAdbPreferenceController.java @@ -22,13 +22,14 @@ import android.content.Context; import android.content.Intent; import android.os.UserManager; import android.provider.Settings; +import android.text.TextUtils; + import androidx.annotation.VisibleForTesting; -import androidx.preference.SwitchPreference; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import androidx.preference.SwitchPreference; import androidx.preference.TwoStatePreference; -import android.text.TextUtils; import com.android.settingslib.core.ConfirmationDialogController; diff --git a/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogdSizePreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogdSizePreferenceController.java index e2f6b7b87560..5a823976cd0e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogdSizePreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogdSizePreferenceController.java @@ -19,6 +19,7 @@ package com.android.settingslib.development; import android.content.Context; import android.content.Intent; import android.os.SystemProperties; + import androidx.annotation.VisibleForTesting; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.ListPreference; diff --git a/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogpersistPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogpersistPreferenceController.java index f277c16a1e2c..87226746668e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogpersistPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/development/AbstractLogpersistPreferenceController.java @@ -22,12 +22,13 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.Bundle; import android.os.SystemProperties; +import android.text.TextUtils; + import androidx.annotation.VisibleForTesting; import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import android.text.TextUtils; import com.android.settingslib.R; import com.android.settingslib.core.ConfirmationDialogController; diff --git a/packages/SettingsLib/src/com/android/settingslib/development/DeveloperOptionsPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/development/DeveloperOptionsPreferenceController.java index 15d5522bbd7b..f757aa4e4dab 100644 --- a/packages/SettingsLib/src/com/android/settingslib/development/DeveloperOptionsPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/development/DeveloperOptionsPreferenceController.java @@ -17,6 +17,7 @@ package com.android.settingslib.development; import android.content.Context; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/src/com/android/settingslib/development/DevelopmentSettingsEnabler.java b/packages/SettingsLib/src/com/android/settingslib/development/DevelopmentSettingsEnabler.java index 8d186032bfef..7f1f185615a1 100644 --- a/packages/SettingsLib/src/com/android/settingslib/development/DevelopmentSettingsEnabler.java +++ b/packages/SettingsLib/src/com/android/settingslib/development/DevelopmentSettingsEnabler.java @@ -21,6 +21,7 @@ import android.content.Intent; import android.os.Build; import android.os.UserManager; import android.provider.Settings; + import androidx.localbroadcastmanager.content.LocalBroadcastManager; public class DevelopmentSettingsEnabler { diff --git a/packages/SettingsLib/src/com/android/settingslib/development/SystemPropPoker.java b/packages/SettingsLib/src/com/android/settingslib/development/SystemPropPoker.java index dba22d0c6af3..3f16be184c41 100644 --- a/packages/SettingsLib/src/com/android/settingslib/development/SystemPropPoker.java +++ b/packages/SettingsLib/src/com/android/settingslib/development/SystemPropPoker.java @@ -21,9 +21,10 @@ import android.os.IBinder; import android.os.Parcel; import android.os.RemoteException; import android.os.ServiceManager; +import android.util.Log; + import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; -import android.util.Log; public class SystemPropPoker { private static final String TAG = "SystemPropPoker"; diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractBluetoothAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractBluetoothAddressPreferenceController.java index 821b4d5da049..745591235dbb 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractBluetoothAddressPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractBluetoothAddressPreferenceController.java @@ -19,10 +19,11 @@ package com.android.settingslib.deviceinfo; import android.annotation.SuppressLint; import android.bluetooth.BluetoothAdapter; import android.content.Context; +import android.text.TextUtils; + import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import android.text.TextUtils; import com.android.settingslib.R; import com.android.settingslib.core.lifecycle.Lifecycle; diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java index 10260de289d3..a5f403690dab 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractImsStatusPreferenceController.java @@ -21,13 +21,14 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.PersistableBundle; -import androidx.annotation.VisibleForTesting; -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; +import androidx.annotation.VisibleForTesting; +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; + import com.android.settingslib.R; import com.android.settingslib.core.lifecycle.Lifecycle; diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java index 45cd86667f1e..24da72ea611a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractIpAddressPreferenceController.java @@ -20,6 +20,7 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.LinkProperties; import android.net.wifi.WifiManager; + import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSerialNumberPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSerialNumberPreferenceController.java index 60b29fb8682f..d28792ef30de 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSerialNumberPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractSerialNumberPreferenceController.java @@ -18,10 +18,11 @@ package com.android.settingslib.deviceinfo; import android.content.Context; import android.os.Build; +import android.text.TextUtils; + import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import android.text.TextUtils; import com.android.settingslib.core.AbstractPreferenceController; diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractUptimePreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractUptimePreferenceController.java index 332a2a463b74..4045b81cc07c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractUptimePreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractUptimePreferenceController.java @@ -20,10 +20,11 @@ import android.content.Context; import android.os.Handler; import android.os.Message; import android.os.SystemClock; +import android.text.format.DateUtils; + import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import android.text.format.DateUtils; import com.android.settingslib.core.AbstractPreferenceController; import com.android.settingslib.core.lifecycle.Lifecycle; diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java index 89d259507d8a..c209f232b39e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java @@ -22,10 +22,11 @@ import android.net.ConnectivityManager; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.provider.Settings; +import android.text.TextUtils; + import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import android.text.TextUtils; import com.android.settingslib.R; import com.android.settingslib.core.lifecycle.Lifecycle; diff --git a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java index af8fd4c46a64..e0ca1ab0c07c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java @@ -16,11 +16,8 @@ package com.android.settingslib.display; -import com.android.settingslib.R; - import android.content.Context; import android.content.res.Resources; -import android.hardware.display.DisplayManager; import android.os.AsyncTask; import android.os.RemoteException; import android.os.UserHandle; @@ -31,6 +28,8 @@ import android.view.Display; import android.view.IWindowManager; import android.view.WindowManagerGlobal; +import com.android.settingslib.R; + import java.util.Arrays; /** diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java index d9605367dc56..a980e4f5bb22 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/CategoryManager.java @@ -17,12 +17,13 @@ package com.android.settingslib.drawer; import android.content.ComponentName; import android.content.Context; -import androidx.annotation.VisibleForTesting; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.util.Pair; +import androidx.annotation.VisibleForTesting; + import com.android.settingslib.applications.InterestingConfigChanges; import java.util.ArrayList; @@ -32,8 +33,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import static java.lang.String.CASE_INSENSITIVE_ORDER; - public class CategoryManager { private static final String TAG = "CategoryManager"; diff --git a/packages/SettingsLib/src/com/android/settingslib/drawer/UserAdapter.java b/packages/SettingsLib/src/com/android/settingslib/drawer/UserAdapter.java index 8a09df2849c9..a1f314d92b3a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/drawer/UserAdapter.java +++ b/packages/SettingsLib/src/com/android/settingslib/drawer/UserAdapter.java @@ -17,7 +17,6 @@ package com.android.settingslib.drawer; import android.app.ActivityManager; - import android.content.Context; import android.content.pm.UserInfo; import android.database.DataSetObserver; @@ -32,10 +31,10 @@ import android.widget.ImageView; import android.widget.ListAdapter; import android.widget.SpinnerAdapter; import android.widget.TextView; -import com.android.internal.util.UserIcons; -import com.android.settingslib.drawable.UserIconDrawable; +import com.android.internal.util.UserIcons; import com.android.settingslib.R; +import com.android.settingslib.drawable.UserIconDrawable; import java.util.ArrayList; import java.util.List; diff --git a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java index 988060eac64d..5db5f526f10c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java +++ b/packages/SettingsLib/src/com/android/settingslib/dream/DreamBackend.java @@ -36,12 +36,12 @@ import android.util.AttributeSet; import android.util.Log; import android.util.Xml; -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java index 134b3cf57876..dc9e4586fe2c 100644 --- a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java +++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/PowerWhitelistBackend.java @@ -22,12 +22,13 @@ import android.content.pm.PackageManager; import android.os.IDeviceIdleController; import android.os.RemoteException; import android.os.ServiceManager; -import androidx.annotation.VisibleForTesting; import android.telecom.DefaultDialerManager; import android.text.TextUtils; import android.util.ArraySet; import android.util.Log; +import androidx.annotation.VisibleForTesting; + import com.android.internal.telephony.SmsApplication; import com.android.internal.util.ArrayUtils; diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java b/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java index 17523013a94f..a7c7d52a8d7e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java +++ b/packages/SettingsLib/src/com/android/settingslib/graph/BluetoothDeviceLayerDrawable.java @@ -19,18 +19,13 @@ package com.android.settingslib.graph; import android.annotation.NonNull; import android.content.Context; import android.content.res.Resources; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Matrix; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; -import android.graphics.Rect; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; -import androidx.annotation.VisibleForTesting; import android.view.Gravity; -import android.view.View; + +import androidx.annotation.VisibleForTesting; import com.android.settingslib.R; import com.android.settingslib.Utils; diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManager.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManager.java index 628e70af8318..117b48ff852d 100644 --- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManager.java +++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeEnablerManager.java @@ -19,16 +19,17 @@ package com.android.settingslib.inputmethod; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Configuration; -import androidx.preference.PreferenceFragment; -import androidx.preference.Preference; -import androidx.preference.PreferenceCategory; -import androidx.preference.PreferenceScreen; -import androidx.preference.TwoStatePreference; import android.text.TextUtils; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; +import androidx.preference.Preference; +import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceFragment; +import androidx.preference.PreferenceScreen; +import androidx.preference.TwoStatePreference; + import com.android.settingslib.R; import java.text.Collator; diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java index 0a5c28c7b127..4691c4c10d8e 100644 --- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java +++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodAndSubtypeUtil.java @@ -25,15 +25,16 @@ import android.content.res.Configuration; import android.icu.text.ListFormatter; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; -import androidx.preference.PreferenceFragment; -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; -import androidx.preference.TwoStatePreference; import android.text.TextUtils; import android.util.Log; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; +import androidx.preference.Preference; +import androidx.preference.PreferenceFragment; +import androidx.preference.PreferenceScreen; +import androidx.preference.TwoStatePreference; + import com.android.internal.app.LocaleHelper; import com.android.internal.inputmethod.InputMethodUtils; diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java index 2e34dc5cac83..3d7bb507ae91 100644 --- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodPreference.java @@ -24,9 +24,6 @@ import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.UserHandle; -import androidx.preference.Preference; -import androidx.preference.Preference.OnPreferenceChangeListener; -import androidx.preference.Preference.OnPreferenceClickListener; import android.text.TextUtils; import android.util.Log; import android.view.inputmethod.InputMethodInfo; @@ -34,6 +31,10 @@ import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodSubtype; import android.widget.Toast; +import androidx.preference.Preference; +import androidx.preference.Preference.OnPreferenceChangeListener; +import androidx.preference.Preference.OnPreferenceClickListener; + import com.android.internal.annotations.VisibleForTesting; import com.android.internal.inputmethod.InputMethodUtils; import com.android.settingslib.R; diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java index a0b1df25baf6..f261d29fd0f3 100644 --- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/InputMethodSubtypePreference.java @@ -17,11 +17,12 @@ package com.android.settingslib.inputmethod; import android.content.Context; -import androidx.preference.Preference; import android.text.TextUtils; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodSubtype; +import androidx.preference.Preference; + import com.android.internal.annotations.VisibleForTesting; import com.android.internal.inputmethod.InputMethodUtils; diff --git a/packages/SettingsLib/src/com/android/settingslib/inputmethod/SwitchWithNoTextPreference.java b/packages/SettingsLib/src/com/android/settingslib/inputmethod/SwitchWithNoTextPreference.java index 2b38697a65ce..2360298822ba 100644 --- a/packages/SettingsLib/src/com/android/settingslib/inputmethod/SwitchWithNoTextPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/inputmethod/SwitchWithNoTextPreference.java @@ -17,6 +17,7 @@ package com.android.settingslib.inputmethod; import android.content.Context; + import androidx.preference.SwitchPreference; public class SwitchWithNoTextPreference extends SwitchPreference { diff --git a/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXml.java b/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXml.java index 444c19c94c9f..42306f6d46d0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXml.java +++ b/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXml.java @@ -16,11 +16,12 @@ package com.android.settingslib.license; -import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.util.Xml; +import androidx.annotation.VisibleForTesting; + import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; diff --git a/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlLoader.java b/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlLoader.java index 307b025107d6..2aaea657d29f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlLoader.java +++ b/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlLoader.java @@ -17,9 +17,10 @@ package com.android.settingslib.license; import android.content.Context; -import androidx.annotation.VisibleForTesting; import android.util.Log; +import androidx.annotation.VisibleForTesting; + import com.android.settingslib.utils.AsyncLoader; import java.io.File; diff --git a/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java b/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java index 96bed93165fb..b8e1251dd79a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java +++ b/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java @@ -25,10 +25,12 @@ import android.graphics.drawable.Drawable; import android.os.Process; import android.os.UserHandle; import android.os.UserManager; -import androidx.annotation.VisibleForTesting; import android.text.format.DateUtils; import android.util.IconDrawableFactory; import android.util.Log; + +import androidx.annotation.VisibleForTesting; + import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java index f7aa29796ce8..33321938fe3f 100644 --- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java +++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageController.java @@ -134,7 +134,7 @@ public class DataUsageController { final NetworkStatsHistory history = session.getHistoryForNetwork(template, FIELDS); final long now = System.currentTimeMillis(); final long start, end; - if (policy != null) { + if (policy != null && policy.hasCycle()) { final Pair<ZonedDateTime, ZonedDateTime> cycle = NetworkPolicyManager .cycleIterator(policy).next(); start = cycle.first.toInstant().toEpochMilli(); diff --git a/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java b/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java index 224b9679a9a2..c14f5588cddf 100644 --- a/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java +++ b/packages/SettingsLib/src/com/android/settingslib/net/UidDetailProvider.java @@ -28,9 +28,9 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.net.ConnectivityManager; import android.net.TrafficStats; -import android.os.UserManager; -import android.os.UserHandle; import android.os.RemoteException; +import android.os.UserHandle; +import android.os.UserManager; import android.text.TextUtils; import android.util.Log; import android.util.SparseArray; diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java b/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java index 6da486ab3aa8..027860ca2a46 100644 --- a/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java +++ b/packages/SettingsLib/src/com/android/settingslib/notification/ZenDurationDialog.java @@ -24,7 +24,6 @@ import android.content.DialogInterface; import android.provider.Settings; import android.service.notification.Condition; import android.service.notification.ZenModeConfig; -import androidx.annotation.VisibleForTesting; import android.view.LayoutInflater; import android.view.View; import android.widget.CompoundButton; @@ -35,6 +34,8 @@ import android.widget.RadioGroup; import android.widget.ScrollView; import android.widget.TextView; +import androidx.annotation.VisibleForTesting; + import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto; import com.android.internal.policy.PhoneWindow; diff --git a/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionController.java b/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionController.java index 6a8b01a23688..ec774872ce67 100644 --- a/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionController.java +++ b/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionController.java @@ -24,9 +24,10 @@ import android.os.IBinder; import android.os.RemoteException; import android.service.settings.suggestions.ISuggestionService; import android.service.settings.suggestions.Suggestion; +import android.util.Log; + import androidx.annotation.Nullable; import androidx.annotation.WorkerThread; -import android.util.Log; import java.util.List; diff --git a/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionControllerMixin.java b/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionControllerMixin.java index ee8b6fe60478..6597daa9acaf 100644 --- a/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionControllerMixin.java +++ b/packages/SettingsLib/src/com/android/settingslib/suggestions/SuggestionControllerMixin.java @@ -17,15 +17,16 @@ package com.android.settingslib.suggestions; import android.app.LoaderManager; -import androidx.lifecycle.OnLifecycleEvent; import android.content.ComponentName; import android.content.Context; import android.content.Loader; import android.os.Bundle; import android.service.settings.suggestions.Suggestion; -import androidx.annotation.Nullable; import android.util.Log; +import androidx.annotation.Nullable; +import androidx.lifecycle.OnLifecycleEvent; + import com.android.settingslib.core.lifecycle.Lifecycle; import java.util.List; diff --git a/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java b/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java index 7cdbe719df78..9451b3620418 100644 --- a/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java +++ b/packages/SettingsLib/src/com/android/settingslib/users/AppRestrictionsHelper.java @@ -31,12 +31,13 @@ import android.graphics.drawable.Drawable; import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; -import androidx.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.view.inputmethod.InputMethodInfo; import android.view.inputmethod.InputMethodManager; +import androidx.annotation.VisibleForTesting; + import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; diff --git a/packages/SettingsLib/src/com/android/settingslib/utils/IconCache.java b/packages/SettingsLib/src/com/android/settingslib/utils/IconCache.java index f0548ff7a923..c8c8ac22089a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/utils/IconCache.java +++ b/packages/SettingsLib/src/com/android/settingslib/utils/IconCache.java @@ -19,6 +19,7 @@ package com.android.settingslib.utils; import android.content.Context; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; + import androidx.annotation.VisibleForTesting; import androidx.collection.ArrayMap; diff --git a/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java b/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java index e16da84ce713..fa59688d1523 100644 --- a/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java +++ b/packages/SettingsLib/src/com/android/settingslib/utils/PowerUtil.java @@ -22,9 +22,10 @@ import android.icu.text.MeasureFormat; import android.icu.text.MeasureFormat.FormatWidth; import android.icu.util.Measure; import android.icu.util.MeasureUnit; -import androidx.annotation.Nullable; import android.text.TextUtils; +import androidx.annotation.Nullable; + import com.android.settingslib.R; import java.time.Instant; diff --git a/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreference.java b/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreference.java index 87a56c7548d2..f02044dc52e0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreference.java @@ -17,13 +17,14 @@ package com.android.settingslib.widget; import android.content.Context; -import androidx.core.content.res.TypedArrayUtils; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; import android.text.method.LinkMovementMethod; import android.util.AttributeSet; import android.widget.TextView; +import androidx.core.content.res.TypedArrayUtils; +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; + import com.android.settingslib.R; /** diff --git a/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreferenceMixin.java b/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreferenceMixin.java index 5883754fa2ed..2987c1597193 100644 --- a/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreferenceMixin.java +++ b/packages/SettingsLib/src/com/android/settingslib/widget/FooterPreferenceMixin.java @@ -17,6 +17,7 @@ package com.android.settingslib.widget; import android.content.Context; + import androidx.preference.PreferenceFragment; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java index b9c76013b0d7..d62605dd3362 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java @@ -48,7 +48,6 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.os.SystemClock; import android.os.UserHandle; -import androidx.annotation.NonNull; import android.text.Spannable; import android.text.SpannableString; import android.text.TextUtils; @@ -56,6 +55,8 @@ import android.text.style.TtsSpan; import android.util.ArraySet; import android.util.Log; +import androidx.annotation.NonNull; + import com.android.internal.annotations.VisibleForTesting; import com.android.settingslib.R; import com.android.settingslib.utils.ThreadUtils; diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java index b07dd8f18354..468b6753c311 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPointPreference.java @@ -25,9 +25,6 @@ import android.graphics.drawable.StateListDrawable; import android.net.wifi.WifiConfiguration; import android.os.Looper; import android.os.UserHandle; -import androidx.annotation.VisibleForTesting; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; import android.text.TextUtils; import android.util.AttributeSet; import android.util.SparseArray; @@ -35,9 +32,12 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.VisibleForTesting; +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; + import com.android.settingslib.R; import com.android.settingslib.TronUtils; -import com.android.settingslib.TwoTargetPreference; import com.android.settingslib.Utils; import com.android.settingslib.wifi.AccessPoint.Speed; diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java b/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java index 5862e6f19e16..afea5d2078b0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java @@ -24,6 +24,7 @@ import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.os.Bundle; import android.os.Parcelable; + import androidx.annotation.Keep; import com.android.settingslib.wifi.AccessPoint.Speed; diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java index 6211d1214fcc..9050b4b0a15b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java @@ -41,15 +41,16 @@ import android.os.Message; import android.os.Process; import android.os.SystemClock; import android.provider.Settings; -import androidx.annotation.GuardedBy; -import androidx.annotation.NonNull; -import androidx.annotation.VisibleForTesting; import android.text.format.DateUtils; import android.util.ArrayMap; import android.util.ArraySet; import android.util.Log; import android.widget.Toast; +import androidx.annotation.GuardedBy; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; + import com.android.settingslib.R; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTrackerFactory.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTrackerFactory.java index e73d952cd645..93e4fce6e74b 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTrackerFactory.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTrackerFactory.java @@ -16,6 +16,7 @@ package com.android.settingslib.wifi; import android.content.Context; + import androidx.annotation.Keep; import androidx.annotation.NonNull; diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java index 4792317c9f1e..4e6c005457c0 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java @@ -21,6 +21,7 @@ import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiInfo; import android.os.SystemClock; + import androidx.annotation.VisibleForTesting; import com.android.settingslib.R; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java index e153c3ed1edf..12aee6f813fb 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/HelpUtilsTest.java @@ -17,6 +17,7 @@ package com.android.settingslib; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Mockito.mock; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedLockUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedLockUtilsTest.java index 710dbc221f07..bf49ef3615ba 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedLockUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedLockUtilsTest.java @@ -20,8 +20,11 @@ import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NO import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT; import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_REMOTE_INPUT; import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS; + import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin; + import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doReturn; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedPreferenceHelperTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedPreferenceHelperTest.java index f00ae0b08019..79d682d67a4a 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedPreferenceHelperTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/RestrictedPreferenceHelperTest.java @@ -24,11 +24,12 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.content.Context; -import androidx.preference.Preference; -import androidx.preference.PreferenceViewHolder; import android.view.View; import android.widget.TextView; +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/TetherUtilTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/TetherUtilTest.java index 0109f48e0c5d..69193b77565e 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/TetherUtilTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/TetherUtilTest.java @@ -17,6 +17,7 @@ package com.android.settingslib; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.when; import android.content.Context; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/TwoTargetPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/TwoTargetPreferenceTest.java index efd7de351ebe..c0b69f2260eb 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/TwoTargetPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/TwoTargetPreferenceTest.java @@ -19,16 +19,19 @@ package com.android.settingslib; import static com.android.settingslib.TwoTargetPreference.ICON_SIZE_DEFAULT; import static com.android.settingslib.TwoTargetPreference.ICON_SIZE_MEDIUM; import static com.android.settingslib.TwoTargetPreference.ICON_SIZE_SMALL; + import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; import android.content.Context; -import androidx.preference.PreferenceViewHolder; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; +import androidx.preference.PreferenceViewHolder; + import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java index 09a2bd299c0b..967d4520303c 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java @@ -20,6 +20,7 @@ import static android.Manifest.permission.WRITE_SECURE_SETTINGS; import static com.android.settingslib.Utils.STORAGE_MANAGER_SHOW_OPT_IN_PROPERTY; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/ApplicationsStateRoboTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/ApplicationsStateRoboTest.java index 2dbabe0b76cc..19ce424257ac 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/ApplicationsStateRoboTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/ApplicationsStateRoboTest.java @@ -25,7 +25,6 @@ import static org.robolectric.shadow.api.Shadow.extract; import android.annotation.UserIdInt; import android.app.ApplicationPackageManager; -import android.app.usage.IStorageStatsManager; import android.app.usage.StorageStats; import android.app.usage.StorageStatsManager; import android.content.ComponentName; @@ -42,10 +41,10 @@ import android.os.Handler; import android.os.UserHandle; import android.util.IconDrawableFactory; +import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.applications.ApplicationsState.AppEntry; import com.android.settingslib.applications.ApplicationsState.Callbacks; import com.android.settingslib.applications.ApplicationsState.Session; -import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.testutils.shadow.ShadowUserManager; import org.junit.Before; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/DefaultAppInfoTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/DefaultAppInfoTest.java index 6a161d0a645c..815cb3a2f828 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/DefaultAppInfoTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/DefaultAppInfoTest.java @@ -41,7 +41,6 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; @RunWith(SettingsLibRobolectricTestRunner.class) public class DefaultAppInfoTest { diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/ServiceListingTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/ServiceListingTest.java index 060b716bb435..d8c459c07b75 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/ServiceListingTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/applications/ServiceListingTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.applications; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java index ef13a5faa11c..afd738ea307d 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpProfileTest.java @@ -16,6 +16,7 @@ package com.android.settingslib.bluetooth; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doAnswer; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpSinkProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpSinkProfileTest.java new file mode 100644 index 000000000000..d38a2d0782d7 --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpSinkProfileTest.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2018 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.settingslib.bluetooth; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.verify; + +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothA2dpSink; +import android.bluetooth.BluetoothProfile; +import android.content.Context; + +import com.android.settingslib.SettingsLibRobolectricTestRunner; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; + +@RunWith(SettingsLibRobolectricTestRunner.class) +public class A2dpSinkProfileTest { + + @Mock + private LocalBluetoothAdapter mAdapter; + @Mock + private CachedBluetoothDeviceManager mDeviceManager; + @Mock + private LocalBluetoothProfileManager mProfileManager; + @Mock + private BluetoothA2dpSink mService; + @Mock + private CachedBluetoothDevice mCachedBluetoothDevice; + @Mock + private BluetoothDevice mBluetoothDevice; + private BluetoothProfile.ServiceListener mServiceListener; + private A2dpSinkProfile mProfile; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + doAnswer((invocation) -> { + mServiceListener = (BluetoothProfile.ServiceListener) invocation.getArguments()[1]; + return null; + }).when(mAdapter).getProfileProxy(any(Context.class), + any(BluetoothProfile.ServiceListener.class), eq(BluetoothProfile.A2DP_SINK)); + + mProfile = new A2dpSinkProfile(RuntimeEnvironment.application, mAdapter, + mDeviceManager, mProfileManager); + mServiceListener.onServiceConnected(BluetoothProfile.A2DP_SINK, mService); + } + + @Test + public void connect_shouldConnectBluetoothA2dpSink() { + mProfile.connect(mBluetoothDevice); + verify(mService).connect(mBluetoothDevice); + } + + @Test + public void disconnect_shouldDisconnectBluetoothA2dpSink() { + mProfile.disconnect(mBluetoothDevice); + verify(mService).disconnect(mBluetoothDevice); + } + + @Test + public void getConnectionStatus_shouldReturnConnectionState() { + when(mService.getConnectionState(mBluetoothDevice)). + thenReturn(BluetoothProfile.STATE_CONNECTED); + assertThat(mProfile.getConnectionStatus(mBluetoothDevice)). + isEqualTo(BluetoothProfile.STATE_CONNECTED); + } +}
\ No newline at end of file diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothEventManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothEventManagerTest.java index 108069022567..26230bd1e891 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothEventManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/BluetoothEventManagerTest.java @@ -15,15 +15,12 @@ */ package com.android.settingslib.bluetooth; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.verify; import android.bluetooth.BluetoothHeadset; import android.bluetooth.BluetoothProfile; import android.content.Context; import android.content.Intent; - import android.telephony.TelephonyManager; import org.junit.Before; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java index 16ed85cf5afa..6d6a13284a80 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceManagerTest.java @@ -17,12 +17,8 @@ package com.android.settingslib.bluetooth; import static com.google.common.truth.Truth.assertThat; -import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doAnswer; -import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.bluetooth.BluetoothAdapter; @@ -31,8 +27,6 @@ import android.bluetooth.BluetoothDevice; import android.bluetooth.BluetoothProfile; import android.content.Context; -import com.android.settingslib.R; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -40,7 +34,6 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; -import org.robolectric.annotation.Config; import java.util.Collection; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HfpClientProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HfpClientProfileTest.java new file mode 100644 index 000000000000..7b467d69e7f4 --- /dev/null +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HfpClientProfileTest.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2018 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.settingslib.bluetooth; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.when; +import static org.mockito.Mockito.verify; + +import android.bluetooth.BluetoothDevice; +import android.bluetooth.BluetoothHeadsetClient; +import android.bluetooth.BluetoothProfile; +import android.content.Context; + +import com.android.settingslib.SettingsLibRobolectricTestRunner; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.robolectric.RuntimeEnvironment; + +@RunWith(SettingsLibRobolectricTestRunner.class) +public class HfpClientProfileTest { + + @Mock + private LocalBluetoothAdapter mAdapter; + @Mock + private CachedBluetoothDeviceManager mDeviceManager; + @Mock + private LocalBluetoothProfileManager mProfileManager; + @Mock + private BluetoothHeadsetClient mService; + @Mock + private CachedBluetoothDevice mCachedBluetoothDevice; + @Mock + private BluetoothDevice mBluetoothDevice; + private BluetoothProfile.ServiceListener mServiceListener; + private HfpClientProfile mProfile; + + @Before + public void setUp() { + MockitoAnnotations.initMocks(this); + + doAnswer((invocation) -> { + mServiceListener = (BluetoothProfile.ServiceListener) invocation.getArguments()[1]; + return null; + }).when(mAdapter).getProfileProxy(any(Context.class), + any(BluetoothProfile.ServiceListener.class), eq(BluetoothProfile.HEADSET_CLIENT)); + + mProfile = new HfpClientProfile(RuntimeEnvironment.application, mAdapter, + mDeviceManager, mProfileManager); + mServiceListener.onServiceConnected(BluetoothProfile.HEADSET_CLIENT, mService); + } + + @Test + public void connect_shouldConnectBluetoothHeadsetClient() { + mProfile.connect(mBluetoothDevice); + verify(mService).connect(mBluetoothDevice); + } + + @Test + public void disconnect_shouldDisconnectBluetoothHeadsetClient() { + mProfile.disconnect(mBluetoothDevice); + verify(mService).disconnect(mBluetoothDevice); + } + + @Test + public void getConnectionStatus_shouldReturnConnectionState() { + when(mService.getConnectionState(mBluetoothDevice)). + thenReturn(BluetoothProfile.STATE_CONNECTED); + assertThat(mProfile.getConnectionStatus(mBluetoothDevice)). + isEqualTo(BluetoothProfile.STATE_CONNECTED); + } +} diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java index d342bc878477..ca997bf8d27f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManagerTest.java @@ -20,7 +20,6 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -37,9 +36,6 @@ import android.content.Context; import android.content.Intent; import android.os.ParcelUuid; -import java.util.ArrayList; -import java.util.List; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -49,6 +45,9 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import java.util.ArrayList; +import java.util.List; + @RunWith(RobolectricTestRunner.class) @Config(resourceDir = "../../res") public class LocalBluetoothProfileManagerTest { diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/AbstractPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/AbstractPreferenceControllerTest.java index 5261ea0c88bb..28de1914838f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/AbstractPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/AbstractPreferenceControllerTest.java @@ -16,9 +16,11 @@ package com.android.settingslib.core; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.when; import android.content.Context; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java index 5c19e61d44dc..f4fd77930506 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/MetricsFeatureProviderTest.java @@ -16,6 +16,7 @@ package com.android.settingslib.core.instrumentation; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.verify; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java index 017d37388340..be671e6d4e22 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java @@ -15,10 +15,15 @@ */ package com.android.settingslib.core.instrumentation; -import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.ACTION_SETTINGS_PREFERENCE_CHANGE; -import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE; -import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE; -import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_SETTINGS_PREFERENCE_CHANGE_NAME; +import static com.android.internal.logging.nano.MetricsProto.MetricsEvent + .ACTION_SETTINGS_PREFERENCE_CHANGE; +import static com.android.internal.logging.nano.MetricsProto.MetricsEvent + .FIELD_SETTINGS_PREFERENCE_CHANGE_FLOAT_VALUE; +import static com.android.internal.logging.nano.MetricsProto.MetricsEvent + .FIELD_SETTINGS_PREFERENCE_CHANGE_INT_VALUE; +import static com.android.internal.logging.nano.MetricsProto.MetricsEvent + .FIELD_SETTINGS_PREFERENCE_CHANGE_NAME; + import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; import static org.mockito.Matchers.argThat; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixinTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixinTest.java index f34c33844d11..f78573a79f1c 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixinTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/VisibilityLoggerMixinTest.java @@ -16,6 +16,7 @@ package com.android.settingslib.core.instrumentation; import static com.android.settingslib.core.instrumentation.Instrumentable.METRICS_CATEGORY_UNKNOWN; + import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyInt; @@ -30,6 +31,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; + import androidx.fragment.app.FragmentActivity; import com.android.internal.logging.nano.MetricsProto; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/lifecycle/LifecycleTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/lifecycle/LifecycleTest.java index 52068e9842e5..301c493e062f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/lifecycle/LifecycleTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/lifecycle/LifecycleTest.java @@ -16,14 +16,16 @@ package com.android.settingslib.core.lifecycle; import static androidx.lifecycle.Lifecycle.Event.ON_START; + import static com.google.common.truth.Truth.assertThat; -import androidx.lifecycle.LifecycleOwner; import android.content.Context; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; +import androidx.lifecycle.LifecycleOwner; + import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.core.lifecycle.events.OnAttach; import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java index 7c653351974a..2a60839990c4 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/EnableAdbPreferenceControllerTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.development; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Answers.RETURNS_DEEP_STUBS; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -26,9 +27,10 @@ import android.content.Context; import android.content.pm.PackageManager; import android.os.UserManager; import android.provider.Settings; -import androidx.preference.SwitchPreference; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; +import androidx.preference.SwitchPreference; import com.android.settingslib.SettingsLibRobolectricTestRunner; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/LogdSizePreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/LogdSizePreferenceControllerTest.java index ae3072ca86b8..2f78899ff92d 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/LogdSizePreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/LogdSizePreferenceControllerTest.java @@ -40,6 +40,7 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.os.SystemProperties; + import androidx.preference.ListPreference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/LogpersistPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/LogpersistPreferenceControllerTest.java index b0aaa256fdab..ed128e098c6f 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/LogpersistPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/development/LogpersistPreferenceControllerTest.java @@ -17,12 +17,14 @@ package com.android.settingslib.development; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import androidx.lifecycle.LifecycleOwner; import android.os.SystemProperties; + +import androidx.lifecycle.LifecycleOwner; import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/BluetoothAddressPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/BluetoothAddressPreferenceControllerTest.java index 8ec7149ce1a8..234b4d5ac604 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/BluetoothAddressPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/BluetoothAddressPreferenceControllerTest.java @@ -22,6 +22,7 @@ import static org.mockito.Mockito.doReturn; import android.bluetooth.BluetoothAdapter; import android.content.Context; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/ConnectivityPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/ConnectivityPreferenceControllerTest.java index 7c127e5cd5b7..aee956cf5518 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/ConnectivityPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/ConnectivityPreferenceControllerTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertWithMessage; + import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.nullable; import static org.mockito.Mockito.doReturn; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/ImsStatusPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/ImsStatusPreferenceControllerTest.java index cb7861b30562..2b490ee63856 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/ImsStatusPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/ImsStatusPreferenceControllerTest.java @@ -17,17 +17,19 @@ package com.android.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertWithMessage; + import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import android.content.Context; import android.os.PersistableBundle; -import androidx.preference.Preference; -import androidx.preference.PreferenceScreen; import android.telephony.CarrierConfigManager; import android.telephony.SubscriptionManager; +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; + import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.core.lifecycle.Lifecycle; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java index 8f144cdf3a15..1d957c3b5e5b 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/IpAddressPreferenceControllerTest.java @@ -23,6 +23,7 @@ import static org.mockito.Mockito.doReturn; import android.content.Context; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SerialNumberPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SerialNumberPreferenceControllerTest.java index 69fb86e88d5b..dc77400e2547 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SerialNumberPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SerialNumberPreferenceControllerTest.java @@ -17,9 +17,11 @@ package com.android.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.when; import android.content.Context; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SimStatusImeiInfoPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SimStatusImeiInfoPreferenceControllerTest.java index eaae40553d6e..eb77cb6271e9 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SimStatusImeiInfoPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/SimStatusImeiInfoPreferenceControllerTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertThat; + import static org.robolectric.shadow.api.Shadow.extract; import android.net.ConnectivityManager; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/UptimePreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/UptimePreferenceControllerTest.java index ba955f9f2275..aea4d57356a4 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/UptimePreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/UptimePreferenceControllerTest.java @@ -23,9 +23,10 @@ import static org.mockito.Mockito.verify; import android.content.Context; import android.os.SystemClock; +import android.text.format.DateUtils; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; -import android.text.format.DateUtils; import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.core.lifecycle.Lifecycle; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java index ddbcb87725d1..5aa00efbb2d8 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.deviceinfo; import static com.google.common.truth.Truth.assertWithMessage; + import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; @@ -28,6 +29,7 @@ import android.net.ConnectivityManager; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.provider.Settings; + import androidx.preference.Preference; import androidx.preference.PreferenceScreen; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/display/BrightnessUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/display/BrightnessUtilsTest.java index eb7ad6d919cf..ca621ca66829 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/display/BrightnessUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/display/BrightnessUtilsTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.display; import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX; + import static com.google.common.truth.Truth.assertThat; import com.android.settingslib.SettingsLibRobolectricTestRunner; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java index 6e66805795b0..fef569362a8a 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.drawer; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java index ba5a2c5e5fe7..de96af4fa6a1 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/BatterySaverUtilsTest.java @@ -17,8 +17,8 @@ package com.android.settingslib.fuelgauge; import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java index a23eebcce797..a0d53f29f319 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/fuelgauge/PowerWhitelistBackendTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.fuelgauge; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doNothing; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/license/LicenseHtmlLoaderTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/license/LicenseHtmlLoaderTest.java index 5095f508997e..0a3cb44ad76d 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/license/LicenseHtmlLoaderTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/license/LicenseHtmlLoaderTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.license; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.never; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/location/RecentLocationAppsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/location/RecentLocationAppsTest.java index 8a54aeec6d79..9c168f7b1a45 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/location/RecentLocationAppsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/location/RecentLocationAppsTest.java @@ -1,6 +1,7 @@ package com.android.settingslib.location; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.isA; import static org.mockito.Mockito.when; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/EnableZenModeDialogTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/EnableZenModeDialogTest.java index ccd2f538c731..89c319a7e483 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/EnableZenModeDialogTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/EnableZenModeDialogTest.java @@ -20,6 +20,7 @@ import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertNull; import static junit.framework.Assert.assertTrue; + import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/ZenDurationDialogTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/ZenDurationDialogTest.java index 9b491c200cdc..d500ec2e7649 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/ZenDurationDialogTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/ZenDurationDialogTest.java @@ -19,34 +19,22 @@ package com.android.settingslib.notification; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.anyObject; -import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.Mockito.doNothing; -import static org.mockito.Mockito.doReturn; + import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; import android.app.AlertDialog; -import android.app.Fragment; -import android.app.NotificationManager; -import android.content.Context; import android.content.ContentResolver; -import android.content.DialogInterface; -import android.content.res.Resources; -import android.net.Uri; +import android.content.Context; import android.provider.Settings; import android.service.notification.Condition; import android.view.LayoutInflater; import android.view.View; -import android.widget.Button; import com.android.settingslib.SettingsLibRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.MockitoAnnotations; import org.robolectric.RuntimeEnvironment; @RunWith(SettingsLibRobolectricTestRunner.class) diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/suggestions/SuggestionControllerMixinTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/suggestions/SuggestionControllerMixinTest.java index f486989f5a56..aac582f9b3ac 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/suggestions/SuggestionControllerMixinTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/suggestions/SuggestionControllerMixinTest.java @@ -18,16 +18,19 @@ package com.android.settingslib.suggestions; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; + import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.LoaderManager; -import androidx.lifecycle.LifecycleOwner; import android.content.ComponentName; import android.content.Context; +import androidx.lifecycle.LifecycleOwner; + import com.android.settingslib.SettingsLibRobolectricTestRunner; import com.android.settingslib.core.lifecycle.Lifecycle; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/UserManagerHelperRoboTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/UserManagerHelperRoboTest.java index 890abefddd73..4705cd2b183b 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/UserManagerHelperRoboTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/users/UserManagerHelperRoboTest.java @@ -22,14 +22,13 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.app.ActivityManager; - import android.content.Context; import android.content.pm.UserInfo; import android.os.UserHandle; import android.os.UserManager; -import com.android.settingslib.testutils.shadow.ShadowActivityManager; import com.android.settingslib.SettingsLibRobolectricTestRunner; +import com.android.settingslib.testutils.shadow.ShadowActivityManager; import org.junit.After; import org.junit.Before; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/PowerUtilTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/PowerUtilTest.java index f2ef99c42df5..6a9579b770ce 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/PowerUtilTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/PowerUtilTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.utils; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.spy; import android.content.Context; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/StringUtilTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/StringUtilTest.java index 743951a6ed7a..e4bbbcb0b207 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/StringUtilTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/StringUtilTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.utils; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Mockito.spy; import android.content.Context; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/ThreadUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/ThreadUtilsTest.java index 83a9d5be0ae7..63248a0d370c 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/ThreadUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/ThreadUtilsTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.utils; import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.fail; import org.junit.Test; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceMixinTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceMixinTest.java index 78b7616716f5..366b720fc87b 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceMixinTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceMixinTest.java @@ -17,6 +17,7 @@ package com.android.settingslib.widget; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java index 3280089a88f6..84a043e15eb5 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/widget/FooterPreferenceTest.java @@ -19,11 +19,12 @@ package com.android.settingslib.widget; import static com.google.common.truth.Truth.assertThat; import android.content.Context; -import androidx.preference.PreferenceViewHolder; import android.text.method.LinkMovementMethod; import android.view.LayoutInflater; import android.widget.TextView; +import androidx.preference.PreferenceViewHolder; + import com.android.settingslib.R; import com.android.settingslib.SettingsLibRobolectricTestRunner; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java index ee2c2ffc4b4b..86443bde4667 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/AccessPointPreferenceTest.java @@ -16,6 +16,7 @@ package com.android.settingslib.wifi; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiUtilsTest.java index d25adde98694..07c50fde00fa 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiUtilsTest.java @@ -16,6 +16,7 @@ package com.android.settingslib.wifi; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.any; import static org.mockito.Mockito.doReturn; diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp new file mode 100644 index 000000000000..c9ba26804e89 --- /dev/null +++ b/packages/SystemUI/Android.bp @@ -0,0 +1,101 @@ +// +// Copyright (C) 2018 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. +// + +java_library { + name: "SystemUI-proto", + + srcs: ["src/**/*.proto"], + + proto: { + type: "nano", + }, +} + +java_library { + name: "SystemUI-tags", + srcs: ["src/com/android/systemui/EventLogTags.logtags"], +} + +android_library { + name: "SystemUI-core", + srcs: [ + "src/**/*.java", + "src/**/I*.aidl", + ], + resource_dirs: [ + "res-keyguard", + "res", + ], + static_libs: [ + "SystemUIPluginLib", + "SystemUISharedLib", + "SettingsLib", + "androidx.car_car", + "androidx.legacy_legacy-support-v4", + "androidx.recyclerview_recyclerview", + "androidx.preference_preference", + "androidx.appcompat_appcompat", + "androidx.mediarouter_mediarouter", + "androidx.palette_palette", + "androidx.legacy_legacy-preference-v14", + "androidx.leanback_leanback", + "androidx.slice_slice-core", + "androidx.slice_slice-view", + "androidx.slice_slice-builders", + "androidx.arch.core_core-runtime", + "androidx.lifecycle_lifecycle-extensions", + "SystemUI-tags", + "SystemUI-proto", + ], + manifest: "AndroidManifest.xml", + + libs: [ + "telephony-common", + "android.car", + ], + + aaptflags: [ + "--extra-packages", + "com.android.keyguard", + ], +} + +android_app { + name: "SystemUI", + static_libs: [ + "SystemUI-core", + ], + + platform_apis: true, + certificate: "platform", + privileged: true, + + optimize: { + proguard_flags_files: ["proguard.flags"], + }, + + libs: [ + "telephony-common", + "android.car", + ], + + dxflags: ["--multi-dex"], + aaptflags: [ + "--extra-packages", + "com.android.keyguard", + ], + +} diff --git a/packages/SystemUI/Android.mk b/packages/SystemUI/Android.mk deleted file mode 100644 index d9ec0fd0214b..000000000000 --- a/packages/SystemUI/Android.mk +++ /dev/null @@ -1,83 +0,0 @@ -LOCAL_PATH:= $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := SystemUI-proto - -LOCAL_SRC_FILES := $(call all-proto-files-under,src) - -LOCAL_PROTOC_OPTIMIZE_TYPE := nano -LOCAL_PROTO_JAVA_OUTPUT_PARAMS := optional_field_style=accessors - -include $(BUILD_STATIC_JAVA_LIBRARY) - -include $(CLEAR_VARS) - -LOCAL_MODULE := SystemUI-tags - -LOCAL_SRC_FILES := src/com/android/systemui/EventLogTags.logtags - -include $(BUILD_STATIC_JAVA_LIBRARY) - -# ------------------ - -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_MODULE_TAGS := optional - -RELATIVE_FINGERPRINT_PATH := ../../core/java/android/hardware/fingerprint - -LOCAL_SRC_FILES := \ - $(call all-java-files-under, src) \ - $(call all-Iaidl-files-under, src) \ - $(call all-Iaidl-files-under, $(RELATIVE_FINGERPRINT_PATH)) - -LOCAL_STATIC_ANDROID_LIBRARIES := \ - SystemUIPluginLib \ - SystemUISharedLib \ - androidx.car_car \ - androidx.legacy_legacy-support-v4 \ - androidx.recyclerview_recyclerview \ - androidx.preference_preference \ - androidx.appcompat_appcompat \ - androidx.mediarouter_mediarouter \ - androidx.palette_palette \ - androidx.legacy_legacy-preference-v14 \ - androidx.leanback_leanback \ - androidx.slice_slice-core \ - androidx.slice_slice-view \ - androidx.slice_slice-builders \ - androidx.arch.core_core-runtime \ - androidx.lifecycle_lifecycle-extensions \ - -LOCAL_STATIC_JAVA_LIBRARIES := \ - SystemUI-tags \ - SystemUI-proto - -LOCAL_JAVA_LIBRARIES := telephony-common \ - android.car - -LOCAL_PACKAGE_NAME := SystemUI -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_CERTIFICATE := platform -LOCAL_PRIVILEGED_MODULE := true - -LOCAL_PROGUARD_FLAG_FILES := proguard.flags -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res-keyguard $(LOCAL_PATH)/res - -ifneq ($(INCREMENTAL_BUILDS),) - LOCAL_PROGUARD_ENABLED := disabled - LOCAL_JACK_ENABLED := incremental - LOCAL_DX_FLAGS := --multi-dex - LOCAL_JACK_FLAGS := --multi-dex native -endif - -include frameworks/base/packages/SettingsLib/common.mk - -LOCAL_AAPT_FLAGS := --extra-packages com.android.keyguard - -include $(BUILD_PACKAGE) - -include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/packages/SystemUI/plugin/Android.bp b/packages/SystemUI/plugin/Android.bp new file mode 100644 index 000000000000..b38059de0f8d --- /dev/null +++ b/packages/SystemUI/plugin/Android.bp @@ -0,0 +1,37 @@ +// Copyright (C) 2016 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. + +java_library { + + name: "SystemUIPluginLib", + + srcs: ["src/**/*.java"], + + +} + +android_app { + + // Dummy to generate .toc files. + name: "PluginDummyLib", + platform_apis: true, + srcs: ["src/**/*.java"], + + libs: ["SystemUIPluginLib"], + + optimize: { + enabled: false, + }, + +} diff --git a/packages/SystemUI/plugin/Android.mk b/packages/SystemUI/plugin/Android.mk deleted file mode 100644 index 8634684087e2..000000000000 --- a/packages/SystemUI/plugin/Android.mk +++ /dev/null @@ -1,42 +0,0 @@ -# Copyright (C) 2016 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. - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_MODULE_TAGS := optional - -LOCAL_MODULE := SystemUIPluginLib - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res -LOCAL_JAR_EXCLUDE_FILES := none - -include $(BUILD_STATIC_JAVA_LIBRARY) - -include $(CLEAR_VARS) - -# Dummy to generate .toc files. -LOCAL_PACKAGE_NAME := PluginDummyLib -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_JAVA_LIBRARIES := SystemUIPluginLib - -LOCAL_PROGUARD_ENABLED := disabled - -include $(BUILD_PACKAGE) diff --git a/packages/SystemUI/plugin/ExamplePlugin/Android.bp b/packages/SystemUI/plugin/ExamplePlugin/Android.bp new file mode 100644 index 000000000000..a0eaf14f4a06 --- /dev/null +++ b/packages/SystemUI/plugin/ExamplePlugin/Android.bp @@ -0,0 +1,14 @@ +android_app { + + name: "ExamplePlugin", + + libs: ["SystemUIPluginLib"], + + certificate: "platform", + optimize: { + enabled: false, + }, + + srcs: ["src/**/*.java"], + +} diff --git a/packages/SystemUI/plugin/ExamplePlugin/Android.mk b/packages/SystemUI/plugin/ExamplePlugin/Android.mk deleted file mode 100644 index 4c82c7505ad3..000000000000 --- a/packages/SystemUI/plugin/ExamplePlugin/Android.mk +++ /dev/null @@ -1,15 +0,0 @@ -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_PACKAGE_NAME := ExamplePlugin - -LOCAL_JAVA_LIBRARIES := SystemUIPluginLib - -LOCAL_CERTIFICATE := platform -LOCAL_PROGUARD_ENABLED := disabled - -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -include $(BUILD_PACKAGE) diff --git a/packages/SystemUI/res-keyguard/values/alias.xml b/packages/SystemUI/res-keyguard/values/alias.xml index f06b450c7dbe..1c63c7933faf 100644 --- a/packages/SystemUI/res-keyguard/values/alias.xml +++ b/packages/SystemUI/res-keyguard/values/alias.xml @@ -25,9 +25,6 @@ <!-- Alias used to reference framework "OK" string in keyguard. --> <item type="string" name="ok">@*android:string/ok</item> - <!-- Alias used to reference framework "OK" string in keyguard. --> - <item type="string" name="system_ui_date_pattern">@*android:string/system_ui_date_pattern</item> - <!-- Alias used to reference framework configuration for screen rotation. --> <item type="bool" name="config_enableLockScreenRotation">@*android:bool/config_enableLockScreenRotation</item> diff --git a/packages/SystemUI/res/layout/operator_name.xml b/packages/SystemUI/res/layout/operator_name.xml index c4f75e927604..015e30a5d050 100644 --- a/packages/SystemUI/res/layout/operator_name.xml +++ b/packages/SystemUI/res/layout/operator_name.xml @@ -27,5 +27,6 @@ android:maxLength="20" android:gravity="center_vertical|start" android:textAppearance="?android:attr/textAppearanceSmall" - android:singleLine="true" /> + android:singleLine="true" + android:paddingEnd="5dp" /> </com.android.systemui.statusbar.AlphaOptimizedFrameLayout> diff --git a/packages/SystemUI/res/values-bg/donottranslate.xml b/packages/SystemUI/res/values-bg/donottranslate.xml deleted file mode 100644 index dcf434db111b..000000000000 --- a/packages/SystemUI/res/values-bg/donottranslate.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. Day of week precedes date by default, - but this may be overridden on a per-locale basis if necessary. --> - <string name="status_bar_date_formatter">%2$s\n%1$s</string> - -</resources> diff --git a/packages/SystemUI/res/values-hu/donottranslate.xml b/packages/SystemUI/res/values-hu/donottranslate.xml deleted file mode 100644 index dcf434db111b..000000000000 --- a/packages/SystemUI/res/values-hu/donottranslate.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. Day of week precedes date by default, - but this may be overridden on a per-locale basis if necessary. --> - <string name="status_bar_date_formatter">%2$s\n%1$s</string> - -</resources> diff --git a/packages/SystemUI/res/values-ja/donottranslate.xml b/packages/SystemUI/res/values-ja/donottranslate.xml deleted file mode 100644 index dcf434db111b..000000000000 --- a/packages/SystemUI/res/values-ja/donottranslate.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. Day of week precedes date by default, - but this may be overridden on a per-locale basis if necessary. --> - <string name="status_bar_date_formatter">%2$s\n%1$s</string> - -</resources> diff --git a/packages/SystemUI/res/values-ko/donottranslate.xml b/packages/SystemUI/res/values-ko/donottranslate.xml deleted file mode 100644 index dcf434db111b..000000000000 --- a/packages/SystemUI/res/values-ko/donottranslate.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. Day of week precedes date by default, - but this may be overridden on a per-locale basis if necessary. --> - <string name="status_bar_date_formatter">%2$s\n%1$s</string> - -</resources> diff --git a/packages/SystemUI/res/values-lt/donottranslate.xml b/packages/SystemUI/res/values-lt/donottranslate.xml deleted file mode 100644 index dcf434db111b..000000000000 --- a/packages/SystemUI/res/values-lt/donottranslate.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. Day of week precedes date by default, - but this may be overridden on a per-locale basis if necessary. --> - <string name="status_bar_date_formatter">%2$s\n%1$s</string> - -</resources> diff --git a/packages/SystemUI/res/values-sw720dp/donottranslate.xml b/packages/SystemUI/res/values-sw720dp/donottranslate.xml deleted file mode 100644 index 09960673a53e..000000000000 --- a/packages/SystemUI/res/values-sw720dp/donottranslate.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2011, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. %1$s is DOW, %2$s is date. - We show both (DOW on one line, then the date) but this can be overridden for locales as - necessary. - --> - <string name="status_bar_date_formatter">%1$s\n%2$s</string> - -</resources> - diff --git a/packages/SystemUI/res/values-tr/donottranslate.xml b/packages/SystemUI/res/values-tr/donottranslate.xml deleted file mode 100644 index dcf434db111b..000000000000 --- a/packages/SystemUI/res/values-tr/donottranslate.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. Day of week precedes date by default, - but this may be overridden on a per-locale basis if necessary. --> - <string name="status_bar_date_formatter">%2$s\n%1$s</string> - -</resources> diff --git a/packages/SystemUI/res/values-zh-rCN/donottranslate.xml b/packages/SystemUI/res/values-zh-rCN/donottranslate.xml deleted file mode 100644 index dcf434db111b..000000000000 --- a/packages/SystemUI/res/values-zh-rCN/donottranslate.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. Day of week precedes date by default, - but this may be overridden on a per-locale basis if necessary. --> - <string name="status_bar_date_formatter">%2$s\n%1$s</string> - -</resources> diff --git a/packages/SystemUI/res/values-zh-rTW/donottranslate.xml b/packages/SystemUI/res/values-zh-rTW/donottranslate.xml deleted file mode 100644 index dcf434db111b..000000000000 --- a/packages/SystemUI/res/values-zh-rTW/donottranslate.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, 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. - */ ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- For formatting day of week and date in DateView. Day of week precedes date by default, - but this may be overridden on a per-locale basis if necessary. --> - <string name="status_bar_date_formatter">%2$s\n%1$s</string> - -</resources> diff --git a/packages/SystemUI/shared/Android.bp b/packages/SystemUI/shared/Android.bp new file mode 100644 index 000000000000..0fb12009e2cb --- /dev/null +++ b/packages/SystemUI/shared/Android.bp @@ -0,0 +1,40 @@ +// Copyright (C) 2017 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. + +android_library { + + name: "SystemUISharedLib", + srcs: [ + "src/**/*.java", + "src/**/I*.aidl", + ], + +} + +android_app { + + name: "SysUISharedLib", + platform_apis: true, + srcs: [ + "src/**/*.java", + "src/**/I*.aidl", + ], + + static_libs: ["SystemUISharedLib"], + + optimize: { + enabled: false, + }, + +} diff --git a/packages/SystemUI/shared/Android.mk b/packages/SystemUI/shared/Android.mk deleted file mode 100644 index f20df0cebc8d..000000000000 --- a/packages/SystemUI/shared/Android.mk +++ /dev/null @@ -1,43 +0,0 @@ -# Copyright (C) 2017 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. - -LOCAL_PATH := $(call my-dir) -include $(CLEAR_VARS) - -LOCAL_USE_AAPT2 := true - -LOCAL_MODULE_TAGS := optional - -LOCAL_MODULE := SystemUISharedLib - -LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src) - -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res -LOCAL_JAR_EXCLUDE_FILES := none - -include $(BUILD_STATIC_JAVA_LIBRARY) - -include $(CLEAR_VARS) - -LOCAL_PACKAGE_NAME := SysUISharedLib -LOCAL_PRIVATE_PLATFORM_APIS := true -LOCAL_SRC_FILES := $(call all-java-files-under, src) - -LOCAL_JAVA_LIBRARIES := SystemUISharedLib - -LOCAL_PROGUARD_ENABLED := disabled - -include $(BUILD_PACKAGE) - -include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/packages/SystemUI/shared/tests/Android.mk b/packages/SystemUI/shared/tests/Android.mk index 4e7cbbfede2b..02774c946596 100644 --- a/packages/SystemUI/shared/tests/Android.mk +++ b/packages/SystemUI/shared/tests/Android.mk @@ -30,10 +30,10 @@ LOCAL_PRIVATE_PLATFORM_APIS := true LOCAL_COMPATIBILITY_SUITE := device-tests # Add local path sources as well as shared lib sources -LOCAL_SRC_FILES := $(call all-java-files-under, src) \ - $(call all-java-files-under, ../src) +LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_STATIC_JAVA_LIBRARIES := \ + SystemUISharedLib \ metrics-helper-lib \ android-support-test \ mockito-target-inline-minus-junit4 \ diff --git a/packages/SystemUI/src/com/android/systemui/analytics/SensorLoggerSession.java b/packages/SystemUI/src/com/android/systemui/analytics/SensorLoggerSession.java index f8b73a172516..d6472b7ddbb9 100644 --- a/packages/SystemUI/src/com/android/systemui/analytics/SensorLoggerSession.java +++ b/packages/SystemUI/src/com/android/systemui/analytics/SensorLoggerSession.java @@ -101,31 +101,31 @@ public class SensorLoggerSession { public Session toProto() { Session proto = new Session(); - proto.setStartTimestampMillis(mStartTimestampMillis); - proto.setDurationMillis(mEndTimestampMillis - mStartTimestampMillis); - proto.setBuild(Build.FINGERPRINT); - proto.setResult(mResult); - proto.setType(mType); + proto.startTimestampMillis = mStartTimestampMillis; + proto.durationMillis = mEndTimestampMillis - mStartTimestampMillis; + proto.build = Build.FINGERPRINT; + proto.result = mResult; + proto.type = mType; proto.sensorEvents = mSensorEvents.toArray(proto.sensorEvents); proto.touchEvents = mMotionEvents.toArray(proto.touchEvents); proto.phoneEvents = mPhoneEvents.toArray(proto.phoneEvents); - proto.setTouchAreaWidth(mTouchAreaWidth); - proto.setTouchAreaHeight(mTouchAreaHeight); + proto.touchAreaWidth = mTouchAreaWidth; + proto.touchAreaHeight = mTouchAreaHeight; return proto; } private PhoneEvent phoneEventToProto(int eventType, long sysTimeNanos) { PhoneEvent proto = new PhoneEvent(); - proto.setType(eventType); - proto.setTimeOffsetNanos(sysTimeNanos - mStartSystemTimeNanos); + proto.type = eventType; + proto.timeOffsetNanos = sysTimeNanos - mStartSystemTimeNanos; return proto; } private SensorEvent sensorEventToProto(android.hardware.SensorEvent ev, long sysTimeNanos) { SensorEvent proto = new SensorEvent(); - proto.setType(ev.sensor.getType()); - proto.setTimeOffsetNanos(sysTimeNanos - mStartSystemTimeNanos); - proto.setTimestamp(ev.timestamp); + proto.type = ev.sensor.getType(); + proto.timeOffsetNanos = sysTimeNanos - mStartSystemTimeNanos; + proto.timestamp = ev.timestamp; proto.values = ev.values.clone(); return proto; } @@ -133,17 +133,17 @@ public class SensorLoggerSession { private TouchEvent motionEventToProto(MotionEvent ev) { int count = ev.getPointerCount(); TouchEvent proto = new TouchEvent(); - proto.setTimeOffsetNanos(ev.getEventTimeNano() - mStartSystemTimeNanos); - proto.setAction(ev.getActionMasked()); - proto.setActionIndex(ev.getActionIndex()); + proto.timeOffsetNanos = ev.getEventTimeNano() - mStartSystemTimeNanos; + proto.action = ev.getActionMasked(); + proto.actionIndex = ev.getActionIndex(); proto.pointers = new TouchEvent.Pointer[count]; for (int i = 0; i < count; i++) { TouchEvent.Pointer p = new TouchEvent.Pointer(); - p.setX(ev.getX(i)); - p.setY(ev.getY(i)); - p.setSize(ev.getSize(i)); - p.setPressure(ev.getPressure(i)); - p.setId(ev.getPointerId(i)); + p.x = ev.getX(i); + p.y = ev.getY(i); + p.size = ev.getSize(i); + p.pressure = ev.getPressure(i); + p.id = ev.getPointerId(i); proto.pointers[i] = p; } return proto; diff --git a/packages/SystemUI/src/com/android/systemui/qs/PseudoGridView.java b/packages/SystemUI/src/com/android/systemui/qs/PseudoGridView.java index a1c25772234e..87c64c78edc8 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/PseudoGridView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/PseudoGridView.java @@ -47,16 +47,12 @@ public class PseudoGridView extends ViewGroup { final int N = a.getIndexCount(); for (int i = 0; i < N; i++) { int attr = a.getIndex(i); - switch (attr) { - case R.styleable.PseudoGridView_numColumns: - mNumColumns = a.getInt(attr, 3); - break; - case R.styleable.PseudoGridView_verticalSpacing: - mVerticalSpacing = a.getDimensionPixelSize(attr, 0); - break; - case R.styleable.PseudoGridView_horizontalSpacing: - mHorizontalSpacing = a.getDimensionPixelSize(attr, 0); - break; + if (attr == R.styleable.PseudoGridView_numColumns) { + mNumColumns = a.getInt(attr, 3); + } else if (attr == R.styleable.PseudoGridView_verticalSpacing) { + mVerticalSpacing = a.getDimensionPixelSize(attr, 0); + } else if (attr == R.styleable.PseudoGridView_horizontalSpacing) { + mHorizontalSpacing = a.getDimensionPixelSize(attr, 0); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailItemView.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailItemView.java index 1e9a618c3324..ad7d1b6b4689 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailItemView.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailItemView.java @@ -69,13 +69,10 @@ public class UserDetailItemView extends LinearLayout { final int N = a.getIndexCount(); for (int i = 0; i < N; i++) { int attr = a.getIndex(i); - switch (attr) { - case R.styleable.UserDetailItemView_regularFontFamily: - mRegularTypeface = Typeface.create(a.getString(attr), 0 /* style */); - break; - case R.styleable.UserDetailItemView_activatedFontFamily: - mActivatedTypeface = Typeface.create(a.getString(attr), 0 /* style */); - break; + if (attr == R.styleable.UserDetailItemView_regularFontFamily) { + mRegularTypeface = Typeface.create(a.getString(attr), 0 /* style */); + } else if (attr == R.styleable.UserDetailItemView_activatedFontFamily) { + mActivatedTypeface = Typeface.create(a.getString(attr), 0 /* style */); } } a.recycle(); diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index 3eb3160b028f..98925b9ba9e5 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -226,22 +226,16 @@ public class DividerView extends FrameLayout implements OnTouchListener, public boolean performAccessibilityAction(View host, int action, Bundle args) { int currentPosition = getCurrentPosition(); SnapTarget nextTarget = null; - switch (action) { - case R.id.action_move_tl_full: - nextTarget = mSnapAlgorithm.getDismissEndTarget(); - break; - case R.id.action_move_tl_70: - nextTarget = mSnapAlgorithm.getLastSplitTarget(); - break; - case R.id.action_move_tl_50: - nextTarget = mSnapAlgorithm.getMiddleTarget(); - break; - case R.id.action_move_tl_30: - nextTarget = mSnapAlgorithm.getFirstSplitTarget(); - break; - case R.id.action_move_rb_full: - nextTarget = mSnapAlgorithm.getDismissStartTarget(); - break; + if (action == R.id.action_move_tl_full) { + nextTarget = mSnapAlgorithm.getDismissEndTarget(); + } else if (action == R.id.action_move_tl_70) { + nextTarget = mSnapAlgorithm.getLastSplitTarget(); + } else if (action == R.id.action_move_tl_50) { + nextTarget = mSnapAlgorithm.getMiddleTarget(); + } else if (action == R.id.action_move_tl_30) { + nextTarget = mSnapAlgorithm.getFirstSplitTarget(); + } else if (action == R.id.action_move_rb_full) { + nextTarget = mSnapAlgorithm.getDismissStartTarget(); } if (nextTarget != null) { startDragging(true /* animate */, false /* touching */); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java index d647e21888dd..29687228902f 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/ExpandableNotificationRow.java @@ -2747,16 +2747,18 @@ public class ExpandableNotificationRow extends ActivatableNotificationView case AccessibilityNodeInfo.ACTION_LONG_CLICK: doLongClickCallback(); return true; - case R.id.action_snooze: - NotificationMenuRowPlugin provider = getProvider(); - if (provider == null) { - provider = createMenu(); + default: + if (action == R.id.action_snooze) { + NotificationMenuRowPlugin provider = getProvider(); + if (provider == null) { + provider = createMenu(); + } + MenuItem snoozeMenu = provider.getSnoozeMenuItem(getContext()); + if (snoozeMenu != null) { + doLongClickCallback(getWidth() / 2, getHeight() / 2, snoozeMenu); + } + return true; } - MenuItem snoozeMenu = provider.getSnoozeMenuItem(getContext()); - if (snoozeMenu != null) { - doLongClickCallback(getWidth() / 2, getHeight() / 2, snoozeMenu); - } - return true; } return false; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index b136e8a01814..1177c4f222ac 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -255,13 +255,11 @@ public class NavigationBarView extends FrameLayout implements PluginListener<Nav @Override public boolean performAccessibilityAction(View host, int action, Bundle args) { - switch (action) { - case R.id.action_toggle_overview: - SysUiServiceProvider.getComponent(getContext(), Recents.class) - .toggleRecentApps(); - break; - default: - return super.performAccessibilityAction(host, action, args); + if (action == R.id.action_toggle_overview) { + SysUiServiceProvider.getComponent(getContext(), Recents.class) + .toggleRecentApps(); + } else { + return super.performAccessibilityAction(host, action, args); } return true; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UserAvatarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UserAvatarView.java index dc1b35d6c701..2ed2edb969bd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/UserAvatarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/UserAvatarView.java @@ -45,25 +45,18 @@ public class UserAvatarView extends View { final int N = a.getIndexCount(); for (int i = 0; i < N; i++) { int attr = a.getIndex(i); - switch (attr) { - case R.styleable.UserAvatarView_avatarPadding: - setAvatarPadding(a.getDimension(attr, 0)); - break; - case R.styleable.UserAvatarView_frameWidth: - setFrameWidth(a.getDimension(attr, 0)); - break; - case R.styleable.UserAvatarView_framePadding: - setFramePadding(a.getDimension(attr, 0)); - break; - case R.styleable.UserAvatarView_frameColor: - setFrameColor(a.getColorStateList(attr)); - break; - case R.styleable.UserAvatarView_badgeDiameter: - setBadgeDiameter(a.getDimension(attr, 0)); - break; - case R.styleable.UserAvatarView_badgeMargin: - setBadgeMargin(a.getDimension(attr, 0)); - break; + if (attr == R.styleable.UserAvatarView_avatarPadding) { + setAvatarPadding(a.getDimension(attr, 0)); + } else if (attr == R.styleable.UserAvatarView_frameWidth) { + setFrameWidth(a.getDimension(attr, 0)); + } else if (attr == R.styleable.UserAvatarView_framePadding) { + setFramePadding(a.getDimension(attr, 0)); + } else if (attr == R.styleable.UserAvatarView_frameColor) { + setFrameColor(a.getColorStateList(attr)); + } else if (attr == R.styleable.UserAvatarView_badgeDiameter) { + setBadgeDiameter(a.getDimension(attr, 0)); + } else if (attr == R.styleable.UserAvatarView_badgeMargin) { + setBadgeMargin(a.getDimension(attr, 0)); } } a.recycle(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyView.java index 924aa0120c94..d43dc810cfb5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SmartReplyView.java @@ -127,19 +127,14 @@ public class SmartReplyView extends ViewGroup { final int length = arr.getIndexCount(); for (int i = 0; i < length; i++) { int attr = arr.getIndex(i); - switch (attr) { - case R.styleable.SmartReplyView_spacing: - spacing = arr.getDimensionPixelSize(i, 0); - break; - case R.styleable.SmartReplyView_singleLineButtonPaddingHorizontal: - singleLineButtonPaddingHorizontal = arr.getDimensionPixelSize(i, 0); - break; - case R.styleable.SmartReplyView_doubleLineButtonPaddingHorizontal: - doubleLineButtonPaddingHorizontal = arr.getDimensionPixelSize(i, 0); - break; - case R.styleable.SmartReplyView_buttonStrokeWidth: - strokeWidth = arr.getDimensionPixelSize(i, 0); - break; + if (attr == R.styleable.SmartReplyView_spacing) { + spacing = arr.getDimensionPixelSize(i, 0); + } else if (attr == R.styleable.SmartReplyView_singleLineButtonPaddingHorizontal) { + singleLineButtonPaddingHorizontal = arr.getDimensionPixelSize(i, 0); + } else if (attr == R.styleable.SmartReplyView_doubleLineButtonPaddingHorizontal) { + doubleLineButtonPaddingHorizontal = arr.getDimensionPixelSize(i, 0); + } else if (attr == R.styleable.SmartReplyView_buttonStrokeWidth) { + strokeWidth = arr.getDimensionPixelSize(i, 0); } } arr.recycle(); diff --git a/packages/SystemUI/tests/Android.mk b/packages/SystemUI/tests/Android.mk index a4120c45a83a..9ee55324efa2 100644 --- a/packages/SystemUI/tests/Android.mk +++ b/packages/SystemUI/tests/Android.mk @@ -30,37 +30,17 @@ LOCAL_PRIVATE_PLATFORM_APIS := true LOCAL_COMPATIBILITY_SUITE := device-tests LOCAL_SRC_FILES := $(call all-java-files-under, src) \ - $(call all-Iaidl-files-under, src) \ - $(call all-java-files-under, ../src) + $(call all-Iaidl-files-under, src) -LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res \ - frameworks/base/packages/SystemUI/res \ - frameworks/base/packages/SystemUI/res-keyguard \ +LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res LOCAL_STATIC_ANDROID_LIBRARIES := \ - SystemUIPluginLib \ - SystemUISharedLib \ - androidx.car_car \ - androidx.legacy_legacy-support-v4 \ - androidx.recyclerview_recyclerview \ - androidx.preference_preference \ - androidx.appcompat_appcompat \ - androidx.mediarouter_mediarouter \ - androidx.palette_palette \ - androidx.legacy_legacy-preference-v14 \ - androidx.leanback_leanback \ - androidx.slice_slice-core \ - androidx.slice_slice-view \ - androidx.slice_slice-builders \ - androidx.arch.core_core-runtime \ - androidx.lifecycle_lifecycle-extensions \ + SystemUI-core LOCAL_STATIC_JAVA_LIBRARIES := \ metrics-helper-lib \ android-support-test \ mockito-target-inline-minus-junit4 \ - SystemUI-proto \ - SystemUI-tags \ testables \ truth-prebuilt \ @@ -70,7 +50,6 @@ LOCAL_JNI_SHARED_LIBRARIES := \ libdexmakerjvmtiagent \ libmultiplejvmtiagentsinterferenceagent - LOCAL_JAVA_LIBRARIES := \ android.test.runner \ telephony-common \ @@ -112,8 +91,6 @@ jacoco_exclude := $(subst $(space),$(comma),$(patsubst %,%*,$(local_classes))) LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.systemui.* LOCAL_JACK_COVERAGE_EXCLUDE_FILTER := com.android.systemui.tests.*,$(jacoco_exclude) -include frameworks/base/packages/SettingsLib/common.mk - ifeq ($(EXCLUDE_SYSTEMUI_TESTS),) include $(BUILD_PACKAGE) endif diff --git a/packages/SystemUI/tests/AndroidManifest.xml b/packages/SystemUI/tests/AndroidManifest.xml index 1be83229cf22..5395dff1681c 100644 --- a/packages/SystemUI/tests/AndroidManifest.xml +++ b/packages/SystemUI/tests/AndroidManifest.xml @@ -15,6 +15,8 @@ --> <manifest xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + xmlns:tools="http://schemas.android.com/tools" package="com.android.systemui.tests"> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> @@ -63,6 +65,26 @@ <action android:name="com.android.systemui.action.TEST_ACTION" /> </intent-filter> </receiver> + + <provider + android:name="androidx.lifecycle.ProcessLifecycleOwnerInitializer" + tools:replace="android:authorities" + android:authorities="${applicationId}.lifecycle-tests" + android:exported="false" + android:multiprocess="true" /> + + <provider android:name="com.android.systemui.keyguard.KeyguardSliceProvider" + android:authorities="com.android.systemui.test.keyguard.disabled" + android:enabled="false" + tools:replace="android:authorities" + tools:node="remove" /> + + <provider + android:name="androidx.core.content.FileProvider" + android:authorities="com.android.systemui.test.fileprovider" + android:exported="false" + tools:replace="android:authorities" + android:grantUriPermissions="true" /> </application> <instrumentation android:name="android.testing.TestableInstrumentation" diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index ba5f32308a30..760209024c57 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -183,6 +183,7 @@ import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -202,6 +203,8 @@ public class ConnectivityService extends IConnectivityManager.Stub private static final String DIAG_ARG = "--diag"; public static final String SHORT_ARG = "--short"; private static final String TETHERING_ARG = "tethering"; + private static final String NETWORK_ARG = "networks"; + private static final String REQUEST_ARG = "requests"; private static final boolean DBG = true; private static final boolean VDBG = false; @@ -1978,7 +1981,7 @@ public class ConnectivityService extends IConnectivityManager.Stub private void dumpNetworkDiagnostics(IndentingPrintWriter pw) { final List<NetworkDiagnostics> netDiags = new ArrayList<NetworkDiagnostics>(); final long DIAG_TIME_MS = 5000; - for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) { + for (NetworkAgentInfo nai : networksSortedById()) { // Start gathering diagnostic information. netDiags.add(new NetworkDiagnostics( nai.network, @@ -2009,6 +2012,12 @@ public class ConnectivityService extends IConnectivityManager.Stub } else if (ArrayUtils.contains(args, TETHERING_ARG)) { mTethering.dump(fd, pw, args); return; + } else if (ArrayUtils.contains(args, NETWORK_ARG)) { + dumpNetworks(pw); + return; + } else if (ArrayUtils.contains(args, REQUEST_ARG)) { + dumpNetworkRequests(pw); + return; } pw.print("NetworkFactories for:"); @@ -2029,36 +2038,15 @@ public class ConnectivityService extends IConnectivityManager.Stub pw.println("Current Networks:"); pw.increaseIndent(); - for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) { - pw.println(nai.toString()); - pw.increaseIndent(); - pw.println(String.format( - "Requests: REQUEST:%d LISTEN:%d BACKGROUND_REQUEST:%d total:%d", - nai.numForegroundNetworkRequests(), - nai.numNetworkRequests() - nai.numRequestNetworkRequests(), - nai.numBackgroundNetworkRequests(), - nai.numNetworkRequests())); - pw.increaseIndent(); - for (int i = 0; i < nai.numNetworkRequests(); i++) { - pw.println(nai.requestAt(i).toString()); - } - pw.decreaseIndent(); - pw.println("Lingered:"); - pw.increaseIndent(); - nai.dumpLingerTimers(pw); - pw.decreaseIndent(); - pw.decreaseIndent(); - } + dumpNetworks(pw); pw.decreaseIndent(); pw.println(); pw.println("Network Requests:"); pw.increaseIndent(); - for (NetworkRequestInfo nri : mNetworkRequests.values()) { - pw.println(nri.toString()); - } - pw.println(); + dumpNetworkRequests(pw); pw.decreaseIndent(); + pw.println(); mLegacyTypeTracker.dump(pw); @@ -2126,6 +2114,55 @@ public class ConnectivityService extends IConnectivityManager.Stub } } + private void dumpNetworks(IndentingPrintWriter pw) { + for (NetworkAgentInfo nai : networksSortedById()) { + pw.println(nai.toString()); + pw.increaseIndent(); + pw.println(String.format( + "Requests: REQUEST:%d LISTEN:%d BACKGROUND_REQUEST:%d total:%d", + nai.numForegroundNetworkRequests(), + nai.numNetworkRequests() - nai.numRequestNetworkRequests(), + nai.numBackgroundNetworkRequests(), + nai.numNetworkRequests())); + pw.increaseIndent(); + for (int i = 0; i < nai.numNetworkRequests(); i++) { + pw.println(nai.requestAt(i).toString()); + } + pw.decreaseIndent(); + pw.println("Lingered:"); + pw.increaseIndent(); + nai.dumpLingerTimers(pw); + pw.decreaseIndent(); + pw.decreaseIndent(); + } + } + + private void dumpNetworkRequests(IndentingPrintWriter pw) { + for (NetworkRequestInfo nri : requestsSortedById()) { + pw.println(nri.toString()); + } + } + + /** + * Return an array of all current NetworkAgentInfos sorted by network id. + */ + private NetworkAgentInfo[] networksSortedById() { + NetworkAgentInfo[] networks = new NetworkAgentInfo[0]; + networks = mNetworkAgentInfos.values().toArray(networks); + Arrays.sort(networks, Comparator.comparingInt(nai -> nai.network.netId)); + return networks; + } + + /** + * Return an array of all current NetworkRequest sorted by request id. + */ + private NetworkRequestInfo[] requestsSortedById() { + NetworkRequestInfo[] requests = new NetworkRequestInfo[0]; + requests = mNetworkRequests.values().toArray(requests); + Arrays.sort(requests, Comparator.comparingInt(nri -> nri.request.requestId)); + return requests; + } + private boolean isLiveNetworkAgent(NetworkAgentInfo nai, int what) { if (nai.network == null) return false; final NetworkAgentInfo officialNai = getNetworkAgentInfoForNetwork(nai.network); @@ -2916,7 +2953,7 @@ public class ConnectivityService extends IConnectivityManager.Stub pw.println("User setting: " + description); pw.println("Network overrides:"); pw.increaseIndent(); - for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) { + for (NetworkAgentInfo nai : networksSortedById()) { if (nai.avoidUnvalidated) { pw.println(nai.name()); } diff --git a/services/core/java/com/android/server/InputMethodManagerService.java b/services/core/java/com/android/server/InputMethodManagerService.java index 9367a835e5f1..44bf2a57912e 100644 --- a/services/core/java/com/android/server/InputMethodManagerService.java +++ b/services/core/java/com/android/server/InputMethodManagerService.java @@ -1544,7 +1544,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub final String defaultImiId = mSettings.getSelectedInputMethod(); final boolean imeSelectedOnBoot = !TextUtils.isEmpty(defaultImiId); buildInputMethodListLocked(!imeSelectedOnBoot /* resetDefaultEnabledIme */); - resetDefaultImeLocked(mContext); updateFromSettingsLocked(true); InputMethodUtils.setNonSelectedSystemImesDisabledUntilUsed(mIPackageManager, mSettings.getEnabledInputMethodListLocked(), currentUserId, diff --git a/services/core/java/com/android/server/IpSecService.java b/services/core/java/com/android/server/IpSecService.java index 744ed25f160f..380f6a7e581e 100644 --- a/services/core/java/com/android/server/IpSecService.java +++ b/services/core/java/com/android/server/IpSecService.java @@ -27,7 +27,6 @@ import static com.android.internal.util.Preconditions.checkNotNull; import android.annotation.NonNull; import android.app.AppOpsManager; import android.content.Context; -import android.net.ConnectivityManager; import android.net.IIpSecService; import android.net.INetd; import android.net.IpSecAlgorithm; @@ -44,7 +43,6 @@ import android.net.NetworkUtils; import android.net.TrafficStats; import android.net.util.NetdService; import android.os.Binder; -import android.os.DeadSystemException; import android.os.IBinder; import android.os.ParcelFileDescriptor; import android.os.RemoteException; @@ -89,9 +87,8 @@ public class IpSecService extends IIpSecService.Stub { private static final boolean DBG = Log.isLoggable(TAG, Log.DEBUG); private static final String NETD_SERVICE_NAME = "netd"; - private static final int[] DIRECTIONS = - new int[] {IpSecManager.DIRECTION_OUT, IpSecManager.DIRECTION_IN}; - private static final String[] WILDCARD_ADDRESSES = new String[]{"0.0.0.0", "::"}; + private static final int[] ADDRESS_FAMILIES = + new int[] {OsConstants.AF_INET, OsConstants.AF_INET6}; private static final int NETD_FETCH_TIMEOUT_MS = 5000; // ms private static final int MAX_PORT_BIND_ATTEMPTS = 10; @@ -615,7 +612,7 @@ public class IpSecService extends IIpSecService.Stub { mSrvConfig .getNetdInstance() .ipSecDeleteSecurityAssociation( - mResourceId, + uid, mConfig.getSourceAddress(), mConfig.getDestinationAddress(), spi, @@ -682,7 +679,7 @@ public class IpSecService extends IIpSecService.Stub { mSrvConfig .getNetdInstance() .ipSecDeleteSecurityAssociation( - mResourceId, mSourceAddress, mDestinationAddress, mSpi, 0, 0); + uid, mSourceAddress, mDestinationAddress, mSpi, 0, 0); } } catch (ServiceSpecificException | RemoteException e) { Log.e(TAG, "Failed to delete SPI reservation with ID: " + mResourceId, e); @@ -819,16 +816,22 @@ public class IpSecService extends IIpSecService.Stub { // Teardown VTI // Delete global policies try { - mSrvConfig.getNetdInstance().removeVirtualTunnelInterface(mInterfaceName); - - for(String wildcardAddr : WILDCARD_ADDRESSES) { - for (int direction : DIRECTIONS) { - int mark = (direction == IpSecManager.DIRECTION_IN) ? mIkey : mOkey; - mSrvConfig - .getNetdInstance() - .ipSecDeleteSecurityPolicy( - 0, direction, wildcardAddr, wildcardAddr, mark, 0xffffffff); - } + final INetd netd = mSrvConfig.getNetdInstance(); + netd.removeVirtualTunnelInterface(mInterfaceName); + + for (int selAddrFamily : ADDRESS_FAMILIES) { + netd.ipSecDeleteSecurityPolicy( + uid, + selAddrFamily, + IpSecManager.DIRECTION_OUT, + mOkey, + 0xffffffff); + netd.ipSecDeleteSecurityPolicy( + uid, + selAddrFamily, + IpSecManager.DIRECTION_IN, + mIkey, + 0xffffffff); } } catch (ServiceSpecificException | RemoteException e) { Log.e( @@ -1080,7 +1083,8 @@ public class IpSecService extends IIpSecService.Stub { } checkNotNull(binder, "Null Binder passed to allocateSecurityParameterIndex"); - UserRecord userRecord = mUserResourceTracker.getUserRecord(Binder.getCallingUid()); + int callingUid = Binder.getCallingUid(); + UserRecord userRecord = mUserResourceTracker.getUserRecord(callingUid); final int resourceId = mNextResourceId++; int spi = IpSecManager.INVALID_SECURITY_PARAMETER_INDEX; @@ -1093,7 +1097,7 @@ public class IpSecService extends IIpSecService.Stub { spi = mSrvConfig .getNetdInstance() - .ipSecAllocateSpi(resourceId, "", destinationAddress, requestedSpi); + .ipSecAllocateSpi(callingUid, "", destinationAddress, requestedSpi); Log.d(TAG, "Allocated SPI " + spi); userRecord.mSpiRecords.put( resourceId, @@ -1261,7 +1265,8 @@ public class IpSecService extends IIpSecService.Stub { // TODO: Check that underlying network exists, and IP addresses not assigned to a different // network (b/72316676). - UserRecord userRecord = mUserResourceTracker.getUserRecord(Binder.getCallingUid()); + int callerUid = Binder.getCallingUid(); + UserRecord userRecord = mUserResourceTracker.getUserRecord(callerUid); if (!userRecord.mTunnelQuotaTracker.isAvailable()) { return new IpSecTunnelInterfaceResponse(IpSecManager.Status.RESOURCE_UNAVAILABLE); } @@ -1276,25 +1281,29 @@ public class IpSecService extends IIpSecService.Stub { // Create VTI // Add inbound/outbound global policies // (use reqid = 0) - mSrvConfig - .getNetdInstance() - .addVirtualTunnelInterface(intfName, localAddr, remoteAddr, ikey, okey); - - for(String wildcardAddr : WILDCARD_ADDRESSES) { - for (int direction : DIRECTIONS) { - int mark = (direction == IpSecManager.DIRECTION_OUT) ? okey : ikey; - - mSrvConfig - .getNetdInstance() - .ipSecAddSecurityPolicy( - 0, // Use 0 for reqId - direction, - wildcardAddr, - wildcardAddr, - 0, - mark, - 0xffffffff); - } + final INetd netd = mSrvConfig.getNetdInstance(); + netd.addVirtualTunnelInterface(intfName, localAddr, remoteAddr, ikey, okey); + + for (int selAddrFamily : ADDRESS_FAMILIES) { + // Always send down correct local/remote addresses for template. + netd.ipSecAddSecurityPolicy( + callerUid, + selAddrFamily, + IpSecManager.DIRECTION_OUT, + localAddr, + remoteAddr, + 0, + okey, + 0xffffffff); + netd.ipSecAddSecurityPolicy( + callerUid, + selAddrFamily, + IpSecManager.DIRECTION_IN, + remoteAddr, + localAddr, + 0, + ikey, + 0xffffffff); } userRecord.mTunnelInterfaceRecords.put( @@ -1525,7 +1534,7 @@ public class IpSecService extends IIpSecService.Stub { mSrvConfig .getNetdInstance() .ipSecAddSecurityAssociation( - resourceId, + Binder.getCallingUid(), c.getMode(), c.getSourceAddress(), c.getDestinationAddress(), @@ -1616,13 +1625,14 @@ public class IpSecService extends IIpSecService.Stub { @Override public synchronized void applyTransportModeTransform( ParcelFileDescriptor socket, int direction, int resourceId) throws RemoteException { - UserRecord userRecord = mUserResourceTracker.getUserRecord(Binder.getCallingUid()); + int callingUid = Binder.getCallingUid(); + UserRecord userRecord = mUserResourceTracker.getUserRecord(callingUid); checkDirection(direction); // Get transform record; if no transform is found, will throw IllegalArgumentException TransformRecord info = userRecord.mTransformRecords.getResourceOrThrow(resourceId); // TODO: make this a function. - if (info.pid != getCallingPid() || info.uid != getCallingUid()) { + if (info.pid != getCallingPid() || info.uid != callingUid) { throw new SecurityException("Only the owner of an IpSec Transform may apply it!"); } @@ -1636,7 +1646,7 @@ public class IpSecService extends IIpSecService.Stub { .getNetdInstance() .ipSecApplyTransportModeTransform( socket.getFileDescriptor(), - resourceId, + callingUid, direction, c.getSourceAddress(), c.getDestinationAddress(), @@ -1668,7 +1678,8 @@ public class IpSecService extends IIpSecService.Stub { enforceTunnelPermissions(callingPackage); checkDirection(direction); - UserRecord userRecord = mUserResourceTracker.getUserRecord(Binder.getCallingUid()); + int callingUid = Binder.getCallingUid(); + UserRecord userRecord = mUserResourceTracker.getUserRecord(callingUid); // Get transform record; if no transform is found, will throw IllegalArgumentException TransformRecord transformInfo = @@ -1693,9 +1704,9 @@ public class IpSecService extends IIpSecService.Stub { SpiRecord spiRecord = userRecord.mSpiRecords.getResourceOrThrow(c.getSpiResourceId()); int mark = - (direction == IpSecManager.DIRECTION_IN) - ? tunnelInterfaceInfo.getIkey() - : tunnelInterfaceInfo.getOkey(); + (direction == IpSecManager.DIRECTION_OUT) + ? tunnelInterfaceInfo.getOkey() + : tunnelInterfaceInfo.getIkey(); try { c.setMarkValue(mark); @@ -1706,14 +1717,15 @@ public class IpSecService extends IIpSecService.Stub { c.setNetwork(tunnelInterfaceInfo.getUnderlyingNetwork()); // If outbound, also add SPI to the policy. - for(String wildcardAddr : WILDCARD_ADDRESSES) { + for (int selAddrFamily : ADDRESS_FAMILIES) { mSrvConfig .getNetdInstance() .ipSecUpdateSecurityPolicy( - 0, // Use 0 for reqId + callingUid, + selAddrFamily, direction, - wildcardAddr, - wildcardAddr, + tunnelInterfaceInfo.getLocalAddress(), + tunnelInterfaceInfo.getRemoteAddress(), transformInfo.getSpiRecord().getSpi(), mark, 0xffffffff); diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index bd0a4c7bb1c8..9c81748ea435 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -315,7 +315,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub } private HashMap<String, IdleTimerParams> mActiveIdleTimers = Maps.newHashMap(); - private volatile boolean mBandwidthControlEnabled; private volatile boolean mFirewallEnabled; private volatile boolean mStrictEnabled; @@ -619,27 +618,11 @@ public class NetworkManagementService extends INetworkManagementService.Stub */ private void prepareNativeDaemon() { - mBandwidthControlEnabled = false; - - // only enable bandwidth control when support exists - final boolean hasKernelSupport = new File("/proc/net/xt_qtaguid/ctrl").exists(); - // push any existing quota or UID rules synchronized (mQuotaLock) { - if (hasKernelSupport) { - Slog.d(TAG, "enabling bandwidth control"); - try { - mConnector.execute("bandwidth", "enable"); - mBandwidthControlEnabled = true; - } catch (NativeDaemonConnectorException e) { - Log.wtf(TAG, "problem enabling bandwidth controls", e); - } - } else { - Slog.i(TAG, "not enabling bandwidth control"); - } - - SystemProperties.set(PROP_QTAGUID_ENABLED, mBandwidthControlEnabled ? "1" : "0"); + // Netd unconditionally enable bandwidth control + SystemProperties.set(PROP_QTAGUID_ENABLED, "1"); mStrictEnabled = true; @@ -721,11 +704,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub } } - if (mBandwidthControlEnabled) { - try { - getBatteryStats().noteNetworkStatsEnabled(); - } catch (RemoteException e) { - } + + try { + getBatteryStats().noteNetworkStatsEnabled(); + } catch (RemoteException e) { } } @@ -1571,10 +1553,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void setInterfaceQuota(String iface, long quotaBytes) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - // silently discard when control disabled - // TODO: eventually migrate to be always enabled - if (!mBandwidthControlEnabled) return; - synchronized (mQuotaLock) { if (mActiveQuotas.containsKey(iface)) { throw new IllegalStateException("iface " + iface + " already has quota"); @@ -1582,10 +1560,11 @@ public class NetworkManagementService extends INetworkManagementService.Stub try { // TODO: support quota shared across interfaces - mConnector.execute("bandwidth", "setiquota", iface, quotaBytes); + mNetdService.bandwidthSetInterfaceQuota(iface, quotaBytes); + mActiveQuotas.put(iface, quotaBytes); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } synchronized (mTetheringStatsProviders) { @@ -1605,10 +1584,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void removeInterfaceQuota(String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - // silently discard when control disabled - // TODO: eventually migrate to be always enabled - if (!mBandwidthControlEnabled) return; - synchronized (mQuotaLock) { if (!mActiveQuotas.containsKey(iface)) { // TODO: eventually consider throwing @@ -1620,9 +1595,9 @@ public class NetworkManagementService extends INetworkManagementService.Stub try { // TODO: support quota shared across interfaces - mConnector.execute("bandwidth", "removeiquota", iface); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mNetdService.bandwidthRemoveInterfaceQuota(iface); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } synchronized (mTetheringStatsProviders) { @@ -1642,10 +1617,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void setInterfaceAlert(String iface, long alertBytes) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - // silently discard when control disabled - // TODO: eventually migrate to be always enabled - if (!mBandwidthControlEnabled) return; - // quick sanity check if (!mActiveQuotas.containsKey(iface)) { throw new IllegalStateException("setting alert requires existing quota on iface"); @@ -1658,10 +1629,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub try { // TODO: support alert shared across interfaces - mConnector.execute("bandwidth", "setinterfacealert", iface, alertBytes); + mNetdService.bandwidthSetInterfaceAlert(iface, alertBytes); mActiveAlerts.put(iface, alertBytes); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } } } @@ -1670,10 +1641,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void removeInterfaceAlert(String iface) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - // silently discard when control disabled - // TODO: eventually migrate to be always enabled - if (!mBandwidthControlEnabled) return; - synchronized (mQuotaLock) { if (!mActiveAlerts.containsKey(iface)) { // TODO: eventually consider throwing @@ -1682,10 +1649,10 @@ public class NetworkManagementService extends INetworkManagementService.Stub try { // TODO: support alert shared across interfaces - mConnector.execute("bandwidth", "removeinterfacealert", iface); + mNetdService.bandwidthRemoveInterfaceAlert(iface); mActiveAlerts.remove(iface); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } } } @@ -1694,27 +1661,16 @@ public class NetworkManagementService extends INetworkManagementService.Stub public void setGlobalAlert(long alertBytes) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - // silently discard when control disabled - // TODO: eventually migrate to be always enabled - if (!mBandwidthControlEnabled) return; - try { - mConnector.execute("bandwidth", "setglobalalert", alertBytes); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mNetdService.bandwidthSetGlobalAlert(alertBytes); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } } private void setUidOnMeteredNetworkList(int uid, boolean blacklist, boolean enable) { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - // silently discard when control disabled - // TODO: eventually migrate to be always enabled - if (!mBandwidthControlEnabled) return; - - final String chain = blacklist ? "naughtyapps" : "niceapps"; - final String suffix = enable ? "add" : "remove"; - synchronized (mQuotaLock) { boolean oldEnable; SparseBooleanArray quotaList; @@ -1729,7 +1685,19 @@ public class NetworkManagementService extends INetworkManagementService.Stub Trace.traceBegin(Trace.TRACE_TAG_NETWORK, "inetd bandwidth"); try { - mConnector.execute("bandwidth", suffix + chain, uid); + if (blacklist) { + if (enable) { + mNetdService.bandwidthAddNaughtyApp(uid); + } else { + mNetdService.bandwidthRemoveNaughtyApp(uid); + } + } else { + if (enable) { + mNetdService.bandwidthAddNiceApp(uid); + } else { + mNetdService.bandwidthRemoveNiceApp(uid); + } + } synchronized (mRulesLock) { if (enable) { quotaList.put(uid, true); @@ -1737,8 +1705,8 @@ public class NetworkManagementService extends INetworkManagementService.Stub quotaList.delete(uid); } } - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + } catch (RemoteException | ServiceSpecificException e) { + throw new IllegalStateException(e); } finally { Trace.traceEnd(Trace.TRACE_TAG_NETWORK); } @@ -1863,7 +1831,7 @@ public class NetworkManagementService extends INetworkManagementService.Stub @Override public boolean isBandwidthControlEnabled() { mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); - return mBandwidthControlEnabled; + return true; } @Override @@ -2370,7 +2338,6 @@ public class NetworkManagementService extends INetworkManagementService.Stub mConnector.dump(fd, pw, args); pw.println(); - pw.print("Bandwidth control enabled: "); pw.println(mBandwidthControlEnabled); pw.print("mMobileActivityFromRadio="); pw.print(mMobileActivityFromRadio); pw.print(" mLastPowerStateFromRadio="); pw.println(mLastPowerStateFromRadio); pw.print("mNetworkActive="); pw.println(mNetworkActive); diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 566ce4f48e25..0955beda1df5 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -99,6 +99,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { IPhoneStateListener callback; IOnSubscriptionsChangedListener onSubscriptionsChangedListenerCallback; + IOnSubscriptionsChangedListener onOpportunisticSubscriptionsChangedListenerCallback; int callerUid; int callerPid; @@ -117,6 +118,10 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { return (onSubscriptionsChangedListenerCallback != null); } + boolean matchOnOpportunisticSubscriptionsChangedListener() { + return (onOpportunisticSubscriptionsChangedListenerCallback != null); + } + boolean canReadCallLog() { try { return TelephonyPermissions.checkReadCallLog( @@ -131,7 +136,9 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { return "{callingPackage=" + callingPackage + " binder=" + binder + " callback=" + callback + " onSubscriptionsChangedListenererCallback=" - + onSubscriptionsChangedListenerCallback + + onSubscriptionsChangedListenerCallback + + " onOpportunisticSubscriptionsChangedListenererCallback=" + + onOpportunisticSubscriptionsChangedListenerCallback + " callerUid=" + callerUid + " subId=" + subId + " phoneId=" + phoneId + " events=" + Integer.toHexString(events) + "}"; } @@ -147,7 +154,9 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { private final AppOpsManager mAppOps; - private boolean hasNotifySubscriptionInfoChangedOccurred = false; + private boolean mHasNotifySubscriptionInfoChangedOccurred = false; + + private boolean mHasNotifyOpportunisticSubscriptionInfoChangedOccurred = false; private int mNumPhones; @@ -407,7 +416,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { log("listen oscl: Register r=" + r); } // Always notify when registration occurs if there has been a notification. - if (hasNotifySubscriptionInfoChangedOccurred) { + if (mHasNotifySubscriptionInfoChangedOccurred) { try { if (VDBG) log("listen oscl: send to r=" + r); r.onSubscriptionsChangedListenerCallback.onSubscriptionsChanged(); @@ -417,7 +426,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { remove(r.binder); } } else { - log("listen oscl: hasNotifySubscriptionInfoChangedOccurred==false no callback"); + log("listen oscl: mHasNotifySubscriptionInfoChangedOccurred==false no callback"); } } } @@ -429,15 +438,61 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { remove(callback.asBinder()); } + + @Override + public void addOnOpportunisticSubscriptionsChangedListener(String callingPackage, + IOnSubscriptionsChangedListener callback) { + int callerUserId = UserHandle.getCallingUserId(); + mAppOps.checkPackage(Binder.getCallingUid(), callingPackage); + if (VDBG) { + log("listen ooscl: E pkg=" + callingPackage + " myUserId=" + UserHandle.myUserId() + + " callerUserId=" + callerUserId + " callback=" + callback + + " callback.asBinder=" + callback.asBinder()); + } + + synchronized (mRecords) { + // register + IBinder b = callback.asBinder(); + Record r = add(b); + + if (r == null) { + return; + } + + r.context = mContext; + r.onOpportunisticSubscriptionsChangedListenerCallback = callback; + r.callingPackage = callingPackage; + r.callerUid = Binder.getCallingUid(); + r.callerPid = Binder.getCallingPid(); + r.events = 0; + if (DBG) { + log("listen ooscl: Register r=" + r); + } + // Always notify when registration occurs if there has been a notification. + if (mHasNotifyOpportunisticSubscriptionInfoChangedOccurred) { + try { + if (VDBG) log("listen ooscl: send to r=" + r); + r.onOpportunisticSubscriptionsChangedListenerCallback.onSubscriptionsChanged(); + if (VDBG) log("listen ooscl: sent to r=" + r); + } catch (RemoteException e) { + if (VDBG) log("listen ooscl: remote exception sending to r=" + r + " e=" + e); + remove(r.binder); + } + } else { + log("listen ooscl: hasNotifyOpptSubInfoChangedOccurred==false no callback"); + } + } + } + @Override public void notifySubscriptionInfoChanged() { if (VDBG) log("notifySubscriptionInfoChanged:"); synchronized (mRecords) { - if (!hasNotifySubscriptionInfoChangedOccurred) { + if (!mHasNotifySubscriptionInfoChangedOccurred) { log("notifySubscriptionInfoChanged: first invocation mRecords.size=" + mRecords.size()); } - hasNotifySubscriptionInfoChangedOccurred = true; + mHasNotifySubscriptionInfoChangedOccurred = true; mRemoveList.clear(); for (Record r : mRecords) { if (r.matchOnSubscriptionsChangedListener()) { @@ -456,6 +511,33 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { } @Override + public void notifyOpportunisticSubscriptionInfoChanged() { + if (VDBG) log("notifyOpptSubscriptionInfoChanged:"); + synchronized (mRecords) { + if (!mHasNotifyOpportunisticSubscriptionInfoChangedOccurred) { + log("notifyOpptSubscriptionInfoChanged: first invocation mRecords.size=" + + mRecords.size()); + } + mHasNotifyOpportunisticSubscriptionInfoChangedOccurred = true; + mRemoveList.clear(); + for (Record r : mRecords) { + if (r.matchOnOpportunisticSubscriptionsChangedListener()) { + try { + if (VDBG) log("notifyOpptSubChanged: call oosc to r=" + r); + r.onOpportunisticSubscriptionsChangedListenerCallback + .onSubscriptionsChanged(); + if (VDBG) log("notifyOpptSubChanged: done oosc to r=" + r); + } catch (RemoteException ex) { + if (VDBG) log("notifyOpptSubChanged: RemoteException r=" + r); + mRemoveList.add(r.binder); + } + } + } + handleRemoveListLocked(); + } + } + + @Override public void listen(String pkgForDebug, IPhoneStateListener callback, int events, boolean notifyNow) { listenForSubscriber(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, pkgForDebug, callback, diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index f7cb8345e43f..9d0a8653178a 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -5886,6 +5886,7 @@ public class ActivityManagerService extends IActivityManager.Stub private final void handleAppDiedLocked(ProcessRecord app, boolean restarting, boolean allowRestart) { int pid = app.pid; + final boolean clearLaunchStartTime = !restarting && app.removed && app.foregroundActivities; boolean kept = cleanUpApplicationRecordLocked(app, restarting, allowRestart, -1, false /*replacingPid*/); if (!kept && !restarting) { @@ -5926,6 +5927,19 @@ public class ActivityManagerService extends IActivityManager.Stub } finally { mWindowManager.continueSurfaceLayout(); } + + // TODO (b/67683350) + // When an app process is removed, activities from the process may be relaunched. In the + // case of forceStopPackageLocked the activities are finished before any window is drawn, + // and the launch time is not cleared. This will be incorrectly used to calculate launch + // time for the next launched activity launched in the same windowing mode. + if (clearLaunchStartTime) { + final LaunchTimeTracker.Entry entry = mStackSupervisor + .getLaunchTimeTracker().getEntry(mStackSupervisor.getWindowingMode()); + if (entry != null) { + entry.mLaunchStartTime = 0; + } + } } private final int getLRURecordIndexForAppLocked(IApplicationThread thread) { @@ -21996,8 +22010,8 @@ public class ActivityManagerService extends IActivityManager.Stub activeInstr.mUiAutomationConnection = uiAutomationConnection; activeInstr.mResultClass = className; - boolean disableHiddenApiChecks = - (flags & INSTRUMENTATION_FLAG_DISABLE_HIDDEN_API_CHECKS) != 0; + boolean disableHiddenApiChecks = ai.usesNonSdkApi() + || (flags & INSTRUMENTATION_FLAG_DISABLE_HIDDEN_API_CHECKS) != 0; if (disableHiddenApiChecks) { enforceCallingPermission(android.Manifest.permission.DISABLE_HIDDEN_API_CHECKS, "disable hidden API checks"); diff --git a/services/core/java/com/android/server/am/OWNERS b/services/core/java/com/android/server/am/OWNERS index f60c5c3208d9..79c98e550774 100644 --- a/services/core/java/com/android/server/am/OWNERS +++ b/services/core/java/com/android/server/am/OWNERS @@ -4,7 +4,6 @@ yamasani@google.com jsharkey@google.com hackbod@google.com omakoto@google.com -fkupolov@google.com ctate@google.com huiyu@google.com mwachens@google.com @@ -28,7 +27,4 @@ toddke@google.com michaelwr@google.com narayan@google.com -per-file GlobalSettingsToPropertiesMapper.java=fkupolov@google.com -per-file GlobalSettingsToPropertiesMapper.java=omakoto@google.com -per-file GlobalSettingsToPropertiesMapper.java=svetoslavganov@google.com -per-file GlobalSettingsToPropertiesMapper.java=yamasani@google.com +per-file GlobalSettingsToPropertiesMapper.java = omakoto@google.com, svetoslavganov@google.com, yamasani@google.com diff --git a/services/core/java/com/android/server/connectivity/PermissionMonitor.java b/services/core/java/com/android/server/connectivity/PermissionMonitor.java index e471c7d84b56..7b8571c131b6 100644 --- a/services/core/java/com/android/server/connectivity/PermissionMonitor.java +++ b/services/core/java/com/android/server/connectivity/PermissionMonitor.java @@ -24,6 +24,7 @@ import static android.content.pm.ApplicationInfo.FLAG_SYSTEM; import static android.content.pm.ApplicationInfo.FLAG_UPDATED_SYSTEM_APP; import static android.content.pm.PackageManager.GET_PERMISSIONS; +import android.annotation.NonNull; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -34,6 +35,7 @@ import android.content.pm.PackageManager; import android.content.pm.PackageManager.NameNotFoundException; import android.content.pm.UserInfo; import android.net.Uri; +import android.os.Build; import android.os.INetworkManagementService; import android.os.RemoteException; import android.os.UserHandle; @@ -155,9 +157,8 @@ public class PermissionMonitor { } @VisibleForTesting - boolean isPreinstalledSystemApp(PackageInfo app) { - int flags = app.applicationInfo != null ? app.applicationInfo.flags : 0; - return (flags & (FLAG_SYSTEM | FLAG_UPDATED_SYSTEM_APP)) != 0; + static boolean isVendorApp(@NonNull ApplicationInfo appInfo) { + return appInfo.isVendor() || appInfo.isOem() || appInfo.isProduct(); } @VisibleForTesting @@ -177,7 +178,13 @@ public class PermissionMonitor { } private boolean hasRestrictedNetworkPermission(PackageInfo app) { - if (isPreinstalledSystemApp(app)) return true; + // TODO : remove this check in the future(b/31479477). All apps should just + // request the appropriate permission for their use case since android Q. + if (app.applicationInfo != null + && app.applicationInfo.targetSdkVersion < Build.VERSION_CODES.Q + && isVendorApp(app.applicationInfo)) { + return true; + } return hasPermission(app, CONNECTIVITY_INTERNAL) || hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS); } @@ -186,13 +193,8 @@ public class PermissionMonitor { // This function defines what it means to hold the permission to use // background networks. return hasPermission(app, CHANGE_NETWORK_STATE) - || hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS) - || hasPermission(app, CONNECTIVITY_INTERNAL) || hasPermission(app, NETWORK_STACK) - // TODO : remove this check (b/31479477). Not all preinstalled apps should - // have access to background networks, they should just request the appropriate - // permission for their use case from the list above. - || isPreinstalledSystemApp(app); + || hasRestrictedNetworkPermission(app); } public boolean hasUseBackgroundNetworksPermission(int uid) { diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java index d16c2776dc3b..a8f7259050c1 100644 --- a/services/core/java/com/android/server/connectivity/Tethering.java +++ b/services/core/java/com/android/server/connectivity/Tethering.java @@ -68,6 +68,7 @@ import android.content.res.Resources; import android.hardware.usb.UsbManager; import android.net.INetworkPolicyManager; import android.net.INetworkStatsService; +import android.net.ip.IpServer; import android.net.IpPrefix; import android.net.LinkAddress; import android.net.LinkProperties; @@ -112,10 +113,8 @@ import com.android.internal.util.Protocol; import com.android.internal.util.State; import com.android.internal.util.StateMachine; import com.android.server.LocalServices; -import com.android.server.connectivity.tethering.IControlsTethering; import com.android.server.connectivity.tethering.IPv6TetheringCoordinator; import com.android.server.connectivity.tethering.OffloadController; -import com.android.server.connectivity.tethering.TetherInterfaceStateMachine; import com.android.server.connectivity.tethering.TetheringConfiguration; import com.android.server.connectivity.tethering.TetheringDependencies; import com.android.server.connectivity.tethering.TetheringInterfaceUtils; @@ -149,7 +148,7 @@ public class Tethering extends BaseNetworkObserver { protected static final String DISABLE_PROVISIONING_SYSPROP_KEY = "net.tethering.noprovisioning"; private static final Class[] messageClasses = { - Tethering.class, TetherMasterSM.class, TetherInterfaceStateMachine.class + Tethering.class, TetherMasterSM.class, IpServer.class }; private static final SparseArray<String> sMagicDecoderRing = MessageUtils.findMessageNames(messageClasses); @@ -159,21 +158,21 @@ public class Tethering extends BaseNetworkObserver { .getSystem().getString(com.android.internal.R.string.config_wifi_tether_enable)); private static class TetherState { - public final TetherInterfaceStateMachine stateMachine; + public final IpServer ipServer; public int lastState; public int lastError; - public TetherState(TetherInterfaceStateMachine sm) { - stateMachine = sm; + public TetherState(IpServer ipServer) { + this.ipServer = ipServer; // Assume all state machines start out available and with no errors. - lastState = IControlsTethering.STATE_AVAILABLE; + lastState = IpServer.STATE_AVAILABLE; lastError = TETHER_ERROR_NO_ERROR; } public boolean isCurrentlyServing() { switch (lastState) { - case IControlsTethering.STATE_TETHERED: - case IControlsTethering.STATE_LOCAL_ONLY: + case IpServer.STATE_TETHERED: + case IpServer.STATE_LOCAL_ONLY: return true; default: return false; @@ -198,7 +197,7 @@ public class Tethering extends BaseNetworkObserver { private final UpstreamNetworkMonitor mUpstreamNetworkMonitor; // TODO: Figure out how to merge this and other downstream-tracking objects // into a single coherent structure. - private final HashSet<TetherInterfaceStateMachine> mForwardedDownstreams; + private final HashSet<IpServer> mForwardedDownstreams; private final VersionedBroadcastListener mCarrierConfigChange; private final TetheringDependencies mDeps; @@ -604,7 +603,7 @@ public class Tethering extends BaseNetworkObserver { } public int tether(String iface) { - return tether(iface, IControlsTethering.STATE_TETHERED); + return tether(iface, IpServer.STATE_TETHERED); } private int tether(String iface, int requestedState) { @@ -617,7 +616,7 @@ public class Tethering extends BaseNetworkObserver { } // Ignore the error status of the interface. If the interface is available, // the errors are referring to past tethering attempts anyway. - if (tetherState.lastState != IControlsTethering.STATE_AVAILABLE) { + if (tetherState.lastState != IpServer.STATE_AVAILABLE) { Log.e(TAG, "Tried to Tether an unavailable iface: " + iface + ", ignoring"); return TETHER_ERROR_UNAVAIL_IFACE; } @@ -626,8 +625,7 @@ public class Tethering extends BaseNetworkObserver { // return an error. // // TODO: reexamine the threading and messaging model. - tetherState.stateMachine.sendMessage( - TetherInterfaceStateMachine.CMD_TETHER_REQUESTED, requestedState); + tetherState.ipServer.sendMessage(IpServer.CMD_TETHER_REQUESTED, requestedState); return TETHER_ERROR_NO_ERROR; } } @@ -644,8 +642,7 @@ public class Tethering extends BaseNetworkObserver { Log.e(TAG, "Tried to untether an inactive iface :" + iface + ", ignoring"); return TETHER_ERROR_UNAVAIL_IFACE; } - tetherState.stateMachine.sendMessage( - TetherInterfaceStateMachine.CMD_TETHER_UNREQUESTED); + tetherState.ipServer.sendMessage(IpServer.CMD_TETHER_UNREQUESTED); return TETHER_ERROR_NO_ERROR; } } @@ -689,11 +686,11 @@ public class Tethering extends BaseNetworkObserver { String iface = mTetherStates.keyAt(i); if (tetherState.lastError != TETHER_ERROR_NO_ERROR) { erroredList.add(iface); - } else if (tetherState.lastState == IControlsTethering.STATE_AVAILABLE) { + } else if (tetherState.lastState == IpServer.STATE_AVAILABLE) { availableList.add(iface); - } else if (tetherState.lastState == IControlsTethering.STATE_LOCAL_ONLY) { + } else if (tetherState.lastState == IpServer.STATE_LOCAL_ONLY) { localOnlyList.add(iface); - } else if (tetherState.lastState == IControlsTethering.STATE_TETHERED) { + } else if (tetherState.lastState == IpServer.STATE_TETHERED) { if (cfg.isUsb(iface)) { usbTethered = true; } else if (cfg.isWifi(iface)) { @@ -882,10 +879,10 @@ public class Tethering extends BaseNetworkObserver { synchronized (Tethering.this.mPublicSync) { if (!usbConnected && mRndisEnabled) { // Turn off tethering if it was enabled and there is a disconnect. - tetherMatchingInterfaces(IControlsTethering.STATE_AVAILABLE, TETHERING_USB); + tetherMatchingInterfaces(IpServer.STATE_AVAILABLE, TETHERING_USB); } else if (usbConfigured && rndisEnabled) { // Tether if rndis is enabled and usb is configured. - tetherMatchingInterfaces(IControlsTethering.STATE_TETHERED, TETHERING_USB); + tetherMatchingInterfaces(IpServer.STATE_TETHERED, TETHERING_USB); } mRndisEnabled = usbConfigured && rndisEnabled; } @@ -959,15 +956,15 @@ public class Tethering extends BaseNetworkObserver { if (!TextUtils.isEmpty(ifname)) { final TetherState ts = mTetherStates.get(ifname); if (ts != null) { - ts.stateMachine.unwanted(); + ts.ipServer.unwanted(); return; } } for (int i = 0; i < mTetherStates.size(); i++) { - TetherInterfaceStateMachine tism = mTetherStates.valueAt(i).stateMachine; - if (tism.interfaceType() == TETHERING_WIFI) { - tism.unwanted(); + final IpServer ipServer = mTetherStates.valueAt(i).ipServer; + if (ipServer.interfaceType() == TETHERING_WIFI) { + ipServer.unwanted(); return; } } @@ -978,15 +975,15 @@ public class Tethering extends BaseNetworkObserver { } private void enableWifiIpServingLocked(String ifname, int wifiIpMode) { - // Map wifiIpMode values to IControlsTethering serving states, inferring + // Map wifiIpMode values to IpServer.Callback serving states, inferring // from mWifiTetherRequested as a final "best guess". final int ipServingMode; switch (wifiIpMode) { case IFACE_IP_MODE_TETHERED: - ipServingMode = IControlsTethering.STATE_TETHERED; + ipServingMode = IpServer.STATE_TETHERED; break; case IFACE_IP_MODE_LOCAL_ONLY: - ipServingMode = IControlsTethering.STATE_LOCAL_ONLY; + ipServingMode = IpServer.STATE_LOCAL_ONLY; break; default: mLog.e("Cannot enable IP serving in unknown WiFi mode: " + wifiIpMode); @@ -1041,12 +1038,12 @@ public class Tethering extends BaseNetworkObserver { private void changeInterfaceState(String ifname, int requestedState) { final int result; switch (requestedState) { - case IControlsTethering.STATE_UNAVAILABLE: - case IControlsTethering.STATE_AVAILABLE: + case IpServer.STATE_UNAVAILABLE: + case IpServer.STATE_AVAILABLE: result = untether(ifname); break; - case IControlsTethering.STATE_TETHERED: - case IControlsTethering.STATE_LOCAL_ONLY: + case IpServer.STATE_TETHERED: + case IpServer.STATE_LOCAL_ONLY: result = tether(ifname, requestedState); break; default: @@ -1104,7 +1101,7 @@ public class Tethering extends BaseNetworkObserver { synchronized (mPublicSync) { for (int i = 0; i < mTetherStates.size(); i++) { TetherState tetherState = mTetherStates.valueAt(i); - if (tetherState.lastState == IControlsTethering.STATE_TETHERED) { + if (tetherState.lastState == IpServer.STATE_TETHERED) { list.add(mTetherStates.keyAt(i)); } } @@ -1117,7 +1114,7 @@ public class Tethering extends BaseNetworkObserver { synchronized (mPublicSync) { for (int i = 0; i < mTetherStates.size(); i++) { TetherState tetherState = mTetherStates.valueAt(i); - if (tetherState.lastState == IControlsTethering.STATE_AVAILABLE) { + if (tetherState.lastState == IpServer.STATE_AVAILABLE) { list.add(mTetherStates.keyAt(i)); } } @@ -1177,7 +1174,7 @@ public class Tethering extends BaseNetworkObserver { synchronized (mPublicSync) { for (int i = 0; i < mTetherStates.size(); i++) { TetherState tetherState = mTetherStates.valueAt(i); - if (tetherState.lastState != IControlsTethering.STATE_TETHERED) { + if (tetherState.lastState != IpServer.STATE_TETHERED) { continue; // Skip interfaces that aren't tethered. } String iface = mTetherStates.keyAt(i); @@ -1231,7 +1228,7 @@ public class Tethering extends BaseNetworkObserver { // Because we excise interfaces immediately from mTetherStates, we must maintain mNotifyList // so that the garbage collector does not clean up the state machine before it has a chance // to tear itself down. - private final ArrayList<TetherInterfaceStateMachine> mNotifyList; + private final ArrayList<IpServer> mNotifyList; private final IPv6TetheringCoordinator mIPv6TetheringCoordinator; private final OffloadWrapper mOffload; @@ -1268,17 +1265,19 @@ public class Tethering extends BaseNetworkObserver { public boolean processMessage(Message message) { logMessage(this, message.what); switch (message.what) { - case EVENT_IFACE_SERVING_STATE_ACTIVE: - TetherInterfaceStateMachine who = (TetherInterfaceStateMachine) message.obj; + case EVENT_IFACE_SERVING_STATE_ACTIVE: { + final IpServer who = (IpServer) message.obj; if (VDBG) Log.d(TAG, "Tether Mode requested by " + who); handleInterfaceServingStateActive(message.arg1, who); transitionTo(mTetherModeAliveState); break; - case EVENT_IFACE_SERVING_STATE_INACTIVE: - who = (TetherInterfaceStateMachine) message.obj; + } + case EVENT_IFACE_SERVING_STATE_INACTIVE: { + final IpServer who = (IpServer) message.obj; if (VDBG) Log.d(TAG, "Tether Mode unrequested by " + who); handleInterfaceServingStateInactive(who); break; + } case EVENT_IFACE_UPDATE_LINKPROPERTIES: // Silently ignore these for now. break; @@ -1410,8 +1409,8 @@ public class Tethering extends BaseNetworkObserver { protected void notifyDownstreamsOfNewUpstreamIface(InterfaceSet ifaces) { mCurrentUpstreamIfaceSet = ifaces; - for (TetherInterfaceStateMachine sm : mNotifyList) { - sm.sendMessage(TetherInterfaceStateMachine.CMD_TETHER_CONNECTION_CHANGED, ifaces); + for (IpServer ipServer : mNotifyList) { + ipServer.sendMessage(IpServer.CMD_TETHER_CONNECTION_CHANGED, ifaces); } } @@ -1420,13 +1419,13 @@ public class Tethering extends BaseNetworkObserver { mOffload.updateUpstreamNetworkState(ns); } - private void handleInterfaceServingStateActive(int mode, TetherInterfaceStateMachine who) { + private void handleInterfaceServingStateActive(int mode, IpServer who) { if (mNotifyList.indexOf(who) < 0) { mNotifyList.add(who); mIPv6TetheringCoordinator.addActiveDownstream(who, mode); } - if (mode == IControlsTethering.STATE_TETHERED) { + if (mode == IpServer.STATE_TETHERED) { // No need to notify OffloadController just yet as there are no // "offload-able" prefixes to pass along. This will handled // when the TISM informs Tethering of its LinkProperties. @@ -1441,10 +1440,10 @@ public class Tethering extends BaseNetworkObserver { final WifiManager mgr = getWifiManager(); final String iface = who.interfaceName(); switch (mode) { - case IControlsTethering.STATE_TETHERED: + case IpServer.STATE_TETHERED: mgr.updateInterfaceIpState(iface, IFACE_IP_MODE_TETHERED); break; - case IControlsTethering.STATE_LOCAL_ONLY: + case IpServer.STATE_LOCAL_ONLY: mgr.updateInterfaceIpState(iface, IFACE_IP_MODE_LOCAL_ONLY); break; default: @@ -1454,7 +1453,7 @@ public class Tethering extends BaseNetworkObserver { } } - private void handleInterfaceServingStateInactive(TetherInterfaceStateMachine who) { + private void handleInterfaceServingStateInactive(IpServer who) { mNotifyList.remove(who); mIPv6TetheringCoordinator.removeActiveDownstream(who); mOffload.excludeDownstreamInterface(who.interfaceName()); @@ -1563,10 +1562,10 @@ public class Tethering extends BaseNetworkObserver { boolean retValue = true; switch (message.what) { case EVENT_IFACE_SERVING_STATE_ACTIVE: { - TetherInterfaceStateMachine who = (TetherInterfaceStateMachine) message.obj; + IpServer who = (IpServer) message.obj; if (VDBG) Log.d(TAG, "Tether Mode requested by " + who); handleInterfaceServingStateActive(message.arg1, who); - who.sendMessage(TetherInterfaceStateMachine.CMD_TETHER_CONNECTION_CHANGED, + who.sendMessage(IpServer.CMD_TETHER_CONNECTION_CHANGED, mCurrentUpstreamIfaceSet); // If there has been a change and an upstream is now // desired, kick off the selection process. @@ -1577,7 +1576,7 @@ public class Tethering extends BaseNetworkObserver { break; } case EVENT_IFACE_SERVING_STATE_INACTIVE: { - TetherInterfaceStateMachine who = (TetherInterfaceStateMachine) message.obj; + IpServer who = (IpServer) message.obj; if (VDBG) Log.d(TAG, "Tether Mode unrequested by " + who); handleInterfaceServingStateInactive(who); @@ -1591,7 +1590,7 @@ public class Tethering extends BaseNetworkObserver { if (DBG) { Log.d(TAG, "TetherModeAlive still has " + mNotifyList.size() + " live requests:"); - for (TetherInterfaceStateMachine o : mNotifyList) { + for (IpServer o : mNotifyList) { Log.d(TAG, " " + o); } } @@ -1605,7 +1604,7 @@ public class Tethering extends BaseNetworkObserver { } case EVENT_IFACE_UPDATE_LINKPROPERTIES: { final LinkProperties newLp = (LinkProperties) message.obj; - if (message.arg1 == IControlsTethering.STATE_TETHERED) { + if (message.arg1 == IpServer.STATE_TETHERED) { mOffload.updateDownstreamLinkProperties(newLp); } else { mOffload.excludeDownstreamInterface(newLp.getInterfaceName()); @@ -1650,7 +1649,7 @@ public class Tethering extends BaseNetworkObserver { boolean retValue = true; switch (message.what) { case EVENT_IFACE_SERVING_STATE_ACTIVE: - TetherInterfaceStateMachine who = (TetherInterfaceStateMachine) message.obj; + IpServer who = (IpServer) message.obj; who.sendMessage(mErrorNotification); break; case CMD_CLEAR_ERROR: @@ -1665,8 +1664,8 @@ public class Tethering extends BaseNetworkObserver { void notify(int msgType) { mErrorNotification = msgType; - for (TetherInterfaceStateMachine sm : mNotifyList) { - sm.sendMessage(msgType); + for (IpServer ipServer : mNotifyList) { + ipServer.sendMessage(msgType); } } @@ -1676,7 +1675,7 @@ public class Tethering extends BaseNetworkObserver { @Override public void enter() { Log.e(TAG, "Error in setIpForwardingEnabled"); - notify(TetherInterfaceStateMachine.CMD_IP_FORWARDING_ENABLE_ERROR); + notify(IpServer.CMD_IP_FORWARDING_ENABLE_ERROR); } } @@ -1684,7 +1683,7 @@ public class Tethering extends BaseNetworkObserver { @Override public void enter() { Log.e(TAG, "Error in setIpForwardingDisabled"); - notify(TetherInterfaceStateMachine.CMD_IP_FORWARDING_DISABLE_ERROR); + notify(IpServer.CMD_IP_FORWARDING_DISABLE_ERROR); } } @@ -1692,7 +1691,7 @@ public class Tethering extends BaseNetworkObserver { @Override public void enter() { Log.e(TAG, "Error in startTethering"); - notify(TetherInterfaceStateMachine.CMD_START_TETHERING_ERROR); + notify(IpServer.CMD_START_TETHERING_ERROR); try { mNMService.setIpForwardingEnabled(false); } catch (Exception e) {} @@ -1703,7 +1702,7 @@ public class Tethering extends BaseNetworkObserver { @Override public void enter() { Log.e(TAG, "Error in stopTethering"); - notify(TetherInterfaceStateMachine.CMD_STOP_TETHERING_ERROR); + notify(IpServer.CMD_STOP_TETHERING_ERROR); try { mNMService.setIpForwardingEnabled(false); } catch (Exception e) {} @@ -1714,7 +1713,7 @@ public class Tethering extends BaseNetworkObserver { @Override public void enter() { Log.e(TAG, "Error in setDnsForwarders"); - notify(TetherInterfaceStateMachine.CMD_SET_DNS_FORWARDERS_ERROR); + notify(IpServer.CMD_SET_DNS_FORWARDERS_ERROR); try { mNMService.stopTethering(); } catch (Exception e) {} @@ -1771,15 +1770,15 @@ public class Tethering extends BaseNetworkObserver { // Maybe add prefixes or addresses for downstreams, depending on // the IP serving mode of each. - for (TetherInterfaceStateMachine tism : mNotifyList) { - final LinkProperties lp = tism.linkProperties(); + for (IpServer ipServer : mNotifyList) { + final LinkProperties lp = ipServer.linkProperties(); - switch (tism.servingMode()) { - case IControlsTethering.STATE_UNAVAILABLE: - case IControlsTethering.STATE_AVAILABLE: + switch (ipServer.servingMode()) { + case IpServer.STATE_UNAVAILABLE: + case IpServer.STATE_AVAILABLE: // No usable LinkProperties in these states. continue; - case IControlsTethering.STATE_TETHERED: + case IpServer.STATE_TETHERED: // Only add IPv4 /32 and IPv6 /128 prefixes. The // directly-connected prefixes will be sent as // downstream "offload-able" prefixes. @@ -1789,7 +1788,7 @@ public class Tethering extends BaseNetworkObserver { localPrefixes.add(PrefixUtils.ipAddressAsPrefix(ip)); } break; - case IControlsTethering.STATE_LOCAL_ONLY: + case IpServer.STATE_LOCAL_ONLY: // Add prefixes covering all local IPs. localPrefixes.addAll(PrefixUtils.localPrefixesFrom(lp)); break; @@ -1826,16 +1825,16 @@ public class Tethering extends BaseNetworkObserver { pw.print(iface + " - "); switch (tetherState.lastState) { - case IControlsTethering.STATE_UNAVAILABLE: + case IpServer.STATE_UNAVAILABLE: pw.print("UnavailableState"); break; - case IControlsTethering.STATE_AVAILABLE: + case IpServer.STATE_AVAILABLE: pw.print("AvailableState"); break; - case IControlsTethering.STATE_TETHERED: + case IpServer.STATE_TETHERED: pw.print("TetheredState"); break; - case IControlsTethering.STATE_LOCAL_ONLY: + case IpServer.STATE_LOCAL_ONLY: pw.print("LocalHotspotState"); break; default: @@ -1873,28 +1872,26 @@ public class Tethering extends BaseNetworkObserver { return false; } - private IControlsTethering makeControlCallback(String ifname) { - return new IControlsTethering() { + private IpServer.Callback makeControlCallback() { + return new IpServer.Callback() { @Override - public void updateInterfaceState( - TetherInterfaceStateMachine who, int state, int lastError) { - notifyInterfaceStateChange(ifname, who, state, lastError); + public void updateInterfaceState(IpServer who, int state, int lastError) { + notifyInterfaceStateChange(who, state, lastError); } @Override - public void updateLinkProperties( - TetherInterfaceStateMachine who, LinkProperties newLp) { - notifyLinkPropertiesChanged(ifname, who, newLp); + public void updateLinkProperties(IpServer who, LinkProperties newLp) { + notifyLinkPropertiesChanged(who, newLp); } }; } // TODO: Move into TetherMasterSM. - private void notifyInterfaceStateChange( - String iface, TetherInterfaceStateMachine who, int state, int error) { + private void notifyInterfaceStateChange(IpServer who, int state, int error) { + final String iface = who.interfaceName(); synchronized (mPublicSync) { final TetherState tetherState = mTetherStates.get(iface); - if (tetherState != null && tetherState.stateMachine.equals(who)) { + if (tetherState != null && tetherState.ipServer.equals(who)) { tetherState.lastState = state; tetherState.lastError = error; } else { @@ -1908,7 +1905,7 @@ public class Tethering extends BaseNetworkObserver { // Notify that we're tethering (or not) this interface. // This is how data saver for instance knows if the user explicitly // turned on tethering (thus keeping us from being in data saver mode). - mPolicyManager.onTetheringChanged(iface, state == IControlsTethering.STATE_TETHERED); + mPolicyManager.onTetheringChanged(iface, state == IpServer.STATE_TETHERED); } catch (RemoteException e) { // Not really very much we can do here. } @@ -1921,12 +1918,12 @@ public class Tethering extends BaseNetworkObserver { } int which; switch (state) { - case IControlsTethering.STATE_UNAVAILABLE: - case IControlsTethering.STATE_AVAILABLE: + case IpServer.STATE_UNAVAILABLE: + case IpServer.STATE_AVAILABLE: which = TetherMasterSM.EVENT_IFACE_SERVING_STATE_INACTIVE; break; - case IControlsTethering.STATE_TETHERED: - case IControlsTethering.STATE_LOCAL_ONLY: + case IpServer.STATE_TETHERED: + case IpServer.STATE_LOCAL_ONLY: which = TetherMasterSM.EVENT_IFACE_SERVING_STATE_ACTIVE; break; default: @@ -1937,12 +1934,12 @@ public class Tethering extends BaseNetworkObserver { sendTetherStateChangedBroadcast(); } - private void notifyLinkPropertiesChanged(String iface, TetherInterfaceStateMachine who, - LinkProperties newLp) { + private void notifyLinkPropertiesChanged(IpServer who, LinkProperties newLp) { + final String iface = who.interfaceName(); final int state; synchronized (mPublicSync) { final TetherState tetherState = mTetherStates.get(iface); - if (tetherState != null && tetherState.stateMachine.equals(who)) { + if (tetherState != null && tetherState.ipServer.equals(who)) { state = tetherState.lastState; } else { mLog.log("got notification from stale iface " + iface); @@ -1952,7 +1949,7 @@ public class Tethering extends BaseNetworkObserver { mLog.log(String.format( "OBSERVED LinkProperties update iface=%s state=%s lp=%s", - iface, IControlsTethering.getStateString(state), newLp)); + iface, IpServer.getStateString(state), newLp)); final int which = TetherMasterSM.EVENT_IFACE_UPDATE_LINKPROPERTIES; mTetherMasterSM.sendMessage(which, state, 0, newLp); } @@ -1976,11 +1973,11 @@ public class Tethering extends BaseNetworkObserver { mLog.log("adding TetheringInterfaceStateMachine for: " + iface); final TetherState tetherState = new TetherState( - new TetherInterfaceStateMachine( - iface, mLooper, interfaceType, mLog, mNMService, mStatsService, - makeControlCallback(iface), mConfig.enableLegacyDhcpServer, mDeps)); + new IpServer(iface, mLooper, interfaceType, mLog, mNMService, mStatsService, + makeControlCallback(), mConfig.enableLegacyDhcpServer, + mDeps.getIpServerDependencies())); mTetherStates.put(iface, tetherState); - tetherState.stateMachine.start(); + tetherState.ipServer.start(); } private void stopTrackingInterfaceLocked(final String iface) { @@ -1989,36 +1986,11 @@ public class Tethering extends BaseNetworkObserver { mLog.log("attempting to remove unknown iface (" + iface + "), ignoring"); return; } - tetherState.stateMachine.stop(); + tetherState.ipServer.stop(); mLog.log("removing TetheringInterfaceStateMachine for: " + iface); mTetherStates.remove(iface); } - private static String getIPv4DefaultRouteInterface(NetworkState ns) { - if (ns == null) return null; - return getInterfaceForDestination(ns.linkProperties, Inet4Address.ANY); - } - - private static String getIPv6DefaultRouteInterface(NetworkState ns) { - if (ns == null) return null; - // An upstream network's IPv6 capability is currently only useful if it - // can be 64share'd downstream (RFC 7278). For now, that means mobile - // upstream networks only. - if (ns.networkCapabilities == null || - !ns.networkCapabilities.hasTransport(TRANSPORT_CELLULAR)) { - return null; - } - - return getInterfaceForDestination(ns.linkProperties, Inet6Address.ANY); - } - - private static String getInterfaceForDestination(LinkProperties lp, InetAddress dst) { - final RouteInfo ri = (lp != null) - ? RouteInfo.selectBestRoute(lp.getAllRoutes(), dst) - : null; - return (ri != null) ? ri.getInterface() : null; - } - private static String[] copy(String[] strarray) { return Arrays.copyOf(strarray, strarray.length); } diff --git a/services/core/java/com/android/server/connectivity/tethering/IControlsTethering.java b/services/core/java/com/android/server/connectivity/tethering/IControlsTethering.java deleted file mode 100644 index 2b813475222f..000000000000 --- a/services/core/java/com/android/server/connectivity/tethering/IControlsTethering.java +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright (C) 2016 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.server.connectivity.tethering; - -import android.net.LinkProperties; - -/** - * @hide - * - * Interface with methods necessary to notify that a given interface is ready for tethering. - * - * Rename to something more representative, e.g. IpServingControlCallback. - * - * All methods MUST be called on the TetherMasterSM main Looper's thread. - */ -public class IControlsTethering { - public static final int STATE_UNAVAILABLE = 0; - public static final int STATE_AVAILABLE = 1; - public static final int STATE_TETHERED = 2; - public static final int STATE_LOCAL_ONLY = 3; - - public static String getStateString(int state) { - switch (state) { - case STATE_UNAVAILABLE: return "UNAVAILABLE"; - case STATE_AVAILABLE: return "AVAILABLE"; - case STATE_TETHERED: return "TETHERED"; - case STATE_LOCAL_ONLY: return "LOCAL_ONLY"; - } - return "UNKNOWN: " + state; - } - - /** - * Notify that |who| has changed its tethering state. - * - * TODO: Remove the need for the |who| argument. - * - * @param who corresponding instance of a TetherInterfaceStateMachine - * @param state one of IControlsTethering.STATE_* - * @param lastError one of ConnectivityManager.TETHER_ERROR_* - */ - public void updateInterfaceState(TetherInterfaceStateMachine who, int state, int lastError) {} - - /** - * Notify that |who| has new LinkProperties. - * - * TODO: Remove the need for the |who| argument. - * - * @param who corresponding instance of a TetherInterfaceStateMachine - * @param newLp the new LinkProperties to report - */ - public void updateLinkProperties(TetherInterfaceStateMachine who, LinkProperties newLp) {} -} diff --git a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java index ba67c94d1cd4..100014898127 100644 --- a/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java +++ b/services/core/java/com/android/server/connectivity/tethering/IPv6TetheringCoordinator.java @@ -17,6 +17,7 @@ package com.android.server.connectivity.tethering; import android.net.ConnectivityManager; +import android.net.ip.IpServer; import android.net.IpPrefix; import android.net.LinkAddress; import android.net.LinkProperties; @@ -50,19 +51,19 @@ public class IPv6TetheringCoordinator { private static final boolean VDBG = false; private static class Downstream { - public final TetherInterfaceStateMachine tism; - public final int mode; // IControlsTethering.STATE_* + public final IpServer ipServer; + public final int mode; // IpServer.STATE_* // Used to append to a ULA /48, constructing a ULA /64 for local use. public final short subnetId; - Downstream(TetherInterfaceStateMachine tism, int mode, short subnetId) { - this.tism = tism; + Downstream(IpServer ipServer, int mode, short subnetId) { + this.ipServer = ipServer; this.mode = mode; this.subnetId = subnetId; } } - private final ArrayList<TetherInterfaceStateMachine> mNotifyList; + private final ArrayList<IpServer> mNotifyList; private final SharedLog mLog; // NOTE: mActiveDownstreams is a list and not a hash data structure because // we keep active downstreams in arrival order. This is done so /64s can @@ -74,8 +75,7 @@ public class IPv6TetheringCoordinator { private short mNextSubnetId; private NetworkState mUpstreamNetworkState; - public IPv6TetheringCoordinator(ArrayList<TetherInterfaceStateMachine> notifyList, - SharedLog log) { + public IPv6TetheringCoordinator(ArrayList<IpServer> notifyList, SharedLog log) { mNotifyList = notifyList; mLog = log.forSubComponent(TAG); mActiveDownstreams = new LinkedList<>(); @@ -83,7 +83,7 @@ public class IPv6TetheringCoordinator { mNextSubnetId = 0; } - public void addActiveDownstream(TetherInterfaceStateMachine downstream, int mode) { + public void addActiveDownstream(IpServer downstream, int mode) { if (findDownstream(downstream) == null) { // Adding a new downstream appends it to the list. Adding a // downstream a second time without first removing it has no effect. @@ -98,7 +98,7 @@ public class IPv6TetheringCoordinator { } } - public void removeActiveDownstream(TetherInterfaceStateMachine downstream) { + public void removeActiveDownstream(IpServer downstream) { stopIPv6TetheringOn(downstream); if (mActiveDownstreams.remove(findDownstream(downstream))) { updateIPv6TetheringInterfaces(); @@ -133,8 +133,8 @@ public class IPv6TetheringCoordinator { } private void stopIPv6TetheringOnAllInterfaces() { - for (TetherInterfaceStateMachine sm : mNotifyList) { - stopIPv6TetheringOn(sm); + for (IpServer ipServer : mNotifyList) { + stopIPv6TetheringOn(ipServer); } } @@ -156,28 +156,28 @@ public class IPv6TetheringCoordinator { } private void updateIPv6TetheringInterfaces() { - for (TetherInterfaceStateMachine sm : mNotifyList) { - final LinkProperties lp = getInterfaceIPv6LinkProperties(sm); - sm.sendMessage(TetherInterfaceStateMachine.CMD_IPV6_TETHER_UPDATE, 0, 0, lp); + for (IpServer ipServer : mNotifyList) { + final LinkProperties lp = getInterfaceIPv6LinkProperties(ipServer); + ipServer.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, lp); break; } } - private LinkProperties getInterfaceIPv6LinkProperties(TetherInterfaceStateMachine sm) { - if (sm.interfaceType() == ConnectivityManager.TETHERING_BLUETOOTH) { + private LinkProperties getInterfaceIPv6LinkProperties(IpServer ipServer) { + if (ipServer.interfaceType() == ConnectivityManager.TETHERING_BLUETOOTH) { // TODO: Figure out IPv6 support on PAN interfaces. return null; } - final Downstream ds = findDownstream(sm); + final Downstream ds = findDownstream(ipServer); if (ds == null) return null; - if (ds.mode == IControlsTethering.STATE_LOCAL_ONLY) { + if (ds.mode == IpServer.STATE_LOCAL_ONLY) { // Build a Unique Locally-assigned Prefix configuration. return getUniqueLocalConfig(mUniqueLocalPrefix, ds.subnetId); } - // This downstream is in IControlsTethering.STATE_TETHERED mode. + // This downstream is in IpServer.STATE_TETHERED mode. if (mUpstreamNetworkState == null || mUpstreamNetworkState.linkProperties == null) { return null; } @@ -188,7 +188,7 @@ public class IPv6TetheringCoordinator { // IPv6 toward the oldest (first requested) active downstream. final Downstream currentActive = mActiveDownstreams.peek(); - if (currentActive != null && currentActive.tism == sm) { + if (currentActive != null && currentActive.ipServer == ipServer) { final LinkProperties lp = getIPv6OnlyLinkProperties( mUpstreamNetworkState.linkProperties); if (lp.hasIPv6DefaultRoute() && lp.hasGlobalIPv6Address()) { @@ -199,9 +199,9 @@ public class IPv6TetheringCoordinator { return null; } - Downstream findDownstream(TetherInterfaceStateMachine tism) { + Downstream findDownstream(IpServer ipServer) { for (Downstream ds : mActiveDownstreams) { - if (ds.tism == tism) return ds; + if (ds.ipServer == ipServer) return ds; } return null; } @@ -304,7 +304,7 @@ public class IPv6TetheringCoordinator { ns.linkProperties); } - private static void stopIPv6TetheringOn(TetherInterfaceStateMachine sm) { - sm.sendMessage(TetherInterfaceStateMachine.CMD_IPV6_TETHER_UPDATE, 0, 0, null); + private static void stopIPv6TetheringOn(IpServer ipServer) { + ipServer.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, null); } } diff --git a/services/core/java/com/android/server/connectivity/tethering/TetheringConfiguration.java b/services/core/java/com/android/server/connectivity/tethering/TetheringConfiguration.java index 66994447b0bb..2b1d9196fe18 100644 --- a/services/core/java/com/android/server/connectivity/tethering/TetheringConfiguration.java +++ b/services/core/java/com/android/server/connectivity/tethering/TetheringConfiguration.java @@ -162,6 +162,9 @@ public class TetheringConfiguration { dumpStringArray(pw, "provisioningApp", provisioningApp); pw.print("provisioningAppNoUi: "); pw.println(provisioningAppNoUi); + + pw.print("enableLegacyDhcpServer: "); + pw.println(enableLegacyDhcpServer); } public String toString() { @@ -176,6 +179,7 @@ public class TetheringConfiguration { makeString(preferredUpstreamNames(preferredUpstreamIfaceTypes)))); sj.add(String.format("provisioningApp:%s", makeString(provisioningApp))); sj.add(String.format("provisioningAppNoUi:%s", provisioningAppNoUi)); + sj.add(String.format("enableLegacyDhcpServer:%s", enableLegacyDhcpServer)); return String.format("TetheringConfiguration{%s}", sj.toString()); } diff --git a/services/core/java/com/android/server/connectivity/tethering/TetheringDependencies.java b/services/core/java/com/android/server/connectivity/tethering/TetheringDependencies.java index caa867c616b8..8b4006916736 100644 --- a/services/core/java/com/android/server/connectivity/tethering/TetheringDependencies.java +++ b/services/core/java/com/android/server/connectivity/tethering/TetheringDependencies.java @@ -21,6 +21,7 @@ import android.net.INetd; import android.net.NetworkRequest; import android.net.dhcp.DhcpServer; import android.net.dhcp.DhcpServingParams; +import android.net.ip.IpServer; import android.net.ip.RouterAdvertisementDaemon; import android.net.util.InterfaceParams; import android.net.util.NetdService; @@ -49,20 +50,12 @@ public class TetheringDependencies { } public IPv6TetheringCoordinator getIPv6TetheringCoordinator( - ArrayList<TetherInterfaceStateMachine> notifyList, SharedLog log) { + ArrayList<IpServer> notifyList, SharedLog log) { return new IPv6TetheringCoordinator(notifyList, log); } - public RouterAdvertisementDaemon getRouterAdvertisementDaemon(InterfaceParams ifParams) { - return new RouterAdvertisementDaemon(ifParams); - } - - public InterfaceParams getInterfaceParams(String ifName) { - return InterfaceParams.getByName(ifName); - } - - public INetd getNetdService() { - return NetdService.getInstance(); + public IpServer.Dependencies getIpServerDependencies() { + return new IpServer.Dependencies(); } public boolean isTetheringSupported() { @@ -72,9 +65,4 @@ public class TetheringDependencies { public NetworkRequest getDefaultNetworkRequest() { return null; } - - public DhcpServer makeDhcpServer(Looper looper, InterfaceParams iface, DhcpServingParams params, - SharedLog log) { - return new DhcpServer(looper, iface, params, log); - } } diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java index f082271ab094..350fb2f6c58a 100644 --- a/services/core/java/com/android/server/om/OverlayManagerService.java +++ b/services/core/java/com/android/server/om/OverlayManagerService.java @@ -537,8 +537,8 @@ public final class OverlayManagerService extends SystemService { @Override public boolean setEnabledExclusive(@Nullable final String packageName, final boolean enable, int userId) throws RemoteException { - enforceChangeOverlayPackagesPermission("setEnabled"); - userId = handleIncomingUser(userId, "setEnabled"); + enforceChangeOverlayPackagesPermission("setEnabledExclusive"); + userId = handleIncomingUser(userId, "setEnabledExclusive"); if (packageName == null || !enable) { return false; } @@ -557,8 +557,8 @@ public final class OverlayManagerService extends SystemService { @Override public boolean setEnabledExclusiveInCategory(@Nullable String packageName, int userId) throws RemoteException { - enforceChangeOverlayPackagesPermission("setEnabled"); - userId = handleIncomingUser(userId, "setEnabled"); + enforceChangeOverlayPackagesPermission("setEnabledExclusiveInCategory"); + userId = handleIncomingUser(userId, "setEnabledExclusiveInCategory"); if (packageName == null) { return false; } diff --git a/services/core/java/com/android/server/pm/OtaDexoptService.java b/services/core/java/com/android/server/pm/OtaDexoptService.java index 320affb1eee2..748cf08905bb 100644 --- a/services/core/java/com/android/server/pm/OtaDexoptService.java +++ b/services/core/java/com/android/server/pm/OtaDexoptService.java @@ -40,6 +40,7 @@ import java.io.File; import java.io.FileDescriptor; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.concurrent.TimeUnit; @@ -124,7 +125,8 @@ public class OtaDexoptService extends IOtaDexopt.Stub { synchronized (mPackageManagerService.mPackages) { // Important: the packages we need to run with ab-ota compiler-reason. important = PackageManagerServiceUtils.getPackagesForDexopt( - mPackageManagerService.mPackages.values(), mPackageManagerService); + mPackageManagerService.mPackages.values(), mPackageManagerService, + DEBUG_DEXOPT); // Others: we should optimize this with the (first-)boot compiler-reason. others = new ArrayList<>(mPackageManagerService.mPackages.values()); others.removeAll(important); @@ -157,6 +159,24 @@ public class OtaDexoptService extends IOtaDexopt.Stub { long spaceAvailableNow = getAvailableSpace(); prepareMetricsLogging(important.size(), others.size(), spaceAvailable, spaceAvailableNow); + + if (DEBUG_DEXOPT) { + try { + // Output some data about the packages. + PackageParser.Package lastUsed = Collections.max(important, + (pkg1, pkg2) -> Long.compare( + pkg1.getLatestForegroundPackageUseTimeInMills(), + pkg2.getLatestForegroundPackageUseTimeInMills())); + Log.d(TAG, "A/B OTA: lastUsed time = " + + lastUsed.getLatestForegroundPackageUseTimeInMills()); + Log.d(TAG, "A/B OTA: deprioritized packages:"); + for (PackageParser.Package pkg : others) { + Log.d(TAG, " " + pkg.packageName + " - " + + pkg.getLatestForegroundPackageUseTimeInMills()); + } + } catch (Exception ignored) { + } + } } @Override diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java index 1aea8f0b0543..390c0ccb3c6e 100644 --- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java @@ -164,6 +164,13 @@ public class PackageManagerServiceUtils { public static List<PackageParser.Package> getPackagesForDexopt( Collection<PackageParser.Package> packages, PackageManagerService packageManagerService) { + return getPackagesForDexopt(packages, packageManagerService, DEBUG_DEXOPT); + } + + public static List<PackageParser.Package> getPackagesForDexopt( + Collection<PackageParser.Package> packages, + PackageManagerService packageManagerService, + boolean debug) { ArrayList<PackageParser.Package> remainingPkgs = new ArrayList<>(packages); LinkedList<PackageParser.Package> result = new LinkedList<>(); ArrayList<PackageParser.Package> sortTemp = new ArrayList<>(remainingPkgs.size()); @@ -189,14 +196,14 @@ public class PackageManagerServiceUtils { // TODO: add a property to control this? Predicate<PackageParser.Package> remainingPredicate; if (!remainingPkgs.isEmpty() && packageManagerService.isHistoricalPackageUsageAvailable()) { - if (DEBUG_DEXOPT) { + if (debug) { Log.i(TAG, "Looking at historical package use"); } // Get the package that was used last. PackageParser.Package lastUsed = Collections.max(remainingPkgs, (pkg1, pkg2) -> Long.compare(pkg1.getLatestForegroundPackageUseTimeInMills(), pkg2.getLatestForegroundPackageUseTimeInMills())); - if (DEBUG_DEXOPT) { + if (debug) { Log.i(TAG, "Taking package " + lastUsed.packageName + " as reference in time use"); } long estimatedPreviousSystemUseTime = @@ -218,7 +225,7 @@ public class PackageManagerServiceUtils { applyPackageFilter(remainingPredicate, result, remainingPkgs, sortTemp, packageManagerService); - if (DEBUG_DEXOPT) { + if (debug) { Log.i(TAG, "Packages to be dexopted: " + packagesToString(result)); Log.i(TAG, "Packages skipped from dexopt: " + packagesToString(remainingPkgs)); } diff --git a/services/net/java/android/net/dhcp/DhcpLease.java b/services/net/java/android/net/dhcp/DhcpLease.java index d2a15b37dcc0..6cdd2aa8579d 100644 --- a/services/net/java/android/net/dhcp/DhcpLease.java +++ b/services/net/java/android/net/dhcp/DhcpLease.java @@ -130,9 +130,14 @@ public class DhcpLease { return HexDump.toHexString(bytes); } + static String inet4AddrToString(@Nullable Inet4Address addr) { + return (addr == null) ? "null" : addr.getHostAddress(); + } + @Override public String toString() { return String.format("clientId: %s, hwAddr: %s, netAddr: %s, expTime: %d, hostname: %s", - clientIdToString(mClientId), mHwAddr.toString(), mNetAddr, mExpTime, mHostname); + clientIdToString(mClientId), mHwAddr.toString(), inet4AddrToString(mNetAddr), + mExpTime, mHostname); } } diff --git a/services/net/java/android/net/dhcp/DhcpLeaseRepository.java b/services/net/java/android/net/dhcp/DhcpLeaseRepository.java index 9f77ed0ae5dd..2dda42124c75 100644 --- a/services/net/java/android/net/dhcp/DhcpLeaseRepository.java +++ b/services/net/java/android/net/dhcp/DhcpLeaseRepository.java @@ -20,6 +20,7 @@ import static android.net.NetworkUtils.inet4AddressToIntHTH; import static android.net.NetworkUtils.intToInet4AddressHTH; import static android.net.NetworkUtils.prefixLengthToV4NetmaskIntHTH; import static android.net.dhcp.DhcpLease.EXPIRATION_NEVER; +import static android.net.dhcp.DhcpLease.inet4AddrToString; import static android.net.util.NetworkConstants.IPV4_ADDR_BITS; import static java.lang.Math.min; @@ -98,6 +99,12 @@ class DhcpLeaseRepository { } } + static class InvalidSubnetException extends DhcpLeaseException { + InvalidSubnetException(String message) { + super(message); + } + } + /** * Leases by IP address */ @@ -152,25 +159,17 @@ class DhcpLeaseRepository { * @param reqAddr Requested address by the client (option 50), or {@link #INETADDR_UNSPEC} * @param hostname Client-provided hostname, or {@link DhcpLease#HOSTNAME_NONE} * @throws OutOfAddressesException The server does not have any available address - * @throws InvalidAddressException The lease was requested from an unsupported subnet + * @throws InvalidSubnetException The lease was requested from an unsupported subnet */ @NonNull public DhcpLease getOffer(@Nullable byte[] clientId, @NonNull MacAddress hwAddr, - @NonNull Inet4Address relayAddr, - @Nullable Inet4Address reqAddr, @Nullable String hostname) - throws OutOfAddressesException, InvalidAddressException { + @NonNull Inet4Address relayAddr, @Nullable Inet4Address reqAddr, + @Nullable String hostname) throws OutOfAddressesException, InvalidSubnetException { final long currentTime = mClock.elapsedRealtime(); final long expTime = currentTime + mLeaseTimeMs; removeExpiredLeases(currentTime); - - // As per #4.3.1, addresses are assigned based on the relay address if present. This - // implementation only assigns addresses if the relayAddr is inside our configured subnet. - // This also applies when the client requested a specific address for consistency between - // requests, and with older behavior. - if (isIpAddrOutsidePrefix(mPrefix, relayAddr)) { - throw new InvalidAddressException("Lease requested by relay from outside of subnet"); - } + checkValidRelayAddr(relayAddr); final DhcpLease currentLease = findByClient(clientId, hwAddr); final DhcpLease newLease; @@ -188,7 +187,19 @@ class DhcpLeaseRepository { return newLease; } - private static boolean isIpAddrOutsidePrefix(IpPrefix prefix, Inet4Address addr) { + private void checkValidRelayAddr(@Nullable Inet4Address relayAddr) + throws InvalidSubnetException { + // As per #4.3.1, addresses are assigned based on the relay address if present. This + // implementation only assigns addresses if the relayAddr is inside our configured subnet. + // This also applies when the client requested a specific address for consistency between + // requests, and with older behavior. + if (isIpAddrOutsidePrefix(mPrefix, relayAddr)) { + throw new InvalidSubnetException("Lease requested by relay from outside of subnet"); + } + } + + private static boolean isIpAddrOutsidePrefix(@NonNull IpPrefix prefix, + @Nullable Inet4Address addr) { return addr != null && !addr.equals(Inet4Address.ANY) && !prefix.contains(addr); } @@ -222,10 +233,12 @@ class DhcpLeaseRepository { */ @NonNull public DhcpLease requestLease(@Nullable byte[] clientId, @NonNull MacAddress hwAddr, - @NonNull Inet4Address clientAddr, @Nullable Inet4Address reqAddr, boolean sidSet, - @Nullable String hostname) throws InvalidAddressException { + @NonNull Inet4Address clientAddr, @NonNull Inet4Address relayAddr, + @Nullable Inet4Address reqAddr, boolean sidSet, @Nullable String hostname) + throws InvalidAddressException, InvalidSubnetException { final long currentTime = mClock.elapsedRealtime(); removeExpiredLeases(currentTime); + checkValidRelayAddr(relayAddr); final DhcpLease assignedLease = findByClient(clientId, hwAddr); final Inet4Address leaseAddr = reqAddr != null ? reqAddr : clientAddr; @@ -252,7 +265,7 @@ class DhcpLeaseRepository { final DhcpLease lease = checkClientAndMakeLease(clientId, hwAddr, leaseAddr, hostname, currentTime); mLog.logf("DHCPREQUEST assignedLease %s, reqAddr=%s, sidSet=%s: created/renewed lease %s", - assignedLease, reqAddr, sidSet, lease); + assignedLease, inet4AddrToString(reqAddr), sidSet, lease); return lease; } @@ -304,7 +317,7 @@ class DhcpLeaseRepository { @NonNull Inet4Address addr) { final DhcpLease currentLease = mCommittedLeases.getOrDefault(addr, null); if (currentLease == null) { - mLog.w("Could not release unknown lease for " + addr); + mLog.w("Could not release unknown lease for " + inet4AddrToString(addr)); return false; } if (currentLease.matchesClient(clientId, hwAddr)) { @@ -319,12 +332,13 @@ class DhcpLeaseRepository { public void markLeaseDeclined(@NonNull Inet4Address addr) { if (mDeclinedAddrs.containsKey(addr) || !isValidAddress(addr)) { - mLog.logf("Not marking %s as declined: already declined or not assignable", addr); + mLog.logf("Not marking %s as declined: already declined or not assignable", + inet4AddrToString(addr)); return; } final long expTime = mClock.elapsedRealtime() + mLeaseTimeMs; mDeclinedAddrs.put(addr, expTime); - mLog.logf("Marked %s as declined expiring %d", addr, expTime); + mLog.logf("Marked %s as declined expiring %d", inet4AddrToString(addr), expTime); maybeUpdateEarliestExpiration(expTime); } @@ -515,7 +529,8 @@ class DhcpLeaseRepository { while (it.hasNext()) { final Inet4Address addr = it.next(); it.remove(); - mLog.logf("Out of addresses in address pool: dropped declined addr %s", addr); + mLog.logf("Out of addresses in address pool: dropped declined addr %s", + inet4AddrToString(addr)); // isValidAddress() is always verified for entries in mDeclinedAddrs. // However declined addresses may have been requested (typically by the machine that was // already using the address) after being declined. diff --git a/services/net/java/android/net/dhcp/DhcpPacket.java b/services/net/java/android/net/dhcp/DhcpPacket.java index 595a12922a7e..77a3e2102452 100644 --- a/services/net/java/android/net/dhcp/DhcpPacket.java +++ b/services/net/java/android/net/dhcp/DhcpPacket.java @@ -1281,12 +1281,12 @@ public abstract class DhcpPacket { */ public static ByteBuffer buildAckPacket(int encap, int transactionId, boolean broadcast, Inet4Address serverIpAddr, Inet4Address relayIp, Inet4Address yourIp, - byte[] mac, Integer timeout, Inet4Address netMask, Inet4Address bcAddr, - List<Inet4Address> gateways, List<Inet4Address> dnsServers, + Inet4Address requestClientIp, byte[] mac, Integer timeout, Inet4Address netMask, + Inet4Address bcAddr, List<Inet4Address> gateways, List<Inet4Address> dnsServers, Inet4Address dhcpServerIdentifier, String domainName, boolean metered) { DhcpPacket pkt = new DhcpAckPacket( - transactionId, (short) 0, broadcast, serverIpAddr, relayIp, - INADDR_ANY /* clientIp */, yourIp, mac); + transactionId, (short) 0, broadcast, serverIpAddr, relayIp, requestClientIp, yourIp, + mac); pkt.mGateways = gateways; pkt.mDnsServers = dnsServers; pkt.mLeaseTime = timeout; diff --git a/services/net/java/android/net/dhcp/DhcpServer.java b/services/net/java/android/net/dhcp/DhcpServer.java index da8c8bbcf057..2b3d577b0eae 100644 --- a/services/net/java/android/net/dhcp/DhcpServer.java +++ b/services/net/java/android/net/dhcp/DhcpServer.java @@ -269,6 +269,11 @@ public class DhcpServer { } } + private void logIgnoredPacketInvalidSubnet(DhcpLeaseRepository.InvalidSubnetException e) { + // Not an internal error: only logging exception message, not stacktrace + mLog.e("Ignored packet from invalid subnet: " + e.getMessage()); + } + private void processDiscover(@NonNull DhcpDiscoverPacket packet) throws MalformedPacketException { final DhcpLease lease; @@ -279,8 +284,8 @@ public class DhcpServer { } catch (DhcpLeaseRepository.OutOfAddressesException e) { transmitNak(packet, "Out of addresses to offer"); return; - } catch (DhcpLeaseRepository.InvalidAddressException e) { - transmitNak(packet, "Lease requested from an invalid subnet"); + } catch (DhcpLeaseRepository.InvalidSubnetException e) { + logIgnoredPacketInvalidSubnet(e); return; } @@ -294,16 +299,20 @@ public class DhcpServer { final MacAddress clientMac = getMacAddr(packet); try { lease = mLeaseRepo.requestLease(packet.getExplicitClientIdOrNull(), clientMac, - packet.mClientIp, packet.mRequestedIp, sidSet, packet.mHostName); + packet.mClientIp, packet.mRelayIp, packet.mRequestedIp, sidSet, + packet.mHostName); } catch (DhcpLeaseRepository.InvalidAddressException e) { transmitNak(packet, "Invalid requested address"); return; + } catch (DhcpLeaseRepository.InvalidSubnetException e) { + logIgnoredPacketInvalidSubnet(e); + return; } transmitAck(packet, lease, clientMac); } - private void processRelease(@Nullable DhcpReleasePacket packet) + private void processRelease(@NonNull DhcpReleasePacket packet) throws MalformedPacketException { final byte[] clientId = packet.getExplicitClientIdOrNull(); final MacAddress macAddr = getMacAddr(packet); @@ -367,7 +376,7 @@ public class DhcpServer { final int timeout = getLeaseTimeout(lease); final ByteBuffer ackPacket = DhcpPacket.buildAckPacket(ENCAP_BOOTP, request.mTransId, broadcastFlag, mServingParams.getServerInet4Addr(), request.mRelayIp, - lease.getNetAddr(), request.mClientMac, timeout, + lease.getNetAddr(), request.mClientIp, request.mClientMac, timeout, mServingParams.getPrefixMaskAsAddress(), mServingParams.getBroadcastAddress(), new ArrayList<>(mServingParams.defaultRouters), new ArrayList<>(mServingParams.dnsServers), @@ -464,7 +473,7 @@ public class DhcpServer { } } - private static boolean isEmpty(@NonNull Inet4Address address) { + private static boolean isEmpty(@Nullable Inet4Address address) { return address == null || Inet4Address.ANY.equals(address); } diff --git a/services/net/java/android/net/dns/ResolvUtil.java b/services/net/java/android/net/dns/ResolvUtil.java deleted file mode 100644 index d9d4b96f66d0..000000000000 --- a/services/net/java/android/net/dns/ResolvUtil.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Copyright (C) 2018 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.net.dns; - -import static android.system.OsConstants.AI_ADDRCONFIG; - -import android.net.Network; -import android.net.NetworkUtils; -import android.system.GaiException; -import android.system.OsConstants; -import android.system.StructAddrinfo; - -import libcore.io.Libcore; - -import java.net.InetAddress; -import java.net.UnknownHostException; - - -/** - * DNS resolution utility class. - * - * @hide - */ -public class ResolvUtil { - // Non-portable DNS resolution flag. - private static final long NETID_USE_LOCAL_NAMESERVERS = 0x80000000L; - - private ResolvUtil() {} - - public static InetAddress[] blockingResolveAllLocally(Network network, String name) - throws UnknownHostException { - // Use AI_ADDRCONFIG by default - return blockingResolveAllLocally(network, name, AI_ADDRCONFIG); - } - - public static InetAddress[] blockingResolveAllLocally( - Network network, String name, int aiFlags) throws UnknownHostException { - final StructAddrinfo hints = new StructAddrinfo(); - hints.ai_flags = aiFlags; - // Other hints identical to the default Inet6AddressImpl implementation - hints.ai_family = OsConstants.AF_UNSPEC; - hints.ai_socktype = OsConstants.SOCK_STREAM; - - final Network networkForResolv = getNetworkWithUseLocalNameserversFlag(network); - - try { - return Libcore.os.android_getaddrinfo(name, hints, (int) networkForResolv.netId); - } catch (GaiException gai) { - gai.rethrowAsUnknownHostException(name + ": TLS-bypass resolution failed"); - return null; // keep compiler quiet - } - } - - public static Network getNetworkWithUseLocalNameserversFlag(Network network) { - final long netidForResolv = NETID_USE_LOCAL_NAMESERVERS | (long) network.netId; - return new Network((int) netidForResolv); - } - - public static Network makeNetworkWithPrivateDnsBypass(Network network) { - return new Network(network) { - @Override - public InetAddress[] getAllByName(String host) throws UnknownHostException { - return blockingResolveAllLocally(network, host); - } - }; - } -} diff --git a/services/net/java/android/net/ip/IpClient.java b/services/net/java/android/net/ip/IpClient.java index 3cdef1e73ae4..0176dd496a33 100644 --- a/services/net/java/android/net/ip/IpClient.java +++ b/services/net/java/android/net/ip/IpClient.java @@ -228,6 +228,9 @@ public class IpClient extends StateMachine { // Encourages logging of any available arguments, and all call sites // are necessarily logged identically. // + // NOTE: Log first because passed objects may or may not be thread-safe and + // once passed on to the callback they may be modified by another thread. + // // TODO: Find an lighter weight approach. private class LoggingCallbackWrapper extends Callback { private static final String PREFIX = "INVOKE "; @@ -243,63 +246,63 @@ public class IpClient extends StateMachine { @Override public void onPreDhcpAction() { - mCallback.onPreDhcpAction(); log("onPreDhcpAction()"); + mCallback.onPreDhcpAction(); } @Override public void onPostDhcpAction() { - mCallback.onPostDhcpAction(); log("onPostDhcpAction()"); + mCallback.onPostDhcpAction(); } @Override public void onNewDhcpResults(DhcpResults dhcpResults) { - mCallback.onNewDhcpResults(dhcpResults); log("onNewDhcpResults({" + dhcpResults + "})"); + mCallback.onNewDhcpResults(dhcpResults); } @Override public void onProvisioningSuccess(LinkProperties newLp) { - mCallback.onProvisioningSuccess(newLp); log("onProvisioningSuccess({" + newLp + "})"); + mCallback.onProvisioningSuccess(newLp); } @Override public void onProvisioningFailure(LinkProperties newLp) { - mCallback.onProvisioningFailure(newLp); log("onProvisioningFailure({" + newLp + "})"); + mCallback.onProvisioningFailure(newLp); } @Override public void onLinkPropertiesChange(LinkProperties newLp) { - mCallback.onLinkPropertiesChange(newLp); log("onLinkPropertiesChange({" + newLp + "})"); + mCallback.onLinkPropertiesChange(newLp); } @Override public void onReachabilityLost(String logMsg) { - mCallback.onReachabilityLost(logMsg); log("onReachabilityLost(" + logMsg + ")"); + mCallback.onReachabilityLost(logMsg); } @Override public void onQuit() { - mCallback.onQuit(); log("onQuit()"); + mCallback.onQuit(); } @Override public void installPacketFilter(byte[] filter) { - mCallback.installPacketFilter(filter); log("installPacketFilter(byte[" + filter.length + "])"); + mCallback.installPacketFilter(filter); } @Override public void startReadPacketFilter() { - mCallback.startReadPacketFilter(); log("startReadPacketFilter()"); + mCallback.startReadPacketFilter(); } @Override public void setFallbackMulticastFilter(boolean enabled) { - mCallback.setFallbackMulticastFilter(enabled); log("setFallbackMulticastFilter(" + enabled + ")"); + mCallback.setFallbackMulticastFilter(enabled); } @Override public void setNeighborDiscoveryOffload(boolean enable) { - mCallback.setNeighborDiscoveryOffload(enable); log("setNeighborDiscoveryOffload(" + enable + ")"); + mCallback.setNeighborDiscoveryOffload(enable); } } @@ -1385,6 +1388,20 @@ public class IpClient extends StateMachine { private boolean startIpReachabilityMonitor() { try { + // TODO: Fetch these parameters from settings, and install a + // settings observer to watch for update and re-program these + // parameters (Q: is this level of dynamic updatability really + // necessary or does reading from settings at startup suffice?). + final int NUM_SOLICITS = 5; + final int INTER_SOLICIT_INTERVAL_MS = 750; + setNeighborParameters(mDependencies.getNetd(), mInterfaceName, + NUM_SOLICITS, INTER_SOLICIT_INTERVAL_MS); + } catch (Exception e) { + mLog.e("Failed to adjust neighbor parameters", e); + // Carry on using the system defaults (currently: 3, 1000); + } + + try { mIpReachabilityMonitor = new IpReachabilityMonitor( mContext, mInterfaceParams, @@ -1863,6 +1880,20 @@ public class IpClient extends StateMachine { } } + private static void setNeighborParameters( + INetd netd, String ifName, int num_solicits, int inter_solicit_interval_ms) + throws RemoteException, IllegalArgumentException { + Preconditions.checkNotNull(netd); + Preconditions.checkArgument(!TextUtils.isEmpty(ifName)); + Preconditions.checkArgument(num_solicits > 0); + Preconditions.checkArgument(inter_solicit_interval_ms > 0); + + for (int family : new Integer[]{INetd.IPV4, INetd.IPV6}) { + netd.setProcSysNet(family, INetd.NEIGH, ifName, "retrans_time_ms", Integer.toString(inter_solicit_interval_ms)); + netd.setProcSysNet(family, INetd.NEIGH, ifName, "ucast_solicit", Integer.toString(num_solicits)); + } + } + // TODO: extract out into CollectionUtils. static <T> boolean any(Iterable<T> coll, Predicate<T> fn) { for (T t : coll) { diff --git a/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java b/services/net/java/android/net/ip/IpServer.java index 5accb452d10a..823c0a1ac7b0 100644 --- a/services/core/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachine.java +++ b/services/net/java/android/net/ip/IpServer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.connectivity.tethering; +package android.net.ip; import static android.net.NetworkUtils.numericToInetAddress; import static android.net.util.NetworkConstants.asByte; @@ -31,11 +31,10 @@ import android.net.LinkProperties; import android.net.RouteInfo; import android.net.dhcp.DhcpServer; import android.net.dhcp.DhcpServingParams; -import android.net.ip.InterfaceController; -import android.net.ip.RouterAdvertisementDaemon; import android.net.ip.RouterAdvertisementDaemon.RaParams; import android.net.util.InterfaceParams; import android.net.util.InterfaceSet; +import android.net.util.NetdService; import android.net.util.SharedLog; import android.os.INetworkManagementService; import android.os.Looper; @@ -67,7 +66,22 @@ import java.util.Set; * * @hide */ -public class TetherInterfaceStateMachine extends StateMachine { +public class IpServer extends StateMachine { + public static final int STATE_UNAVAILABLE = 0; + public static final int STATE_AVAILABLE = 1; + public static final int STATE_TETHERED = 2; + public static final int STATE_LOCAL_ONLY = 3; + + public static String getStateString(int state) { + switch (state) { + case STATE_UNAVAILABLE: return "UNAVAILABLE"; + case STATE_AVAILABLE: return "AVAILABLE"; + case STATE_TETHERED: return "TETHERED"; + case STATE_LOCAL_ONLY: return "LOCAL_ONLY"; + } + return "UNKNOWN: " + state; + } + private static final IpPrefix LINK_LOCAL_PREFIX = new IpPrefix("fe80::/64"); private static final byte DOUG_ADAMS = (byte) 42; @@ -83,15 +97,53 @@ public class TetherInterfaceStateMachine extends StateMachine { // TODO: have this configurable private static final int DHCP_LEASE_TIME_SECS = 3600; - private final static String TAG = "TetherInterfaceSM"; + private final static String TAG = "IpServer"; private final static boolean DBG = false; private final static boolean VDBG = false; private static final Class[] messageClasses = { - TetherInterfaceStateMachine.class + IpServer.class }; private static final SparseArray<String> sMagicDecoderRing = MessageUtils.findMessageNames(messageClasses); + public static class Callback { + /** + * Notify that |who| has changed its tethering state. + * + * @param who the calling instance of IpServer + * @param state one of STATE_* + * @param lastError one of ConnectivityManager.TETHER_ERROR_* + */ + public void updateInterfaceState(IpServer who, int state, int lastError) {} + + /** + * Notify that |who| has new LinkProperties. + * + * @param who the calling instance of IpServer + * @param newLp the new LinkProperties to report + */ + public void updateLinkProperties(IpServer who, LinkProperties newLp) {} + } + + public static class Dependencies { + public RouterAdvertisementDaemon getRouterAdvertisementDaemon(InterfaceParams ifParams) { + return new RouterAdvertisementDaemon(ifParams); + } + + public InterfaceParams getInterfaceParams(String ifName) { + return InterfaceParams.getByName(ifName); + } + + public INetd getNetdService() { + return NetdService.getInstance(); + } + + public DhcpServer makeDhcpServer(Looper looper, InterfaceParams iface, + DhcpServingParams params, SharedLog log) { + return new DhcpServer(looper, iface, params, log); + } + } + private static final int BASE_IFACE = Protocol.BASE_TETHERING + 100; // request from the user that it wants to tether public static final int CMD_TETHER_REQUESTED = BASE_IFACE + 2; @@ -123,7 +175,7 @@ public class TetherInterfaceStateMachine extends StateMachine { private final INetworkManagementService mNMService; private final INetd mNetd; private final INetworkStatsService mStatsService; - private final IControlsTethering mTetherController; + private final Callback mCallback; private final InterfaceController mInterfaceCtrl; private final String mIfaceName; @@ -131,7 +183,7 @@ public class TetherInterfaceStateMachine extends StateMachine { private final LinkProperties mLinkProperties; private final boolean mUsingLegacyDhcp; - private final TetheringDependencies mDeps; + private final Dependencies mDeps; private int mLastError; private int mServingMode; @@ -148,17 +200,16 @@ public class TetherInterfaceStateMachine extends StateMachine { private DhcpServer mDhcpServer; private RaParams mLastRaParams; - public TetherInterfaceStateMachine( + public IpServer( String ifaceName, Looper looper, int interfaceType, SharedLog log, INetworkManagementService nMService, INetworkStatsService statsService, - IControlsTethering tetherController, boolean usingLegacyDhcp, - TetheringDependencies deps) { + Callback callback, boolean usingLegacyDhcp, Dependencies deps) { super(ifaceName, looper); mLog = log.forSubComponent(ifaceName); mNMService = nMService; mNetd = deps.getNetdService(); mStatsService = statsService; - mTetherController = tetherController; + mCallback = callback; mInterfaceCtrl = new InterfaceController(ifaceName, nMService, mNetd, mLog); mIfaceName = ifaceName; mInterfaceType = interfaceType; @@ -167,7 +218,7 @@ public class TetherInterfaceStateMachine extends StateMachine { mDeps = deps; resetLinkProperties(); mLastError = ConnectivityManager.TETHER_ERROR_NO_ERROR; - mServingMode = IControlsTethering.STATE_AVAILABLE; + mServingMode = STATE_AVAILABLE; mInitialState = new InitialState(); mLocalHotspotState = new LocalHotspotState(); @@ -379,6 +430,8 @@ public class TetherInterfaceStateMachine extends StateMachine { params.mtu = v6only.getMtu(); params.hasDefaultRoute = v6only.hasIPv6DefaultRoute(); + if (params.hasDefaultRoute) params.hopLimit = getHopLimit(v6only.getInterfaceName()); + for (LinkAddress linkAddr : v6only.getLinkAddresses()) { if (linkAddr.getPrefixLength() != RFC7421_PREFIX_LENGTH) continue; @@ -498,6 +551,20 @@ public class TetherInterfaceStateMachine extends StateMachine { } } + private byte getHopLimit(String upstreamIface) { + try { + int upstreamHopLimit = Integer.parseUnsignedInt( + mNetd.getProcSysNet(INetd.IPV6, INetd.CONF, upstreamIface, "hop_limit")); + // Add one hop to account for this forwarding device + upstreamHopLimit++; + // Cap the hop limit to 255. + return (byte) Integer.min(upstreamHopLimit, 255); + } catch (Exception e) { + mLog.e("Failed to find upstream interface hop limit", e); + } + return RaParams.DEFAULT_HOPLIMIT; + } + private void setRaParams(RaParams newParams) { if (mRaDaemon != null) { final RaParams deprecatedParams = @@ -521,14 +588,12 @@ public class TetherInterfaceStateMachine extends StateMachine { private void sendInterfaceState(int newInterfaceState) { mServingMode = newInterfaceState; - mTetherController.updateInterfaceState( - TetherInterfaceStateMachine.this, newInterfaceState, mLastError); + mCallback.updateInterfaceState(this, newInterfaceState, mLastError); sendLinkProperties(); } private void sendLinkProperties() { - mTetherController.updateLinkProperties( - TetherInterfaceStateMachine.this, new LinkProperties(mLinkProperties)); + mCallback.updateLinkProperties(this, new LinkProperties(mLinkProperties)); } private void resetLinkProperties() { @@ -539,7 +604,7 @@ public class TetherInterfaceStateMachine extends StateMachine { class InitialState extends State { @Override public void enter() { - sendInterfaceState(IControlsTethering.STATE_AVAILABLE); + sendInterfaceState(STATE_AVAILABLE); } @Override @@ -549,10 +614,10 @@ public class TetherInterfaceStateMachine extends StateMachine { case CMD_TETHER_REQUESTED: mLastError = ConnectivityManager.TETHER_ERROR_NO_ERROR; switch (message.arg1) { - case IControlsTethering.STATE_LOCAL_ONLY: + case STATE_LOCAL_ONLY: transitionTo(mLocalHotspotState); break; - case IControlsTethering.STATE_TETHERED: + case STATE_TETHERED: transitionTo(mTetheredState); break; default: @@ -649,7 +714,7 @@ public class TetherInterfaceStateMachine extends StateMachine { // problematic because transitioning during a multi-state jump yields // a Log.wtf(). Ultimately, there should be only one ServingState, // and forwarding and NAT rules should be handled by a coordinating - // functional element outside of TetherInterfaceStateMachine. + // functional element outside of IpServer. class LocalHotspotState extends BaseServingState { @Override public void enter() { @@ -659,7 +724,7 @@ public class TetherInterfaceStateMachine extends StateMachine { } if (DBG) Log.d(TAG, "Local hotspot " + mIfaceName); - sendInterfaceState(IControlsTethering.STATE_LOCAL_ONLY); + sendInterfaceState(STATE_LOCAL_ONLY); } @Override @@ -685,7 +750,7 @@ public class TetherInterfaceStateMachine extends StateMachine { // problematic because transitioning during a multi-state jump yields // a Log.wtf(). Ultimately, there should be only one ServingState, // and forwarding and NAT rules should be handled by a coordinating - // functional element outside of TetherInterfaceStateMachine. + // functional element outside of IpServer. class TetheredState extends BaseServingState { @Override public void enter() { @@ -695,7 +760,7 @@ public class TetherInterfaceStateMachine extends StateMachine { } if (DBG) Log.d(TAG, "Tethered " + mIfaceName); - sendInterfaceState(IControlsTethering.STATE_TETHERED); + sendInterfaceState(STATE_TETHERED); } @Override @@ -817,7 +882,7 @@ public class TetherInterfaceStateMachine extends StateMachine { @Override public void enter() { mLastError = ConnectivityManager.TETHER_ERROR_NO_ERROR; - sendInterfaceState(IControlsTethering.STATE_UNAVAILABLE); + sendInterfaceState(STATE_UNAVAILABLE); } } diff --git a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java index 8fbc01ea4493..9d686efcb2ab 100644 --- a/services/net/java/android/net/ip/RouterAdvertisementDaemon.java +++ b/services/net/java/android/net/ip/RouterAdvertisementDaemon.java @@ -119,13 +119,23 @@ public class RouterAdvertisementDaemon { private volatile UnicastResponder mUnicastResponder; public static class RaParams { + // Tethered traffic will have the hop limit properly decremented. + // Consequently, set the hoplimit greater by one than the upstream + // unicast hop limit. + // + // TODO: Dynamically pass down the IPV6_UNICAST_HOPS value from the + // upstream interface for more correct behaviour. + static final byte DEFAULT_HOPLIMIT = 65; + public boolean hasDefaultRoute; + public byte hopLimit; public int mtu; public HashSet<IpPrefix> prefixes; public HashSet<Inet6Address> dnses; public RaParams() { hasDefaultRoute = false; + hopLimit = DEFAULT_HOPLIMIT; mtu = IPV6_MIN_MTU; prefixes = new HashSet<IpPrefix>(); dnses = new HashSet<Inet6Address>(); @@ -133,6 +143,7 @@ public class RouterAdvertisementDaemon { public RaParams(RaParams other) { hasDefaultRoute = other.hasDefaultRoute; + hopLimit = other.hopLimit; mtu = other.mtu; prefixes = (HashSet) other.prefixes.clone(); dnses = (HashSet) other.dnses.clone(); @@ -273,10 +284,12 @@ public class RouterAdvertisementDaemon { final ByteBuffer ra = ByteBuffer.wrap(mRA); ra.order(ByteOrder.BIG_ENDIAN); + final boolean haveRaParams = (mRaParams != null); boolean shouldSendRA = false; try { - putHeader(ra, mRaParams != null && mRaParams.hasDefaultRoute); + putHeader(ra, haveRaParams && mRaParams.hasDefaultRoute, + haveRaParams ? mRaParams.hopLimit : RaParams.DEFAULT_HOPLIMIT); putSlla(ra, mInterface.macAddr.toByteArray()); mRaLength = ra.position(); @@ -287,7 +300,7 @@ public class RouterAdvertisementDaemon { // // putExpandedFlagsOption(ra); - if (mRaParams != null) { + if (haveRaParams) { putMtu(ra, mRaParams.mtu); mRaLength = ra.position(); @@ -348,7 +361,7 @@ public class RouterAdvertisementDaemon { private static byte asByte(int value) { return (byte) value; } private static short asShort(int value) { return (short) value; } - private static void putHeader(ByteBuffer ra, boolean hasDefaultRoute) { + private static void putHeader(ByteBuffer ra, boolean hasDefaultRoute, byte hopLimit) { /** Router Advertisement Message Format @@ -366,11 +379,10 @@ public class RouterAdvertisementDaemon { | Options ... +-+-+-+-+-+-+-+-+-+-+-+- */ - final byte DEFAULT_HOPLIMIT = 64; ra.put(ICMPV6_ND_ROUTER_ADVERT) .put(asByte(0)) .putShort(asShort(0)) - .put(DEFAULT_HOPLIMIT) + .put(hopLimit) // RFC 4191 "high" preference, iff. advertising a default route. .put(hasDefaultRoute ? asByte(0x08) : asByte(0)) .putShort(hasDefaultRoute ? asShort(DEFAULT_LIFETIME) : asShort(0)) diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java index e6584c51ebd6..1d5eeced44b9 100644 --- a/services/usage/java/com/android/server/usage/UsageStatsService.java +++ b/services/usage/java/com/android/server/usage/UsageStatsService.java @@ -207,8 +207,8 @@ public class UsageStatsService extends SystemService implements @Override public void onBootPhase(int phase) { + mAppStandby.onBootPhase(phase); if (phase == PHASE_SYSTEM_SERVICES_READY) { - mAppStandby.onBootPhase(phase); // initialize mDpmInternal getDpmInternal(); diff --git a/telecomm/java/android/telecom/CallRedirectionService.java b/telecomm/java/android/telecom/CallRedirectionService.java new file mode 100644 index 000000000000..9c874bf305b1 --- /dev/null +++ b/telecomm/java/android/telecom/CallRedirectionService.java @@ -0,0 +1,167 @@ +/* + * Copyright (C) 2018 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.telecom; + +import android.annotation.SdkConstant; +import android.app.Service; +import android.content.Intent; +import android.net.Uri; +import android.os.Handler; +import android.os.IBinder; +import android.os.Looper; +import android.os.Message; +import android.os.RemoteException; + +import com.android.internal.os.SomeArgs; +import com.android.internal.telecom.ICallRedirectionService; +import com.android.internal.telecom.ICallRedirectionAdapter; + +/** + * This service can be implemented to interact between Telecom and its implementor + * for making outgoing call with optional redirection/cancellation purposes. + * + * <p> + * Below is an example manifest registration for a {@code CallRedirectionService}. + * <pre> + * {@code + * <service android:name="your.package.YourCallRedirectionServiceImplementation" + * android:permission="android.permission.BIND_REDIRECTION_SERVICE"> + * <intent-filter> + * <action android:name="android.telecom.CallRedirectionService"/> + * </intent-filter> + * </service> + * } + * </pre> + */ +public abstract class CallRedirectionService extends Service { + /** + * The {@link Intent} that must be declared as handled by the service. + */ + @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION) + public static final String SERVICE_INTERFACE = "android.telecom.CallRedirectionService"; + + /** + * An adapter to inform Telecom the response from the implementor of the Call + * Redirection service + */ + private ICallRedirectionAdapter mCallRedirectionAdapter; + + /** + * Telecom calls this method to inform the implemented {@link CallRedirectionService} of + * a new outgoing call which is being placed. + * @param handle the phone number dialed by the user + * @param targetPhoneAccount the {@link PhoneAccountHandle} on which the call will be placed. + */ + public abstract void onPlaceCall(Uri handle, PhoneAccountHandle targetPhoneAccount); + + /** + * The implemented {@link CallRedirectionService} calls this method to response a request + * received via {@link #onPlaceCall(Uri, PhoneAccountHandle)} to inform Telecom that no changes + * are required to the outgoing call, and that the call should be placed as-is. + */ + public final void placeCallUnmodified() { + try { + mCallRedirectionAdapter.placeCallUnmodified(); + } catch (RemoteException e) { + } + } + + /** + * The implemented {@link CallRedirectionService} calls this method to response a request + * received via {@link #onPlaceCall(Uri, PhoneAccountHandle)} to inform Telecom that changes + * are required to the phone number or/and {@link PhoneAccountHandle} for the outgoing call. + * @param handle the new phone number to dial + * @param targetPhoneAccount the {@link PhoneAccountHandle} to use when placing the call. + * If {@code null}, no change will be made to the + * {@link PhoneAccountHandle} used to place the call. + */ + public final void redirectCall(Uri handle, PhoneAccountHandle targetPhoneAccount) { + try { + mCallRedirectionAdapter.redirectCall(handle, targetPhoneAccount); + } catch (RemoteException e) { + } + } + + /** + * The implemented {@link CallRedirectionService} calls this method to response a request + * received via {@link #onPlaceCall(Uri, PhoneAccountHandle)} to inform Telecom that an outgoing + * call should be canceled entirely. + */ + public final void cancelCall() { + try { + mCallRedirectionAdapter.cancelCall(); + } catch (RemoteException e) { + } + } + + /** + * A handler message to process the attempt to place call with redirection service from Telecom + */ + private static final int MSG_PLACE_CALL = 1; + + /** + * A handler to process the attempt to place call with redirection service from Telecom + */ + private final Handler mHandler = new Handler(Looper.getMainLooper()) { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case MSG_PLACE_CALL: + SomeArgs args = (SomeArgs) msg.obj; + try { + mCallRedirectionAdapter = (ICallRedirectionAdapter) args.arg1; + onPlaceCall((Uri) args.arg2, (PhoneAccountHandle) args.arg3); + } finally { + args.recycle(); + } + break; + } + } + }; + + private final class CallRedirectionBinder extends ICallRedirectionService.Stub { + + /** + * Telecom calls this method to inform the CallRedirectionService of a new outgoing call + * which is about to be placed. + * @param handle the phone number dialed by the user + * @param targetPhoneAccount the URI of the number the user dialed + */ + @Override + public void placeCall(ICallRedirectionAdapter adapter, Uri handle, + PhoneAccountHandle targetPhoneAccount) { + Log.v(this, "placeCall"); + SomeArgs args = SomeArgs.obtain(); + args.arg1 = adapter; + args.arg2 = handle; + args.arg3 = targetPhoneAccount; + mHandler.obtainMessage(MSG_PLACE_CALL, args).sendToTarget(); + } + } + + @Override + public IBinder onBind(Intent intent) { + Log.v(this, "onBind"); + return new CallRedirectionBinder(); + } + + @Override + public boolean onUnbind(Intent intent) { + Log.v(this, "onUnbind"); + return false; + } +} diff --git a/telecomm/java/android/telecom/ParcelableCallAnalytics.java b/telecomm/java/android/telecom/ParcelableCallAnalytics.java index 383d10baeb12..bb066ad428c6 100644 --- a/telecomm/java/android/telecom/ParcelableCallAnalytics.java +++ b/telecomm/java/android/telecom/ParcelableCallAnalytics.java @@ -195,6 +195,8 @@ public class ParcelableCallAnalytics implements Parcelable { public static final int BLOCK_CHECK_FINISHED_TIMING = 9; public static final int FILTERING_COMPLETED_TIMING = 10; public static final int FILTERING_TIMED_OUT_TIMING = 11; + /** {@hide} */ + public static final int START_CONNECTION_TO_REQUEST_DISCONNECT_TIMING = 12; public static final int INVALID = 999999; @@ -256,6 +258,27 @@ public class ParcelableCallAnalytics implements Parcelable { public static final int SIP_PHONE = 0x8; public static final int THIRD_PARTY_PHONE = 0x10; + /** + * Indicating the call source is not specified. + * + * @hide + */ + public static final int CALL_SOURCE_UNSPECIFIED = 0; + + /** + * Indicating the call is initiated via emergency dialer's dialpad. + * + * @hide + */ + public static final int CALL_SOURCE_EMERGENCY_DIALPAD = 1; + + /** + * Indicating the call is initiated via emergency dialer's shortcut button. + * + * @hide + */ + public static final int CALL_SOURCE_EMERGENCY_SHORTCUT = 2; + public static final long MILLIS_IN_5_MINUTES = 1000 * 60 * 5; public static final long MILLIS_IN_1_SECOND = 1000; @@ -319,6 +342,9 @@ public class ParcelableCallAnalytics implements Parcelable { // A list of video events that have occurred. private List<VideoEvent> videoEvents; + // The source where user initiated this call. ONE OF the CALL_SOURCE_* constants. + private int callSource = CALL_SOURCE_UNSPECIFIED; + public ParcelableCallAnalytics(long startTimeMillis, long callDurationMillis, int callType, boolean isAdditionalCall, boolean isInterrupted, int callTechnologies, int callTerminationCode, boolean isEmergencyCall, String connectionService, @@ -356,6 +382,7 @@ public class ParcelableCallAnalytics implements Parcelable { isVideoCall = readByteAsBoolean(in); videoEvents = new LinkedList<>(); in.readTypedList(videoEvents, VideoEvent.CREATOR); + callSource = in.readInt(); } public void writeToParcel(Parcel out, int flags) { @@ -373,6 +400,7 @@ public class ParcelableCallAnalytics implements Parcelable { out.writeTypedList(eventTimings); writeBooleanAsByte(out, isVideoCall); out.writeTypedList(videoEvents); + out.writeInt(callSource); } /** {@hide} */ @@ -385,6 +413,11 @@ public class ParcelableCallAnalytics implements Parcelable { this.videoEvents = videoEvents; } + /** {@hide} */ + public void setCallSource(int callSource) { + this.callSource = callSource; + } + public long getStartTimeMillis() { return startTimeMillis; } @@ -443,6 +476,11 @@ public class ParcelableCallAnalytics implements Parcelable { return videoEvents; } + /** {@hide} */ + public int getCallSource() { + return callSource; + } + @Override public int describeContents() { return 0; diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index 48c1e24db1f3..4e2282337ccd 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -622,6 +622,18 @@ public class TelecomManager { "android.telecom.extra.USE_ASSISTED_DIALING"; /** + * Optional extra for {@link #placeCall(Uri, Bundle)} containing an integer that specifies + * the source where user initiated this call. This data is used in metrics. + * Valid source are: + * {@link ParcelableCallAnalytics#CALL_SOURCE_UNSPECIFIED}, + * {@link ParcelableCallAnalytics#CALL_SOURCE_EMERGENCY_DIALPAD}, + * {@link ParcelableCallAnalytics#CALL_SOURCE_EMERGENCY_SHORTCUT}. + * + * @hide + */ + public static final String EXTRA_CALL_SOURCE = "android.telecom.extra.CALL_SOURCE"; + + /** * The following 4 constants define how properties such as phone numbers and names are * displayed to the user. */ diff --git a/telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl b/telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl new file mode 100644 index 000000000000..46bf983f52a2 --- /dev/null +++ b/telecomm/java/com/android/internal/telecom/ICallRedirectionAdapter.aidl @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2018 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.telecom; + +import android.net.Uri; +import android.telecom.PhoneAccountHandle; + +/** + * Internal remote callback interface for call redirection services. + * + * @see android.telecom.CallRedirectionService + * + * {@hide} + */ +oneway interface ICallRedirectionAdapter { + void cancelCall(); + + void placeCallUnmodified(); + + void redirectCall(in Uri handle, in PhoneAccountHandle targetPhoneAccount); +} diff --git a/telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl b/telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl new file mode 100644 index 000000000000..d8d360beb64d --- /dev/null +++ b/telecomm/java/com/android/internal/telecom/ICallRedirectionService.aidl @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2018 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.telecom; + +import android.net.Uri; +import android.telecom.PhoneAccountHandle; + +import com.android.internal.telecom.ICallRedirectionAdapter; + +/** + * Internal remote interface for a call redirection service. + * + * @see android.telecom.CallRedirectionService + * + * @hide + */ +oneway interface ICallRedirectionService { + void placeCall(in ICallRedirectionAdapter adapter, in Uri handle, + in PhoneAccountHandle targetPhoneAccount); +} diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index df571e1da0db..9319750a7a93 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -81,15 +81,60 @@ public class CarrierConfigManager { public static final String KEY_CARRIER_VOLTE_PROVISIONED_BOOL = "carrier_volte_provisioned_bool"; + /** + * Boolean indicating if the "Call forwarding" item is visible in the Call Settings menu. + * true means visible. false means gone. + * @hide + */ + public static final String KEY_CALL_FORWARDING_VISIBILITY_BOOL = + "call_forwarding_visibility_bool"; + + /** + * Boolean indicating if the "Caller ID" item is visible in the Additional Settings menu. + * true means visible. false means gone. + * @hide + */ + public static final String KEY_ADDITIONAL_SETTINGS_CALLER_ID_VISIBILITY_BOOL = + "additional_settings_caller_id_visibility_bool"; + + /** + * Boolean indicating if the "Call Waiting" item is visible in the Additional Settings menu. + * true means visible. false means gone. + * @hide + */ + public static final String KEY_ADDITIONAL_SETTINGS_CALL_WAITING_VISIBILITY_BOOL = + "additional_settings_call_waiting_visibility_bool"; + /** * Boolean indicating if the "Call barring" item is visible in the Call Settings menu. - * true means visible. false means gone. - * @hide + * If true, the "Call Barring" menu will be visible. If false, the menu will be gone. + * + * Disabled by default. */ public static final String KEY_CALL_BARRING_VISIBILITY_BOOL = "call_barring_visibility_bool"; /** + * Flag indicating whether or not changing the call barring password via the "Call Barring" + * settings menu is supported. If true, the option will be visible in the "Call + * Barring" settings menu. If false, the option will not be visible. + * + * Enabled by default. + */ + public static final String KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL = + "call_barring_supports_password_change_bool"; + + /** + * Flag indicating whether or not deactivating all call barring features via the "Call Barring" + * settings menu is supported. If true, the option will be visible in the "Call + * Barring" settings menu. If false, the option will not be visible. + * + * Enabled by default. + */ + public static final String KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL = + "call_barring_supports_deactivate_all_bool"; + + /** * Flag indicating whether the Phone app should ignore EVENT_SIM_NETWORK_LOCKED * events from the Sim. * If true, this will prevent the IccNetworkDepersonalizationPanel from being shown, and @@ -2032,6 +2077,14 @@ public class CarrierConfigManager { public static final String KEY_CONFIG_SHOW_ORIG_DIAL_STRING_FOR_CDMA_BOOL = "config_show_orig_dial_string_for_cdma"; + /** + * Specifies a carrier-defined {@link CallRedirectionService} which Telecom will bind + * to for outgoing calls. An empty string indicates that no carrier-defined + * {@link CallRedirectionService} is specified. + * @hide + */ + public static final String KEY_CALL_REDIRECTION_SERVICE_COMPONENT_NAME_STRING = + "call_redirection_service_component_name_string"; /** The default value for every variable. */ private final static PersistableBundle sDefaults; @@ -2094,6 +2147,11 @@ public class CarrierConfigManager { sDefaults.putBoolean(KEY_CARRIER_VOLTE_PROVISIONED_BOOL, false); sDefaults.putBoolean(KEY_CALL_BARRING_VISIBILITY_BOOL, false); + sDefaults.putBoolean(KEY_CALL_BARRING_SUPPORTS_PASSWORD_CHANGE_BOOL, true); + sDefaults.putBoolean(KEY_CALL_BARRING_SUPPORTS_DEACTIVATE_ALL_BOOL, true); + sDefaults.putBoolean(KEY_CALL_FORWARDING_VISIBILITY_BOOL, true); + sDefaults.putBoolean(KEY_ADDITIONAL_SETTINGS_CALLER_ID_VISIBILITY_BOOL, true); + sDefaults.putBoolean(KEY_ADDITIONAL_SETTINGS_CALL_WAITING_VISIBILITY_BOOL, true); sDefaults.putBoolean(KEY_IGNORE_SIM_NETWORK_LOCKED_EVENTS_BOOL, false); sDefaults.putBoolean(KEY_MDN_IS_ADDITIONAL_VOICEMAIL_NUMBER_BOOL, false); sDefaults.putBoolean(KEY_OPERATOR_SELECTION_EXPAND_BOOL, true); diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index 2ee1a09e87b6..f2b73dccee2d 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -353,9 +353,11 @@ public class ServiceState implements Parcelable { mIsDataRoamingFromRegistration = s.mIsDataRoamingFromRegistration; mIsUsingCarrierAggregation = s.mIsUsingCarrierAggregation; mChannelNumber = s.mChannelNumber; - mCellBandwidths = Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length); + mCellBandwidths = s.mCellBandwidths == null ? null : + Arrays.copyOf(s.mCellBandwidths, s.mCellBandwidths.length); mLteEarfcnRsrpBoost = s.mLteEarfcnRsrpBoost; - mNetworkRegistrationStates = new ArrayList<>(s.mNetworkRegistrationStates); + mNetworkRegistrationStates = s.mNetworkRegistrationStates == null ? null : + new ArrayList<>(s.mNetworkRegistrationStates); } /** @@ -812,7 +814,9 @@ public class ServiceState implements Parcelable { && mIsEmergencyOnly == s.mIsEmergencyOnly && mIsDataRoamingFromRegistration == s.mIsDataRoamingFromRegistration && mIsUsingCarrierAggregation == s.mIsUsingCarrierAggregation) - && mNetworkRegistrationStates.containsAll(s.mNetworkRegistrationStates); + && (mNetworkRegistrationStates == null ? s.mNetworkRegistrationStates == null : + s.mNetworkRegistrationStates != null && + mNetworkRegistrationStates.containsAll(s.mNetworkRegistrationStates)); } /** diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 119733e6a3d1..0c8280b9e086 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -19,6 +19,7 @@ package android.telephony; import static android.net.NetworkPolicyManager.OVERRIDE_CONGESTED; import static android.net.NetworkPolicyManager.OVERRIDE_UNMETERED; +import android.annotation.CallbackExecutor; import android.annotation.DurationMillisLong; import android.annotation.NonNull; import android.annotation.Nullable; @@ -47,6 +48,7 @@ import android.os.RemoteException; import android.os.ServiceManager; import android.telephony.euicc.EuiccManager; import android.util.DisplayMetrics; +import android.util.Log; import com.android.internal.telephony.IOnSubscriptionsChangedListener; import com.android.internal.telephony.ISub; @@ -57,6 +59,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; /** @@ -666,7 +669,7 @@ public class SubscriptionManager { tr.addOnSubscriptionsChangedListener(pkgName, listener.callback); } } catch (RemoteException ex) { - // Should not happen + Log.e(LOG_TAG, "Remote exception ITelephonyRegistry " + ex); } } @@ -684,7 +687,7 @@ public class SubscriptionManager { + " listener=" + listener); } try { - // We use the TelephonyRegistry as its runs in the system and thus is always + // We use the TelephonyRegistry as it runs in the system and thus is always // available where as SubscriptionController could crash and not be available ITelephonyRegistry tr = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService( "telephony.registry")); @@ -692,7 +695,116 @@ public class SubscriptionManager { tr.removeOnSubscriptionsChangedListener(pkgForDebug, listener.callback); } } catch (RemoteException ex) { - // Should not happen + Log.e(LOG_TAG, "Remote exception ITelephonyRegistry " + ex); + } + } + + /** + * A listener class for monitoring changes to {@link SubscriptionInfo} records of opportunistic + * subscriptions. + * <p> + * Override the onOpportunisticSubscriptionsChanged method in the object that extends this + * or {@link #addOnOpportunisticSubscriptionsChangedListener( + * Executor, OnOpportunisticSubscriptionsChangedListener)} + * to register your listener and to unregister invoke + * {@link #removeOnOpportunisticSubscriptionsChangedListener( + * OnOpportunisticSubscriptionsChangedListener)} + * <p> + * Permissions android.Manifest.permission.READ_PHONE_STATE is required + * for #onOpportunisticSubscriptionsChanged to be invoked. + */ + public static class OnOpportunisticSubscriptionsChangedListener { + private Executor mExecutor; + /** + * Callback invoked when there is any change to any SubscriptionInfo. Typically + * this method would invoke {@link #getActiveSubscriptionInfoList} + */ + public void onOpportunisticSubscriptionsChanged() { + if (DBG) log("onOpportunisticSubscriptionsChanged: NOT OVERRIDDEN"); + } + + private void setExecutor(Executor executor) { + mExecutor = executor; + } + + /** + * The callback methods need to be called on the handler thread where + * this object was created. If the binder did that for us it'd be nice. + */ + IOnSubscriptionsChangedListener callback = new IOnSubscriptionsChangedListener.Stub() { + @Override + public void onSubscriptionsChanged() { + if (DBG) log("onOpportunisticSubscriptionsChanged callback received."); + mExecutor.execute(() -> onOpportunisticSubscriptionsChanged()); + } + }; + + private void log(String s) { + Rlog.d(LOG_TAG, s); + } + } + + /** + * Register for changes to the list of opportunistic subscription records or to the + * individual records themselves. When a change occurs the onOpportunisticSubscriptionsChanged + * method of the listener will be invoked immediately if there has been a notification. + * + * @param listener an instance of {@link OnOpportunisticSubscriptionsChangedListener} with + * onOpportunisticSubscriptionsChanged overridden. + */ + public void addOnOpportunisticSubscriptionsChangedListener( + @NonNull @CallbackExecutor Executor executor, + @NonNull OnOpportunisticSubscriptionsChangedListener listener) { + if (executor == null || listener == null) { + return; + } + + String pkgName = mContext != null ? mContext.getOpPackageName() : "<unknown>"; + if (DBG) { + logd("register addOnOpportunisticSubscriptionsChangedListener pkgName=" + pkgName + + " listener=" + listener); + } + + listener.setExecutor(executor); + + try { + // We use the TelephonyRegistry as it runs in the system and thus is always + // available. Where as SubscriptionController could crash and not be available + ITelephonyRegistry tr = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService( + "telephony.registry")); + if (tr != null) { + tr.addOnOpportunisticSubscriptionsChangedListener(pkgName, listener.callback); + } + } catch (RemoteException ex) { + Log.e(LOG_TAG, "Remote exception ITelephonyRegistry " + ex); + } + } + + /** + * Unregister the {@link OnOpportunisticSubscriptionsChangedListener} that is currently + * listening opportunistic subscriptions change. This is not strictly necessary + * as the listener will automatically be unregistered if an attempt to invoke the listener + * fails. + * + * @param listener that is to be unregistered. + */ + public void removeOnOpportunisticSubscriptionsChangedListener( + OnOpportunisticSubscriptionsChangedListener listener) { + String pkgForDebug = mContext != null ? mContext.getOpPackageName() : "<unknown>"; + if (DBG) { + logd("unregister OnOpportunisticSubscriptionsChangedListener pkgForDebug=" + + pkgForDebug + " listener=" + listener); + } + try { + // We use the TelephonyRegistry as it runs in the system and thus is always + // available where as SubscriptionController could crash and not be available + ITelephonyRegistry tr = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService( + "telephony.registry")); + if (tr != null) { + tr.removeOnSubscriptionsChangedListener(pkgForDebug, listener.callback); + } + } catch (RemoteException ex) { + Log.e(LOG_TAG, "Remote exception ITelephonyRegistry " + ex); } } @@ -1177,6 +1289,15 @@ public class SubscriptionManager { } + /** + * Get an array of Subscription Ids for specified slot Index. + * @param slotIndex the slot Index. + * @return subscription Ids or null if the given slot Index is not valid. + */ + public static int[] getSubscriptionIds(int slotIndex) { + return getSubId(slotIndex); + } + /** @hide */ @UnsupportedAppUsage public static int[] getSubId(int slotIndex) { @@ -1468,12 +1589,14 @@ public class SubscriptionManager { } /** - * @return true if a valid subId else false - * @hide + * Checks if the supplied subscription ID is valid. + * Note: a valid subscription ID does not necessarily correspond to an active subscription. + * + * @param subscriptionId The subscription ID. + * @return true if the supplied subscriptionId is valid; false otherwise. */ - @UnsupportedAppUsage - public static boolean isValidSubscriptionId(int subId) { - return subId > INVALID_SUBSCRIPTION_ID ; + public static boolean isValidSubscriptionId(int subscriptionId) { + return subscriptionId > INVALID_SUBSCRIPTION_ID; } /** diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index e6173c0717d4..ebe05e8b27db 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -134,6 +134,22 @@ public class TelephonyManager { static final int NEVER_USE = 2; } + /** @hide */ + @Retention(RetentionPolicy.SOURCE) + @IntDef(prefix = {"NETWORK_SELECTION_MODE_"}, + value = { + NETWORK_SELECTION_MODE_UNKNOWN, + NETWORK_SELECTION_MODE_AUTO, + NETWORK_SELECTION_MODE_MANUAL}) + public @interface NetworkSelectionMode {} + + /** @hide */ + public static final int NETWORK_SELECTION_MODE_UNKNOWN = 0; + /** @hide */ + public static final int NETWORK_SELECTION_MODE_AUTO = 1; + /** @hide */ + public static final int NETWORK_SELECTION_MODE_MANUAL = 2; + /** The otaspMode passed to PhoneStateListener#onOtaspChanged */ /** @hide */ static public final int OTASP_UNINITIALIZED = 0; @@ -1482,23 +1498,24 @@ public class TelephonyManager { Rlog.d(TAG, "getCellLocation returning null because telephony is null"); return null; } + Bundle bundle = telephony.getCellLocation(mContext.getOpPackageName()); - if (bundle.isEmpty()) { - Rlog.d(TAG, "getCellLocation returning null because bundle is empty"); + if (bundle == null || bundle.isEmpty()) { + Rlog.d(TAG, "getCellLocation returning null because CellLocation is unavailable"); return null; } + CellLocation cl = CellLocation.newFromBundle(bundle); - if (cl.isEmpty()) { - Rlog.d(TAG, "getCellLocation returning null because CellLocation is empty"); + if (cl == null || cl.isEmpty()) { + Rlog.d(TAG, "getCellLocation returning null because CellLocation is empty or" + + " phone type doesn't match CellLocation type"); return null; } + return cl; } catch (RemoteException ex) { Rlog.d(TAG, "getCellLocation returning null due to RemoteException " + ex); return null; - } catch (NullPointerException ex) { - Rlog.d(TAG, "getCellLocation returning null due to NullPointerException " + ex); - return null; } } @@ -2862,9 +2879,11 @@ public class TelephonyManager { } /** - * Return if the current radio is LTE on CDMA. This - * is a tri-state return value as for a period of time - * the mode may be unknown. + * Return if the current radio is LTE on CDMA. This is a tri-state return value as for a period + * of time the mode may be unknown. + * + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} * * @return {@link PhoneConstants#LTE_ON_CDMA_UNKNOWN}, {@link PhoneConstants#LTE_ON_CDMA_FALSE} * or {@link PhoneConstants#LTE_ON_CDMA_TRUE} @@ -5699,6 +5718,9 @@ public class TelephonyManager { /** * Sets the network selection mode to automatic. * + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} + * * <p>Requires Permission: * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling * app has carrier privileges (see {@link #hasCarrierPrivileges}). @@ -5721,27 +5743,36 @@ public class TelephonyManager { /** * Perform a radio scan and return the list of available networks. * - * The return value is a list of the OperatorInfo of the networks found. Note that this - * scan can take a long time (sometimes minutes) to happen. + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} + * + * <p> Note that this scan can take a long time (sometimes minutes) to happen. * * <p>Requires Permission: - * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling - * app has carrier privileges (see {@link #hasCarrierPrivileges}). + * {@link android.Manifest.permission#MODIFY_PHONE_STATE} or that the calling app has carrier + * privileges (see {@link #hasCarrierPrivileges}) + * + * @return {@link CellNetworkScanResult} with the status + * {@link CellNetworkScanResult#STATUS_SUCCESS} and a list of + * {@link com.android.internal.telephony.OperatorInfo} if it's available. Otherwise, the failure + * caused will be included in the result. * * @hide - * TODO: Add an overload that takes no args. */ - public CellNetworkScanResult getCellNetworkScanResults(int subId) { + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) + public CellNetworkScanResult getAvailableNetworks() { try { ITelephony telephony = getITelephony(); - if (telephony != null) - return telephony.getCellNetworkScanResults(subId); + if (telephony != null) { + return telephony.getCellNetworkScanResults(getSubId()); + } } catch (RemoteException ex) { - Rlog.e(TAG, "getCellNetworkScanResults RemoteException", ex); + Rlog.e(TAG, "getAvailableNetworks RemoteException", ex); } catch (NullPointerException ex) { - Rlog.e(TAG, "getCellNetworkScanResults NPE", ex); + Rlog.e(TAG, "getAvailableNetworks NPE", ex); } - return null; + return new CellNetworkScanResult( + CellNetworkScanResult.STATUS_UNKNOWN_ERROR, null /* OperatorInfo */); } /** @@ -5791,6 +5822,9 @@ public class TelephonyManager { /** * Ask the radio to connect to the input network and change selection mode to manual. * + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} + * * <p>Requires Permission: * {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE} or that the calling * app has carrier privileges (see {@link #hasCarrierPrivileges}). @@ -5818,6 +5852,31 @@ public class TelephonyManager { return false; } + /** + * Get the network selection mode. + * + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} + + * @return the network selection mode. + * + * @hide + */ + @NetworkSelectionMode + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) + public int getNetworkSelectionMode() { + int mode = NETWORK_SELECTION_MODE_UNKNOWN; + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + mode = telephony.getNetworkSelectionMode(getSubId()); + } + } catch (RemoteException ex) { + Rlog.e(TAG, "getNetworkSelectionMode RemoteException", ex); + } + return mode; + } + /** * Set the preferred network type. * Used for device configuration by some CDMA operators. @@ -6249,7 +6308,11 @@ public class TelephonyManager { } } - /** @hide */ + /** + * @deprecated Use {@link android.telecom.TelecomManager#isInCall} instead + * @hide + */ + @Deprecated @SystemApi @RequiresPermission(anyOf = { android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, @@ -6266,7 +6329,11 @@ public class TelephonyManager { return false; } - /** @hide */ + /** + * @deprecated Use {@link android.telecom.TelecomManager#isRinging} instead + * @hide + */ + @Deprecated @SystemApi @RequiresPermission(anyOf = { android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, @@ -6283,7 +6350,11 @@ public class TelephonyManager { return false; } - /** @hide */ + /** + * @deprecated Use {@link android.telecom.TelecomManager#isInCall} instead + * @hide + */ + @Deprecated @SystemApi @RequiresPermission(anyOf = { android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, @@ -6300,7 +6371,11 @@ public class TelephonyManager { return true; } - /** @hide */ + /** + * @deprecated Use {@link android.telephony.TelephonyManager#getServiceState} instead + * @hide + */ + @Deprecated @SystemApi @RequiresPermission(anyOf = { android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, @@ -6716,6 +6791,84 @@ public class TelephonyManager { } /** + * Gets the roaming mode for CDMA phone. + * + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} + * + * @return one of {@link #CDMA_ROAMING_MODE_RADIO_DEFAULT}, {@link #CDMA_ROAMING_MODE_HOME}, + * {@link #CDMA_ROAMING_MODE_AFFILIATED}, {@link #CDMA_ROAMING_MODE_ANY}. + * + * @hide + */ + @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) + public int getCdmaRoamingMode() { + int mode = CDMA_ROAMING_MODE_RADIO_DEFAULT; + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + mode = telephony.getCdmaRoamingMode(getSubId()); + } + } catch (RemoteException ex) { + Log.e(TAG, "Error calling ITelephony#getCdmaRoamingMode", ex); + } + return mode; + } + + /** + * Sets the roaming mode for CDMA phone to the given mode {@code mode}. + * + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} + * + * @param mode should be one of {@link #CDMA_ROAMING_MODE_RADIO_DEFAULT}, + * {@link #CDMA_ROAMING_MODE_HOME}, {@link #CDMA_ROAMING_MODE_AFFILIATED}, + * {@link #CDMA_ROAMING_MODE_ANY}. + * + * @return {@code true} if successed. + * + * @hide + */ + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) + public boolean setCdmaRoamingMode(int mode) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + return telephony.setCdmaRoamingMode(getSubId(), mode); + } + } catch (RemoteException ex) { + Log.e(TAG, "Error calling ITelephony#setCdmaRoamingMode", ex); + } + return false; + } + + /** + * Sets the subscription mode for CDMA phone to the given mode {@code mode}. + * + * @param mode CDMA subscription mode + * + * @return {@code true} if successed. + * + * @see Phone#CDMA_SUBSCRIPTION_UNKNOWN + * @see Phone#CDMA_SUBSCRIPTION_RUIM_SIM + * @see Phone#CDMA_SUBSCRIPTION_NV + * + * @hide + */ + @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) + public boolean setCdmaSubscriptionMode(int mode) { + try { + ITelephony telephony = getITelephony(); + if (telephony != null) { + return telephony.setCdmaSubscriptionMode(getSubId(), mode); + } + } catch (RemoteException ex) { + Log.e(TAG, "Error calling ITelephony#setCdmaSubscriptionMode", ex); + } + return false; + } + + /** * Enables/Disables the data roaming on the subscription. * * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the @@ -7527,6 +7680,9 @@ public class TelephonyManager { /** * Returns the current {@link ServiceState} information. * + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} + * * <p>Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} * or that the calling app has carrier privileges (see {@link #hasCarrierPrivileges}). */ @@ -7994,8 +8150,12 @@ public class TelephonyManager { } /** - * Check if phone is in emergency callback mode - * @return true if phone is in emergency callback mode + * Checks if phone is in emergency callback mode. + * + * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the + * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultDataSubscriptionId()} + * + * @return true if phone is in emergency callback mode. * @hide */ @SystemApi diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index b4f3487a5f63..066db1fca140 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1536,6 +1536,34 @@ interface ITelephony { void setDataRoamingEnabled(int subId, boolean isEnabled); /** + * Gets the roaming mode for the CDMA phone with the subscription id {@code subId}. + * + * @param the subscription id. + * @return the roaming mode for CDMA phone. + */ + int getCdmaRoamingMode(int subId); + + /** + * Sets the roaming mode on the CDMA phone with the subscription {@code subId} to the given + * roaming mode {@code mode}. + * + * @param subId the subscription id. + * @param mode the roaming mode should be set. + * @return {@code true} if successed. + */ + boolean setCdmaRoamingMode(int subId, int mode); + + /** + * Sets the subscription mode for CDMA phone with the subscription {@code subId} to the given + * subscription mode {@code mode}. + * + * @param subId the subscription id. + * @param mode the subscription mode should be set. + * @return {@code true} if successed. + */ + boolean setCdmaSubscriptionMode(int subId, int mode); + + /** * A test API to override carrier information including mccmnc, imsi, iccid, gid1, gid2, * plmn and spn. This would be handy for, eg, forcing a particular carrier id, carrier's config * (also any country or carrier overlays) to be loaded when using a test SIM with a call box. @@ -1559,4 +1587,9 @@ interface ITelephony { * @hide */ int getNumberOfModemsWithSimultaneousDataConnections(int subId, String callingPackage); + + /** + * Return the network selection mode on the subscription with id {@code subId}. + */ + int getNetworkSelectionMode(int subId); } diff --git a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl index e0e1a7b87916..43d56b39e0c4 100644 --- a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl @@ -32,6 +32,8 @@ import com.android.internal.telephony.IOnSubscriptionsChangedListener; interface ITelephonyRegistry { void addOnSubscriptionsChangedListener(String pkg, IOnSubscriptionsChangedListener callback); + void addOnOpportunisticSubscriptionsChangedListener(String pkg, + IOnSubscriptionsChangedListener callback); void removeOnSubscriptionsChangedListener(String pkg, IOnSubscriptionsChangedListener callback); void listen(String pkg, IPhoneStateListener callback, int events, boolean notifyNow); @@ -73,6 +75,7 @@ interface ITelephonyRegistry { int activationState, int activationType); void notifyOemHookRawEventForSubscriber(in int subId, in byte[] rawData); void notifySubscriptionInfoChanged(); + void notifyOpportunisticSubscriptionInfoChanged(); void notifyCarrierNetworkChange(in boolean active); void notifyUserMobileDataStateChangedForPhoneId(in int phoneId, in int subId, in boolean state); void notifyPhoneCapabilityChanged(in PhoneCapability capability); diff --git a/test-base/Android.bp b/test-base/Android.bp index d25b47727c0b..0b8a02a815d9 100644 --- a/test-base/Android.bp +++ b/test-base/Android.bp @@ -19,9 +19,8 @@ // This contains the junit.framework and android.test classes that were in // Android API level 25 excluding those from android.test.runner. // Also contains the com.android.internal.util.Predicate[s] classes. -java_library { +java_sdk_library { name: "android.test.base", - installable: true, srcs: ["src/**/*.java"], @@ -29,11 +28,38 @@ java_library { javacflags: ["-Xep:DepAnn:ERROR"], }, + hostdex: true, + + api_packages: [ + "android.test", + "android.test.suitebuilder.annotation", + "com.android.internal.util", + "junit.framework", + ], + + droiddoc_options: ["stubsourceonly"], + compile_dex: true, +} + +// Build the android.test.base_static library +// ========================================== +// This is only intended for inclusion in the android.test.runner-minus-junit, +// robolectric_android-all-stub and repackaged.android.test.* libraries. +// Must not be used elewhere. +java_library_static { + name: "android.test.base_static", + installable: false, + + srcs: ["src/**/*.java"], + + errorprone: { + javacflags: ["-Xep:DepAnn:ERROR"], + }, + // Needs to be consistent with the repackaged version of this make target. java_version: "1.8", sdk_version: "current", - hostdex: true, } // Build the legacy-test library @@ -46,7 +72,7 @@ java_library { installable: true, sdk_version: "current", - static_libs: ["android.test.base"], + static_libs: ["android.test.base_static"], } // Build the repackaged.android.test.base library @@ -57,7 +83,7 @@ java_library_static { name: "repackaged.android.test.base", sdk_version: "current", - static_libs: ["android.test.base"], + static_libs: ["android.test.base_static"], jarjar_rules: "jarjar-rules.txt", // Pin java_version until jarjar is certified to support later versions. http://b/72703434 @@ -84,38 +110,3 @@ java_library_static { ], } -droiddoc { - name: "android-test-base-api-stubs-gen-docs", - srcs: [ - "src/**/*.java", - ], - custom_template: "droiddoc-templates-sdk", - installable: false, - args: "-stubpackages android.test:" + - "android.test.suitebuilder.annotation:" + - "com.android.internal.util:" + - "junit.framework -stubsourceonly -nodocs", - sdk_version: "current", - api_tag_name: "ANDROID_TEST_BASE", - api_filename: "android-test-base-api.txt", - removed_api_filename: "android-test-base-removed.txt", -} - -// Build the android.test.base.stubs library -// ========================================= -java_library_static { - name: "android.test.base.stubs", - srcs: [ - ":android-test-base-api-stubs-gen-docs", - ], - product_variables: { - pdk: { - enabled: false, - }, - unbundled_build: { - enabled: false, - }, - }, - sdk_version: "current", - compile_dex: true, -} diff --git a/test-base/Android.mk b/test-base/Android.mk index baf5726ff8bd..a9d30cf3131a 100644 --- a/test-base/Android.mk +++ b/test-base/Android.mk @@ -16,50 +16,6 @@ LOCAL_PATH:= $(call my-dir) -# For unbundled build we'll use the prebuilt jar from prebuilts/sdk. -ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) - -ANDROID_TEST_BASE_API_FILE := $(LOCAL_PATH)/api/android-test-base-current.txt -ANDROID_TEST_BASE_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-base-removed.txt - -full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.base.stubs,,COMMON)/classes.jar -# Archive a copy of the classes.jar in SDK build. -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.base.stubs.jar) - -# Check that the android.test.base.stubs library has not changed -# ============================================================== - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - check-android-test-base-api-current, \ - $(ANDROID_TEST_BASE_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE), \ - $(ANDROID_TEST_BASE_REMOVED_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(LOCAL_PATH)/api/apicheck_msg_android_test_base.txt, \ - check-android-test-base-api, \ - $(OUT_DOCS)/android-test-base-api-stubs-gen-docs-stubs.srcjar \ - )) - -.PHONY: check-android-test-base-api -checkapi: check-android-test-base-api - -.PHONY: update-android-test-base-api -update-api: update-android-test-base-api - -update-android-test-base-api: $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE) | $(ACP) - @echo Copying current.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_API_FILE) $(ANDROID_TEST_BASE_API_FILE) - @echo Copying removed.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_BASE_REMOVED_API_FILE) $(ANDROID_TEST_BASE_REMOVED_API_FILE) - -endif # not TARGET_BUILD_APPS not TARGET_BUILD_PDK=true - ifeq ($(HOST_OS),linux) # Build the legacy-performance-test-hostdex library # ================================================= diff --git a/test-base/api/apicheck_msg_android_test_base.txt b/test-base/api/apicheck_msg_android_test_base.txt deleted file mode 100644 index 144aecc21bce..000000000000 --- a/test-base/api/apicheck_msg_android_test_base.txt +++ /dev/null @@ -1,17 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update android-test-base-current.txt by executing the following command: - make update-android-test-base-api - - To submit the revised android-test-base-current.txt to the main Android repository, - you will need approval. -****************************** - - - diff --git a/test-base/api/android-test-base-current.txt b/test-base/api/current.txt index 7ebd6aa8a4a2..7ebd6aa8a4a2 100644 --- a/test-base/api/android-test-base-current.txt +++ b/test-base/api/current.txt diff --git a/test-base/api/android-test-base-removed.txt b/test-base/api/removed.txt index e69de29bb2d1..e69de29bb2d1 100644 --- a/test-base/api/android-test-base-removed.txt +++ b/test-base/api/removed.txt diff --git a/test-mock/api/android-test-mock-system-removed.txt b/test-base/api/system-current.txt index e69de29bb2d1..e69de29bb2d1 100644 --- a/test-mock/api/android-test-mock-system-removed.txt +++ b/test-base/api/system-current.txt diff --git a/test-runner/api/android-test-runner-removed.txt b/test-base/api/system-removed.txt index e69de29bb2d1..e69de29bb2d1 100644 --- a/test-runner/api/android-test-runner-removed.txt +++ b/test-base/api/system-removed.txt diff --git a/test-base/api/test-current.txt b/test-base/api/test-current.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-base/api/test-current.txt diff --git a/test-base/api/test-removed.txt b/test-base/api/test-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-base/api/test-removed.txt diff --git a/test-legacy/Android.bp b/test-legacy/Android.bp index d2af8a9f1c82..833c714f07b0 100644 --- a/test-legacy/Android.bp +++ b/test-legacy/Android.bp @@ -25,7 +25,7 @@ java_library_static { static_libs: [ "android.test.base-minus-junit", "android.test.runner-minus-junit", - "android.test.mock", + "android.test.mock.impl", ], no_framework_libs: true, diff --git a/test-mock/Android.bp b/test-mock/Android.bp index 8d3faaef9f6b..5eba01779f46 100644 --- a/test-mock/Android.bp +++ b/test-mock/Android.bp @@ -16,95 +16,15 @@ // Build the android.test.mock library // =================================== -java_library { +java_sdk_library { name: "android.test.mock", - installable: true, - java_version: "1.8", srcs: ["src/**/*.java"], - no_framework_libs: true, - libs: [ - "framework", + api_packages: [ + "android.test.mock", ], -} - -doc_defaults { - name:"android.test.mock.docs-defaults", - srcs: ["src/android/test/mock/**/*.java"], - // Includes the main framework source to ensure that doclava has access to the - // visibility information for the base classes of the mock classes. Without it - // otherwise hidden methods could be visible. - srcs_lib: "framework", - srcs_lib_whitelist_dirs: ["core/java"], srcs_lib_whitelist_pkgs: ["android"], - libs: [ - "core-oj", - "core-libart", - "framework", - "conscrypt", - "okhttp", - "bouncycastle", - "ext", - ], - local_sourcepaths: ["src/android/test/mock"], - custom_template: "droiddoc-templates-sdk", - installable: false, -} - -android_test_mock_docs_args = - "-hide 110 -hide 111 -hide 113 -hide 121 -hide 125 -hide 126 -hide 127 -hide 128 " + - "-stubpackages android.test.mock " + - "-nodocs " - -droiddoc { - name: "android.test.mock.docs", - defaults: ["android.test.mock.docs-defaults"], - - api_tag_name: "ANDROID_TEST_MOCK", - api_filename: "api/android-test-mock-current.txt", - removed_api_filename: "api/android-test-mock-removed.txt", - - args: android_test_mock_docs_args, -} - -droiddoc { - name: "android.test.mock.docs-system", - defaults: ["android.test.mock.docs-defaults"], - - api_tag_name: "ANDROID_TEST_MOCK_SYSTEM", - api_filename: "api/android-test-mock-system-current.txt", - removed_api_filename: "api/android-test-mock-system-removed.txt", - - args: android_test_mock_docs_args + - "-showAnnotation android.annotation.SystemApi ", -} - -java_library_static { - name: "android.test.mock.stubs", - srcs: [":android.test.mock.docs"], - sdk_version: "current", - product_variables: { - unbundled_build: { - // Unbundled apps will use the prebuilt one - // prebuilts/sdk/current - enabled: false, - }, - }, - compile_dex: true, -} - -java_library_static { - name: "android.test.mock.stubs-system", - srcs: [":android.test.mock.docs-system"], - sdk_version: "system_current", - product_variables: { - unbundled_build: { - // Unbundled apps will use the prebuilt one - // prebuilts/sdk/system_current - enabled: false, - }, - }, compile_dex: true, } diff --git a/test-mock/Android.mk b/test-mock/Android.mk deleted file mode 100644 index 73a7340826a6..000000000000 --- a/test-mock/Android.mk +++ /dev/null @@ -1,93 +0,0 @@ -# -# Copyright (C) 2008 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. -# - -LOCAL_PATH:= $(call my-dir) - -# Archive a copy of the classes.jar in SDK build. -full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.mock.stubs,,COMMON)/classes.jar -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.mock.stubs.jar) - -# Check that the android.test.mock.stubs library has not changed -# ============================================================== -ANDROID_TEST_MOCK_API_FILE := $(LOCAL_PATH)/api/android-test-mock-current.txt -ANDROID_TEST_MOCK_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-mock-removed.txt - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - check-android-test-mock-api-current, \ - $(ANDROID_TEST_MOCK_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE), \ - $(ANDROID_TEST_MOCK_REMOVED_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(LOCAL_PATH)/api/apicheck_msg_android_test_mock.txt, \ - check-android-test-mock-api, \ - $(OUT_DOCS)/android.test.mock.docs-stubs.srcjar \ - )) - -.PHONY: check-android-test-mock-api -checkapi: check-android-test-mock-api - -.PHONY: update-android-test-mock-api -update-api: update-android-test-mock-api - -update-android-test-mock-api: $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE) | $(ACP) - @echo Copying current.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_API_FILE) $(ANDROID_TEST_MOCK_API_FILE) - @echo Copying removed.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_REMOVED_API_FILE) $(ANDROID_TEST_MOCK_REMOVED_API_FILE) - -# Archive a copy of the classes.jar in SDK build. -full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.mock.stubs-system,,COMMON)/classes.jar -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.mock.stubs_system.jar) - -# Check that the android.test.mock.stubs-system library has not changed -# ===================================================================== -ANDROID_TEST_MOCK_SYSTEM_API_FILE := $(LOCAL_PATH)/api/android-test-mock-system-current.txt -ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-mock-system-removed.txt - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - check-android-test-mock-system-api-current, \ - $(ANDROID_TEST_MOCK_SYSTEM_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE), \ - $(ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(LOCAL_PATH)/api/apicheck_msg_android_test_mock-system.txt, \ - check-android-test-mock-system-api, \ - $(OUT_DOCS)/android.test.mock.docs-system-stubs.srcjar \ - )) - -.PHONY: check-android-test-mock-system-api -checkapi: check-android-test-mock-system-api - -.PHONY: update-android-test-mock-system-api -update-api: update-android-test-mock-system-api - -update-android-test-mock-system-api: $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE) | $(ACP) - @echo Copying current.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_API_FILE) $(ANDROID_TEST_MOCK_SYSTEM_API_FILE) - @echo Copying removed.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE) $(ANDROID_TEST_MOCK_SYSTEM_REMOVED_API_FILE) diff --git a/test-mock/api/apicheck_msg_android_test_mock-system.txt b/test-mock/api/apicheck_msg_android_test_mock-system.txt deleted file mode 100644 index 3a97117f3ea1..000000000000 --- a/test-mock/api/apicheck_msg_android_test_mock-system.txt +++ /dev/null @@ -1,17 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update android-test-mock-current.txt by executing the following command: - make update-android-test-mock-system-api - - To submit the revised android-test-mock-system-current.txt to the main Android repository, - you will need approval. -****************************** - - - diff --git a/test-mock/api/apicheck_msg_android_test_mock.txt b/test-mock/api/apicheck_msg_android_test_mock.txt deleted file mode 100644 index e388935bf798..000000000000 --- a/test-mock/api/apicheck_msg_android_test_mock.txt +++ /dev/null @@ -1,17 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update android-test-mock-current.txt by executing the following command: - make update-android-test-mock-api - - To submit the revised android-test-mock-current.txt to the main Android repository, - you will need approval. -****************************** - - - diff --git a/test-mock/api/android-test-mock-current.txt b/test-mock/api/current.txt index f3b253c0f460..f3b253c0f460 100644 --- a/test-mock/api/android-test-mock-current.txt +++ b/test-mock/api/current.txt diff --git a/test-mock/api/android-test-mock-removed.txt b/test-mock/api/removed.txt index bd109a887933..bd109a887933 100644 --- a/test-mock/api/android-test-mock-removed.txt +++ b/test-mock/api/removed.txt diff --git a/test-mock/api/android-test-mock-system-current.txt b/test-mock/api/system-current.txt index 20401a50b6a2..20401a50b6a2 100644 --- a/test-mock/api/android-test-mock-system-current.txt +++ b/test-mock/api/system-current.txt diff --git a/test-mock/api/system-removed.txt b/test-mock/api/system-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-mock/api/system-removed.txt diff --git a/test-mock/api/test-current.txt b/test-mock/api/test-current.txt new file mode 100644 index 000000000000..725ea935896f --- /dev/null +++ b/test-mock/api/test-current.txt @@ -0,0 +1,16 @@ +package android.test.mock { + + public deprecated class MockPackageManager extends android.content.pm.PackageManager { + method public java.lang.String getDefaultBrowserPackageNameAsUser(int); + method public int getInstallReason(java.lang.String, android.os.UserHandle); + method public java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int); + method public java.util.List<android.content.pm.PackageInfo> getInstalledPackagesAsUser(int, int); + method public java.lang.String[] getNamesForUids(int[]); + method public java.lang.String getPermissionControllerPackageName(); + method public java.lang.String getServicesSystemSharedLibraryPackageName(); + method public java.lang.String getSharedSystemSharedLibraryPackageName(); + method public boolean isPermissionReviewModeEnabled(); + } + +} + diff --git a/test-mock/api/test-removed.txt b/test-mock/api/test-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-mock/api/test-removed.txt diff --git a/test-runner/Android.bp b/test-runner/Android.bp index 2caa6c45f16b..ea615b920df6 100644 --- a/test-runner/Android.bp +++ b/test-runner/Android.bp @@ -16,23 +16,32 @@ // Build the android.test.runner library // ===================================== -java_library { +java_sdk_library { name: "android.test.runner", - installable: true, - // Needs to be consistent with the repackaged version of this make target. - java_version: "1.8", srcs: ["src/**/*.java"], errorprone: { javacflags: ["-Xep:DepAnn:ERROR"], }, - sdk_version: "current", libs: [ "android.test.base", - "android.test.mock.stubs", + "android.test.mock", + ], + stub_only_libs: [ + "android.test.base", + "android.test.mock", ], + api_packages: [ + "android.test", + "android.test.suitebuilder", + "junit.runner", + "junit.textui", + ], + + droiddoc_options: ["stubsourceonly"], + compile_dex: true } // Build the android.test.runner-minus-junit library @@ -46,8 +55,8 @@ java_library { sdk_version: "current", libs: [ - "android.test.base", - "android.test.mock.stubs", + "android.test.base_static", + "android.test.mock", "junit", ], } @@ -70,7 +79,7 @@ java_library_static { sdk_version: "current", libs: [ - "android.test.base", + "android.test.base_static", ], jarjar_rules: "jarjar-rules.txt", @@ -78,48 +87,3 @@ java_library_static { java_version: "1.8", } -droiddoc { - name: "android-test-runner-api-stubs-gen-docs", - srcs: [ - "src/**/*.java", - ], - libs: [ - "core-oj", - "core-libart", - "framework", - "android.test.base", - "android.test.mock", - ], - custom_template: "droiddoc-templates-sdk", - installable: false, - args: "-stubpackages android.test:" + - "android.test.suitebuilder:" + - "junit.runner:" + - "junit.textui -stubsourceonly -nodocs", - api_tag_name: "ANDROID_TEST_RUNNER", - api_filename: "android-test-runner-current.txt", - removed_api_filename: "android-test-runner-removed.txt", -} - -// Build the android.test.runner.stubs library -// ========================================= -java_library_static { - name: "android.test.runner.stubs", - srcs: [ - ":android-test-runner-api-stubs-gen-docs", - ], - libs: [ - "android.test.base.stubs", - "android.test.mock.stubs", - ], - product_variables: { - pdk: { - enabled: false, - }, - unbundled_build: { - enabled: false, - }, - }, - sdk_version: "current", - compile_dex: true, -} diff --git a/test-runner/Android.mk b/test-runner/Android.mk index b70d2498d491..18bde8517351 100644 --- a/test-runner/Android.mk +++ b/test-runner/Android.mk @@ -16,49 +16,5 @@ LOCAL_PATH:= $(call my-dir) -# For unbundled build we'll use the prebuilt jar from prebuilts/sdk. -ifeq (,$(TARGET_BUILD_APPS)$(filter true,$(TARGET_BUILD_PDK))) - -ANDROID_TEST_RUNNER_API_FILE := $(LOCAL_PATH)/api/android-test-runner-current.txt -ANDROID_TEST_RUNNER_REMOVED_API_FILE := $(LOCAL_PATH)/api/android-test-runner-removed.txt - -full_classes_jar := $(call intermediates-dir-for,JAVA_LIBRARIES,android.test.runner.stubs,,COMMON)/classes.jar -# Archive a copy of the classes.jar in SDK build. -$(call dist-for-goals,sdk win_sdk,$(full_classes_jar):android.test.runner.stubs.jar) - -# Check that the android.test.runner.stubs library has not changed -# ================================================================ - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - check-android-test-runner-api-current, \ - $(ANDROID_TEST_RUNNER_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE), \ - $(ANDROID_TEST_RUNNER_REMOVED_API_FILE), \ - $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(LOCAL_PATH)/api/apicheck_msg_android_test_runner.txt, \ - check-android-test-runner-api, \ - $(OUT_DOCS)/android-test-runner-api-stubs-gen-docs-stubs.srcjar \ - )) - -.PHONY: check-android-test-runner-api -checkapi: check-android-test-runner-api - -.PHONY: update-android-test-runner-api -update-api: update-android-test-runner-api - -update-android-test-runner-api: $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE) | $(ACP) - @echo Copying current.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_API_FILE) $(ANDROID_TEST_RUNNER_API_FILE) - @echo Copying removed.txt - $(hide) $(ACP) $(INTERNAL_PLATFORM_ANDROID_TEST_RUNNER_REMOVED_API_FILE) $(ANDROID_TEST_RUNNER_REMOVED_API_FILE) - -endif # not TARGET_BUILD_APPS not TARGET_BUILD_PDK=true - # additionally, build unit tests in a separate .apk include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/test-runner/api/apicheck_msg_android_test_runner.txt b/test-runner/api/apicheck_msg_android_test_runner.txt deleted file mode 100644 index cf2d15ee1ee1..000000000000 --- a/test-runner/api/apicheck_msg_android_test_runner.txt +++ /dev/null @@ -1,17 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update android-test-runner-current.txt by executing the following command: - make update-android-test-runner-api - - To submit the revised android-test-runner-current.txt to the main Android repository, - you will need approval. -****************************** - - - diff --git a/test-runner/api/android-test-runner-current.txt b/test-runner/api/current.txt index 1170eb53ab7f..1170eb53ab7f 100644 --- a/test-runner/api/android-test-runner-current.txt +++ b/test-runner/api/current.txt diff --git a/test-runner/api/removed.txt b/test-runner/api/removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/removed.txt diff --git a/test-runner/api/system-current.txt b/test-runner/api/system-current.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/system-current.txt diff --git a/test-runner/api/system-removed.txt b/test-runner/api/system-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/system-removed.txt diff --git a/test-runner/api/test-current.txt b/test-runner/api/test-current.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/test-current.txt diff --git a/test-runner/api/test-removed.txt b/test-runner/api/test-removed.txt new file mode 100644 index 000000000000..e69de29bb2d1 --- /dev/null +++ b/test-runner/api/test-removed.txt diff --git a/tests/TtsTests/src/com/android/speech/tts/TextToSpeechTests.java b/tests/TtsTests/src/com/android/speech/tts/TextToSpeechTests.java index 918873bf0bdd..d9bb7db17685 100644 --- a/tests/TtsTests/src/com/android/speech/tts/TextToSpeechTests.java +++ b/tests/TtsTests/src/com/android/speech/tts/TextToSpeechTests.java @@ -28,6 +28,7 @@ import org.mockito.internal.stubbing.StubberImpl; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; import org.mockito.stubbing.Stubber; +import org.mockito.quality.Strictness; import junit.framework.Assert; import java.util.Locale; @@ -210,12 +211,16 @@ public class TextToSpeechTests extends InstrumentationTestCase { } public static abstract class CountDownBehaviour extends StubberImpl { + public CountDownBehaviour(Strictness strictness) { + super(strictness); + } + /** Used to mock methods that return a result. */ public abstract Stubber andReturn(Object result); } public static CountDownBehaviour doCountDown(final CountDownLatch latch) { - return new CountDownBehaviour() { + return new CountDownBehaviour(Strictness.WARN) { @Override public <T> T when(T mock) { return Mockito.doAnswer(new Answer<Void>() { @@ -229,7 +234,7 @@ public class TextToSpeechTests extends InstrumentationTestCase { @Override public Stubber andReturn(final Object result) { - return new StubberImpl() { + return new StubberImpl(Strictness.WARN) { @Override public <T> T when(T mock) { return Mockito.doAnswer(new Answer<Object>() { diff --git a/tests/net/java/android/net/dhcp/DhcpLeaseRepositoryTest.java b/tests/net/java/android/net/dhcp/DhcpLeaseRepositoryTest.java index 590bd6733c9f..7f8e7b5456c2 100644 --- a/tests/net/java/android/net/dhcp/DhcpLeaseRepositoryTest.java +++ b/tests/net/java/android/net/dhcp/DhcpLeaseRepositoryTest.java @@ -32,6 +32,7 @@ import static java.lang.String.format; import static java.net.InetAddress.parseNumericAddress; import android.annotation.NonNull; +import android.annotation.Nullable; import android.net.IpPrefix; import android.net.MacAddress; import android.net.util.SharedLog; @@ -107,7 +108,7 @@ public class DhcpLeaseRepositoryTest { MacAddress newMac = MacAddress.fromBytes(hwAddrBytes); final String hostname = "host_" + i; final DhcpLease lease = mRepo.getOffer(CLIENTID_UNSPEC, newMac, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, hostname); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, hostname); assertNotNull(lease); assertEquals(newMac, lease.getHwAddr()); @@ -115,7 +116,7 @@ public class DhcpLeaseRepositoryTest { assertTrue(format("Duplicate address allocated: %s in %s", lease.getNetAddr(), addrs), addrs.add(lease.getNetAddr())); - mRepo.requestLease(null, newMac, null, lease.getNetAddr(), true, hostname); + requestLeaseSelecting(newMac, lease.getNetAddr(), hostname); } } @@ -129,7 +130,7 @@ public class DhcpLeaseRepositoryTest { try { mRepo.getOffer(null, TEST_MAC_2, - null /* relayAddr */, null /* reqAddr */, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); fail("Should be out of addresses"); } catch (DhcpLeaseRepository.OutOfAddressesException e) { // Expected @@ -145,8 +146,7 @@ public class DhcpLeaseRepositoryTest { // Inside /28, but not available there (first address of the range) final Inet4Address declinedFirstAddrIn28 = parseAddr4("192.168.42.240"); - final DhcpLease reqAddrIn28Lease = mRepo.requestLease( - CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, reqAddrIn28, false, HOSTNAME_NONE); + final DhcpLease reqAddrIn28Lease = requestLeaseSelecting(TEST_MAC_1, reqAddrIn28); mRepo.markLeaseDeclined(declinedAddrIn28); mRepo.markLeaseDeclined(declinedFirstAddrIn28); @@ -154,14 +154,12 @@ public class DhcpLeaseRepositoryTest { final Inet4Address reqAddrIn22 = parseAddr4("192.168.42.3"); final Inet4Address declinedAddrIn22 = parseAddr4("192.168.42.4"); - final DhcpLease reqAddrIn22Lease = mRepo.requestLease( - CLIENTID_UNSPEC, TEST_MAC_3, INET4_ANY, reqAddrIn22, false, HOSTNAME_NONE); + final DhcpLease reqAddrIn22Lease = requestLeaseSelecting(TEST_MAC_3, reqAddrIn22); mRepo.markLeaseDeclined(declinedAddrIn22); // Address that will be reserved in the updateParams call below final Inet4Address reservedAddr = parseAddr4("192.168.42.244"); - final DhcpLease reservedAddrLease = mRepo.requestLease( - CLIENTID_UNSPEC, TEST_MAC_2, INET4_ANY, reservedAddr, false, HOSTNAME_NONE); + final DhcpLease reservedAddrLease = requestLeaseSelecting(TEST_MAC_2, reservedAddr); // Update from /22 to /28 and add another reserved address Set<Inet4Address> newReserved = new HashSet<>(TEST_EXCL_SET); @@ -183,11 +181,11 @@ public class DhcpLeaseRepositoryTest { public void testGetOffer_StableAddress() throws Exception { for (final MacAddress macAddr : new MacAddress[] { TEST_MAC_1, TEST_MAC_2, TEST_MAC_3 }) { final DhcpLease lease = mRepo.getOffer(CLIENTID_UNSPEC, macAddr, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); // Same lease is offered twice final DhcpLease newLease = mRepo.getOffer(CLIENTID_UNSPEC, macAddr, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); assertEquals(lease, newLease); } } @@ -198,17 +196,16 @@ public class DhcpLeaseRepositoryTest { mRepo.updateParams(newPrefix, TEST_EXCL_SET, TEST_LEASE_TIME_MS); DhcpLease lease = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, - INETADDR_UNSPEC, INETADDR_UNSPEC, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); assertTrue(newPrefix.contains(lease.getNetAddr())); } @Test public void testGetOffer_ExistingLease() throws Exception { - mRepo.requestLease( - CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, TEST_INETADDR_1, false, TEST_HOSTNAME_1); + requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_1, TEST_HOSTNAME_1); DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, - INETADDR_UNSPEC, INETADDR_UNSPEC, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); assertEquals(TEST_INETADDR_1, offer.getNetAddr()); assertEquals(TEST_HOSTNAME_1, offer.getHostname()); } @@ -216,12 +213,12 @@ public class DhcpLeaseRepositoryTest { @Test public void testGetOffer_ClientIdHasExistingLease() throws Exception { final byte[] clientId = new byte[] { 1, 2 }; - mRepo.requestLease(clientId, TEST_MAC_1, INET4_ANY, TEST_INETADDR_1, false, - TEST_HOSTNAME_1); + mRepo.requestLease(clientId, TEST_MAC_1, INET4_ANY /* clientAddr */, + INET4_ANY /* relayAddr */, TEST_INETADDR_1 /* reqAddr */, false, TEST_HOSTNAME_1); // Different MAC, but same clientId DhcpLease offer = mRepo.getOffer(clientId, TEST_MAC_2, - INETADDR_UNSPEC, INETADDR_UNSPEC, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); assertEquals(TEST_INETADDR_1, offer.getNetAddr()); assertEquals(TEST_HOSTNAME_1, offer.getHostname()); } @@ -230,12 +227,12 @@ public class DhcpLeaseRepositoryTest { public void testGetOffer_DifferentClientId() throws Exception { final byte[] clientId1 = new byte[] { 1, 2 }; final byte[] clientId2 = new byte[] { 3, 4 }; - mRepo.requestLease(clientId1, TEST_MAC_1, INET4_ANY, TEST_INETADDR_1, false, - TEST_HOSTNAME_1); + mRepo.requestLease(clientId1, TEST_MAC_1, INET4_ANY /* clientAddr */, + INET4_ANY /* relayAddr */, TEST_INETADDR_1 /* reqAddr */, false, TEST_HOSTNAME_1); // Same MAC, different client ID DhcpLease offer = mRepo.getOffer(clientId2, TEST_MAC_1, - INETADDR_UNSPEC, INETADDR_UNSPEC, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); // Obtains a different address assertNotEquals(TEST_INETADDR_1, offer.getNetAddr()); assertEquals(HOSTNAME_NONE, offer.getHostname()); @@ -244,58 +241,57 @@ public class DhcpLeaseRepositoryTest { @Test public void testGetOffer_RequestedAddress() throws Exception { - DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_1, TEST_HOSTNAME_1); + DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY /* relayAddr */, + TEST_INETADDR_1 /* reqAddr */, TEST_HOSTNAME_1); assertEquals(TEST_INETADDR_1, offer.getNetAddr()); assertEquals(TEST_HOSTNAME_1, offer.getHostname()); } @Test public void testGetOffer_RequestedAddressInUse() throws Exception { - mRepo.requestLease( - CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, TEST_INETADDR_1, false, HOSTNAME_NONE); - DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_2, INET4_ANY, - TEST_INETADDR_1, HOSTNAME_NONE); + requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_1); + DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_2, INET4_ANY /* relayAddr */, + TEST_INETADDR_1 /* reqAddr */, HOSTNAME_NONE); assertNotEquals(TEST_INETADDR_1, offer.getNetAddr()); } @Test public void testGetOffer_RequestedAddressReserved() throws Exception { - DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_RESERVED_ADDR, HOSTNAME_NONE); + DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY /* relayAddr */, + TEST_RESERVED_ADDR /* reqAddr */, HOSTNAME_NONE); assertNotEquals(TEST_RESERVED_ADDR, offer.getNetAddr()); } @Test public void testGetOffer_RequestedAddressInvalid() throws Exception { final Inet4Address invalidAddr = parseAddr4("192.168.42.0"); - DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - invalidAddr, HOSTNAME_NONE); + DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY /* relayAddr */, + invalidAddr /* reqAddr */, HOSTNAME_NONE); assertNotEquals(invalidAddr, offer.getNetAddr()); } @Test public void testGetOffer_RequestedAddressOutsideSubnet() throws Exception { final Inet4Address invalidAddr = parseAddr4("192.168.254.2"); - DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - invalidAddr, HOSTNAME_NONE); + DhcpLease offer = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY /* relayAddr */, + invalidAddr /* reqAddr */, HOSTNAME_NONE); assertNotEquals(invalidAddr, offer.getNetAddr()); } - @Test(expected = DhcpLeaseRepository.InvalidAddressException.class) + @Test(expected = DhcpLeaseRepository.InvalidSubnetException.class) public void testGetOffer_RelayInInvalidSubnet() throws Exception { - mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, - parseAddr4("192.168.254.2") /* relayAddr */, INETADDR_UNSPEC, HOSTNAME_NONE); + mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, parseAddr4("192.168.254.2") /* relayAddr */, + INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); } @Test public void testRequestLease_SelectingTwice() throws Exception { - DhcpLease lease1 = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_1, true /* sidSet */, TEST_HOSTNAME_1); + final DhcpLease lease1 = requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_1, + TEST_HOSTNAME_1); // Second request from same client for a different address - DhcpLease lease2 = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_2, true /* sidSet */, TEST_HOSTNAME_2); + final DhcpLease lease2 = requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_2, + TEST_HOSTNAME_2); assertEquals(TEST_INETADDR_1, lease1.getNetAddr()); assertEquals(TEST_HOSTNAME_1, lease1.getHostname()); @@ -304,43 +300,43 @@ public class DhcpLeaseRepositoryTest { assertEquals(TEST_HOSTNAME_2, lease2.getHostname()); // First address freed when client requested a different one: another client can request it - DhcpLease lease3 = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_2, INET4_ANY, - TEST_INETADDR_1, true /* sidSet */, HOSTNAME_NONE); + final DhcpLease lease3 = requestLeaseSelecting(TEST_MAC_2, TEST_INETADDR_1, HOSTNAME_NONE); assertEquals(TEST_INETADDR_1, lease3.getNetAddr()); } @Test(expected = DhcpLeaseRepository.InvalidAddressException.class) public void testRequestLease_SelectingInvalid() throws Exception { - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - parseAddr4("192.168.254.5"), true /* sidSet */, HOSTNAME_NONE); + requestLeaseSelecting(TEST_MAC_1, parseAddr4("192.168.254.5")); } @Test(expected = DhcpLeaseRepository.InvalidAddressException.class) public void testRequestLease_SelectingInUse() throws Exception { - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_1, true /* sidSet */, HOSTNAME_NONE); - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_2, INET4_ANY, - TEST_INETADDR_1, true /* sidSet */, HOSTNAME_NONE); + requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_1); + requestLeaseSelecting(TEST_MAC_2, TEST_INETADDR_1); } @Test(expected = DhcpLeaseRepository.InvalidAddressException.class) public void testRequestLease_SelectingReserved() throws Exception { - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_RESERVED_ADDR, true /* sidSet */, HOSTNAME_NONE); + requestLeaseSelecting(TEST_MAC_1, TEST_RESERVED_ADDR); + } + + @Test(expected = DhcpLeaseRepository.InvalidSubnetException.class) + public void testRequestLease_SelectingRelayInInvalidSubnet() throws Exception { + mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY /* clientAddr */, + parseAddr4("192.168.128.1") /* relayAddr */, TEST_INETADDR_1 /* reqAddr */, + true /* sidSet */, HOSTNAME_NONE); } @Test public void testRequestLease_InitReboot() throws Exception { // Request address once - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_1, true /* sidSet */, HOSTNAME_NONE); + requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_1); final long newTime = TEST_TIME + 100; when(mClock.elapsedRealtime()).thenReturn(newTime); // init-reboot (sidSet == false): verify configuration - DhcpLease lease = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_1, false, HOSTNAME_NONE); + final DhcpLease lease = requestLeaseInitReboot(TEST_MAC_1, TEST_INETADDR_1); assertEquals(TEST_INETADDR_1, lease.getNetAddr()); assertEquals(newTime + TEST_LEASE_TIME_MS, lease.getExpTime()); } @@ -348,18 +344,15 @@ public class DhcpLeaseRepositoryTest { @Test(expected = DhcpLeaseRepository.InvalidAddressException.class) public void testRequestLease_InitRebootWrongAddr() throws Exception { // Request address once - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_1, true /* sidSet */, HOSTNAME_NONE); + requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_1); // init-reboot with different requested address - mRepo.requestLease( - CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, TEST_INETADDR_2, false, HOSTNAME_NONE); + requestLeaseInitReboot(TEST_MAC_1, TEST_INETADDR_2); } @Test public void testRequestLease_InitRebootUnknownAddr() throws Exception { // init-reboot with unknown requested address - DhcpLease lease = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_2, false, HOSTNAME_NONE); + final DhcpLease lease = requestLeaseInitReboot(TEST_MAC_1, TEST_INETADDR_2); // RFC2131 says we should not reply to accommodate other servers, but since we are // authoritative we allow creating the lease to avoid issues with lost lease DB (same as // dnsmasq behavior) @@ -368,22 +361,17 @@ public class DhcpLeaseRepositoryTest { @Test(expected = DhcpLeaseRepository.InvalidAddressException.class) public void testRequestLease_InitRebootWrongSubnet() throws Exception { - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - parseAddr4("192.168.254.2"), false /* sidSet */, HOSTNAME_NONE); + requestLeaseInitReboot(TEST_MAC_1, parseAddr4("192.168.254.2")); } @Test public void testRequestLease_Renewing() throws Exception { - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, - INET4_ANY /* clientAddr */, TEST_INETADDR_1 /* reqAddr */, true, HOSTNAME_NONE); + requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_1); final long newTime = TEST_TIME + 100; when(mClock.elapsedRealtime()).thenReturn(newTime); - // Renewing: clientAddr filled in, no reqAddr - DhcpLease lease = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, - TEST_INETADDR_1 /* clientAddr */, INETADDR_UNSPEC /* reqAddr */, false, - HOSTNAME_NONE); + final DhcpLease lease = requestLeaseRenewing(TEST_MAC_1, TEST_INETADDR_1); assertEquals(TEST_INETADDR_1, lease.getNetAddr()); assertEquals(newTime + TEST_LEASE_TIME_MS, lease.getExpTime()); @@ -393,9 +381,7 @@ public class DhcpLeaseRepositoryTest { public void testRequestLease_RenewingUnknownAddr() throws Exception { final long newTime = TEST_TIME + 100; when(mClock.elapsedRealtime()).thenReturn(newTime); - DhcpLease lease = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, - TEST_INETADDR_1 /* clientAddr */, INETADDR_UNSPEC /* reqAddr */, false, - HOSTNAME_NONE); + final DhcpLease lease = requestLeaseRenewing(TEST_MAC_1, TEST_INETADDR_1); // Allows renewing an unknown address if available assertEquals(TEST_INETADDR_1, lease.getNetAddr()); assertEquals(newTime + TEST_LEASE_TIME_MS, lease.getExpTime()); @@ -403,31 +389,24 @@ public class DhcpLeaseRepositoryTest { @Test(expected = DhcpLeaseRepository.InvalidAddressException.class) public void testRequestLease_RenewingAddrInUse() throws Exception { - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_2, - INET4_ANY /* clientAddr */, TEST_INETADDR_1 /* reqAddr */, true, HOSTNAME_NONE); - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, - TEST_INETADDR_1 /* clientAddr */, INETADDR_UNSPEC /* reqAddr */, false, - HOSTNAME_NONE); + requestLeaseSelecting(TEST_MAC_2, TEST_INETADDR_1); + requestLeaseRenewing(TEST_MAC_1, TEST_INETADDR_1); } @Test(expected = DhcpLeaseRepository.InvalidAddressException.class) public void testRequestLease_RenewingInvalidAddr() throws Exception { - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, parseAddr4("192.168.254.2") /* clientAddr */, - INETADDR_UNSPEC /* reqAddr */, false, HOSTNAME_NONE); + requestLeaseRenewing(TEST_MAC_1, parseAddr4("192.168.254.2")); } @Test public void testReleaseLease() throws Exception { - DhcpLease lease1 = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, - TEST_INETADDR_1, true /* sidSet */, HOSTNAME_NONE); + final DhcpLease lease1 = requestLeaseSelecting(TEST_MAC_1, TEST_INETADDR_1); assertHasLease(lease1); assertTrue(mRepo.releaseLease(CLIENTID_UNSPEC, TEST_MAC_1, TEST_INETADDR_1)); assertNoLease(lease1); - DhcpLease lease2 = mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_2, INET4_ANY, - TEST_INETADDR_1, true /* sidSet */, HOSTNAME_NONE); - + final DhcpLease lease2 = requestLeaseSelecting(TEST_MAC_2, TEST_INETADDR_1); assertEquals(TEST_INETADDR_1, lease2.getNetAddr()); } @@ -440,15 +419,14 @@ public class DhcpLeaseRepositoryTest { public void testReleaseLease_StableOffer() throws Exception { for (MacAddress mac : new MacAddress[] { TEST_MAC_1, TEST_MAC_2, TEST_MAC_3 }) { final DhcpLease lease = mRepo.getOffer(CLIENTID_UNSPEC, mac, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); - mRepo.requestLease( - CLIENTID_UNSPEC, mac, INET4_ANY, lease.getNetAddr(), true, - HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); + + requestLeaseSelecting(mac, lease.getNetAddr()); mRepo.releaseLease(CLIENTID_UNSPEC, mac, lease.getNetAddr()); // Same lease is offered after it was released final DhcpLease newLease = mRepo.getOffer(CLIENTID_UNSPEC, mac, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); assertEquals(lease.getNetAddr(), newLease.getNetAddr()); } } @@ -456,13 +434,13 @@ public class DhcpLeaseRepositoryTest { @Test public void testMarkLeaseDeclined() throws Exception { final DhcpLease lease = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); mRepo.markLeaseDeclined(lease.getNetAddr()); // Same lease is not offered again final DhcpLease newLease = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); assertNotEquals(lease.getNetAddr(), newLease.getNetAddr()); } @@ -475,22 +453,20 @@ public class DhcpLeaseRepositoryTest { mRepo.markLeaseDeclined(TEST_INETADDR_2); // /28 should have 16 addresses, 14 w/o the first/last, 11 w/o excluded addresses - requestAddresses((byte)9); + requestAddresses((byte) 9); // Last 2 addresses: addresses marked declined should be used final DhcpLease firstLease = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_1, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, TEST_HOSTNAME_1); - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_1, INET4_ANY, firstLease.getNetAddr(), true, - HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, TEST_HOSTNAME_1); + requestLeaseSelecting(TEST_MAC_1, firstLease.getNetAddr()); final DhcpLease secondLease = mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_2, - INETADDR_UNSPEC /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, TEST_HOSTNAME_2); - mRepo.requestLease(CLIENTID_UNSPEC, TEST_MAC_2, INET4_ANY, secondLease.getNetAddr(), true, - HOSTNAME_NONE); + INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, TEST_HOSTNAME_2); + requestLeaseSelecting(TEST_MAC_2, secondLease.getNetAddr()); // Now out of addresses try { - mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_3, INETADDR_UNSPEC /* relayAddr */, + mRepo.getOffer(CLIENTID_UNSPEC, TEST_MAC_3, INET4_ANY /* relayAddr */, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE); fail("Repository should be out of addresses and throw"); } catch (DhcpLeaseRepository.OutOfAddressesException e) { /* expected */ } @@ -501,6 +477,50 @@ public class DhcpLeaseRepositoryTest { assertEquals(TEST_HOSTNAME_2, secondLease.getHostname()); } + private DhcpLease requestLease(@NonNull MacAddress macAddr, @NonNull Inet4Address clientAddr, + @Nullable Inet4Address reqAddr, @Nullable String hostname, boolean sidSet) + throws DhcpLeaseRepository.DhcpLeaseException { + return mRepo.requestLease(CLIENTID_UNSPEC, macAddr, clientAddr, INET4_ANY /* relayAddr */, + reqAddr, sidSet, hostname); + } + + /** + * Request a lease simulating a client in the SELECTING state. + */ + private DhcpLease requestLeaseSelecting(@NonNull MacAddress macAddr, + @NonNull Inet4Address reqAddr, @Nullable String hostname) + throws DhcpLeaseRepository.DhcpLeaseException { + return requestLease(macAddr, INET4_ANY /* clientAddr */, reqAddr, hostname, + true /* sidSet */); + } + + /** + * Request a lease simulating a client in the SELECTING state. + */ + private DhcpLease requestLeaseSelecting(@NonNull MacAddress macAddr, + @NonNull Inet4Address reqAddr) throws DhcpLeaseRepository.DhcpLeaseException { + return requestLeaseSelecting(macAddr, reqAddr, HOSTNAME_NONE); + } + + /** + * Request a lease simulating a client in the INIT-REBOOT state. + */ + private DhcpLease requestLeaseInitReboot(@NonNull MacAddress macAddr, + @NonNull Inet4Address reqAddr) throws DhcpLeaseRepository.DhcpLeaseException { + return requestLease(macAddr, INET4_ANY /* clientAddr */, reqAddr, HOSTNAME_NONE, + false /* sidSet */); + } + + /** + * Request a lease simulating a client in the RENEWING state. + */ + private DhcpLease requestLeaseRenewing(@NonNull MacAddress macAddr, + @NonNull Inet4Address clientAddr) throws DhcpLeaseRepository.DhcpLeaseException { + // Renewing: clientAddr filled in, no reqAddr + return requestLease(macAddr, clientAddr, INETADDR_UNSPEC /* reqAddr */, HOSTNAME_NONE, + true /* sidSet */); + } + private void assertNoLease(DhcpLease lease) { assertFalse("Leases contain " + lease, mRepo.getCommittedLeases().contains(lease)); } diff --git a/tests/net/java/android/net/dhcp/DhcpServerTest.java b/tests/net/java/android/net/dhcp/DhcpServerTest.java index 66db5a8ddc50..45a50d9a8b5f 100644 --- a/tests/net/java/android/net/dhcp/DhcpServerTest.java +++ b/tests/net/java/android/net/dhcp/DhcpServerTest.java @@ -216,8 +216,8 @@ public class DhcpServerTest { @Test public void testRequest_Selecting_Ack() throws Exception { when(mRepository.requestLease(isNull() /* clientId */, eq(TEST_CLIENT_MAC), - eq(INADDR_ANY) /* clientAddr */, eq(TEST_CLIENT_ADDR) /* reqAddr */, - eq(true) /* sidSet */, isNull() /* hostname */)) + eq(INADDR_ANY) /* clientAddr */, eq(INADDR_ANY) /* relayAddr */, + eq(TEST_CLIENT_ADDR) /* reqAddr */, eq(true) /* sidSet */, isNull() /* hostname */)) .thenReturn(TEST_LEASE); final DhcpRequestPacket request = makeRequestSelectingPacket(); @@ -231,8 +231,8 @@ public class DhcpServerTest { @Test public void testRequest_Selecting_Nak() throws Exception { when(mRepository.requestLease(isNull(), eq(TEST_CLIENT_MAC), - eq(INADDR_ANY) /* clientAddr */, eq(TEST_CLIENT_ADDR) /* reqAddr */, - eq(true) /* sidSet */, isNull() /* hostname */)) + eq(INADDR_ANY) /* clientAddr */, eq(INADDR_ANY) /* relayAddr */, + eq(TEST_CLIENT_ADDR) /* reqAddr */, eq(true) /* sidSet */, isNull() /* hostname */)) .thenThrow(new InvalidAddressException("Test error")); final DhcpRequestPacket request = makeRequestSelectingPacket(); @@ -248,7 +248,8 @@ public class DhcpServerTest { final DhcpRequestPacket request = makeRequestSelectingPacket(); mServer.processPacket(request, 50000); - verify(mRepository, never()).requestLease(any(), any(), any(), any(), anyBoolean(), any()); + verify(mRepository, never()) + .requestLease(any(), any(), any(), any(), any(), anyBoolean(), any()); verify(mDeps, never()).sendPacket(any(), any(), any()); } diff --git a/tests/net/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachineTest.java b/tests/net/java/android/net/ip/IpServerTest.java index 593465380263..cff0b5469d47 100644 --- a/tests/net/java/com/android/server/connectivity/tethering/TetherInterfaceStateMachineTest.java +++ b/tests/net/java/android/net/ip/IpServerTest.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.server.connectivity.tethering; +package android.net.ip; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -37,9 +37,9 @@ import static android.net.ConnectivityManager.TETHER_ERROR_TETHER_IFACE_ERROR; import static android.net.ConnectivityManager.TETHERING_BLUETOOTH; import static android.net.ConnectivityManager.TETHERING_USB; import static android.net.ConnectivityManager.TETHERING_WIFI; -import static com.android.server.connectivity.tethering.IControlsTethering.STATE_AVAILABLE; -import static com.android.server.connectivity.tethering.IControlsTethering.STATE_TETHERED; -import static com.android.server.connectivity.tethering.IControlsTethering.STATE_UNAVAILABLE; +import static android.net.ip.IpServer.STATE_AVAILABLE; +import static android.net.ip.IpServer.STATE_TETHERED; +import static android.net.ip.IpServer.STATE_UNAVAILABLE; import android.net.INetworkStatsService; import android.net.InterfaceConfiguration; @@ -50,7 +50,6 @@ import android.net.MacAddress; import android.net.RouteInfo; import android.net.dhcp.DhcpServer; import android.net.dhcp.DhcpServingParams; -import android.net.ip.RouterAdvertisementDaemon; import android.net.util.InterfaceParams; import android.net.util.InterfaceSet; import android.net.util.SharedLog; @@ -74,7 +73,7 @@ import org.mockito.MockitoAnnotations; @RunWith(AndroidJUnit4.class) @SmallTest -public class TetherInterfaceStateMachineTest { +public class IpServerTest { private static final String IFACE_NAME = "testnet1"; private static final String UPSTREAM_IFACE = "upstream0"; private static final String UPSTREAM_IFACE2 = "upstream1"; @@ -85,39 +84,38 @@ public class TetherInterfaceStateMachineTest { @Mock private INetworkManagementService mNMService; @Mock private INetworkStatsService mStatsService; - @Mock private IControlsTethering mTetherHelper; + @Mock private IpServer.Callback mCallback; @Mock private InterfaceConfiguration mInterfaceConfiguration; @Mock private SharedLog mSharedLog; @Mock private DhcpServer mDhcpServer; @Mock private RouterAdvertisementDaemon mRaDaemon; - @Mock private TetheringDependencies mTetheringDependencies; + @Mock private IpServer.Dependencies mDependencies; @Captor private ArgumentCaptor<DhcpServingParams> mDhcpParamsCaptor; private final TestLooper mLooper = new TestLooper(); private final ArgumentCaptor<LinkProperties> mLinkPropertiesCaptor = ArgumentCaptor.forClass(LinkProperties.class); - private TetherInterfaceStateMachine mTestedSm; + private IpServer mIpServer; private void initStateMachine(int interfaceType) throws Exception { initStateMachine(interfaceType, false /* usingLegacyDhcp */); } private void initStateMachine(int interfaceType, boolean usingLegacyDhcp) throws Exception { - mTestedSm = new TetherInterfaceStateMachine( + mIpServer = new IpServer( IFACE_NAME, mLooper.getLooper(), interfaceType, mSharedLog, - mNMService, mStatsService, mTetherHelper, usingLegacyDhcp, - mTetheringDependencies); - mTestedSm.start(); + mNMService, mStatsService, mCallback, usingLegacyDhcp, mDependencies); + mIpServer.start(); // Starting the state machine always puts us in a consistent state and notifies // the rest of the world that we've changed from an unknown to available state. mLooper.dispatchAll(); - reset(mNMService, mStatsService, mTetherHelper); + reset(mNMService, mStatsService, mCallback); when(mNMService.getInterfaceConfig(IFACE_NAME)).thenReturn(mInterfaceConfiguration); - when(mTetheringDependencies.makeDhcpServer( + when(mDependencies.makeDhcpServer( any(), any(), mDhcpParamsCaptor.capture(), any())).thenReturn(mDhcpServer); - when(mTetheringDependencies.getRouterAdvertisementDaemon(any())).thenReturn(mRaDaemon); - when(mTetheringDependencies.getInterfaceParams(IFACE_NAME)).thenReturn(TEST_IFACE_PARAMS); + when(mDependencies.getRouterAdvertisementDaemon(any())).thenReturn(mRaDaemon); + when(mDependencies.getInterfaceParams(IFACE_NAME)).thenReturn(TEST_IFACE_PARAMS); when(mRaDaemon.start()).thenReturn(true); } @@ -130,11 +128,11 @@ public class TetherInterfaceStateMachineTest { private void initTetheredStateMachine(int interfaceType, String upstreamIface, boolean usingLegacyDhcp) throws Exception { initStateMachine(interfaceType, usingLegacyDhcp); - dispatchCommand(TetherInterfaceStateMachine.CMD_TETHER_REQUESTED, STATE_TETHERED); + dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED); if (upstreamIface != null) { dispatchTetherConnectionChanged(upstreamIface); } - reset(mNMService, mStatsService, mTetherHelper); + reset(mNMService, mStatsService, mCallback); when(mNMService.getInterfaceConfig(IFACE_NAME)).thenReturn(mInterfaceConfiguration); } @@ -145,34 +143,34 @@ public class TetherInterfaceStateMachineTest { @Test public void startsOutAvailable() { - mTestedSm = new TetherInterfaceStateMachine(IFACE_NAME, mLooper.getLooper(), - TETHERING_BLUETOOTH, mSharedLog, mNMService, mStatsService, mTetherHelper, - false /* usingLegacyDhcp */, mTetheringDependencies); - mTestedSm.start(); + mIpServer = new IpServer(IFACE_NAME, mLooper.getLooper(), + TETHERING_BLUETOOTH, mSharedLog, mNMService, mStatsService, mCallback, + false /* usingLegacyDhcp */, mDependencies); + mIpServer.start(); mLooper.dispatchAll(); - verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR); - verify(mTetherHelper).updateLinkProperties(eq(mTestedSm), any(LinkProperties.class)); - verifyNoMoreInteractions(mTetherHelper, mNMService, mStatsService); + verify(mCallback).updateInterfaceState( + mIpServer, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR); + verify(mCallback).updateLinkProperties(eq(mIpServer), any(LinkProperties.class)); + verifyNoMoreInteractions(mCallback, mNMService, mStatsService); } @Test public void shouldDoNothingUntilRequested() throws Exception { initStateMachine(TETHERING_BLUETOOTH); final int [] NOOP_COMMANDS = { - TetherInterfaceStateMachine.CMD_TETHER_UNREQUESTED, - TetherInterfaceStateMachine.CMD_IP_FORWARDING_ENABLE_ERROR, - TetherInterfaceStateMachine.CMD_IP_FORWARDING_DISABLE_ERROR, - TetherInterfaceStateMachine.CMD_START_TETHERING_ERROR, - TetherInterfaceStateMachine.CMD_STOP_TETHERING_ERROR, - TetherInterfaceStateMachine.CMD_SET_DNS_FORWARDERS_ERROR, - TetherInterfaceStateMachine.CMD_TETHER_CONNECTION_CHANGED + IpServer.CMD_TETHER_UNREQUESTED, + IpServer.CMD_IP_FORWARDING_ENABLE_ERROR, + IpServer.CMD_IP_FORWARDING_DISABLE_ERROR, + IpServer.CMD_START_TETHERING_ERROR, + IpServer.CMD_STOP_TETHERING_ERROR, + IpServer.CMD_SET_DNS_FORWARDERS_ERROR, + IpServer.CMD_TETHER_CONNECTION_CHANGED }; for (int command : NOOP_COMMANDS) { // None of these commands should trigger us to request action from // the rest of the system. dispatchCommand(command); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } } @@ -180,57 +178,57 @@ public class TetherInterfaceStateMachineTest { public void handlesImmediateInterfaceDown() throws Exception { initStateMachine(TETHERING_BLUETOOTH); - dispatchCommand(TetherInterfaceStateMachine.CMD_INTERFACE_DOWN); - verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_UNAVAILABLE, TETHER_ERROR_NO_ERROR); - verify(mTetherHelper).updateLinkProperties(eq(mTestedSm), any(LinkProperties.class)); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + dispatchCommand(IpServer.CMD_INTERFACE_DOWN); + verify(mCallback).updateInterfaceState( + mIpServer, STATE_UNAVAILABLE, TETHER_ERROR_NO_ERROR); + verify(mCallback).updateLinkProperties(eq(mIpServer), any(LinkProperties.class)); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } @Test public void canBeTethered() throws Exception { initStateMachine(TETHERING_BLUETOOTH); - dispatchCommand(TetherInterfaceStateMachine.CMD_TETHER_REQUESTED, STATE_TETHERED); - InOrder inOrder = inOrder(mTetherHelper, mNMService); + dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED); + InOrder inOrder = inOrder(mCallback, mNMService); inOrder.verify(mNMService).tetherInterface(IFACE_NAME); - inOrder.verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_TETHERED, TETHER_ERROR_NO_ERROR); - inOrder.verify(mTetherHelper).updateLinkProperties( - eq(mTestedSm), any(LinkProperties.class)); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + inOrder.verify(mCallback).updateInterfaceState( + mIpServer, STATE_TETHERED, TETHER_ERROR_NO_ERROR); + inOrder.verify(mCallback).updateLinkProperties( + eq(mIpServer), any(LinkProperties.class)); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } @Test public void canUnrequestTethering() throws Exception { initTetheredStateMachine(TETHERING_BLUETOOTH, null); - dispatchCommand(TetherInterfaceStateMachine.CMD_TETHER_UNREQUESTED); - InOrder inOrder = inOrder(mNMService, mStatsService, mTetherHelper); + dispatchCommand(IpServer.CMD_TETHER_UNREQUESTED); + InOrder inOrder = inOrder(mNMService, mStatsService, mCallback); inOrder.verify(mNMService).untetherInterface(IFACE_NAME); inOrder.verify(mNMService).setInterfaceConfig(eq(IFACE_NAME), any()); - inOrder.verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR); - inOrder.verify(mTetherHelper).updateLinkProperties( - eq(mTestedSm), any(LinkProperties.class)); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + inOrder.verify(mCallback).updateInterfaceState( + mIpServer, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR); + inOrder.verify(mCallback).updateLinkProperties( + eq(mIpServer), any(LinkProperties.class)); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } @Test public void canBeTetheredAsUsb() throws Exception { initStateMachine(TETHERING_USB); - dispatchCommand(TetherInterfaceStateMachine.CMD_TETHER_REQUESTED, STATE_TETHERED); - InOrder inOrder = inOrder(mTetherHelper, mNMService); + dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED); + InOrder inOrder = inOrder(mCallback, mNMService); inOrder.verify(mNMService).getInterfaceConfig(IFACE_NAME); inOrder.verify(mNMService).setInterfaceConfig(IFACE_NAME, mInterfaceConfiguration); inOrder.verify(mNMService).tetherInterface(IFACE_NAME); - inOrder.verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_TETHERED, TETHER_ERROR_NO_ERROR); - inOrder.verify(mTetherHelper).updateLinkProperties( - eq(mTestedSm), mLinkPropertiesCaptor.capture()); + inOrder.verify(mCallback).updateInterfaceState( + mIpServer, STATE_TETHERED, TETHER_ERROR_NO_ERROR); + inOrder.verify(mCallback).updateLinkProperties( + eq(mIpServer), mLinkPropertiesCaptor.capture()); assertIPv4AddressAndDirectlyConnectedRoute(mLinkPropertiesCaptor.getValue()); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } @Test @@ -243,7 +241,7 @@ public class TetherInterfaceStateMachineTest { InOrder inOrder = inOrder(mNMService); inOrder.verify(mNMService).enableNat(IFACE_NAME, UPSTREAM_IFACE); inOrder.verify(mNMService).startInterfaceForwarding(IFACE_NAME, UPSTREAM_IFACE); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } @Test @@ -257,7 +255,7 @@ public class TetherInterfaceStateMachineTest { inOrder.verify(mNMService).disableNat(IFACE_NAME, UPSTREAM_IFACE); inOrder.verify(mNMService).enableNat(IFACE_NAME, UPSTREAM_IFACE2); inOrder.verify(mNMService).startInterfaceForwarding(IFACE_NAME, UPSTREAM_IFACE2); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } @Test @@ -300,18 +298,18 @@ public class TetherInterfaceStateMachineTest { public void canUnrequestTetheringWithUpstream() throws Exception { initTetheredStateMachine(TETHERING_BLUETOOTH, UPSTREAM_IFACE); - dispatchCommand(TetherInterfaceStateMachine.CMD_TETHER_UNREQUESTED); - InOrder inOrder = inOrder(mNMService, mStatsService, mTetherHelper); + dispatchCommand(IpServer.CMD_TETHER_UNREQUESTED); + InOrder inOrder = inOrder(mNMService, mStatsService, mCallback); inOrder.verify(mStatsService).forceUpdate(); inOrder.verify(mNMService).stopInterfaceForwarding(IFACE_NAME, UPSTREAM_IFACE); inOrder.verify(mNMService).disableNat(IFACE_NAME, UPSTREAM_IFACE); inOrder.verify(mNMService).untetherInterface(IFACE_NAME); inOrder.verify(mNMService).setInterfaceConfig(eq(IFACE_NAME), any()); - inOrder.verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR); - inOrder.verify(mTetherHelper).updateLinkProperties( - eq(mTestedSm), any(LinkProperties.class)); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + inOrder.verify(mCallback).updateInterfaceState( + mIpServer, STATE_AVAILABLE, TETHER_ERROR_NO_ERROR); + inOrder.verify(mCallback).updateLinkProperties( + eq(mIpServer), any(LinkProperties.class)); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } @Test @@ -322,15 +320,15 @@ public class TetherInterfaceStateMachineTest { if (shouldThrow) { doThrow(RemoteException.class).when(mNMService).untetherInterface(IFACE_NAME); } - dispatchCommand(TetherInterfaceStateMachine.CMD_INTERFACE_DOWN); - InOrder usbTeardownOrder = inOrder(mNMService, mInterfaceConfiguration, mTetherHelper); + dispatchCommand(IpServer.CMD_INTERFACE_DOWN); + InOrder usbTeardownOrder = inOrder(mNMService, mInterfaceConfiguration, mCallback); usbTeardownOrder.verify(mInterfaceConfiguration).setInterfaceDown(); usbTeardownOrder.verify(mNMService).setInterfaceConfig( IFACE_NAME, mInterfaceConfiguration); - usbTeardownOrder.verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_UNAVAILABLE, TETHER_ERROR_NO_ERROR); - usbTeardownOrder.verify(mTetherHelper).updateLinkProperties( - eq(mTestedSm), mLinkPropertiesCaptor.capture()); + usbTeardownOrder.verify(mCallback).updateInterfaceState( + mIpServer, STATE_UNAVAILABLE, TETHER_ERROR_NO_ERROR); + usbTeardownOrder.verify(mCallback).updateLinkProperties( + eq(mIpServer), mLinkPropertiesCaptor.capture()); assertNoAddressesNorRoutes(mLinkPropertiesCaptor.getValue()); } } @@ -340,15 +338,15 @@ public class TetherInterfaceStateMachineTest { initStateMachine(TETHERING_USB); doThrow(RemoteException.class).when(mNMService).tetherInterface(IFACE_NAME); - dispatchCommand(TetherInterfaceStateMachine.CMD_TETHER_REQUESTED, STATE_TETHERED); - InOrder usbTeardownOrder = inOrder(mNMService, mInterfaceConfiguration, mTetherHelper); + dispatchCommand(IpServer.CMD_TETHER_REQUESTED, STATE_TETHERED); + InOrder usbTeardownOrder = inOrder(mNMService, mInterfaceConfiguration, mCallback); usbTeardownOrder.verify(mInterfaceConfiguration).setInterfaceDown(); usbTeardownOrder.verify(mNMService).setInterfaceConfig( IFACE_NAME, mInterfaceConfiguration); - usbTeardownOrder.verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_AVAILABLE, TETHER_ERROR_TETHER_IFACE_ERROR); - usbTeardownOrder.verify(mTetherHelper).updateLinkProperties( - eq(mTestedSm), mLinkPropertiesCaptor.capture()); + usbTeardownOrder.verify(mCallback).updateInterfaceState( + mIpServer, STATE_AVAILABLE, TETHER_ERROR_TETHER_IFACE_ERROR); + usbTeardownOrder.verify(mCallback).updateLinkProperties( + eq(mIpServer), mLinkPropertiesCaptor.capture()); assertNoAddressesNorRoutes(mLinkPropertiesCaptor.getValue()); } @@ -358,13 +356,13 @@ public class TetherInterfaceStateMachineTest { doThrow(RemoteException.class).when(mNMService).enableNat(anyString(), anyString()); dispatchTetherConnectionChanged(UPSTREAM_IFACE); - InOrder usbTeardownOrder = inOrder(mNMService, mInterfaceConfiguration, mTetherHelper); + InOrder usbTeardownOrder = inOrder(mNMService, mInterfaceConfiguration, mCallback); usbTeardownOrder.verify(mInterfaceConfiguration).setInterfaceDown(); usbTeardownOrder.verify(mNMService).setInterfaceConfig(IFACE_NAME, mInterfaceConfiguration); - usbTeardownOrder.verify(mTetherHelper).updateInterfaceState( - mTestedSm, STATE_AVAILABLE, TETHER_ERROR_ENABLE_NAT_ERROR); - usbTeardownOrder.verify(mTetherHelper).updateLinkProperties( - eq(mTestedSm), mLinkPropertiesCaptor.capture()); + usbTeardownOrder.verify(mCallback).updateInterfaceState( + mIpServer, STATE_AVAILABLE, TETHER_ERROR_ENABLE_NAT_ERROR); + usbTeardownOrder.verify(mCallback).updateLinkProperties( + eq(mIpServer), mLinkPropertiesCaptor.capture()); assertNoAddressesNorRoutes(mLinkPropertiesCaptor.getValue()); } @@ -372,11 +370,11 @@ public class TetherInterfaceStateMachineTest { public void ignoresDuplicateUpstreamNotifications() throws Exception { initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); for (int i = 0; i < 5; i++) { dispatchTetherConnectionChanged(UPSTREAM_IFACE); - verifyNoMoreInteractions(mNMService, mStatsService, mTetherHelper); + verifyNoMoreInteractions(mNMService, mStatsService, mCallback); } } @@ -401,11 +399,11 @@ public class TetherInterfaceStateMachineTest { initTetheredStateMachine(TETHERING_WIFI, UPSTREAM_IFACE, true /* usingLegacyDhcp */); dispatchTetherConnectionChanged(UPSTREAM_IFACE); - verify(mTetheringDependencies, never()).makeDhcpServer(any(), any(), any(), any()); + verify(mDependencies, never()).makeDhcpServer(any(), any(), any(), any()); } private void assertDhcpStarted(IpPrefix expectedPrefix) { - verify(mTetheringDependencies, times(1)).makeDhcpServer( + verify(mDependencies, times(1)).makeDhcpServer( eq(mLooper.getLooper()), eq(TEST_IFACE_PARAMS), any(), eq(mSharedLog)); verify(mDhcpServer, times(1)).start(); final DhcpServingParams params = mDhcpParamsCaptor.getValue(); @@ -422,21 +420,21 @@ public class TetherInterfaceStateMachineTest { /** * Send a command to the state machine under test, and run the event loop to idle. * - * @param command One of the TetherInterfaceStateMachine.CMD_* constants. + * @param command One of the IpServer.CMD_* constants. * @param arg1 An additional argument to pass. */ private void dispatchCommand(int command, int arg1) { - mTestedSm.sendMessage(command, arg1); + mIpServer.sendMessage(command, arg1); mLooper.dispatchAll(); } /** * Send a command to the state machine under test, and run the event loop to idle. * - * @param command One of the TetherInterfaceStateMachine.CMD_* constants. + * @param command One of the IpServer.CMD_* constants. */ private void dispatchCommand(int command) { - mTestedSm.sendMessage(command); + mIpServer.sendMessage(command); mLooper.dispatchAll(); } @@ -447,7 +445,7 @@ public class TetherInterfaceStateMachineTest { * @param upstreamIface String name of upstream interface (or null) */ private void dispatchTetherConnectionChanged(String upstreamIface) { - mTestedSm.sendMessage(TetherInterfaceStateMachine.CMD_TETHER_CONNECTION_CHANGED, + mIpServer.sendMessage(IpServer.CMD_TETHER_CONNECTION_CHANGED, new InterfaceSet(upstreamIface)); mLooper.dispatchAll(); } diff --git a/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java b/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java index 102cb7c77055..99a5a69213fa 100644 --- a/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java +++ b/tests/net/java/com/android/server/IpSecServiceParameterizedTest.java @@ -41,9 +41,9 @@ import android.net.Network; import android.net.NetworkUtils; import android.os.Binder; import android.os.ParcelFileDescriptor; -import android.test.mock.MockContext; import android.support.test.filters.SmallTest; import android.system.Os; +import android.test.mock.MockContext; import java.net.Socket; import java.util.Arrays; @@ -121,6 +121,7 @@ public class IpSecServiceParameterizedTest { IpSecService.IpSecServiceConfiguration mMockIpSecSrvConfig; IpSecService mIpSecService; Network fakeNetwork = new Network(0xAB); + int mUid = Os.getuid(); private static final IpSecAlgorithm AUTH_ALGO = new IpSecAlgorithm(IpSecAlgorithm.AUTH_HMAC_SHA256, AUTH_KEY, AUTH_KEY.length * 4); @@ -181,7 +182,7 @@ public class IpSecServiceParameterizedTest { verify(mMockNetd) .ipSecDeleteSecurityAssociation( - eq(spiResp.resourceId), + eq(mUid), anyString(), anyString(), eq(TEST_SPI), @@ -189,8 +190,7 @@ public class IpSecServiceParameterizedTest { anyInt()); // Verify quota and RefcountedResource objects cleaned up - IpSecService.UserRecord userRecord = - mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid()); + IpSecService.UserRecord userRecord = mIpSecService.mUserResourceTracker.getUserRecord(mUid); assertEquals(0, userRecord.mSpiQuotaTracker.mCurrent); try { userRecord.mSpiRecords.getRefcountedResourceOrThrow(spiResp.resourceId); @@ -209,8 +209,7 @@ public class IpSecServiceParameterizedTest { mIpSecService.allocateSecurityParameterIndex( mDestinationAddr, TEST_SPI, new Binder()); - IpSecService.UserRecord userRecord = - mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid()); + IpSecService.UserRecord userRecord = mIpSecService.mUserResourceTracker.getUserRecord(mUid); IpSecService.RefcountedResource refcountedRecord = userRecord.mSpiRecords.getRefcountedResourceOrThrow(spiResp.resourceId); @@ -218,7 +217,7 @@ public class IpSecServiceParameterizedTest { verify(mMockNetd) .ipSecDeleteSecurityAssociation( - eq(spiResp.resourceId), + eq(mUid), anyString(), anyString(), eq(TEST_SPI), @@ -270,7 +269,7 @@ public class IpSecServiceParameterizedTest { verify(mMockNetd) .ipSecAddSecurityAssociation( - eq(createTransformResp.resourceId), + eq(mUid), anyInt(), anyString(), anyString(), @@ -305,7 +304,7 @@ public class IpSecServiceParameterizedTest { verify(mMockNetd) .ipSecAddSecurityAssociation( - eq(createTransformResp.resourceId), + eq(mUid), anyInt(), anyString(), anyString(), @@ -361,13 +360,12 @@ public class IpSecServiceParameterizedTest { IpSecTransformResponse createTransformResp = mIpSecService.createTransform(ipSecConfig, new Binder(), "blessedPackage"); - IpSecService.UserRecord userRecord = - mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid()); + IpSecService.UserRecord userRecord = mIpSecService.mUserResourceTracker.getUserRecord(mUid); assertEquals(1, userRecord.mSpiQuotaTracker.mCurrent); mIpSecService.releaseSecurityParameterIndex(ipSecConfig.getSpiResourceId()); verify(mMockNetd, times(0)) .ipSecDeleteSecurityAssociation( - eq(createTransformResp.resourceId), + eq(mUid), anyString(), anyString(), eq(TEST_SPI), @@ -389,7 +387,7 @@ public class IpSecServiceParameterizedTest { verify(mMockNetd, times(1)) .ipSecDeleteSecurityAssociation( - eq(createTransformResp.resourceId), + eq(mUid), anyString(), anyString(), eq(TEST_SPI), @@ -397,8 +395,7 @@ public class IpSecServiceParameterizedTest { anyInt()); // Verify quota and RefcountedResource objects cleaned up - IpSecService.UserRecord userRecord = - mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid()); + IpSecService.UserRecord userRecord = mIpSecService.mUserResourceTracker.getUserRecord(mUid); assertEquals(0, userRecord.mTransformQuotaTracker.mCurrent); assertEquals(1, userRecord.mSpiQuotaTracker.mCurrent); @@ -433,8 +430,7 @@ public class IpSecServiceParameterizedTest { IpSecTransformResponse createTransformResp = mIpSecService.createTransform(ipSecConfig, new Binder(), "blessedPackage"); - IpSecService.UserRecord userRecord = - mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid()); + IpSecService.UserRecord userRecord = mIpSecService.mUserResourceTracker.getUserRecord(mUid); IpSecService.RefcountedResource refcountedRecord = userRecord.mTransformRecords.getRefcountedResourceOrThrow( createTransformResp.resourceId); @@ -443,7 +439,7 @@ public class IpSecServiceParameterizedTest { verify(mMockNetd) .ipSecDeleteSecurityAssociation( - eq(createTransformResp.resourceId), + eq(mUid), anyString(), anyString(), eq(TEST_SPI), @@ -477,7 +473,7 @@ public class IpSecServiceParameterizedTest { verify(mMockNetd) .ipSecApplyTransportModeTransform( eq(pfd.getFileDescriptor()), - eq(resourceId), + eq(mUid), eq(IpSecManager.DIRECTION_OUT), anyString(), anyString(), @@ -509,8 +505,7 @@ public class IpSecServiceParameterizedTest { createAndValidateTunnel(mSourceAddr, mDestinationAddr, "blessedPackage"); // Check that we have stored the tracking object, and retrieve it - IpSecService.UserRecord userRecord = - mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid()); + IpSecService.UserRecord userRecord = mIpSecService.mUserResourceTracker.getUserRecord(mUid); IpSecService.RefcountedResource refcountedRecord = userRecord.mTunnelInterfaceRecords.getRefcountedResourceOrThrow( createTunnelResp.resourceId); @@ -530,8 +525,7 @@ public class IpSecServiceParameterizedTest { IpSecTunnelInterfaceResponse createTunnelResp = createAndValidateTunnel(mSourceAddr, mDestinationAddr, "blessedPackage"); - IpSecService.UserRecord userRecord = - mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid()); + IpSecService.UserRecord userRecord = mIpSecService.mUserResourceTracker.getUserRecord(mUid); mIpSecService.deleteTunnelInterface(createTunnelResp.resourceId, "blessedPackage"); @@ -551,8 +545,7 @@ public class IpSecServiceParameterizedTest { IpSecTunnelInterfaceResponse createTunnelResp = createAndValidateTunnel(mSourceAddr, mDestinationAddr, "blessedPackage"); - IpSecService.UserRecord userRecord = - mIpSecService.mUserResourceTracker.getUserRecord(Os.getuid()); + IpSecService.UserRecord userRecord = mIpSecService.mUserResourceTracker.getUserRecord(mUid); IpSecService.RefcountedResource refcountedRecord = userRecord.mTunnelInterfaceRecords.getRefcountedResourceOrThrow( createTunnelResp.resourceId); diff --git a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java index f025f41f292b..4dc63f249a52 100644 --- a/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java +++ b/tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java @@ -21,7 +21,9 @@ import static android.Manifest.permission.CHANGE_WIFI_STATE; import static android.Manifest.permission.CONNECTIVITY_INTERNAL; import static android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS; import static android.Manifest.permission.NETWORK_STACK; -import static android.content.pm.ApplicationInfo.FLAG_SYSTEM; +import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_OEM; +import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_PRODUCT; +import static android.content.pm.ApplicationInfo.PRIVATE_FLAG_VENDOR; import static android.content.pm.PackageManager.GET_PERMISSIONS; import static org.junit.Assert.assertFalse; @@ -34,6 +36,7 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.os.Build; import android.support.test.filters.SmallTest; import android.support.test.runner.AndroidJUnit4; @@ -48,6 +51,10 @@ import org.mockito.MockitoAnnotations; public class PermissionMonitorTest { private static final int MOCK_UID = 10001; private static final String[] MOCK_PACKAGE_NAMES = new String[] { "com.foo.bar" }; + private static final String PARTITION_SYSTEM = "system"; + private static final String PARTITION_OEM = "oem"; + private static final String PARTITION_PRODUCT = "product"; + private static final String PARTITION_VENDOR = "vendor"; @Mock private Context mContext; @Mock private PackageManager mPackageManager; @@ -62,39 +69,53 @@ public class PermissionMonitorTest { mPermissionMonitor = new PermissionMonitor(mContext, null); } - private void expectPermission(String[] permissions, boolean preinstalled) throws Exception { - final PackageInfo packageInfo = packageInfoWithPermissions(permissions, preinstalled); + private void expectPermission(String[] permissions, String partition, + int targetSdkVersion) throws Exception { + final PackageInfo packageInfo = packageInfoWithPermissions(permissions, partition); + packageInfo.applicationInfo.targetSdkVersion = targetSdkVersion; when(mPackageManager.getPackageInfoAsUser( eq(MOCK_PACKAGE_NAMES[0]), eq(GET_PERMISSIONS), anyInt())).thenReturn(packageInfo); } - private PackageInfo packageInfoWithPermissions(String[] permissions, boolean preinstalled) { + private PackageInfo packageInfoWithPermissions(String[] permissions, String partition) { final PackageInfo packageInfo = new PackageInfo(); packageInfo.requestedPermissions = permissions; packageInfo.applicationInfo = new ApplicationInfo(); - packageInfo.applicationInfo.flags = preinstalled ? FLAG_SYSTEM : 0; + int privateFlags = 0; + switch (partition) { + case PARTITION_OEM: + privateFlags = PRIVATE_FLAG_OEM; + break; + case PARTITION_PRODUCT: + privateFlags = PRIVATE_FLAG_PRODUCT; + break; + case PARTITION_VENDOR: + privateFlags = PRIVATE_FLAG_VENDOR; + break; + } + packageInfo.applicationInfo.privateFlags = privateFlags; return packageInfo; } @Test public void testHasPermission() { - PackageInfo app = packageInfoWithPermissions(new String[] {}, false); + PackageInfo app = packageInfoWithPermissions(new String[] {}, PARTITION_SYSTEM); assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); assertFalse(mPermissionMonitor.hasPermission(app, NETWORK_STACK)); assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_INTERNAL)); app = packageInfoWithPermissions(new String[] { - CHANGE_NETWORK_STATE, NETWORK_STACK - }, false); + CHANGE_NETWORK_STATE, NETWORK_STACK + }, PARTITION_SYSTEM); assertTrue(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); assertTrue(mPermissionMonitor.hasPermission(app, NETWORK_STACK)); assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); assertFalse(mPermissionMonitor.hasPermission(app, CONNECTIVITY_INTERNAL)); app = packageInfoWithPermissions(new String[] { - CONNECTIVITY_USE_RESTRICTED_NETWORKS, CONNECTIVITY_INTERNAL - }, false); + CONNECTIVITY_USE_RESTRICTED_NETWORKS, CONNECTIVITY_INTERNAL + }, PARTITION_SYSTEM); assertFalse(mPermissionMonitor.hasPermission(app, CHANGE_NETWORK_STATE)); assertFalse(mPermissionMonitor.hasPermission(app, NETWORK_STACK)); assertTrue(mPermissionMonitor.hasPermission(app, CONNECTIVITY_USE_RESTRICTED_NETWORKS)); @@ -102,35 +123,64 @@ public class PermissionMonitorTest { } @Test - public void testIsPreinstalledSystemApp() { - PackageInfo app = packageInfoWithPermissions(new String[] {}, false); - assertFalse(mPermissionMonitor.isPreinstalledSystemApp(app)); - - app = packageInfoWithPermissions(new String[] {}, true); - assertTrue(mPermissionMonitor.isPreinstalledSystemApp(app)); + public void testIsVendorApp() { + PackageInfo app = packageInfoWithPermissions(new String[] {}, PARTITION_SYSTEM); + assertFalse(mPermissionMonitor.isVendorApp(app.applicationInfo)); + app = packageInfoWithPermissions(new String[] {}, PARTITION_OEM); + assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo)); + app = packageInfoWithPermissions(new String[] {}, PARTITION_PRODUCT); + assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo)); + app = packageInfoWithPermissions(new String[] {}, PARTITION_VENDOR); + assertTrue(mPermissionMonitor.isVendorApp(app.applicationInfo)); } @Test public void testHasUseBackgroundNetworksPermission() throws Exception { - expectPermission(new String[] { CHANGE_NETWORK_STATE }, false); + expectPermission(new String[] { CHANGE_NETWORK_STATE }, + PARTITION_SYSTEM, Build.VERSION_CODES.P); assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); - - expectPermission(new String[] { NETWORK_STACK, CONNECTIVITY_INTERNAL }, false); + expectPermission(new String[] { NETWORK_STACK }, PARTITION_SYSTEM, Build.VERSION_CODES.P); assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); - - // TODO : make this false when b/31479477 is fixed - expectPermission(new String[] {}, true); + expectPermission(new String[] { CONNECTIVITY_INTERNAL }, + PARTITION_SYSTEM, Build.VERSION_CODES.P); assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); - expectPermission(new String[] { CHANGE_WIFI_STATE }, true); + expectPermission(new String[] { CONNECTIVITY_USE_RESTRICTED_NETWORKS }, + PARTITION_SYSTEM, Build.VERSION_CODES.P); assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); - expectPermission(new String[] { NETWORK_STACK, CONNECTIVITY_INTERNAL }, true); + expectPermission(new String[] { CHANGE_NETWORK_STATE }, + PARTITION_VENDOR, Build.VERSION_CODES.P); + assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] { NETWORK_STACK }, + PARTITION_VENDOR, Build.VERSION_CODES.P); + assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] { CONNECTIVITY_INTERNAL }, + PARTITION_VENDOR, Build.VERSION_CODES.P); + assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] { CONNECTIVITY_USE_RESTRICTED_NETWORKS }, + PARTITION_VENDOR, Build.VERSION_CODES.P); assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); - expectPermission(new String[] {}, false); + expectPermission(new String[] {}, PARTITION_SYSTEM, Build.VERSION_CODES.P); assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] { CHANGE_WIFI_STATE }, + PARTITION_SYSTEM, Build.VERSION_CODES.P); + assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] {}, PARTITION_VENDOR, Build.VERSION_CODES.P); + assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] { CHANGE_WIFI_STATE }, + PARTITION_VENDOR, Build.VERSION_CODES.P); + assertTrue(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); - expectPermission(new String[] { CHANGE_WIFI_STATE }, false); + expectPermission(new String[] {}, PARTITION_SYSTEM, Build.VERSION_CODES.Q); + assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] { CHANGE_WIFI_STATE }, + PARTITION_SYSTEM, Build.VERSION_CODES.Q); + assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] {}, PARTITION_VENDOR, Build.VERSION_CODES.Q); + assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); + expectPermission(new String[] { CHANGE_WIFI_STATE }, + PARTITION_VENDOR, Build.VERSION_CODES.Q); assertFalse(mPermissionMonitor.hasUseBackgroundNetworksPermission(MOCK_UID)); } } diff --git a/tests/net/java/com/android/server/connectivity/TetheringTest.java b/tests/net/java/com/android/server/connectivity/TetheringTest.java index 0d3b8e4a0452..40d5544dccd8 100644 --- a/tests/net/java/com/android/server/connectivity/TetheringTest.java +++ b/tests/net/java/com/android/server/connectivity/TetheringTest.java @@ -75,6 +75,7 @@ import android.net.NetworkRequest; import android.net.NetworkState; import android.net.NetworkUtils; import android.net.RouteInfo; +import android.net.ip.IpServer; import android.net.ip.RouterAdvertisementDaemon; import android.net.util.InterfaceParams; import android.net.util.NetworkConstants; @@ -99,10 +100,8 @@ import com.android.internal.util.ArrayUtils; import com.android.internal.util.StateMachine; import com.android.internal.util.test.BroadcastInterceptingContext; import com.android.internal.util.test.FakeSettingsProvider; -import com.android.server.connectivity.tethering.IControlsTethering; import com.android.server.connectivity.tethering.IPv6TetheringCoordinator; import com.android.server.connectivity.tethering.OffloadHardwareInterface; -import com.android.server.connectivity.tethering.TetherInterfaceStateMachine; import com.android.server.connectivity.tethering.TetheringDependencies; import com.android.server.connectivity.tethering.UpstreamNetworkMonitor; @@ -190,7 +189,7 @@ public class TetheringTest { public class MockTetheringDependencies extends TetheringDependencies { StateMachine upstreamNetworkMonitorMasterSM; - ArrayList<TetherInterfaceStateMachine> ipv6CoordinatorNotifyList; + ArrayList<IpServer> ipv6CoordinatorNotifyList; int isTetheringSupportedCalls; public void reset() { @@ -213,29 +212,35 @@ public class TetheringTest { @Override public IPv6TetheringCoordinator getIPv6TetheringCoordinator( - ArrayList<TetherInterfaceStateMachine> notifyList, SharedLog log) { + ArrayList<IpServer> notifyList, SharedLog log) { ipv6CoordinatorNotifyList = notifyList; return mIPv6TetheringCoordinator; } @Override - public RouterAdvertisementDaemon getRouterAdvertisementDaemon(InterfaceParams ifParams) { - return mRouterAdvertisementDaemon; - } - - @Override - public INetd getNetdService() { - return mNetd; - } - - @Override - public InterfaceParams getInterfaceParams(String ifName) { - final String[] ifaces = new String[] { TEST_USB_IFNAME, TEST_WLAN_IFNAME, - TEST_MOBILE_IFNAME }; - final int index = ArrayUtils.indexOf(ifaces, ifName); - assertTrue("Non-mocked interface: " + ifName, index >= 0); - return new InterfaceParams(ifName, index + IFINDEX_OFFSET, - MacAddress.ALL_ZEROS_ADDRESS); + public IpServer.Dependencies getIpServerDependencies() { + return new IpServer.Dependencies() { + @Override + public RouterAdvertisementDaemon getRouterAdvertisementDaemon( + InterfaceParams ifParams) { + return mRouterAdvertisementDaemon; + } + + @Override + public InterfaceParams getInterfaceParams(String ifName) { + final String[] ifaces = new String[] { + TEST_USB_IFNAME, TEST_WLAN_IFNAME, TEST_MOBILE_IFNAME }; + final int index = ArrayUtils.indexOf(ifaces, ifName); + assertTrue("Non-mocked interface: " + ifName, index >= 0); + return new InterfaceParams(ifName, index + IFINDEX_OFFSET, + MacAddress.ALL_ZEROS_ADDRESS); + } + + @Override + public INetd getNetdService() { + return mNetd; + } + }; } @Override @@ -458,9 +463,9 @@ public class TetheringTest { sendWifiApStateChanged(WIFI_AP_STATE_ENABLED); mLooper.dispatchAll(); - // If, and only if, Tethering received an interface status changed - // then it creates a TetherInterfaceStateMachine and sends out a - // broadcast indicating that the interface is "available". + // If, and only if, Tethering received an interface status changed then + // it creates a IpServer and sends out a broadcast indicating that the + // interface is "available". if (emulateInterfaceStatusChanged) { assertEquals(1, mTetheringDependencies.isTetheringSupportedCalls); verifyTetheringBroadcast(TEST_WLAN_IFNAME, EXTRA_AVAILABLE_TETHER); @@ -557,18 +562,18 @@ public class TetheringTest { } /** - * Send CMD_IPV6_TETHER_UPDATE to TISMs as would be done by IPv6TetheringCoordinator. + * Send CMD_IPV6_TETHER_UPDATE to IpServers as would be done by IPv6TetheringCoordinator. */ private void sendIPv6TetherUpdates(NetworkState upstreamState) { // IPv6TetheringCoordinator must have been notified of downstream verify(mIPv6TetheringCoordinator, times(1)).addActiveDownstream( argThat(sm -> sm.linkProperties().getInterfaceName().equals(TEST_USB_IFNAME)), - eq(IControlsTethering.STATE_TETHERED)); + eq(IpServer.STATE_TETHERED)); - for (TetherInterfaceStateMachine tism : + for (IpServer ipSrv : mTetheringDependencies.ipv6CoordinatorNotifyList) { NetworkState ipv6OnlyState = buildMobileUpstreamState(false, true, false); - tism.sendMessage(TetherInterfaceStateMachine.CMD_IPV6_TETHER_UPDATE, 0, 0, + ipSrv.sendMessage(IpServer.CMD_IPV6_TETHER_UPDATE, 0, 0, upstreamState.linkProperties.isIPv6Provisioned() ? ipv6OnlyState.linkProperties : null); @@ -812,7 +817,7 @@ public class TetheringTest { // We verify get/set called thrice here: once for setup and twice during // teardown because all events happen over the course of the single - // dispatchAll() above. Note that once the TISM IPv4 address config + // dispatchAll() above. Note that once the IpServer IPv4 address config // code is refactored the two calls during shutdown will revert to one. verify(mNMService, times(2)).getInterfaceConfig(TEST_WLAN_IFNAME); verify(mNMService, times(3)) diff --git a/tests/testables/Android.bp b/tests/testables/Android.bp new file mode 100644 index 000000000000..f07f09da3f03 --- /dev/null +++ b/tests/testables/Android.bp @@ -0,0 +1,32 @@ +// +// Copyright (C) 2017 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. +// + +java_library { + + name: "testables", + // ANDROIDMK TRANSLATION ERROR: unsupported assignment to LOCAL_MODULE_TAG + // LOCAL_MODULE_TAG := tests + + srcs: ["src/**/*.java"], + + libs: [ + "android.test.runner", + "android.test.mock", + "android-support-test", + "mockito-target-inline-minus-junit4", + ], + +} diff --git a/tests/testables/Android.mk b/tests/testables/Android.mk deleted file mode 100644 index f3cbac05d1cb..000000000000 --- a/tests/testables/Android.mk +++ /dev/null @@ -1,32 +0,0 @@ -# -# Copyright (C) 2017 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. -# - -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -LOCAL_MODULE := testables -LOCAL_MODULE_TAG := tests - -LOCAL_SRC_FILES := $(call all-java-files-under,src) - -LOCAL_JAVA_LIBRARIES := android.test.runner android.test.mock \ - android-support-test \ - mockito-target-inline-minus-junit4 - -include $(BUILD_STATIC_JAVA_LIBRARY) - -include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/tools/aosp/aosp_sha.sh b/tools/aosp/aosp_sha.sh new file mode 100755 index 000000000000..e50c70d0656a --- /dev/null +++ b/tools/aosp/aosp_sha.sh @@ -0,0 +1,24 @@ +#!/bin/bash +LOCAL_DIR="$( dirname "${BASH_SOURCE}" )" + +if git branch -vv | grep -q -P "^\*[^\[]+\[aosp/"; then + # Change appears to be in AOSP + exit 0 +else + # Change appears to be non-AOSP; search for files + count=0 + while read -r file ; do + if (( count == 0 )); then + echo + fi + echo -e "\033[0;31mThe source of truth for '$file' is in AOSP.\033[0m" + (( count++ )) + done < <(git show --name-only --pretty=format: $1 | grep -- "$2") + if (( count != 0 )); then + echo + echo "If your change contains no confidential details (such as security fixes), please" + echo "upload and merge this change at https://android-review.googlesource.com/." + echo + exit 77 + fi +fi diff --git a/tools/hiddenapi/generate_hiddenapi_lists.py b/tools/hiddenapi/generate_hiddenapi_lists.py index 4a0931a149af..6c46e67be63d 100755 --- a/tools/hiddenapi/generate_hiddenapi_lists.py +++ b/tools/hiddenapi/generate_hiddenapi_lists.py @@ -59,6 +59,8 @@ def get_args(): def read_lines(filename): """Reads entire file and return it as a list of lines. + Lines which begin with a hash are ignored. + Args: filename (string): Path to the file to read from. @@ -66,7 +68,7 @@ def read_lines(filename): list: Lines of the loaded file as a list of strings. """ with open(filename, 'r') as f: - return f.readlines() + return filter(lambda line: not line.startswith('#'), f.readlines()) def write_lines(filename, lines): """Writes list of lines into a file, overwriting the file it it exists. diff --git a/tools/hiddenapi/sort_api.sh b/tools/hiddenapi/sort_api.sh index 1c6eb1b286b1..76a2f2d6eba1 100755 --- a/tools/hiddenapi/sort_api.sh +++ b/tools/hiddenapi/sort_api.sh @@ -11,8 +11,14 @@ fi readarray A < "$source_list" # Sort IFS=$'\n' +# Stash away comments +C=( $(grep -E '^#' <<< "${A[*]}" || :) ) +A=( $(grep -v -E '^#' <<< "${A[*]}" || :) ) +# Sort entries A=( $(LC_COLLATE=C sort -f <<< "${A[*]}") ) A=( $(uniq <<< "${A[*]}") ) +# Concatenate comments and entries +A=( ${C[*]} ${A[*]} ) unset IFS # Dump array back into the file printf '%s\n' "${A[@]}" > "$dest_list" diff --git a/tools/processors/unsupportedappusage/Android.bp b/tools/processors/unsupportedappusage/Android.bp new file mode 100644 index 000000000000..1aca3edfab88 --- /dev/null +++ b/tools/processors/unsupportedappusage/Android.bp @@ -0,0 +1,25 @@ + +java_library_host { + name: "unsupportedappusage-annotation-processor", + java_resources: [ + "META-INF/**/*", + ], + srcs: [ + "src/**/*.java", + ], + static_libs: [ + "guava", + "unsupportedappusage-annotation" + ], + openjdk9: { + javacflags: [ + "--add-modules=jdk.compiler", + "--add-exports jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED", + "--add-exports jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED", + "--add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED", + "--add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", + ], + }, + + use_tools_jar: true, +} diff --git a/tools/processors/unsupportedappusage/META-INF/services/javax.annotation.processing.Processor b/tools/processors/unsupportedappusage/META-INF/services/javax.annotation.processing.Processor new file mode 100644 index 000000000000..4a969d319070 --- /dev/null +++ b/tools/processors/unsupportedappusage/META-INF/services/javax.annotation.processing.Processor @@ -0,0 +1 @@ +android.processor.unsupportedappusage.UnsupportedAppUsageProcessor diff --git a/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/SignatureBuilder.java b/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/SignatureBuilder.java new file mode 100644 index 000000000000..ef2914610f80 --- /dev/null +++ b/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/SignatureBuilder.java @@ -0,0 +1,228 @@ +/* + * Copyright (C) 2018 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.processor.unsupportedappusage; + +import static javax.lang.model.element.ElementKind.PACKAGE; +import static javax.tools.Diagnostic.Kind.ERROR; +import static javax.tools.Diagnostic.Kind.WARNING; + +import android.annotation.UnsupportedAppUsage; + +import com.google.common.base.Strings; +import com.google.common.collect.ImmutableMap; +import com.sun.tools.javac.code.Type; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import javax.annotation.processing.Messager; +import javax.lang.model.element.Element; +import javax.lang.model.element.ExecutableElement; +import javax.lang.model.element.PackageElement; +import javax.lang.model.element.TypeElement; +import javax.lang.model.element.VariableElement; +import javax.lang.model.type.ArrayType; +import javax.lang.model.type.DeclaredType; +import javax.lang.model.type.TypeKind; +import javax.lang.model.type.TypeMirror; + +/** + * Builds a dex signature for a given method or field. + */ +public class SignatureBuilder { + + private static final Map<TypeKind, String> TYPE_MAP = ImmutableMap.<TypeKind, String>builder() + .put(TypeKind.BOOLEAN, "Z") + .put(TypeKind.BYTE, "B") + .put(TypeKind.CHAR, "C") + .put(TypeKind.DOUBLE, "D") + .put(TypeKind.FLOAT, "F") + .put(TypeKind.INT, "I") + .put(TypeKind.LONG, "J") + .put(TypeKind.SHORT, "S") + .put(TypeKind.VOID, "V") + .build(); + + private final Messager mMessager; + + /** + * Exception used internally when we can't build a signature. Whenever this is thrown, an error + * will also be written to the Messager. + */ + private class SignatureBuilderException extends Exception { + public SignatureBuilderException(String message) { + super(message); + } + public void report(Element offendingElement) { + mMessager.printMessage(ERROR, getMessage(), offendingElement); + } + } + + public SignatureBuilder(Messager messager) { + mMessager = messager; + } + + /** + * Returns a list of enclosing elements for the given element, with the package first, and + * excluding the element itself. + */ + private List<Element> getEnclosingElements(Element e) { + List<Element> enclosing = new ArrayList<>(); + e = e.getEnclosingElement(); // don't include the element itself. + while (e != null) { + enclosing.add(e); + e = e.getEnclosingElement(); + } + Collections.reverse(enclosing); + return enclosing; + } + + /** + * Get the dex signature for a clazz, in format "Lpackage/name/Outer$Inner;" + */ + private String getClassSignature(TypeElement clazz) { + StringBuilder sb = new StringBuilder("L"); + for (Element enclosing : getEnclosingElements(clazz)) { + if (enclosing.getKind() == PACKAGE) { + sb.append(((PackageElement) enclosing) + .getQualifiedName() + .toString() + .replace('.', '/')); + sb.append('/'); + } else { + sb.append(enclosing.getSimpleName()).append('$'); + } + + } + return sb + .append(clazz.getSimpleName()) + .append(";") + .toString(); + } + + /** + * Returns the type signature for a given type. For primitive types, a single character. + * For classes, the class signature. For arrays, a "[" preceeding the component type. + */ + private String getTypeSignature(TypeMirror type) throws SignatureBuilderException { + String sig = TYPE_MAP.get(type.getKind()); + if (sig != null) { + return sig; + } + switch (type.getKind()) { + case ARRAY: + return "[" + getTypeSignature(((ArrayType) type).getComponentType()); + case DECLARED: + Element declaring = ((DeclaredType) type).asElement(); + if (!(declaring instanceof TypeElement)) { + throw new SignatureBuilderException( + "Can't handle declared type of kind " + declaring.getKind()); + } + return getClassSignature((TypeElement) declaring); + case TYPEVAR: + Type.TypeVar typeVar = (Type.TypeVar) type; + if (typeVar.getLowerBound().getKind() != TypeKind.NULL) { + return getTypeSignature(typeVar.getLowerBound()); + } else if (typeVar.getUpperBound().getKind() != TypeKind.NULL) { + return getTypeSignature(typeVar.getUpperBound()); + } else { + throw new SignatureBuilderException("Can't handle typevar with no bound"); + } + + default: + throw new SignatureBuilderException("Can't handle type of kind " + type.getKind()); + } + } + + /** + * Get the signature for an executable, either a method or a constructor. + * + * @param name "<init>" for constructor, else the method name + * @param method The executable element in question. + */ + private String getExecutableSignature(CharSequence name, ExecutableElement method) + throws SignatureBuilderException { + StringBuilder sig = new StringBuilder(); + sig.append(getClassSignature((TypeElement) method.getEnclosingElement())) + .append("->") + .append(name) + .append("("); + for (VariableElement param : method.getParameters()) { + sig.append(getTypeSignature(param.asType())); + } + sig.append(")") + .append(getTypeSignature(method.getReturnType())); + return sig.toString(); + } + + private String buildMethodSignature(ExecutableElement method) throws SignatureBuilderException { + return getExecutableSignature(method.getSimpleName(), method); + } + + private String buildConstructorSignature(ExecutableElement cons) + throws SignatureBuilderException { + return getExecutableSignature("<init>", cons); + } + + private String buildFieldSignature(VariableElement field) throws SignatureBuilderException { + StringBuilder sig = new StringBuilder(); + sig.append(getClassSignature((TypeElement) field.getEnclosingElement())) + .append("->") + .append(field.getSimpleName()) + .append(":") + .append(getTypeSignature(field.asType())) + ; + return sig.toString(); + } + + public String buildSignature(Element element) { + UnsupportedAppUsage uba = element.getAnnotation(UnsupportedAppUsage.class); + try { + String signature; + switch (element.getKind()) { + case METHOD: + signature = buildMethodSignature((ExecutableElement) element); + break; + case CONSTRUCTOR: + signature = buildConstructorSignature((ExecutableElement) element); + break; + case FIELD: + signature = buildFieldSignature((VariableElement) element); + break; + default: + return null; + } + // if we have an expected signature on the annotation, warn if it doesn't match. + if (!Strings.isNullOrEmpty(uba.expectedSignature())) { + if (!signature.equals(uba.expectedSignature())) { + mMessager.printMessage( + WARNING, + String.format("Expected signature doesn't match generated signature.\n" + + " Expected: %s\n Generated: %s", + uba.expectedSignature(), signature), + element); + } + } + return signature; + } catch (SignatureBuilderException problem) { + problem.report(element); + return null; + } + } +} diff --git a/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java b/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java new file mode 100644 index 000000000000..1d4c435939db --- /dev/null +++ b/tools/processors/unsupportedappusage/src/android/processor/unsupportedappusage/UnsupportedAppUsageProcessor.java @@ -0,0 +1,173 @@ +/* + * Copyright (C) 2018 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.processor.unsupportedappusage; + +import static javax.tools.StandardLocation.CLASS_OUTPUT; + +import android.annotation.UnsupportedAppUsage; + +import com.google.common.base.Joiner; +import com.sun.tools.javac.model.JavacElements; +import com.sun.tools.javac.tree.JCTree; +import com.sun.tools.javac.util.Pair; +import com.sun.tools.javac.util.Position; + +import java.io.IOException; +import java.io.PrintStream; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; +import java.util.stream.Stream; + +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.RoundEnvironment; +import javax.annotation.processing.SupportedAnnotationTypes; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.AnnotationMirror; +import javax.lang.model.element.Element; +import javax.lang.model.element.TypeElement; + +/** + * Annotation processor for {@link UnsupportedAppUsage} annotations. + * + * This processor currently outputs two things: + * 1. A greylist.txt containing dex signatures of all annotated elements. + * 2. A CSV file with a mapping of dex signatures to corresponding source positions. + * + * The first will be used at a later stage of the build to add access flags to the dex file. The + * second is used for automating updates to the annotations themselves. + */ +@SupportedAnnotationTypes({"android.annotation.UnsupportedAppUsage"}) +public class UnsupportedAppUsageProcessor extends AbstractProcessor { + + // Package name for writing output. Output will be written to the "class output" location within + // this package. + private static final String PACKAGE = "unsupportedappusage"; + private static final String INDEX_CSV = "unsupportedappusage_index.csv"; + + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latest(); + } + + /** + * Write the contents of a stream to a text file, with one line per item. + */ + private void writeToFile(String name, + String headerLine, + Stream<?> contents) throws IOException { + PrintStream out = new PrintStream(processingEnv.getFiler().createResource( + CLASS_OUTPUT, + PACKAGE, + name) + .openOutputStream()); + out.println(headerLine); + contents.forEach(o -> out.println(o)); + if (out.checkError()) { + throw new IOException("Error when writing to " + name); + } + out.close(); + } + + /** + * Find the annotation mirror for the @UnsupportedAppUsage annotation on the given element. + */ + private AnnotationMirror getUnsupportedAppUsageAnnotationMirror(Element e) { + for (AnnotationMirror m : e.getAnnotationMirrors()) { + TypeElement type = (TypeElement) m.getAnnotationType().asElement(); + if (type.getQualifiedName().toString().equals( + UnsupportedAppUsage.class.getCanonicalName())) { + return m; + } + } + return null; + } + + /** + * Returns a CSV header line for the columns returned by + * {@link #getAnnotationIndex(String, Element)}. + */ + private String getCsvHeaders() { + return Joiner.on(',').join( + "signature", + "file", + "startline", + "startcol", + "endline", + "endcol" + ); + } + + /** + * Maps an annotated element to the source position of the @UnsupportedAppUsage annotation + * attached to it. It returns CSV in the format: + * dex-signature,filename,start-line,start-col,end-line,end-col + * + * The positions refer to the annotation itself, *not* the annotated member. This can therefore + * be used to read just the annotation from the file, and to perform in-place edits on it. + * + * @param signature the dex signature for the element. + * @param annotatedElement The annotated element + * @return A single line of CSV text + */ + private String getAnnotationIndex(String signature, Element annotatedElement) { + JavacElements javacElem = (JavacElements) processingEnv.getElementUtils(); + AnnotationMirror unsupportedAppUsage = + getUnsupportedAppUsageAnnotationMirror(annotatedElement); + Pair<JCTree, JCTree.JCCompilationUnit> pair = + javacElem.getTreeAndTopLevel(annotatedElement, unsupportedAppUsage, null); + Position.LineMap lines = pair.snd.lineMap; + return Joiner.on(",").join( + signature, + pair.snd.getSourceFile().getName(), + lines.getLineNumber(pair.fst.pos().getStartPosition()), + lines.getColumnNumber(pair.fst.pos().getStartPosition()), + lines.getLineNumber(pair.fst.pos().getEndPosition(pair.snd.endPositions)), + lines.getColumnNumber(pair.fst.pos().getEndPosition(pair.snd.endPositions))); + } + + /** + * This is the main entry point in the processor, called by the compiler. + */ + @Override + public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { + Set<? extends Element> annotated = roundEnv.getElementsAnnotatedWith( + UnsupportedAppUsage.class); + if (annotated.size() == 0) { + return true; + } + // build signatures for each annotated member, and put them in a map of signature to member + Map<String, Element> signatureMap = new TreeMap<>(); + SignatureBuilder sb = new SignatureBuilder(processingEnv.getMessager()); + for (Element e : annotated) { + String sig = sb.buildSignature(e); + if (sig != null) { + signatureMap.put(sig, e); + } + } + try { + writeToFile(INDEX_CSV, + getCsvHeaders(), + signatureMap.entrySet() + .stream() + .map(e -> getAnnotationIndex(e.getKey() ,e.getValue()))); + } catch (IOException e) { + throw new RuntimeException("Failed to write output", e); + } + return true; + } +} |